Skip to content

Commit 2806705

Browse files
ivanradanovgysit
andauthored
[MLIR][NVVM] Enable import of nvvm.barrier0 (#119965)
Co-authored-by: Tobias Gysi <tobias.gysi@nextsilicon.com>
1 parent ad64946 commit 2806705

File tree

2 files changed

+11
-12
lines changed

2 files changed

+11
-12
lines changed

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,14 +117,13 @@ class NVVM_Attr<string attrName, string attrMnemonic, list<Trait> traits = []>
117117
// NVVM intrinsic operations
118118
//===----------------------------------------------------------------------===//
119119

120-
class NVVM_IntrOp<string mnem, list<Trait> traits,
121-
int numResults>
120+
class NVVM_IntrOp<string mnem, list<Trait> traits = [],
121+
int numResults = 0>
122122
: LLVM_IntrOpBase<NVVM_Dialect, mnem, "nvvm_" # !subst(".", "_", mnem),
123123
/*list<int> overloadedResults=*/[],
124124
/*list<int> overloadedOperands=*/[],
125125
traits, numResults>;
126126

127-
128127
//===----------------------------------------------------------------------===//
129128
// NVVM special register op definitions
130129
//===----------------------------------------------------------------------===//
@@ -431,10 +430,7 @@ def NVVM_MBarrierTestWaitSharedOp : NVVM_Op<"mbarrier.test.wait.shared">,
431430
// NVVM synchronization op definitions
432431
//===----------------------------------------------------------------------===//
433432

434-
def NVVM_Barrier0Op : NVVM_Op<"barrier0"> {
435-
string llvmBuilder = [{
436-
createIntrinsicCall(builder, llvm::Intrinsic::nvvm_barrier0);
437-
}];
433+
def NVVM_Barrier0Op : NVVM_IntrOp<"barrier0"> {
438434
let assemblyFormat = "attr-dict";
439435
}
440436

mlir/test/Target/LLVMIR/Import/nvvmir.ll

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,15 @@ define float @nvvm_rcp(float %0) {
7171
ret float %2
7272
}
7373

74-
; TODO: Support the intrinsics below once they derive from NVVM_IntrOp rather than from NVVM_Op.
74+
; CHECK-LABEL: @llvm_nvvm_barrier0()
75+
define void @llvm_nvvm_barrier0() {
76+
; CHECK: nvvm.barrier0
77+
call void @llvm.nvvm.barrier0()
78+
ret void
79+
}
7580

76-
; define void @llvm_nvvm_barrier0() {
77-
; call void @llvm.nvvm.barrier0()
78-
; ret void
79-
; }
81+
82+
; TODO: Support the intrinsics below once they derive from NVVM_IntrOp rather than from NVVM_Op.
8083
;
8184
; define i32 @nvvm_shfl(i32 %0, i32 %1, i32 %2, i32 %3, float %4) {
8285
; %6 = call i32 @llvm.nvvm.shfl.sync.bfly.i32(i32 %0, i32 %3, i32 %1, i32 %2)

0 commit comments

Comments
 (0)