[Mlir-commits] [mlir] [mlir][Arith] Let integer range narrowing handle negative values (PR #119642)
Ivan Butygin
llvmlistbot at llvm.org
Thu Dec 12 14:33:17 PST 2024
================
@@ -425,19 +437,24 @@ struct NarrowCmpI final : OpRewritePattern<arith::CmpIOp> {
/// Fold index_cast(index_cast(%arg: i8, index), i8) -> %arg
/// This pattern assumes all passed `targetBitwidths` are not wider than index
/// type.
-struct FoldIndexCastChain final : OpRewritePattern<arith::IndexCastUIOp> {
+template <typename CastOp>
+struct FoldIndexCastChain final : OpRewritePattern<CastOp> {
FoldIndexCastChain(MLIRContext *context, ArrayRef<unsigned> target)
- : OpRewritePattern(context), targetBitwidths(target) {}
+ : OpRewritePattern<CastOp>(context), targetBitwidths(target) {}
- LogicalResult matchAndRewrite(arith::IndexCastUIOp op,
+ LogicalResult matchAndRewrite(CastOp op,
PatternRewriter &rewriter) const override {
- auto srcOp = op.getIn().getDefiningOp<arith::IndexCastUIOp>();
+ auto srcOp = op.getIn().template getDefiningOp<CastOp>();
if (!srcOp)
- return failure();
+ return rewriter.notifyMatchFailure(op, "doesn't come from an index cast");
+ ;
----------------
Hardcode84 wrote:
nit: extra `;`
https://github.com/llvm/llvm-project/pull/119642
More information about the Mlir-commits
mailing list