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