brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.6 KiB · ecf243c Raw
137 lines · plain
1// RUN: mlir-opt %s -convert-complex-to-libm -canonicalize | FileCheck %s2 3// CHECK-DAG: @cpowf(complex<f32>, complex<f32>) -> complex<f32>4// CHECK-DAG: @cpow(complex<f64>, complex<f64>) -> complex<f64>5// CHECK-DAG: @csqrtf(complex<f32>) -> complex<f32>6// CHECK-DAG: @csqrt(complex<f64>) -> complex<f64>7// CHECK-DAG: @ctanhf(complex<f32>) -> complex<f32>8// CHECK-DAG: @ctanh(complex<f64>) -> complex<f64>9// CHECK-DAG: @ccos(complex<f64>) -> complex<f64>10// CHECK-DAG: @csin(complex<f64>) -> complex<f64>11// CHECK-DAG: @conj(complex<f64>) -> complex<f64>12// CHECK-DAG: @cabs(complex<f64>) -> f6413// CHECK-DAG: @carg(complex<f64>) -> f6414// CHECK-DAG: @clog(complex<f64>) -> complex<f64>15// CHECK-DAG: @ctanf(complex<f32>) -> complex<f32>16// CHECK-DAG: @ctan(complex<f64>) -> complex<f64>17 18// CHECK-LABEL: func @cpow_caller19// CHECK-SAME: %[[FLOAT:.*]]: complex<f32>20// CHECK-SAME: %[[DOUBLE:.*]]: complex<f64>21func.func @cpow_caller(%float: complex<f32>, %double: complex<f64>) -> (complex<f32>, complex<f64>)  {22  // CHECK-DAG: %[[FLOAT_RESULT:.*]] = call @cpowf(%[[FLOAT]], %[[FLOAT]]) : (complex<f32>, complex<f32>) -> complex<f32>23  %float_result = complex.pow %float, %float : complex<f32>24  // CHECK-DAG: %[[DOUBLE_RESULT:.*]] = call @cpow(%[[DOUBLE]], %[[DOUBLE]]) : (complex<f64>, complex<f64>) -> complex<f64>25  %double_result = complex.pow %double, %double : complex<f64>26  // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]27  return %float_result, %double_result : complex<f32>, complex<f64>28}29 30// CHECK-LABEL: func @csqrt_caller31// CHECK-SAME: %[[FLOAT:.*]]: complex<f32>32// CHECK-SAME: %[[DOUBLE:.*]]: complex<f64>33func.func @csqrt_caller(%float: complex<f32>, %double: complex<f64>) -> (complex<f32>, complex<f64>)  {34  // CHECK-DAG: %[[FLOAT_RESULT:.*]] = call @csqrtf(%[[FLOAT]]) : (complex<f32>) -> complex<f32>35  %float_result = complex.sqrt %float : complex<f32>36  // CHECK-DAG: %[[DOUBLE_RESULT:.*]] = call @csqrt(%[[DOUBLE]]) : (complex<f64>) -> complex<f64>37  %double_result = complex.sqrt %double : complex<f64>38  // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]39  return %float_result, %double_result : complex<f32>, complex<f64>40}41 42// CHECK-LABEL: func @ctanh_caller43// CHECK-SAME: %[[FLOAT:.*]]: complex<f32>44// CHECK-SAME: %[[DOUBLE:.*]]: complex<f64>45func.func @ctanh_caller(%float: complex<f32>, %double: complex<f64>) -> (complex<f32>, complex<f64>)  {46  // CHECK-DAG: %[[FLOAT_RESULT:.*]] = call @ctanhf(%[[FLOAT]]) : (complex<f32>) -> complex<f32>47  %float_result = complex.tanh %float : complex<f32>48  // CHECK-DAG: %[[DOUBLE_RESULT:.*]] = call @ctanh(%[[DOUBLE]]) : (complex<f64>) -> complex<f64>49  %double_result = complex.tanh %double : complex<f64>50  // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]51  return %float_result, %double_result : complex<f32>, complex<f64>52}53 54// CHECK-LABEL: func @ccos_caller55// CHECK-SAME: %[[FLOAT:.*]]: complex<f32>56// CHECK-SAME: %[[DOUBLE:.*]]: complex<f64>57func.func @ccos_caller(%float: complex<f32>, %double: complex<f64>) -> (complex<f32>, complex<f64>)  {58  // CHECK: %[[FLOAT_RESULT:.*]] = call @ccosf(%[[FLOAT]])59  %float_result = complex.cos %float : complex<f32>60  // CHECK: %[[DOUBLE_RESULT:.*]] = call @ccos(%[[DOUBLE]])61  %double_result = complex.cos %double : complex<f64>62  // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]63  return %float_result, %double_result : complex<f32>, complex<f64>64}65 66// CHECK-LABEL: func @csin_caller67// CHECK-SAME: %[[FLOAT:.*]]: complex<f32>68// CHECK-SAME: %[[DOUBLE:.*]]: complex<f64>69func.func @csin_caller(%float: complex<f32>, %double: complex<f64>) -> (complex<f32>, complex<f64>)  {70  // CHECK: %[[FLOAT_RESULT:.*]] = call @csinf(%[[FLOAT]])71  %float_result = complex.sin %float : complex<f32>72  // CHECK: %[[DOUBLE_RESULT:.*]] = call @csin(%[[DOUBLE]])73  %double_result = complex.sin %double : complex<f64>74  // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]75  return %float_result, %double_result : complex<f32>, complex<f64>76}77 78// CHECK-LABEL: func @conj_caller79// CHECK-SAME: %[[FLOAT:.*]]: complex<f32>80// CHECK-SAME: %[[DOUBLE:.*]]: complex<f64>81func.func @conj_caller(%float: complex<f32>, %double: complex<f64>) -> (complex<f32>, complex<f64>)  {82  // CHECK: %[[FLOAT_RESULT:.*]] = call @conjf(%[[FLOAT]])83  %float_result = complex.conj %float : complex<f32>84  // CHECK: %[[DOUBLE_RESULT:.*]] = call @conj(%[[DOUBLE]])85  %double_result = complex.conj %double : complex<f64>86  // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]87  return %float_result, %double_result : complex<f32>, complex<f64>88}89 90// CHECK-LABEL: func @cabs_caller91// CHECK-SAME: %[[FLOAT:.*]]: complex<f32>92// CHECK-SAME: %[[DOUBLE:.*]]: complex<f64>93func.func @cabs_caller(%float: complex<f32>, %double: complex<f64>) -> (f32, f64)  {94  // CHECK: %[[FLOAT_RESULT:.*]] = call @cabsf(%[[FLOAT]])95  %float_result = complex.abs %float : complex<f32>96  // CHECK: %[[DOUBLE_RESULT:.*]] = call @cabs(%[[DOUBLE]])97  %double_result = complex.abs %double : complex<f64>98  // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]99  return %float_result, %double_result : f32, f64100}101 102// CHECK-LABEL: func @carg_caller103// CHECK-SAME: %[[FLOAT:.*]]: complex<f32>104// CHECK-SAME: %[[DOUBLE:.*]]: complex<f64>105func.func @carg_caller(%float: complex<f32>, %double: complex<f64>) -> (f32, f64)  {106  // CHECK: %[[FLOAT_RESULT:.*]] = call @cargf(%[[FLOAT]])107  %float_result = complex.angle %float : complex<f32>108  // CHECK: %[[DOUBLE_RESULT:.*]] = call @carg(%[[DOUBLE]])109  %double_result = complex.angle %double : complex<f64>110  // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]111  return %float_result, %double_result : f32, f64112}113 114// CHECK-LABEL: func @clog_caller115// CHECK-SAME: %[[FLOAT:.*]]: complex<f32>116// CHECK-SAME: %[[DOUBLE:.*]]: complex<f64>117func.func @clog_caller(%float: complex<f32>, %double: complex<f64>) -> (complex<f32>, complex<f64>)  {118  // CHECK: %[[FLOAT_RESULT:.*]] = call @clogf(%[[FLOAT]])119  %float_result = complex.log %float : complex<f32>120  // CHECK: %[[DOUBLE_RESULT:.*]] = call @clog(%[[DOUBLE]])121  %double_result = complex.log %double : complex<f64>122  // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]123  return %float_result, %double_result : complex<f32>, complex<f64>124}125 126// CHECK-LABEL: func @ctan_caller127// CHECK-SAME: %[[FLOAT:.*]]: complex<f32>128// CHECK-SAME: %[[DOUBLE:.*]]: complex<f64>129func.func @ctan_caller(%float: complex<f32>, %double: complex<f64>) -> (complex<f32>, complex<f64>)  {130  // CHECK: %[[FLOAT_RESULT:.*]] = call @ctanf(%[[FLOAT]])131  %float_result = complex.tan %float : complex<f32>132  // CHECK: %[[DOUBLE_RESULT:.*]] = call @ctan(%[[DOUBLE]])133  %double_result = complex.tan %double : complex<f64>134  // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]135  return %float_result, %double_result : complex<f32>, complex<f64>136}137