[Mlir-commits] [mlir] [mlir][test] Extend `InferIntRangeInterface` test Ops to arbitrary ints (PR #91850)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Sat May 11 04:02:32 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir-arith
@llvm/pr-subscribers-mlir-gpu
Author: Felix Schneider (ubfx)
<details>
<summary>Changes</summary>
This PR is in preparation to some extensions to the `InferIntRangeInterface` around the `nsw` and `nuw` flags supported in the `arith` dialect and LLVM.
We provide some common inference logic for `index` and `arith` in `InferIntRangeCommon.h` but our Test Ops are currently fixed to `Index` Types. As we test the range inference for arith Ops, especially around the overflow behaviour, it's handy to have native support for the typical integer types in the test Ops.
This patch
1. Changes the Attributes of `test.with_bounds` ops from `Index` to `APInt` which matches the internal representation in `ConstantIntRanges`.
2. Allows the use of `AnyInteger` in addition to `Index` for the operands and results of the test Ops. This now requires explicit specification of the type in the IR, where before `Index` was implicit.
3. Requires bounds Attrs to be specified in the precision of the SSA value, eliminating any implicit truncation or extension. (*Could this lead to problems?*)
---
Patch is 30.95 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/91850.diff
6 Files Affected:
- (modified) mlir/test/Dialect/Arith/int-range-interface.mlir (+10)
- (modified) mlir/test/Dialect/Arith/int-range-opts.mlir (+6-6)
- (modified) mlir/test/Dialect/GPU/int-range-interface.mlir (+53-53)
- (modified) mlir/test/Interfaces/InferIntRangeInterface/infer-int-range-test-ops.mlir (+28-28)
- (modified) mlir/test/lib/Dialect/Test/TestOpDefs.cpp (+7-7)
- (modified) mlir/test/lib/Dialect/Test/TestOps.td (+26-24)
``````````diff
diff --git a/mlir/test/Dialect/Arith/int-range-interface.mlir b/mlir/test/Dialect/Arith/int-range-interface.mlir
index 02a9827d19d8f..16524b3634723 100644
--- a/mlir/test/Dialect/Arith/int-range-interface.mlir
+++ b/mlir/test/Dialect/Arith/int-range-interface.mlir
@@ -756,3 +756,13 @@ func.func private @callee(%arg0: memref<?xindex, 4>) {
}
return
}
+
+// CHECK-LABEL: func @test_i8_bounds
+// CHECK: test.reflect_bounds {smax = 127 : i8, smin = -128 : i8, umax = -1 : i8, umin = 0 : i8}
+func.func @test_i8_bounds() -> i8 {
+ %cst1 = arith.constant 1 : i8
+ %0 = test.with_bounds { umin = 0 : i8, umax = 255 : i8, smin = -128 : i8, smax = 127 : i8 } : i8
+ %1 = arith.addi %0, %cst1 : i8
+ %2 = test.reflect_bounds %1 : i8
+ return %2: i8
+}
diff --git a/mlir/test/Dialect/Arith/int-range-opts.mlir b/mlir/test/Dialect/Arith/int-range-opts.mlir
index be0a7e8ccd70b..9eb50cf6c3777 100644
--- a/mlir/test/Dialect/Arith/int-range-opts.mlir
+++ b/mlir/test/Dialect/Arith/int-range-opts.mlir
@@ -5,7 +5,7 @@
// CHECK: return %[[C]]
func.func @test() -> i1 {
%cst1 = arith.constant -1 : index
- %0 = test.with_bounds { umin = 0 : index, umax = 0x7fffffffffffffff : index, smin = 0 : index, smax = 0x7fffffffffffffff : index }
+ %0 = test.with_bounds { umin = 0 : index, umax = 0x7fffffffffffffff : index, smin = 0 : index, smax = 0x7fffffffffffffff : index } : index
%1 = arith.cmpi eq, %0, %cst1 : index
return %1: i1
}
@@ -17,7 +17,7 @@ func.func @test() -> i1 {
// CHECK: return %[[C]]
func.func @test() -> i1 {
%cst1 = arith.constant -1 : index
- %0 = test.with_bounds { umin = 0 : index, umax = 0x7fffffffffffffff : index, smin = 0 : index, smax = 0x7fffffffffffffff : index }
+ %0 = test.with_bounds { umin = 0 : index, umax = 0x7fffffffffffffff : index, smin = 0 : index, smax = 0x7fffffffffffffff : index } : index
%1 = arith.cmpi ne, %0, %cst1 : index
return %1: i1
}
@@ -30,7 +30,7 @@ func.func @test() -> i1 {
// CHECK: return %[[C]]
func.func @test() -> i1 {
%cst = arith.constant 0 : index
- %0 = test.with_bounds { umin = 0 : index, umax = 0x7fffffffffffffff : index, smin = 0 : index, smax = 0x7fffffffffffffff : index }
+ %0 = test.with_bounds { umin = 0 : index, umax = 0x7fffffffffffffff : index, smin = 0 : index, smax = 0x7fffffffffffffff : index } : index
%1 = arith.cmpi sge, %0, %cst : index
return %1: i1
}
@@ -42,7 +42,7 @@ func.func @test() -> i1 {
// CHECK: return %[[C]]
func.func @test() -> i1 {
%cst = arith.constant 0 : index
- %0 = test.with_bounds { umin = 0 : index, umax = 0x7fffffffffffffff : index, smin = 0 : index, smax = 0x7fffffffffffffff : index }
+ %0 = test.with_bounds { umin = 0 : index, umax = 0x7fffffffffffffff : index, smin = 0 : index, smax = 0x7fffffffffffffff : index } : index
%1 = arith.cmpi slt, %0, %cst : index
return %1: i1
}
@@ -55,7 +55,7 @@ func.func @test() -> i1 {
// CHECK: return %[[C]]
func.func @test() -> i1 {
%cst1 = arith.constant -1 : index
- %0 = test.with_bounds { umin = 0 : index, umax = 0x7fffffffffffffff : index, smin = 0 : index, smax = 0x7fffffffffffffff : index }
+ %0 = test.with_bounds { umin = 0 : index, umax = 0x7fffffffffffffff : index, smin = 0 : index, smax = 0x7fffffffffffffff : index } : index
%1 = arith.cmpi sgt, %0, %cst1 : index
return %1: i1
}
@@ -67,7 +67,7 @@ func.func @test() -> i1 {
// CHECK: return %[[C]]
func.func @test() -> i1 {
%cst1 = arith.constant -1 : index
- %0 = test.with_bounds { umin = 0 : index, umax = 0x7fffffffffffffff : index, smin = 0 : index, smax = 0x7fffffffffffffff : index }
+ %0 = test.with_bounds { umin = 0 : index, umax = 0x7fffffffffffffff : index, smin = 0 : index, smax = 0x7fffffffffffffff : index } : index
%1 = arith.cmpi sle, %0, %cst1 : index
return %1: i1
}
diff --git a/mlir/test/Dialect/GPU/int-range-interface.mlir b/mlir/test/Dialect/GPU/int-range-interface.mlir
index 02aec9dc0476f..980f7e5873e0c 100644
--- a/mlir/test/Dialect/GPU/int-range-interface.mlir
+++ b/mlir/test/Dialect/GPU/int-range-interface.mlir
@@ -5,46 +5,46 @@ func.func @launch_func(%arg0 : index) {
%0 = test.with_bounds {
umin = 3 : index, umax = 5 : index,
smin = 3 : index, smax = 5 : index
- }
+ } : index
%1 = test.with_bounds {
umin = 7 : index, umax = 11 : index,
smin = 7 : index, smax = 11 : index
- }
+ } : index
gpu.launch blocks(%block_id_x, %block_id_y, %block_id_z) in (%grid_dim_x = %0, %grid_dim_y = %1, %grid_dim_z = %arg0)
threads(%thread_id_x, %thread_id_y, %thread_id_z) in (%block_dim_x = %arg0, %block_dim_y = %0, %block_dim_z = %1) {
// CHECK: test.reflect_bounds {smax = 5 : index, smin = 3 : index, umax = 5 : index, umin = 3 : index}
// CHECK: test.reflect_bounds {smax = 11 : index, smin = 7 : index, umax = 11 : index, umin = 7 : index}
// CHECK: test.reflect_bounds {smax = 4294967295 : index, smin = 1 : index, umax = 4294967295 : index, umin = 1 : index}
- %grid_dim_x0 = test.reflect_bounds %grid_dim_x
- %grid_dim_y0 = test.reflect_bounds %grid_dim_y
- %grid_dim_z0 = test.reflect_bounds %grid_dim_z
+ %grid_dim_x0 = test.reflect_bounds %grid_dim_x : index
+ %grid_dim_y0 = test.reflect_bounds %grid_dim_y : index
+ %grid_dim_z0 = test.reflect_bounds %grid_dim_z : index
// CHECK: test.reflect_bounds {smax = 4 : index, smin = 0 : index, umax = 4 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 10 : index, smin = 0 : index, umax = 10 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 4294967294 : index, smin = 0 : index, umax = 4294967294 : index, umin = 0 : index}
- %block_id_x0 = test.reflect_bounds %block_id_x
- %block_id_y0 = test.reflect_bounds %block_id_y
- %block_id_z0 = test.reflect_bounds %block_id_z
+ %block_id_x0 = test.reflect_bounds %block_id_x : index
+ %block_id_y0 = test.reflect_bounds %block_id_y : index
+ %block_id_z0 = test.reflect_bounds %block_id_z : index
// CHECK: test.reflect_bounds {smax = 4294967295 : index, smin = 1 : index, umax = 4294967295 : index, umin = 1 : index}
// CHECK: test.reflect_bounds {smax = 5 : index, smin = 3 : index, umax = 5 : index, umin = 3 : index}
// CHECK: test.reflect_bounds {smax = 11 : index, smin = 7 : index, umax = 11 : index, umin = 7 : index}
- %block_dim_x0 = test.reflect_bounds %block_dim_x
- %block_dim_y0 = test.reflect_bounds %block_dim_y
- %block_dim_z0 = test.reflect_bounds %block_dim_z
+ %block_dim_x0 = test.reflect_bounds %block_dim_x : index
+ %block_dim_y0 = test.reflect_bounds %block_dim_y : index
+ %block_dim_z0 = test.reflect_bounds %block_dim_z : index
// CHECK: test.reflect_bounds {smax = 4294967294 : index, smin = 0 : index, umax = 4294967294 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 4 : index, smin = 0 : index, umax = 4 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 10 : index, smin = 0 : index, umax = 10 : index, umin = 0 : index}
- %thread_id_x0 = test.reflect_bounds %thread_id_x
- %thread_id_y0 = test.reflect_bounds %thread_id_y
- %thread_id_z0 = test.reflect_bounds %thread_id_z
+ %thread_id_x0 = test.reflect_bounds %thread_id_x : index
+ %thread_id_y0 = test.reflect_bounds %thread_id_y : index
+ %thread_id_z0 = test.reflect_bounds %thread_id_z : index
// The launch bounds are not constant, and so this can't infer anything
// CHECK: test.reflect_bounds {smax = 4294967294 : index, smin = 0 : index, umax = 4294967294 : index, umin = 0 : index}
%thread_id_op = gpu.thread_id y
- %thread_id_op0 = test.reflect_bounds %thread_id_op
+ %thread_id_op0 = test.reflect_bounds %thread_id_op : index
gpu.terminator
}
@@ -65,9 +65,9 @@ module attributes {gpu.container_module} {
// CHECK: test.reflect_bounds {smax = 4294967295 : index, smin = 1 : index, umax = 4294967295 : index, umin = 1 : index}
// CHECK: test.reflect_bounds {smax = 4294967295 : index, smin = 1 : index, umax = 4294967295 : index, umin = 1 : index}
// CHECK: test.reflect_bounds {smax = 4294967295 : index, smin = 1 : index, umax = 4294967295 : index, umin = 1 : index}
- %grid_dim_x0 = test.reflect_bounds %grid_dim_x
- %grid_dim_y0 = test.reflect_bounds %grid_dim_y
- %grid_dim_z0 = test.reflect_bounds %grid_dim_z
+ %grid_dim_x0 = test.reflect_bounds %grid_dim_x : index
+ %grid_dim_y0 = test.reflect_bounds %grid_dim_y : index
+ %grid_dim_z0 = test.reflect_bounds %grid_dim_z : index
%block_id_x = gpu.block_id x
%block_id_y = gpu.block_id y
@@ -76,9 +76,9 @@ module attributes {gpu.container_module} {
// CHECK: test.reflect_bounds {smax = 4294967294 : index, smin = 0 : index, umax = 4294967294 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 4294967294 : index, smin = 0 : index, umax = 4294967294 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 4294967294 : index, smin = 0 : index, umax = 4294967294 : index, umin = 0 : index}
- %block_id_x0 = test.reflect_bounds %block_id_x
- %block_id_y0 = test.reflect_bounds %block_id_y
- %block_id_z0 = test.reflect_bounds %block_id_z
+ %block_id_x0 = test.reflect_bounds %block_id_x : index
+ %block_id_y0 = test.reflect_bounds %block_id_y : index
+ %block_id_z0 = test.reflect_bounds %block_id_z : index
%block_dim_x = gpu.block_dim x
%block_dim_y = gpu.block_dim y
@@ -87,9 +87,9 @@ module attributes {gpu.container_module} {
// CHECK: test.reflect_bounds {smax = 4294967295 : index, smin = 1 : index, umax = 4294967295 : index, umin = 1 : index}
// CHECK: test.reflect_bounds {smax = 4294967295 : index, smin = 1 : index, umax = 4294967295 : index, umin = 1 : index}
// CHECK: test.reflect_bounds {smax = 4294967295 : index, smin = 1 : index, umax = 4294967295 : index, umin = 1 : index}
- %block_dim_x0 = test.reflect_bounds %block_dim_x
- %block_dim_y0 = test.reflect_bounds %block_dim_y
- %block_dim_z0 = test.reflect_bounds %block_dim_z
+ %block_dim_x0 = test.reflect_bounds %block_dim_x : index
+ %block_dim_y0 = test.reflect_bounds %block_dim_y : index
+ %block_dim_z0 = test.reflect_bounds %block_dim_z : index
%thread_id_x = gpu.thread_id x
%thread_id_y = gpu.thread_id y
@@ -98,9 +98,9 @@ module attributes {gpu.container_module} {
// CHECK: test.reflect_bounds {smax = 4294967294 : index, smin = 0 : index, umax = 4294967294 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 4294967294 : index, smin = 0 : index, umax = 4294967294 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 4294967294 : index, smin = 0 : index, umax = 4294967294 : index, umin = 0 : index}
- %thread_id_x0 = test.reflect_bounds %thread_id_x
- %thread_id_y0 = test.reflect_bounds %thread_id_y
- %thread_id_z0 = test.reflect_bounds %thread_id_z
+ %thread_id_x0 = test.reflect_bounds %thread_id_x : index
+ %thread_id_y0 = test.reflect_bounds %thread_id_y : index
+ %thread_id_z0 = test.reflect_bounds %thread_id_z : index
%global_id_x = gpu.global_id x
%global_id_y = gpu.global_id y
@@ -109,9 +109,9 @@ module attributes {gpu.container_module} {
// CHECK: test.reflect_bounds {smax = 9223372036854775807 : index, smin = -9223372036854775808 : index, umax = -8589934592 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 9223372036854775807 : index, smin = -9223372036854775808 : index, umax = -8589934592 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 9223372036854775807 : index, smin = -9223372036854775808 : index, umax = -8589934592 : index, umin = 0 : index}
- %global_id_x0 = test.reflect_bounds %global_id_x
- %global_id_y0 = test.reflect_bounds %global_id_y
- %global_id_z0 = test.reflect_bounds %global_id_z
+ %global_id_x0 = test.reflect_bounds %global_id_x : index
+ %global_id_y0 = test.reflect_bounds %global_id_y : index
+ %global_id_z0 = test.reflect_bounds %global_id_z : index
%subgroup_size = gpu.subgroup_size : index
%lane_id = gpu.lane_id
@@ -122,10 +122,10 @@ module attributes {gpu.container_module} {
// CHECK: test.reflect_bounds {smax = 127 : index, smin = 0 : index, umax = 127 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 4294967295 : index, smin = 1 : index, umax = 4294967295 : index, umin = 1 : index}
// CHECK: test.reflect_bounds {smax = 4294967294 : index, smin = 0 : index, umax = 4294967294 : index, umin = 0 : index}
- %subgroup_size0 = test.reflect_bounds %subgroup_size
- %lane_id0 = test.reflect_bounds %lane_id
- %num_subgroups0 = test.reflect_bounds %num_subgroups
- %subgroup_id0 = test.reflect_bounds %subgroup_id
+ %subgroup_size0 = test.reflect_bounds %subgroup_size : index
+ %lane_id0 = test.reflect_bounds %lane_id : index
+ %num_subgroups0 = test.reflect_bounds %num_subgroups : index
+ %subgroup_id0 = test.reflect_bounds %subgroup_id : index
llvm.return
}
@@ -148,9 +148,9 @@ module attributes {gpu.container_module} {
// CHECK: test.reflect_bounds {smax = 20 : index, smin = 20 : index, umax = 20 : index, umin = 20 : index}
// CHECK: test.reflect_bounds {smax = 24 : index, smin = 24 : index, umax = 24 : index, umin = 24 : index}
// CHECK: test.reflect_bounds {smax = 28 : index, smin = 28 : index, umax = 28 : index, umin = 28 : index}
- %grid_dim_x0 = test.reflect_bounds %grid_dim_x
- %grid_dim_y0 = test.reflect_bounds %grid_dim_y
- %grid_dim_z0 = test.reflect_bounds %grid_dim_z
+ %grid_dim_x0 = test.reflect_bounds %grid_dim_x : index
+ %grid_dim_y0 = test.reflect_bounds %grid_dim_y : index
+ %grid_dim_z0 = test.reflect_bounds %grid_dim_z : index
%block_id_x = gpu.block_id x
%block_id_y = gpu.block_id y
@@ -159,9 +159,9 @@ module attributes {gpu.container_module} {
// CHECK: test.reflect_bounds {smax = 19 : index, smin = 0 : index, umax = 19 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 23 : index, smin = 0 : index, umax = 23 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 27 : index, smin = 0 : index, umax = 27 : index, umin = 0 : index}
- %block_id_x0 = test.reflect_bounds %block_id_x
- %block_id_y0 = test.reflect_bounds %block_id_y
- %block_id_z0 = test.reflect_bounds %block_id_z
+ %block_id_x0 = test.reflect_bounds %block_id_x : index
+ %block_id_y0 = test.reflect_bounds %block_id_y : index
+ %block_id_z0 = test.reflect_bounds %block_id_z : index
%block_dim_x = gpu.block_dim x
%block_dim_y = gpu.block_dim y
@@ -170,9 +170,9 @@ module attributes {gpu.container_module} {
// CHECK: test.reflect_bounds {smax = 8 : index, smin = 8 : index, umax = 8 : index, umin = 8 : index}
// CHECK: test.reflect_bounds {smax = 12 : index, smin = 12 : index, umax = 12 : index, umin = 12 : index}
// CHECK: test.reflect_bounds {smax = 16 : index, smin = 16 : index, umax = 16 : index, umin = 16 : index}
- %block_dim_x0 = test.reflect_bounds %block_dim_x
- %block_dim_y0 = test.reflect_bounds %block_dim_y
- %block_dim_z0 = test.reflect_bounds %block_dim_z
+ %block_dim_x0 = test.reflect_bounds %block_dim_x : index
+ %block_dim_y0 = test.reflect_bounds %block_dim_y : index
+ %block_dim_z0 = test.reflect_bounds %block_dim_z : index
%thread_id_x = gpu.thread_id x
%thread_id_y = gpu.thread_id y
@@ -181,9 +181,9 @@ module attributes {gpu.container_module} {
// CHECK: test.reflect_bounds {smax = 7 : index, smin = 0 : index, umax = 7 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 11 : index, smin = 0 : index, umax = 11 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 15 : index, smin = 0 : index, umax = 15 : index, umin = 0 : index}
- %thread_id_x0 = test.reflect_bounds %thread_id_x
- %thread_id_y0 = test.reflect_bounds %thread_id_y
- %thread_id_z0 = test.reflect_bounds %thread_id_z
+ %thread_id_x0 = test.reflect_bounds %thread_id_x : index
+ %thread_id_y0 = test.reflect_bounds %thread_id_y : index
+ %thread_id_z0 = test.reflect_bounds %thread_id_z : index
%global_id_x = gpu.global_id x
%global_id_y = gpu.global_id y
@@ -192,9 +192,9 @@ module attributes {gpu.container_module} {
// CHECK: test.reflect_bounds {smax = 159 : index, smin = 0 : index, umax = 159 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 287 : index, smin = 0 : index, umax = 287 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 447 : index, smin = 0 : index, umax = 447 : index, umin = 0 : index}
- %global_id_x0 = test.reflect_bounds %global_id_x
- %global_id_y0 = test.reflect_bounds %global_id_y
- %global_id_z0 = test.reflect_bounds %global_id_z
+ %global_id_x0 = test.reflect_bounds %global_id_x : index
+ %global_id_y0 = test.reflect_bounds %global_id_y : index
+ %global_id_z0 = test.reflect_bounds %global_id_z : index
%subgroup_size = gpu.subgroup_size : index
%lane_id = gpu.lane_id
@@ -205,10 +205,10 @@ module attributes {gpu.container_module} {
// CHECK: test.reflect_bounds {smax = 127 : index, smin = 0 : index, umax = 127 : index, umin = 0 : index}
// CHECK: test.reflect_bounds {smax = 4294967295 : index, smin = 1 : index, umax = 4294967295 : index, umin = 1 : index}
// CHECK: test.reflect_bounds {smax = 4294967294 : index, smin = 0 : index, umax = 4294967294 : index, umin = 0 : index}
- %subgroup_size0 = test.reflect_bounds %subgroup_size
- %lane_id0 = test.reflect_bounds %lane_id
- %num_subgroups0 = test.reflect_bounds %num_subgroups
- %subgroup_id0 = test.reflect_bounds %subgroup_id
+ %subgroup_size0 = test.reflect_bounds %subgroup_size : index
+ %lane_id0 = test.reflect_bounds %lane_id : index
+ %num_subgroups0 = test.reflect_bounds %num_subgroups : index
+ %subgroup_id0 = test.reflect_bounds %subgroup_id : index
gpu.return
}
diff --git a/mlir/test/Interfaces/InferIntRangeInterface/infer-int-range-test-ops.mlir b/mlir/test/Interfaces/InferIntRangeInterface/infer-int-range-test-ops.mlir
index c74af447d1b1f..2106eeefdca4d 100644
--- a/mlir/test/Interfaces/InferIntRangeInterface/infer-int-range-test-ops.mlir
+++ b/mlir/test/Interfaces/InferIntRangeInterface/infer-int-range-test-ops.mlir
@@ -5,7 +5,7 @@
// CHECK: return %[[cst]]
func.func @constant() -> index {
%0 = test.with_bounds { umin = 3 : index, umax = 3 : index,
- smin = 3 : index, smax = 3 : index}
+ smin = 3 : index, smax = 3 : index} : index
func.return %0 : index
}
@@ -13,8 +13,8 @@ func.func @constant() -> index {
// CHECK: %[[cst:.*]] = "test.constant"() <{value = 4 : index}
// CHECK: return %[[cst]]
func.func @increment() -> index {
- %0 = test.with_bounds { umin = 3 : index, umax = 3 : index, smin = 0 : index, smax = 0x7fffffffffffffff : index }
- %1 = test.increment %0
+ %0 = test.with_bounds { umin = 3 : index, umax = 3 : index, smin = 0 : index, smax = 0x7fffffffffffffff : index } : index
+ %1 = test.increment %0 : index
func.return %1 : index
}
@@ -22,14 +22,14 @@ func.func @increment() -> index {
// CHECK: test.reflect_bounds {smax = 4 : index, smin = 3 : index, umax = 4 : index, umin = 3 : index}
func.func @maybe_increment(%arg0 : i1) -> index {
%0 = test.with_bounds { umin = 3 : index, umax = 3 : index,
- smin = 3 : index, smax = 3 : index}
+ smin = 3 : index, smax = 3 : index} : index
%1 = scf.if %arg0 -> index {
scf.yield %0 : index
} else {
- %2 = test.increment %0
+ %2 = test.increment %0 : index
scf.yield %2 : index
}
- %3 = test.reflect_bounds %1
+ %3 = test.reflect_bounds %1 : index
func.return %3 : index
}
@@ -37,15 +37,15 @@ func.func @maybe_increment(%arg0 : i1) -> index {
// CHECK: test.reflect_bounds {smax = 4 : index, smin = 3 : index, umax = 4 : index, umin = 3 : index}
func.func @maybe_increment_br(%arg0 : i1) -> index {
%0 = test.with_bounds { umin = 3 : index, uma...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/91850
More information about the Mlir-commits
mailing list