| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 |
| ; RUN: opt -S -passes=instcombine < %s | FileCheck %s |
| |
| define i1 @test_ugt_small_c(i64 %x){ |
| ; CHECK-LABEL: @test_ugt_small_c( |
| ; CHECK-NEXT: %r = icmp slt i64 %x, 0 |
| ; CHECK-NEXT: ret i1 %r |
| %m = call i64 @llvm.umax.i64(i64 %x, i64 1) |
| %notx = xor i64 %x, -1 |
| %r = icmp ugt i64 %m, %notx |
| ret i1 %r |
| } |
| |
| define i1 @test_ugt_large_c(i64 %x){ |
| ; CHECK-LABEL: @test_ugt_large_c( |
| ; CHECK-NEXT: %r = icmp ugt i64 %x, 8446744073709551615 |
| ; CHECK-NEXT: ret i1 %r |
| %m = call i64 @llvm.umax.i64(i64 %x, i64 10000000000000000000) |
| %notx = xor i64 %x, -1 |
| %r = icmp ugt i64 %m, %notx |
| ret i1 %r |
| } |
| |
| define i1 @test_ult_small_c(i64 %x){ |
| ; CHECK-LABEL: @test_ult_small_c( |
| ; CHECK-NEXT: %r = icmp sgt i64 %x, -1 |
| ; CHECK-NEXT: ret i1 %r |
| %m = call i64 @llvm.umax.i64(i64 %x, i64 1) |
| %notx = xor i64 %x, -1 |
| %r = icmp ult i64 %m, %notx |
| ret i1 %r |
| } |
| |
| define i1 @test_ult_large_c(i64 %x){ |
| ; CHECK-LABEL: @test_ult_large_c( |
| ; CHECK-NEXT: %r = icmp ult i64 %x, 8446744073709551615 |
| ; CHECK-NEXT: ret i1 %r |
| %m = call i64 @llvm.umax.i64(i64 %x, i64 10000000000000000000) |
| %notx = xor i64 %x, -1 |
| %r = icmp ult i64 %m, %notx |
| ret i1 %r |
| } |
| |