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 @@ -771,6 +771,7 @@ def LLVM_CopySignOp : LLVM_BinarySameArgsIntrinsicOp<"copysign">; def LLVM_CosOp : LLVM_UnaryIntrinsicOp<"cos">; def LLVM_ExpOp : LLVM_UnaryIntrinsicOp<"exp">; +def LLVM_Exp2Op : LLVM_UnaryIntrinsicOp<"exp2">; def LLVM_FAbsOp : LLVM_UnaryIntrinsicOp<"fabs">; def LLVM_FCeilOp : LLVM_UnaryIntrinsicOp<"ceil">; def LLVM_FMAOp : LLVM_TernarySameArgsIntrinsicOp<"fma">; diff --git a/mlir/include/mlir/Dialect/StandardOps/IR/Ops.td b/mlir/include/mlir/Dialect/StandardOps/IR/Ops.td --- a/mlir/include/mlir/Dialect/StandardOps/IR/Ops.td +++ b/mlir/include/mlir/Dialect/StandardOps/IR/Ops.td @@ -923,6 +923,14 @@ let summary = "base-e exponential of the specified value"; } +//===----------------------------------------------------------------------===// +// ExpOp +//===----------------------------------------------------------------------===// + +def Exp2Op : FloatUnaryOp<"exp2"> { + let summary = "base-2 exponential of the specified value"; +} + //===----------------------------------------------------------------------===// // ExtractElementOp //===----------------------------------------------------------------------===// diff --git a/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp b/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp --- a/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp +++ b/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp @@ -1224,6 +1224,9 @@ struct ExpOpLowering : public VectorConvertToLLVMPattern { using Super::Super; }; +struct Exp2OpLowering : public VectorConvertToLLVMPattern { + using Super::Super; +}; struct LogOpLowering : public VectorConvertToLLVMPattern { using Super::Super; }; @@ -2721,6 +2724,7 @@ DialectCastOpLowering, DivFOpLowering, ExpOpLowering, + Exp2OpLowering, LogOpLowering, Log10OpLowering, Log2OpLowering,