@@ -205,21 +205,12 @@ func.func @roundf_func(%a: f32) -> f32 {
205205func.func @powf_func (%a: f64 , %b: f64 ) -> f64 {
206206 // CHECK-DAG: [[CST0:%.+]] = arith.constant 0.000000e+00
207207 // CHECK-DAG: [[CST1:%.+]] = arith.constant 1.0
208- // CHECK-DAG: [[CSTNEG1:%.+]] = arith.constant -1.000000e+00
209- // CHECK-DAG: [[CSTTWO:%.+]] = arith.constant 2.000000e+00
210- // CHECK: [[ABSA:%.+]] = math.absf [[ARG0]]
211- // CHECK: [[ISNEG:%.+]] = arith.cmpf olt, [[ARG0]], [[CST0]]
212- // CHECK: [[SIGNA:%.+]] = arith.select [[ISNEG]], [[CSTNEG1]], [[CST1]]
213- // CHECK: [[LOGA:%.+]] = math.log [[ABSA]]
208+ // CHECK: [[LOGA:%.+]] = math.log [[ARG0]]
214209 // CHECK: [[MULB:%.+]] = arith.mulf [[ARG1]], [[LOGA]]
215210 // CHECK: [[EXP:%.+]] = math.exp [[MULB]]
216- // CHECK: [[REM:%.+]] = arith.remf [[ARG1]], [[CSTTWO]]
217- // CHECK: [[CMPF:%.+]] = arith.cmpf one, [[REM]], [[CST0]]
218- // CHECK: [[ABMUL:%.+]] = arith.mulf [[EXP]], [[SIGNA]]
219- // CHECK: [[SEL0:%.+]] = arith.select [[CMPF]], [[ABMUL]], [[EXP]]
220- // CHECK: [[CMPF2:%.+]] = arith.cmpf oeq, [[ARG1]], [[CST0]]
221- // CHECK: [[SEL1:%.+]] = arith.select [[CMPF2]], [[CST1]], [[SEL0]]
222- // CHECK: return [[SEL1]]
211+ // CHECK: [[CMPF:%.+]] = arith.cmpf oeq, [[ARG1]], [[CST0]]
212+ // CHECK: [[SEL:%.+]] = arith.select [[CMPF]], [[CST1]], [[EXP]]
213+ // CHECK: return [[SEL]]
223214 %ret = math.powf %a , %b : f64
224215 return %ret : f64
225216}
@@ -601,24 +592,15 @@ func.func @math_fpowi_to_powf_tensor(%0 : tensor<8xf32>, %1: tensor<8xi32>) -> t
601592 return %2 : tensor <8 xf32 >
602593}
603594// CHECK-SAME: (%[[ARG0:.*]]: tensor<8xf32>, %[[ARG1:.*]]: tensor<8xi32>) -> tensor<8xf32> {
604- // CHECK-DAG: %[[CST2:.*]] = arith.constant dense<2.000000e+00> : tensor<8xf32>
605- // CHECK-DAG: %[[CSTNEG1:.*]] = arith.constant dense<-1.000000e+00> : tensor<8xf32>
606595// CHECK-DAG: %[[CST1:.+]] = arith.constant dense<1.000000e+00> : tensor<8xf32>
607596// CHECK-DAG: %[[CST0:.*]] = arith.constant dense<0.000000e+00> : tensor<8xf32>
608597// CHECK: %[[TOFP:.*]] = arith.sitofp %[[ARG1]] : tensor<8xi32> to tensor<8xf32>
609- // CHECK: %[[ABSA:.*]] = math.absf %[[ARG0]] : tensor<8xf32>
610- // CHECK: %[[ISNEG:.*]] = arith.cmpf olt, %[[ARG0]], %[[CST0]] : tensor<8xf32>
611- // CHECK: %[[SIGNA:.*]] = arith.select %[[ISNEG]], %[[CSTNEG1]], %[[CST1]] : tensor<8xi1>, tensor<8xf32>
612- // CHECK: %[[LOGA:.*]] = math.log %[[ABSA]] : tensor<8xf32>
613- // CHECK: %[[MULA:.*]] = arith.mulf %[[TOFP]], %[[LOGA]] : tensor<8xf32>
614- // CHECK: %[[EXPA:.*]] = math.exp %[[MULA]] : tensor<8xf32>
615- // CHECK: %[[REM:.*]] = arith.remf %[[TOFP]], %[[CST2]] : tensor<8xf32>
616- // CHECK: %[[CMPF:.*]] = arith.cmpf one, %[[REM]], %[[CST0]] : tensor<8xf32>
617- // CHECK: %[[ABMUL:.*]] = arith.mulf %[[EXPA]], %[[SIGNA]] : tensor<8xf32>
618- // CHECK: %[[SEL0:.*]] = arith.select %[[CMPF]], %[[ABMUL]], %[[EXPA]] : tensor<8xi1>, tensor<8xf32>
619- // CHECK: %[[CMPZERO:.*]] = arith.cmpf oeq, %[[TOFP]], %[[CST0]] : tensor<8xf32>
620- // CHECK: %[[SEL1:.*]] = arith.select %[[CMPZERO]], %[[CST1]], %[[SEL0]] : tensor<8xi1>, tensor<8xf32>
621- // CHECK: return %[[SEL1]]
598+ // CHECK: %[[LOGA:.*]] = math.log %[[ARG0]] : tensor<8xf32>
599+ // CHECK: %[[MUL:.*]] = arith.mulf %[[TOFP]], %[[LOGA]] : tensor<8xf32>
600+ // CHECK: %[[EXP:.*]] = math.exp %[[MUL]] : tensor<8xf32>
601+ // CHECK: %[[CMP:.*]] = arith.cmpf oeq, %[[TOFP]], %[[CST0]] : tensor<8xf32>
602+ // CHECK: %[[SEL:.*]] = arith.select %[[CMP]], %[[CST1]], %[[EXP]] : tensor<8xi1>, tensor<8xf32>
603+ // CHECK: return %[[SEL]]
622604// -----
623605
624606// CHECK-LABEL: func.func @math_fpowi_to_powf_scalar
@@ -627,24 +609,15 @@ func.func @math_fpowi_to_powf_scalar(%0 : f32, %1: i64) -> f32 {
627609 return %2 : f32
628610}
629611// CHECK-SAME: (%[[ARG0:.*]]: f32, %[[ARG1:.*]]: i64) -> f32 {
630- // CHECK-DAG: %[[CSTNEG1:.*]] = arith.constant -1.000000e+00 : f32
631- // CHECK-DAG: %[[CST2:.*]] = arith.constant 2.000000e+00 : f32
632612// CHECK-DAG: %[[CST0:.*]] = arith.constant 0.000000e+00 : f32
633613// CHECK-DAG: %[[CST1:.+]] = arith.constant 1.000000e+00 : f32
634614// CHECK: %[[TOFP:.*]] = arith.sitofp %[[ARG1]] : i64 to f32
635- // CHECK: %[[ABSA:.*]] = math.absf %[[ARG0]] : f32
636- // CHECK: %[[ISNEG:.*]] = arith.cmpf olt, %[[ARG0]], %[[CST0]] : f32
637- // CHECK: %[[SIGNA:.*]] = arith.select %[[ISNEG]], %[[CSTNEG1]], %[[CST1]] : f32
638- // CHECK: %[[LOGA:.*]] = math.log %[[ABSA]] : f32
639- // CHECK: %[[MULA:.*]] = arith.mulf %[[TOFP]], %[[LOGA]] : f32
640- // CHECK: %[[EXPA:.*]] = math.exp %[[MULA]] : f32
641- // CHECK: %[[REM:.*]] = arith.remf %[[TOFP]], %[[CST2]] : f32
642- // CHECK: %[[CMPF:.*]] = arith.cmpf one, %[[REM]], %[[CST0]] : f32
643- // CHECK: %[[ABMUL:.*]] = arith.mulf %[[EXPA]], %[[SIGNA]] : f32
644- // CHECK: %[[SEL0:.*]] = arith.select %[[CMPF]], %[[ABMUL]], %[[EXPA]] : f32
645- // CHECK: %[[CMPZERO:.*]] = arith.cmpf oeq, %[[TOFP]], %[[CST0]] : f32
646- // CHECK: %[[SEL1:.*]] = arith.select %[[CMPZERO]], %[[CST1]], %[[SEL0]] : f32
647- // CHECK: return %[[SEL1]] : f32
615+ // CHECK: %[[LOGA:.*]] = math.log %[[ARG0]] : f32
616+ // CHECK: %[[MUL:.*]] = arith.mulf %[[TOFP]], %[[LOGA]] : f32
617+ // CHECK: %[[EXP:.*]] = math.exp %[[MUL]] : f32
618+ // CHECK: %[[CMP:.*]] = arith.cmpf oeq, %[[TOFP]], %[[CST0]] : f32
619+ // CHECK: %[[SEL:.*]] = arith.select %[[CMP]], %[[CST1]], %[[EXP]] : f32
620+ // CHECK: return %[[SEL]] : f32
648621
649622// -----
650623
0 commit comments