From 069555a807ef4d8d027ac3efa314c20398a2ed61 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Sat, 6 Dec 2025 05:37:39 +0000 Subject: [PATCH] [Backend] Bump to llvm/llvm-project@a992f294 This pulls in the following fixes: * https://github.com/llvm/llvm-project/pull/168801 * https://github.com/llvm/llvm-project/pull/168805 * https://github.com/llvm/llvm-project/pull/169851 Along the way, we need to adjust `TMEMLoadOpPattern` and `RelayoutTritonGPU` due to * https://github.com/llvm/llvm-project/pull/169606 --- cmake/llvm-hash.txt | 2 +- .../TritonToTritonGPU/RelayoutTritonGPU.cpp | 15 ++++++++++++--- third_party/amd/backend/compiler.py | 5 ----- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/cmake/llvm-hash.txt b/cmake/llvm-hash.txt index be0c83e16a88..6bdc3d72df1f 100644 --- a/cmake/llvm-hash.txt +++ b/cmake/llvm-hash.txt @@ -1 +1 @@ -ebf5d9ef7de29b55fd9e9d504f83689b4013e0de +a992f29451b9e140424f35ac5e20177db4afbdc0 diff --git a/lib/Conversion/TritonToTritonGPU/RelayoutTritonGPU.cpp b/lib/Conversion/TritonToTritonGPU/RelayoutTritonGPU.cpp index 7e8aeb24b7a7..7ea2e94a9914 100644 --- a/lib/Conversion/TritonToTritonGPU/RelayoutTritonGPU.cpp +++ b/lib/Conversion/TritonToTritonGPU/RelayoutTritonGPU.cpp @@ -34,14 +34,20 @@ struct TMEMLoadOpPattern : public OpConversionPattern { LogicalResult matchAndRewrite(ttng::TMEMLoadOp op, OpAdaptor adaptor, ConversionPatternRewriter &rewriter) const override { + Type resultType = getTypeConverter()->convertType(op.getType()); RankedTensorType type = getTMEMTensorLayout( typeConverter, op.getType(), op.getSrc().getType(), lookupNumWarps(op)); rewriter.modifyOpInPlace(op, [&] { op.getResult().setType(type); }); - Type resultType = getTypeConverter()->convertType(op.getType()); + if (type == resultType) + return success(); + rewriter.setInsertionPointAfter(op); auto cvt = ConvertLayoutOp::create(rewriter, op.getLoc(), resultType, op.getResult()); - rewriter.replaceAllUsesExcept(op.getResult(), cvt, cvt); + // Bypass the rewriter to avoid issues with the conversion framework's + // tracking of conditional replacements. + // See https://github.com/llvm/llvm-project/commit/504b50789602 + op.getResult().replaceAllUsesExcept(cvt, cvt); return success(); } }; @@ -115,7 +121,10 @@ class RelayoutTritonGPU // clang-format on >(typeConverter, context); - if (failed(applyPartialConversion(mod, target, std::move(patterns)))) + ConversionConfig config; + config.allowPatternRollback = false; + if (failed( + applyPartialConversion(mod, target, std::move(patterns), config))) return signalPassFailure(); } }; diff --git a/third_party/amd/backend/compiler.py b/third_party/amd/backend/compiler.py index 1db2b2cb30a1..bd7a2cc537d1 100644 --- a/third_party/amd/backend/compiler.py +++ b/third_party/amd/backend/compiler.py @@ -451,11 +451,6 @@ def make_amdgcn(src, metadata, options): dump_file_id) amdgcn = llvm.translate_to_asm(src, amd.TARGET_TRIPLE, options.arch, features, flags, options.enable_fp_fusion, False) - # TODO: Remove the following workaround once LLVM is bumped to include: https://github.com/llvm/llvm-project/pull/169851 - # Workaround for LLVM ERROR: cannot evaluate equated symbol 'amdgcn.device.init.num_named_barrier' - if knobs.compilation.enable_asan and 'gfx1250' not in options.arch: - amdgcn = amdgcn.replace('.amdgpu_metadata', - '\t.set\tamdgcn.device.init.num_named_barrier, 0\n.amdgpu_metadata') if knobs.amd.dump_amdgcn: print("// -----// AMDGCN Dump //----- //") print(amdgcn)