From: Thomas Raoux Date: Mon, 3 Oct 2022 19:39:32 +0000 (+0000) Subject: [mlir][arithmetic] Add tests for IndexCast folding ops and fix assert X-Git-Tag: upstream/17.0.6~31738 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b9a0eb610642ed67a82a4f50f07c2f7c82c7c32b;p=platform%2Fupstream%2Fllvm.git [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 --- 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]]