diff --git a/build_tools/llvm_version.txt b/build_tools/llvm_version.txt index 7b14b14ba..620fa4ef3 100644 --- a/build_tools/llvm_version.txt +++ b/build_tools/llvm_version.txt @@ -1 +1 @@ -37661a17e26d9002ae9ade8c0de3932c22f16360 +89946bda5e1c7ceaf6d26634cc8c8c9498d9f7be diff --git a/build_tools/patches/0006-fix-segment-fault-in-applySignatureConversion.patch b/build_tools/patches/0006-fix-segment-fault-in-applySignatureConversion.patch deleted file mode 100644 index 6460a548b..000000000 --- a/build_tools/patches/0006-fix-segment-fault-in-applySignatureConversion.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 283951f026428a3c34b8a2b8f2498d55faf590f5 Mon Sep 17 00:00:00 2001 -From: Chao Chen -Date: Fri, 26 Apr 2024 20:58:37 +0000 -Subject: [PATCH 6/7] fix-segment-fault-in-applySignatureConversion - ---- - mlir/lib/Transforms/Utils/DialectConversion.cpp | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/mlir/lib/Transforms/Utils/DialectConversion.cpp b/mlir/lib/Transforms/Utils/DialectConversion.cpp -index d407d60334c7..a5fa9660be15 100644 ---- a/mlir/lib/Transforms/Utils/DialectConversion.cpp -+++ b/mlir/lib/Transforms/Utils/DialectConversion.cpp -@@ -1460,8 +1460,10 @@ Block *ConversionPatternRewriterImpl::applySignatureConversion( - - // Legalize the argument output type. - Type outputType = origOutputType; -- if (Type legalOutputType = converter->convertType(outputType)) -- outputType = legalOutputType; -+ if (converter) { -+ if (Type legalOutputType = converter->convertType(outputType)) -+ outputType = legalOutputType; -+ } - - newArg = buildUnresolvedArgumentMaterialization( - newBlock, origArg.getLoc(), replArgs, origOutputType, outputType, --- -2.34.1 diff --git a/lib/Conversion/XeGPUToVC/XeGPUToVC.cpp b/lib/Conversion/XeGPUToVC/XeGPUToVC.cpp index a1dacd840..b06e27720 100644 --- a/lib/Conversion/XeGPUToVC/XeGPUToVC.cpp +++ b/lib/Conversion/XeGPUToVC/XeGPUToVC.cpp @@ -783,7 +783,7 @@ class GatherScatterToRawSend : public OpConversionPattern { payLoad = rewriter.create(loc, base, payLoad, 0); SmallVector indices(16, 0); payLoad = rewriter.create( - loc, payLoad, payLoad, rewriter.getI64ArrayAttr(indices)); + loc, payLoad, payLoad, indices); auto createDescOp = op.getTensorDesc().template getDefiningOp(); auto offsets = rewriter.getRemappedValue(createDescOp.getOffsets()); @@ -886,7 +886,7 @@ class AtomicToLsc : public OpConversionPattern<::mlir::xegpu::AtomicRMWOp> { SmallVector indices(16, 0); payLoad = rewriter.create( - loc, payLoad, payLoad, rewriter.getI64ArrayAttr(indices)); + loc, payLoad, payLoad, indices); auto createDescOp = op.getTensorDesc().getDefiningOp(); auto offsets = rewriter.getRemappedValue(createDescOp.getOffsets()); payLoad = rewriter.create(loc, payLoad, offsets); @@ -1232,7 +1232,7 @@ struct VectorExtractVC final llvm::SmallVector indices(size); std::iota(indices.begin(), indices.end(), linearizedOffset); rewriter.replaceOpWithNewOp( - extractOp, vec, vec, rewriter.getI64ArrayAttr(indices)); + extractOp, vec, vec, indices); } else { // use CompositExtract for scalar result rewriter.replaceOpWithNewOp(extractOp, vec, linearizedOffset); @@ -1338,7 +1338,7 @@ struct VectorExtractStridedSliceVC final } // perform a shuffle to extract the kD vector rewriter.replaceOpWithNewOp( - extractOp, srcVector, srcVector, rewriter.getI64ArrayAttr(indices)); + extractOp, srcVector, srcVector, indices); return success(); } @@ -1392,16 +1392,16 @@ struct VectorShuffleVC final SmallVector indices(totalSize); for (auto [i, value] : - llvm::enumerate(mask.getAsValueRange())) { + llvm::enumerate(mask)) { - int32_t v = value.getZExtValue(); + int32_t v = value; std::iota(indices.begin() + shuffleSliceLen * i, indices.begin() + shuffleSliceLen * (i + 1), shuffleSliceLen * v); } rewriter.replaceOpWithNewOp( - shuffleOp, vec1, vec2, rewriter.getI64ArrayAttr(indices)); + shuffleOp, vec1, vec2, indices); return success(); } diff --git a/lib/Transforms/PropagatePackedLayout.cpp b/lib/Transforms/PropagatePackedLayout.cpp index bd79e4d29..3d30d4c89 100644 --- a/lib/Transforms/PropagatePackedLayout.cpp +++ b/lib/Transforms/PropagatePackedLayout.cpp @@ -330,7 +330,7 @@ makeCast(mlir::OpBuilder &builder, mlir::Value src, mlir::Type srcType, tmp = builder.create( loc, tmp, tmp, - builder.getI64ArrayAttr(getVNNIShuffleIndices(srcVecType, dstVecType))); + getVNNIShuffleIndices(srcVecType, dstVecType)); return {builder.create(loc, dstVecType, tmp), root}; diff --git a/lib/Transforms/VectorLinearize.cpp b/lib/Transforms/VectorLinearize.cpp index dd07a3a2c..cdeb18348 100644 --- a/lib/Transforms/VectorLinearize.cpp +++ b/lib/Transforms/VectorLinearize.cpp @@ -140,7 +140,7 @@ struct VectorExtractStridedSliceConversion final // perform a shuffle to extract the kD vector rewriter.replaceOpWithNewOp( extractOp, dstType, srcVector, srcVector, - rewriter.getI64ArrayAttr(indices)); + indices); } return mlir::success(); } @@ -180,16 +180,16 @@ struct VectorShffleOpConversion final llvm::SmallVector indices(totalSize); for (auto [i, value] : - llvm::enumerate(mask.getAsValueRange())) { + llvm::enumerate(mask)) { - int64_t v = value.getZExtValue(); + int64_t v = value; std::iota(indices.begin() + shuffleSliceLen * i, indices.begin() + shuffleSliceLen * (i + 1), shuffleSliceLen * v); } rewriter.replaceOpWithNewOp( - shuffleOp, dstType, vec1, vec2, rewriter.getI64ArrayAttr(indices)); + shuffleOp, dstType, vec1, vec2, indices); return mlir::success(); } @@ -232,7 +232,7 @@ struct VectorExtractOpConversion final std::iota(indices.begin(), indices.end(), linearizedOffset); rewriter.replaceOpWithNewOp( extractOp, dstTy, adaptor.getVector(), adaptor.getVector(), - rewriter.getI64ArrayAttr(indices)); + indices); } return mlir::success(); @@ -298,11 +298,11 @@ struct VectorInsertOpConversion final 0); auto modifiedSource = rewriter.create( insertOp.getLoc(), dstTy, adaptor.getSource(), adaptor.getSource(), - rewriter.getI64ArrayAttr(modifiedSrcIndices)); + modifiedSrcIndices); rewriter.replaceOpWithNewOp( insertOp, dstTy, adaptor.getDest(), modifiedSource, - rewriter.getI64ArrayAttr(indices)); + indices); return mlir::success(); }