[Mlir-commits] [mlir] [mlir][AMDGPU] Add canonicalizer for folding casts into gather_to_lds (PR #150503)
Jakub Kuderski
llvmlistbot at llvm.org
Thu Jul 24 12:27:25 PDT 2025
================
@@ -546,6 +550,59 @@ LogicalResult GatherToLDSOp::verify() {
return success();
}
+namespace {
+/// If the source/target of a CopyOp is a CastOp that does not modify the shape
+/// and element type, the cast can be skipped. Such CastOps only cast the layout
+/// of the type.
+struct FoldGatherToLDSOfCast : public OpRewritePattern<GatherToLDSOp> {
+ using OpRewritePattern<GatherToLDSOp>::OpRewritePattern;
+
+ LogicalResult matchAndRewrite(GatherToLDSOp gatherOp,
+ PatternRewriter &rewriter) const override {
+ bool modified = false;
+
+ // Check source.
+ if (auto castOp = gatherOp.getSrc().getDefiningOp<memref::CastOp>()) {
+ auto fromType = llvm::dyn_cast<MemRefType>(castOp.getSource().getType());
+ auto toType = llvm::dyn_cast<MemRefType>(castOp.getSource().getType());
----------------
kuhar wrote:
```suggestion
auto fromType = dyn_cast<MemRefType>(castOp.getSource().getType());
auto toType = dyn_cast<MemRefType>(castOp.getSource().getType());
```
https://github.com/llvm/llvm-project/pull/150503
More information about the Mlir-commits
mailing list