1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker@g1 = external global i32 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: seteq0: 6*9880d681SAndroid Build Coastguard Worker; CHECK: sltiu ${{[0-9]+}}, $4, 1 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine i32 @seteq0(i32 %a) { 9*9880d681SAndroid Build Coastguard Workerentry: 10*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i32 %a, 0 11*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 12*9880d681SAndroid Build Coastguard Worker ret i32 %conv 13*9880d681SAndroid Build Coastguard Worker} 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: setne0: 16*9880d681SAndroid Build Coastguard Worker; CHECK: sltu ${{[0-9]+}}, $zero, $4 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerdefine i32 @setne0(i32 %a) { 19*9880d681SAndroid Build Coastguard Workerentry: 20*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne i32 %a, 0 21*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 22*9880d681SAndroid Build Coastguard Worker ret i32 %conv 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: slti_beq0: 26*9880d681SAndroid Build Coastguard Worker; CHECK: slti $[[R0:[0-9]+]], $4, -32768 27*9880d681SAndroid Build Coastguard Worker; CHECK: beqz $[[R0]] 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workerdefine void @slti_beq0(i32 %a) { 30*9880d681SAndroid Build Coastguard Workerentry: 31*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i32 %a, -32768 32*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %if.then, label %if.end 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerif.then: 35*9880d681SAndroid Build Coastguard Worker store i32 %a, i32* @g1, align 4 36*9880d681SAndroid Build Coastguard Worker br label %if.end 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerif.end: 39*9880d681SAndroid Build Coastguard Worker ret void 40*9880d681SAndroid Build Coastguard Worker} 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: slti_beq1: 43*9880d681SAndroid Build Coastguard Worker; CHECK: slt ${{[0-9]+}} 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerdefine void @slti_beq1(i32 %a) { 46*9880d681SAndroid Build Coastguard Workerentry: 47*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i32 %a, -32769 48*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %if.then, label %if.end 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerif.then: 51*9880d681SAndroid Build Coastguard Worker store i32 %a, i32* @g1, align 4 52*9880d681SAndroid Build Coastguard Worker br label %if.end 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerif.end: 55*9880d681SAndroid Build Coastguard Worker ret void 56*9880d681SAndroid Build Coastguard Worker} 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: slti_beq2: 59*9880d681SAndroid Build Coastguard Worker; CHECK: slti $[[R0:[0-9]+]], $4, 32767 60*9880d681SAndroid Build Coastguard Worker; CHECK: beqz $[[R0]] 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Workerdefine void @slti_beq2(i32 %a) { 63*9880d681SAndroid Build Coastguard Workerentry: 64*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i32 %a, 32767 65*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %if.then, label %if.end 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Workerif.then: 68*9880d681SAndroid Build Coastguard Worker store i32 %a, i32* @g1, align 4 69*9880d681SAndroid Build Coastguard Worker br label %if.end 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Workerif.end: 72*9880d681SAndroid Build Coastguard Worker ret void 73*9880d681SAndroid Build Coastguard Worker} 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: slti_beq3: 76*9880d681SAndroid Build Coastguard Worker; CHECK: slt ${{[0-9]+}} 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Workerdefine void @slti_beq3(i32 %a) { 79*9880d681SAndroid Build Coastguard Workerentry: 80*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i32 %a, 32768 81*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %if.then, label %if.end 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Workerif.then: 84*9880d681SAndroid Build Coastguard Worker store i32 %a, i32* @g1, align 4 85*9880d681SAndroid Build Coastguard Worker br label %if.end 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Workerif.end: 88*9880d681SAndroid Build Coastguard Worker ret void 89*9880d681SAndroid Build Coastguard Worker} 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sltiu_beq0: 92*9880d681SAndroid Build Coastguard Worker; CHECK: sltiu $[[R0:[0-9]+]], $4, 32767 93*9880d681SAndroid Build Coastguard Worker; CHECK: beqz $[[R0]] 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Workerdefine void @sltiu_beq0(i32 %a) { 96*9880d681SAndroid Build Coastguard Workerentry: 97*9880d681SAndroid Build Coastguard Worker %cmp = icmp ult i32 %a, 32767 98*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %if.then, label %if.end 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Workerif.then: 101*9880d681SAndroid Build Coastguard Worker store i32 %a, i32* @g1, align 4 102*9880d681SAndroid Build Coastguard Worker br label %if.end 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Workerif.end: 105*9880d681SAndroid Build Coastguard Worker ret void 106*9880d681SAndroid Build Coastguard Worker} 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sltiu_beq1: 109*9880d681SAndroid Build Coastguard Worker; CHECK: sltu ${{[0-9]+}} 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Workerdefine void @sltiu_beq1(i32 %a) { 112*9880d681SAndroid Build Coastguard Workerentry: 113*9880d681SAndroid Build Coastguard Worker %cmp = icmp ult i32 %a, 32768 114*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %if.then, label %if.end 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Workerif.then: 117*9880d681SAndroid Build Coastguard Worker store i32 %a, i32* @g1, align 4 118*9880d681SAndroid Build Coastguard Worker br label %if.end 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Workerif.end: 121*9880d681SAndroid Build Coastguard Worker ret void 122*9880d681SAndroid Build Coastguard Worker} 123*9880d681SAndroid Build Coastguard Worker 124*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sltiu_beq2: 125*9880d681SAndroid Build Coastguard Worker; CHECK: sltiu $[[R0:[0-9]+]], $4, -32768 126*9880d681SAndroid Build Coastguard Worker; CHECK: beqz $[[R0]] 127*9880d681SAndroid Build Coastguard Worker 128*9880d681SAndroid Build Coastguard Workerdefine void @sltiu_beq2(i32 %a) { 129*9880d681SAndroid Build Coastguard Workerentry: 130*9880d681SAndroid Build Coastguard Worker %cmp = icmp ult i32 %a, -32768 131*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %if.then, label %if.end 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Workerif.then: 134*9880d681SAndroid Build Coastguard Worker store i32 %a, i32* @g1, align 4 135*9880d681SAndroid Build Coastguard Worker br label %if.end 136*9880d681SAndroid Build Coastguard Worker 137*9880d681SAndroid Build Coastguard Workerif.end: 138*9880d681SAndroid Build Coastguard Worker ret void 139*9880d681SAndroid Build Coastguard Worker} 140*9880d681SAndroid Build Coastguard Worker 141*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sltiu_beq3: 142*9880d681SAndroid Build Coastguard Worker; CHECK: sltu ${{[0-9]+}} 143*9880d681SAndroid Build Coastguard Worker 144*9880d681SAndroid Build Coastguard Workerdefine void @sltiu_beq3(i32 %a) { 145*9880d681SAndroid Build Coastguard Workerentry: 146*9880d681SAndroid Build Coastguard Worker %cmp = icmp ult i32 %a, -32769 147*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %if.then, label %if.end 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Workerif.then: 150*9880d681SAndroid Build Coastguard Worker store i32 %a, i32* @g1, align 4 151*9880d681SAndroid Build Coastguard Worker br label %if.end 152*9880d681SAndroid Build Coastguard Worker 153*9880d681SAndroid Build Coastguard Workerif.end: 154*9880d681SAndroid Build Coastguard Worker ret void 155*9880d681SAndroid Build Coastguard Worker} 156