diff --git a/mlir/lib/Conversion/MathToLLVM/MathToLLVM.cpp b/mlir/lib/Conversion/MathToLLVM/MathToLLVM.cpp --- a/mlir/lib/Conversion/MathToLLVM/MathToLLVM.cpp +++ b/mlir/lib/Conversion/MathToLLVM/MathToLLVM.cpp @@ -50,6 +50,8 @@ using Log2OpLowering = ConvertFMFMathToLLVMPattern; using LogOpLowering = ConvertFMFMathToLLVMPattern; using PowFOpLowering = ConvertFMFMathToLLVMPattern; +using FPowIOpLowering = + ConvertFMFMathToLLVMPattern; using RoundEvenOpLowering = ConvertFMFMathToLLVMPattern; using RoundOpLowering = @@ -313,6 +315,7 @@ Exp2OpLowering, ExpM1OpLowering, ExpOpLowering, + FPowIOpLowering, FloorOpLowering, FmaOpLowering, Log10OpLowering, diff --git a/mlir/test/Conversion/MathToLLVM/math-to-llvm.mlir b/mlir/test/Conversion/MathToLLVM/math-to-llvm.mlir --- a/mlir/test/Conversion/MathToLLVM/math-to-llvm.mlir +++ b/mlir/test/Conversion/MathToLLVM/math-to-llvm.mlir @@ -256,6 +256,17 @@ func.return } +// ----- + +// CHECK-LABEL: func @fpowi( +// CHECK-SAME: f64 +func.func @fpowi(%arg0 : f64, %arg1 : i32) { + // CHECK: llvm.intr.powi(%arg0, %arg1) : (f64, i32) -> f64 + %0 = math.fpowi %arg0, %arg1 : f64, i32 + func.return +} + + // ----- // CHECK-LABEL: func @powf(