xref: /aosp_15_r20/external/llvm/test/Transforms/InstCombine/min-positive.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt -S -instcombine < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker@g = external global i32
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdefine i1 @test(i32 %other) {
6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @test
7*9880d681SAndroid Build Coastguard Worker; CHECK: %test = icmp sgt i32 %other, 0
8*9880d681SAndroid Build Coastguard Worker  %positive = load i32, i32* @g, !range !{i32 1, i32 2048}
9*9880d681SAndroid Build Coastguard Worker  %cmp = icmp slt i32 %positive, %other
10*9880d681SAndroid Build Coastguard Worker  %sel = select i1 %cmp, i32 %positive, i32 %other
11*9880d681SAndroid Build Coastguard Worker  %test = icmp sgt i32 %sel, 0
12*9880d681SAndroid Build Coastguard Worker  ret i1 %test
13*9880d681SAndroid Build Coastguard Worker}
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerdefine i1 @test2(i32 %other) {
16*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @test2
17*9880d681SAndroid Build Coastguard Worker; CHECK: %test = icmp sgt i32 %other, 0
18*9880d681SAndroid Build Coastguard Worker  %positive = load i32, i32* @g, !range !{i32 1, i32 2048}
19*9880d681SAndroid Build Coastguard Worker  %cmp = icmp slt i32 %other, %positive
20*9880d681SAndroid Build Coastguard Worker  %sel = select i1 %cmp, i32 %other, i32 %positive
21*9880d681SAndroid Build Coastguard Worker  %test = icmp sgt i32 %sel, 0
22*9880d681SAndroid Build Coastguard Worker  ret i1 %test
23*9880d681SAndroid Build Coastguard Worker}
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Worker; %positive might be zero
26*9880d681SAndroid Build Coastguard Workerdefine i1 @test3(i32 %other) {
27*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @test3
28*9880d681SAndroid Build Coastguard Worker; CHECK: %test = icmp sgt i32 %sel, 0
29*9880d681SAndroid Build Coastguard Worker  %positive = load i32, i32* @g, !range !{i32 0, i32 2048}
30*9880d681SAndroid Build Coastguard Worker  %cmp = icmp slt i32 %positive, %other
31*9880d681SAndroid Build Coastguard Worker  %sel = select i1 %cmp, i32 %positive, i32 %other
32*9880d681SAndroid Build Coastguard Worker  %test = icmp sgt i32 %sel, 0
33*9880d681SAndroid Build Coastguard Worker  ret i1 %test
34*9880d681SAndroid Build Coastguard Worker}
35