xref: /aosp_15_r20/external/llvm/test/CodeGen/SystemZ/int-cmp-50.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; Verify that we do not crash on always-true conditions
2*9880d681SAndroid Build Coastguard Worker;
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 -O0
4*9880d681SAndroid Build Coastguard Worker;
5*9880d681SAndroid Build Coastguard Worker; This test was compiled using clang -O0 from the following source code:
6*9880d681SAndroid Build Coastguard Worker;
7*9880d681SAndroid Build Coastguard Worker; int test(unsigned long x)
8*9880d681SAndroid Build Coastguard Worker; {
9*9880d681SAndroid Build Coastguard Worker;   return x >= 0 && x <= 15;
10*9880d681SAndroid Build Coastguard Worker; }
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerdefine signext i32 @test(i64 %x) {
13*9880d681SAndroid Build Coastguard Workerentry:
14*9880d681SAndroid Build Coastguard Worker  %x.addr = alloca i64, align 8
15*9880d681SAndroid Build Coastguard Worker  store i64 %x, i64* %x.addr, align 8
16*9880d681SAndroid Build Coastguard Worker  %0 = load i64, i64* %x.addr, align 8
17*9880d681SAndroid Build Coastguard Worker  %cmp = icmp uge i64 %0, 0
18*9880d681SAndroid Build Coastguard Worker  br i1 %cmp, label %land.rhs, label %land.end
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Workerland.rhs:                                         ; preds = %entry
21*9880d681SAndroid Build Coastguard Worker  %1 = load i64, i64* %x.addr, align 8
22*9880d681SAndroid Build Coastguard Worker  %cmp1 = icmp ule i64 %1, 15
23*9880d681SAndroid Build Coastguard Worker  br label %land.end
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Workerland.end:                                         ; preds = %land.rhs, %entry
26*9880d681SAndroid Build Coastguard Worker  %2 = phi i1 [ false, %entry ], [ %cmp1, %land.rhs ]
27*9880d681SAndroid Build Coastguard Worker  %land.ext = zext i1 %2 to i32
28*9880d681SAndroid Build Coastguard Worker  ret i32 %land.ext
29*9880d681SAndroid Build Coastguard Worker}
30*9880d681SAndroid Build Coastguard Worker
31