[Mlir-commits] [mlir] [MLIR][NVVM] Add LLVM IR import support for nvvm.barrier (PR #188630)
Oleksandr Alex Zinenko
llvmlistbot at llvm.org
Mon Apr 13 00:44:21 PDT 2026
================
@@ -30,19 +31,57 @@ static bool isConvertibleIntrinsic(llvm::Intrinsic::ID id) {
/// Returns the list of LLVM IR intrinsic identifiers that are convertible to
/// MLIR NVVM dialect intrinsics.
static ArrayRef<unsigned> getSupportedIntrinsicsImpl() {
- static const SmallVector<unsigned> convertibleIntrinsics = {
+ static const SmallVector<unsigned> convertibleIntrinsics = [] {
+ SmallVector<unsigned> ids = {
#include "mlir/Dialect/LLVMIR/NVVMConvertibleLLVMIRIntrinsics.inc"
- };
+ };
+
+ ids.push_back(llvm::Intrinsic::nvvm_barrier_cta_sync_aligned_all);
+ return ids;
+ }();
return convertibleIntrinsics;
}
+static LogicalResult
+convertBarrierAlignedAllIntrinsic(OpBuilder &builder, llvm::CallInst *inst,
+ LLVM::ModuleImport &moduleImport) {
+ if (inst->arg_size() != 1) {
+ return failure();
+ }
+
+ Location loc = moduleImport.translateLoc(inst->getDebugLoc());
+ llvm::Value *idArg = inst->getArgOperand(0);
+
+ // Canonicalize all(i32 0) -> nvvm.barrier
----------------
ftynse wrote:
If it's a canonicalization, it should be a canonicalization pattern applicable anytime, not just a quirk of the conversion.
https://github.com/llvm/llvm-project/pull/188630
More information about the Mlir-commits
mailing list