diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td --- a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td +++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td @@ -790,6 +790,7 @@ LLVM_Type:$hint, LLVM_Type:$cache)>; def LLVM_SinOp : LLVM_UnaryIntrinsicOp<"sin">; def LLVM_SqrtOp : LLVM_UnaryIntrinsicOp<"sqrt">; +def LLVM_PowOp : LLVM_BinarySameArgsIntrinsicOp<"pow">; // // Vector Reductions. diff --git a/mlir/test/Dialect/LLVMIR/roundtrip.mlir b/mlir/test/Dialect/LLVMIR/roundtrip.mlir --- a/mlir/test/Dialect/LLVMIR/roundtrip.mlir +++ b/mlir/test/Dialect/LLVMIR/roundtrip.mlir @@ -100,6 +100,11 @@ // CHECK: "llvm.intr.sin"(%arg1) : (!llvm.float) -> !llvm.float %30 = "llvm.intr.sin"(%arg1) : (!llvm.float) -> !llvm.float +// CHECK: %31 = llvm.mlir.constant(4.200000e+00 : f32) : !llvm.float +// CHECK-NEXT: %32 = "llvm.intr.pow"(%arg1, %31) : (!llvm.float, !llvm.float) -> !llvm.float + %31 = llvm.mlir.constant(4.200000e+00 : f32) : !llvm.float + %32 = "llvm.intr.pow"(%arg1, %31) : (!llvm.float, !llvm.float) -> !llvm.float + // CHECK: llvm.return llvm.return }