Add exp operation to LLVMOPs.td.
PiperOrigin-RevId: 273718958
This commit is contained in:
parent
48f819c113
commit
c9c24ca23b
|
@ -587,4 +587,14 @@ def LLVM_fmuladd : LLVM_Op<"intr.fmuladd", [NoSideEffect]>,
|
|||
}];
|
||||
}
|
||||
|
||||
def LLVM_exp : LLVM_Op<"intr.exp", [NoSideEffect]>,
|
||||
Arguments<(ins LLVM_Type:$in)>,
|
||||
Results<(outs LLVM_Type:$res)> {
|
||||
let llvmBuilder = [{
|
||||
llvm::Module *module = builder.GetInsertBlock()->getModule();
|
||||
llvm::Function *fn = llvm::Intrinsic::getDeclaration(
|
||||
module, llvm::Intrinsic::exp, {$in->getType()});
|
||||
$res = builder.CreateCall(fn, {$in});
|
||||
}];
|
||||
}
|
||||
#endif // LLVMIR_OPS
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// RUN: mlir-translate -mlir-to-llvmir %s | FileCheck %s
|
||||
|
||||
// CHECK-LABEL: @intrinsics
|
||||
func @intrinsics(%arg0: !llvm.float, %arg1: !llvm.float, %arg2: !llvm<"<8 x float>">) {
|
||||
// CHECK-LABEL: @fmuladd_test
|
||||
func @fmuladd_test(%arg0: !llvm.float, %arg1: !llvm.float, %arg2: !llvm<"<8 x float>">) {
|
||||
// CHECK: call float @llvm.fmuladd.f32.f32.f32
|
||||
"llvm.intr.fmuladd"(%arg0, %arg1, %arg0) : (!llvm.float, !llvm.float, !llvm.float) -> !llvm.float
|
||||
// CHECK: call <8 x float> @llvm.fmuladd.v8f32.v8f32.v8f32
|
||||
|
@ -9,7 +9,17 @@ func @intrinsics(%arg0: !llvm.float, %arg1: !llvm.float, %arg2: !llvm<"<8 x floa
|
|||
llvm.return
|
||||
}
|
||||
|
||||
// CHECK-LABEL: @exp_test
|
||||
func @exp_test(%arg0: !llvm.float, %arg1: !llvm<"<8 x float>">) {
|
||||
// CHECK: call float @llvm.exp.f32
|
||||
"llvm.intr.exp"(%arg0) : (!llvm.float) -> !llvm.float
|
||||
// CHECK: call <8 x float> @llvm.exp.v8f32
|
||||
"llvm.intr.exp"(%arg1) : (!llvm<"<8 x float>">) -> !llvm<"<8 x float>">
|
||||
llvm.return
|
||||
}
|
||||
|
||||
// Check that intrinsics are declared with appropriate types.
|
||||
// CHECK: declare float @llvm.fmuladd.f32.f32.f32(float, float, float)
|
||||
// CHECK: declare <8 x float> @llvm.fmuladd.v8f32.v8f32.v8f32(<8 x float>, <8 x float>, <8 x float>) #0
|
||||
|
||||
// CHECK: declare float @llvm.exp.f32(float)
|
||||
// CHECK: declare <8 x float> @llvm.exp.v8f32(<8 x float>) #0
|
||||
|
|
Loading…
Reference in a new issue