let assemblyFormat = "$addr `,` $count attr-dict `:` type(operands)";
}
+def NVVM_MBarrierInvalOp : NVVM_Op<"mbarrier.inval">,
+ Arguments<(ins LLVM_i64ptr_any:$addr)> {
+ string llvmBuilder = [{
+ createIntrinsicCall(builder, llvm::Intrinsic::nvvm_mbarrier_inval, {$addr});
+ }];
+ let assemblyFormat = "$addr attr-dict `:` type(operands)";
+}
+
+def NVVM_MBarrierInvalSharedOp : NVVM_Op<"mbarrier.inval.shared">,
+ Arguments<(ins LLVM_i64ptr_shared:$addr)> {
+ string llvmBuilder = [{
+ createIntrinsicCall(builder, llvm::Intrinsic::nvvm_mbarrier_inval_shared, {$addr});
+ }];
+ let assemblyFormat = "$addr attr-dict `:` type(operands)";
+}
+
//===----------------------------------------------------------------------===//
// NVVM synchronization op definitions
//===----------------------------------------------------------------------===//
nvvm.mbarrier.init.shared %barrier, %count : !llvm.ptr<3>, i32
llvm.return
}
+
+
+llvm.func private @mbarrier_inval_generic(%barrier: !llvm.ptr) {
+ // CHECK: nvvm.mbarrier.inval %{{.*}} : !llvm.ptr
+ nvvm.mbarrier.inval %barrier : !llvm.ptr
+ llvm.return
+}
+
+
+llvm.func private @mbarrier_inval_shared(%barrier: !llvm.ptr<3>) {
+ // CHECK: nvvm.mbarrier.inval.shared %{{.*}} : !llvm.ptr<3>
+ nvvm.mbarrier.inval.shared %barrier : !llvm.ptr<3>
+ llvm.return
+}