| // RUN: mlir-opt -int-range-optimizations --split-input-file %s | FileCheck %s |
| |
| // CHECK-LABEL: func @test |
| // CHECK: %[[C:.*]] = arith.constant false |
| // 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 } |
| %1 = arith.cmpi eq, %0, %cst1 : index |
| return %1: i1 |
| } |
| |
| // ----- |
| |
| // CHECK-LABEL: func @test |
| // CHECK: %[[C:.*]] = arith.constant true |
| // 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 } |
| %1 = arith.cmpi ne, %0, %cst1 : index |
| return %1: i1 |
| } |
| |
| // ----- |
| |
| |
| // CHECK-LABEL: func @test |
| // CHECK: %[[C:.*]] = arith.constant true |
| // 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 } |
| %1 = arith.cmpi sge, %0, %cst : index |
| return %1: i1 |
| } |
| |
| // ----- |
| |
| // CHECK-LABEL: func @test |
| // CHECK: %[[C:.*]] = arith.constant false |
| // 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 } |
| %1 = arith.cmpi slt, %0, %cst : index |
| return %1: i1 |
| } |
| |
| // ----- |
| |
| |
| // CHECK-LABEL: func @test |
| // CHECK: %[[C:.*]] = arith.constant true |
| // 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 } |
| %1 = arith.cmpi sgt, %0, %cst1 : index |
| return %1: i1 |
| } |
| |
| // ----- |
| |
| // CHECK-LABEL: func @test |
| // CHECK: %[[C:.*]] = arith.constant false |
| // 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 } |
| %1 = arith.cmpi sle, %0, %cst1 : index |
| return %1: i1 |
| } |