Skip to content

Commit f418c15

Browse files
[MLIR] Add ex2 and lg2 operations to NVVM dialect
1 parent a85e84b commit f418c15

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

mlir/include/mlir/Dialect/LLVMIR/NVVMOps.td

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,18 @@ def NVVM_RcpApproxFtzF32Op : NVVM_IntrOp<"rcp.approx.ftz.f", [Pure], 1> {
449449
let assemblyFormat = "$arg attr-dict `:` type($res)";
450450
}
451451

452+
def NVVM_ex2ApproxFtzF32Op : NVVM_IntrOp<"ex2.approx.ftz.f", [Pure], 1> {
453+
let arguments = (ins F32:$arg);
454+
let results = (outs F32:$res);
455+
let assemblyFormat = "$arg attr-dict `:` type($res)";
456+
}
457+
458+
def NVVM_lg2ApproxFtzF32Op : NVVM_IntrOp<"lg2.approx.ftz.f", [Pure], 1> {
459+
let arguments = (ins F32:$arg);
460+
let results = (outs F32:$res);
461+
let assemblyFormat = "$arg attr-dict `:` type($res)";
462+
}
463+
452464
//===----------------------------------------------------------------------===//
453465
// NVVM redux op definitions
454466
//===----------------------------------------------------------------------===//

mlir/test/Dialect/LLVMIR/nvvm.mlir

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,20 @@ func.func @nvvm_rcp(%arg0: f32) -> f32 {
3636
llvm.return %0 : f32
3737
}
3838

39+
// CHECK-LABEL: @nvvm_ex2
40+
func.func @nvvm_ex2(%arg0: f32) -> f32 {
41+
// CHECK: nvvm.ex2.approx.ftz.f %arg0 : f32
42+
%0 = nvvm.ex2.approx.ftz.f %arg0 : f32
43+
llvm.return %0 : f32
44+
}
45+
46+
// CHECK-LABEL: @nvvm_lg2
47+
func.func @nvvm_lg2(%arg0: f32) -> f32 {
48+
// CHECK: nvvm.lg2.approx.ftz.f %arg0 : f32
49+
%0 = nvvm.lg2.approx.ftz.f %arg0 : f32
50+
llvm.return %0 : f32
51+
}
52+
3953
// CHECK-LABEL: @llvm_nvvm_barrier0
4054
func.func @llvm_nvvm_barrier0() {
4155
// CHECK: nvvm.barrier0

0 commit comments

Comments
 (0)