1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O0 -fast-isel=false -mtriple=arm64-apple-darwin < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker@board = common global [400 x i8] zeroinitializer, align 1 4*9880d681SAndroid Build Coastguard Worker@next_string = common global i32 0, align 4 5*9880d681SAndroid Build Coastguard Worker@string_number = common global [400 x i32] zeroinitializer, align 4 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind ssp 8*9880d681SAndroid Build Coastguard Workerdefine void @new_position(i32 %pos) { 9*9880d681SAndroid Build Coastguard Workerentry: 10*9880d681SAndroid Build Coastguard Worker %idxprom = sext i32 %pos to i64 11*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds [400 x i8], [400 x i8]* @board, i64 0, i64 %idxprom 12*9880d681SAndroid Build Coastguard Worker %tmp = load i8, i8* %arrayidx, align 1 13*9880d681SAndroid Build Coastguard Worker %.off = add i8 %tmp, -1 14*9880d681SAndroid Build Coastguard Worker %switch = icmp ult i8 %.off, 2 15*9880d681SAndroid Build Coastguard Worker br i1 %switch, label %if.then, label %if.end 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerif.then: ; preds = %entry 18*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32* @next_string, align 4 19*9880d681SAndroid Build Coastguard Worker %arrayidx8 = getelementptr inbounds [400 x i32], [400 x i32]* @string_number, i64 0, i64 %idxprom 20*9880d681SAndroid Build Coastguard Worker store i32 %tmp1, i32* %arrayidx8, align 4 21*9880d681SAndroid Build Coastguard Worker br label %if.end 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerif.end: ; preds = %if.then, %entry 24*9880d681SAndroid Build Coastguard Worker ret void 25*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: new_position 26*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: and 27*9880d681SAndroid Build Coastguard Worker; CHECK: ret 28*9880d681SAndroid Build Coastguard Worker} 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test8_0(i8 zeroext %x) align 2 { 31*9880d681SAndroid Build Coastguard Workerentry: 32*9880d681SAndroid Build Coastguard Worker %0 = add i8 %x, 74 33*9880d681SAndroid Build Coastguard Worker %1 = icmp ult i8 %0, -20 34*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 35*9880d681SAndroid Build Coastguard Workerret_false: 36*9880d681SAndroid Build Coastguard Worker ret i1 false 37*9880d681SAndroid Build Coastguard Workerret_true: 38*9880d681SAndroid Build Coastguard Worker ret i1 true 39*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test8_0 40*9880d681SAndroid Build Coastguard Worker; CHECK: and 41*9880d681SAndroid Build Coastguard Worker; CHECK: ret 42*9880d681SAndroid Build Coastguard Worker} 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test8_1(i8 zeroext %x) align 2 { 45*9880d681SAndroid Build Coastguard Workerentry: 46*9880d681SAndroid Build Coastguard Worker %0 = add i8 %x, 246 47*9880d681SAndroid Build Coastguard Worker %1 = icmp uge i8 %0, 90 48*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 49*9880d681SAndroid Build Coastguard Workerret_false: 50*9880d681SAndroid Build Coastguard Worker ret i1 false 51*9880d681SAndroid Build Coastguard Workerret_true: 52*9880d681SAndroid Build Coastguard Worker ret i1 true 53*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test8_1 54*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: and 55*9880d681SAndroid Build Coastguard Worker; CHECK: ret 56*9880d681SAndroid Build Coastguard Worker} 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test8_2(i8 zeroext %x) align 2 { 59*9880d681SAndroid Build Coastguard Workerentry: 60*9880d681SAndroid Build Coastguard Worker %0 = add i8 %x, 227 61*9880d681SAndroid Build Coastguard Worker %1 = icmp ne i8 %0, 179 62*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 63*9880d681SAndroid Build Coastguard Workerret_false: 64*9880d681SAndroid Build Coastguard Worker ret i1 false 65*9880d681SAndroid Build Coastguard Workerret_true: 66*9880d681SAndroid Build Coastguard Worker ret i1 true 67*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test8_2 68*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: and 69*9880d681SAndroid Build Coastguard Worker; CHECK: ret 70*9880d681SAndroid Build Coastguard Worker} 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test8_3(i8 zeroext %x) align 2 { 73*9880d681SAndroid Build Coastguard Workerentry: 74*9880d681SAndroid Build Coastguard Worker %0 = add i8 %x, 201 75*9880d681SAndroid Build Coastguard Worker %1 = icmp eq i8 %0, 154 76*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 77*9880d681SAndroid Build Coastguard Workerret_false: 78*9880d681SAndroid Build Coastguard Worker ret i1 false 79*9880d681SAndroid Build Coastguard Workerret_true: 80*9880d681SAndroid Build Coastguard Worker ret i1 true 81*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test8_3 82*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: and 83*9880d681SAndroid Build Coastguard Worker; CHECK: ret 84*9880d681SAndroid Build Coastguard Worker} 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test8_4(i8 zeroext %x) align 2 { 87*9880d681SAndroid Build Coastguard Workerentry: 88*9880d681SAndroid Build Coastguard Worker %0 = add i8 %x, -79 89*9880d681SAndroid Build Coastguard Worker %1 = icmp ne i8 %0, -40 90*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 91*9880d681SAndroid Build Coastguard Workerret_false: 92*9880d681SAndroid Build Coastguard Worker ret i1 false 93*9880d681SAndroid Build Coastguard Workerret_true: 94*9880d681SAndroid Build Coastguard Worker ret i1 true 95*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test8_4 96*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: and 97*9880d681SAndroid Build Coastguard Worker; CHECK: ret 98*9880d681SAndroid Build Coastguard Worker} 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test8_5(i8 zeroext %x) align 2 { 101*9880d681SAndroid Build Coastguard Workerentry: 102*9880d681SAndroid Build Coastguard Worker %0 = add i8 %x, 133 103*9880d681SAndroid Build Coastguard Worker %1 = icmp uge i8 %0, -105 104*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 105*9880d681SAndroid Build Coastguard Workerret_false: 106*9880d681SAndroid Build Coastguard Worker ret i1 false 107*9880d681SAndroid Build Coastguard Workerret_true: 108*9880d681SAndroid Build Coastguard Worker ret i1 true 109*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test8_5 110*9880d681SAndroid Build Coastguard Worker; CHECK: and 111*9880d681SAndroid Build Coastguard Worker; CHECK: ret 112*9880d681SAndroid Build Coastguard Worker} 113*9880d681SAndroid Build Coastguard Worker 114*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test8_6(i8 zeroext %x) align 2 { 115*9880d681SAndroid Build Coastguard Workerentry: 116*9880d681SAndroid Build Coastguard Worker %0 = add i8 %x, -58 117*9880d681SAndroid Build Coastguard Worker %1 = icmp uge i8 %0, 155 118*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 119*9880d681SAndroid Build Coastguard Workerret_false: 120*9880d681SAndroid Build Coastguard Worker ret i1 false 121*9880d681SAndroid Build Coastguard Workerret_true: 122*9880d681SAndroid Build Coastguard Worker ret i1 true 123*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test8_6 124*9880d681SAndroid Build Coastguard Worker; CHECK: and 125*9880d681SAndroid Build Coastguard Worker; CHECK: ret 126*9880d681SAndroid Build Coastguard Worker} 127*9880d681SAndroid Build Coastguard Worker 128*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test8_7(i8 zeroext %x) align 2 { 129*9880d681SAndroid Build Coastguard Workerentry: 130*9880d681SAndroid Build Coastguard Worker %0 = add i8 %x, 225 131*9880d681SAndroid Build Coastguard Worker %1 = icmp ult i8 %0, 124 132*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 133*9880d681SAndroid Build Coastguard Workerret_false: 134*9880d681SAndroid Build Coastguard Worker ret i1 false 135*9880d681SAndroid Build Coastguard Workerret_true: 136*9880d681SAndroid Build Coastguard Worker ret i1 true 137*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test8_7 138*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: and 139*9880d681SAndroid Build Coastguard Worker; CHECK: ret 140*9880d681SAndroid Build Coastguard Worker} 141*9880d681SAndroid Build Coastguard Worker 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Worker 144*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test8_8(i8 zeroext %x) align 2 { 145*9880d681SAndroid Build Coastguard Workerentry: 146*9880d681SAndroid Build Coastguard Worker %0 = add i8 %x, 190 147*9880d681SAndroid Build Coastguard Worker %1 = icmp uge i8 %0, 1 148*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 149*9880d681SAndroid Build Coastguard Workerret_false: 150*9880d681SAndroid Build Coastguard Worker ret i1 false 151*9880d681SAndroid Build Coastguard Workerret_true: 152*9880d681SAndroid Build Coastguard Worker ret i1 true 153*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test8_8 154*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: and 155*9880d681SAndroid Build Coastguard Worker; CHECK: ret 156*9880d681SAndroid Build Coastguard Worker} 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test16_0(i16 zeroext %x) align 2 { 159*9880d681SAndroid Build Coastguard Workerentry: 160*9880d681SAndroid Build Coastguard Worker %0 = add i16 %x, -46989 161*9880d681SAndroid Build Coastguard Worker %1 = icmp ne i16 %0, -41903 162*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 163*9880d681SAndroid Build Coastguard Workerret_false: 164*9880d681SAndroid Build Coastguard Worker ret i1 false 165*9880d681SAndroid Build Coastguard Workerret_true: 166*9880d681SAndroid Build Coastguard Worker ret i1 true 167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test16_0 168*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: and 169*9880d681SAndroid Build Coastguard Worker; CHECK: ret 170*9880d681SAndroid Build Coastguard Worker} 171*9880d681SAndroid Build Coastguard Worker 172*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test16_2(i16 zeroext %x) align 2 { 173*9880d681SAndroid Build Coastguard Workerentry: 174*9880d681SAndroid Build Coastguard Worker %0 = add i16 %x, 16882 175*9880d681SAndroid Build Coastguard Worker %1 = icmp ule i16 %0, -24837 176*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 177*9880d681SAndroid Build Coastguard Workerret_false: 178*9880d681SAndroid Build Coastguard Worker ret i1 false 179*9880d681SAndroid Build Coastguard Workerret_true: 180*9880d681SAndroid Build Coastguard Worker ret i1 true 181*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test16_2 182*9880d681SAndroid Build Coastguard Worker; CHECK: and 183*9880d681SAndroid Build Coastguard Worker; CHECK: ret 184*9880d681SAndroid Build Coastguard Worker} 185*9880d681SAndroid Build Coastguard Worker 186*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test16_3(i16 zeroext %x) align 2 { 187*9880d681SAndroid Build Coastguard Workerentry: 188*9880d681SAndroid Build Coastguard Worker %0 = add i16 %x, 29283 189*9880d681SAndroid Build Coastguard Worker %1 = icmp ne i16 %0, 16947 190*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 191*9880d681SAndroid Build Coastguard Workerret_false: 192*9880d681SAndroid Build Coastguard Worker ret i1 false 193*9880d681SAndroid Build Coastguard Workerret_true: 194*9880d681SAndroid Build Coastguard Worker ret i1 true 195*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test16_3 196*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: and 197*9880d681SAndroid Build Coastguard Worker; CHECK: ret 198*9880d681SAndroid Build Coastguard Worker} 199*9880d681SAndroid Build Coastguard Worker 200*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test16_4(i16 zeroext %x) align 2 { 201*9880d681SAndroid Build Coastguard Workerentry: 202*9880d681SAndroid Build Coastguard Worker %0 = add i16 %x, -35551 203*9880d681SAndroid Build Coastguard Worker %1 = icmp uge i16 %0, 15677 204*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 205*9880d681SAndroid Build Coastguard Workerret_false: 206*9880d681SAndroid Build Coastguard Worker ret i1 false 207*9880d681SAndroid Build Coastguard Workerret_true: 208*9880d681SAndroid Build Coastguard Worker ret i1 true 209*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test16_4 210*9880d681SAndroid Build Coastguard Worker; CHECK: and 211*9880d681SAndroid Build Coastguard Worker; CHECK: ret 212*9880d681SAndroid Build Coastguard Worker} 213*9880d681SAndroid Build Coastguard Worker 214*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test16_5(i16 zeroext %x) align 2 { 215*9880d681SAndroid Build Coastguard Workerentry: 216*9880d681SAndroid Build Coastguard Worker %0 = add i16 %x, -25214 217*9880d681SAndroid Build Coastguard Worker %1 = icmp ne i16 %0, -1932 218*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 219*9880d681SAndroid Build Coastguard Workerret_false: 220*9880d681SAndroid Build Coastguard Worker ret i1 false 221*9880d681SAndroid Build Coastguard Workerret_true: 222*9880d681SAndroid Build Coastguard Worker ret i1 true 223*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test16_5 224*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: and 225*9880d681SAndroid Build Coastguard Worker; CHECK: ret 226*9880d681SAndroid Build Coastguard Worker} 227*9880d681SAndroid Build Coastguard Worker 228*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test16_6(i16 zeroext %x) align 2 { 229*9880d681SAndroid Build Coastguard Workerentry: 230*9880d681SAndroid Build Coastguard Worker %0 = add i16 %x, -32194 231*9880d681SAndroid Build Coastguard Worker %1 = icmp uge i16 %0, -41215 232*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 233*9880d681SAndroid Build Coastguard Workerret_false: 234*9880d681SAndroid Build Coastguard Worker ret i1 false 235*9880d681SAndroid Build Coastguard Workerret_true: 236*9880d681SAndroid Build Coastguard Worker ret i1 true 237*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test16_6 238*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: and 239*9880d681SAndroid Build Coastguard Worker; CHECK: ret 240*9880d681SAndroid Build Coastguard Worker} 241*9880d681SAndroid Build Coastguard Worker 242*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test16_7(i16 zeroext %x) align 2 { 243*9880d681SAndroid Build Coastguard Workerentry: 244*9880d681SAndroid Build Coastguard Worker %0 = add i16 %x, 9272 245*9880d681SAndroid Build Coastguard Worker %1 = icmp uge i16 %0, -42916 246*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 247*9880d681SAndroid Build Coastguard Workerret_false: 248*9880d681SAndroid Build Coastguard Worker ret i1 false 249*9880d681SAndroid Build Coastguard Workerret_true: 250*9880d681SAndroid Build Coastguard Worker ret i1 true 251*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test16_7 252*9880d681SAndroid Build Coastguard Worker; CHECK: and 253*9880d681SAndroid Build Coastguard Worker; CHECK: ret 254*9880d681SAndroid Build Coastguard Worker} 255*9880d681SAndroid Build Coastguard Worker 256*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @test16_8(i16 zeroext %x) align 2 { 257*9880d681SAndroid Build Coastguard Workerentry: 258*9880d681SAndroid Build Coastguard Worker %0 = add i16 %x, -63749 259*9880d681SAndroid Build Coastguard Worker %1 = icmp ne i16 %0, 6706 260*9880d681SAndroid Build Coastguard Worker br i1 %1, label %ret_true, label %ret_false 261*9880d681SAndroid Build Coastguard Workerret_false: 262*9880d681SAndroid Build Coastguard Worker ret i1 false 263*9880d681SAndroid Build Coastguard Workerret_true: 264*9880d681SAndroid Build Coastguard Worker ret i1 true 265*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test16_8 266*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: and 267*9880d681SAndroid Build Coastguard Worker; CHECK: ret 268*9880d681SAndroid Build Coastguard Worker} 269*9880d681SAndroid Build Coastguard Worker 270