From b9a0eb610642ed67a82a4f50f07c2f7c82c7c32b Mon Sep 17 00:00:00 2001 From: Thomas Raoux Date: Mon, 3 Oct 2022 19:39:32 +0000 Subject: [PATCH] [mlir][arithmetic] Add tests for IndexCast folding ops and fix assert Fix assert in IndexCastUI folding and add tests for both IndexCastOp and IndexCastUIOp folding Differential Revision: https://reviews.llvm.org/D135098 --- mlir/lib/Dialect/Arith/IR/ArithOps.cpp | 2 +- mlir/test/Dialect/Arith/canonicalize.mlir | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp index 190a1ef..0378f5f 100644 --- a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp +++ b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp @@ -1308,7 +1308,7 @@ OpFoldResult arith::IndexCastUIOp::fold(ArrayRef operands) { // A little hack because we go through int. Otherwise, the size of the // constant might need to change. if (auto value = operands[0].dyn_cast_or_null()) - return IntegerAttr::get(getType(), value.getUInt()); + return IntegerAttr::get(getType(), value.getValue().getZExtValue()); return {}; } diff --git a/mlir/test/Dialect/Arith/canonicalize.mlir b/mlir/test/Dialect/Arith/canonicalize.mlir index be680ac..337eec0 100644 --- a/mlir/test/Dialect/Arith/canonicalize.mlir +++ b/mlir/test/Dialect/Arith/canonicalize.mlir @@ -317,6 +317,24 @@ func.func @indexCastUIOfUnsignedExtend(%arg0: i8) -> index { return %idx : index } +// CHECK-LABEL: @indexCastFold +// CHECK: %[[res:.*]] = arith.constant -2 : index +// CHECK: return %[[res]] +func.func @indexCastFold(%arg0: i8) -> index { + %c-2 = arith.constant -2 : i8 + %idx = arith.index_cast %c-2 : i8 to index + return %idx : index +} + +// CHECK-LABEL: @indexCastUIFold +// CHECK: %[[res:.*]] = arith.constant 254 : index +// CHECK: return %[[res]] +func.func @indexCastUIFold(%arg0: i8) -> index { + %c-2 = arith.constant -2 : i8 + %idx = arith.index_castui %c-2 : i8 to index + return %idx : index +} + // CHECK-LABEL: @signExtendConstant // CHECK: %[[cres:.+]] = arith.constant -2 : i16 // CHECK: return %[[cres]] -- 2.7.4