1*9880d681SAndroid Build Coastguard Worker; Test the use of TEST UNDER MASK for 64-bit operations. 2*9880d681SAndroid Build Coastguard Worker; 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z196 | FileCheck %s 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker@g = global i32 0 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker; Check the lowest useful TMLL value. 9*9880d681SAndroid Build Coastguard Workerdefine void @f1(i64 %a) { 10*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f1: 11*9880d681SAndroid Build Coastguard Worker; CHECK: tmll %r2, 1 12*9880d681SAndroid Build Coastguard Worker; CHECK: ber %r14 13*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 14*9880d681SAndroid Build Coastguard Workerentry: 15*9880d681SAndroid Build Coastguard Worker %and = and i64 %a, 1 16*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i64 %and, 0 17*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerstore: 20*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 21*9880d681SAndroid Build Coastguard Worker br label %exit 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerexit: 24*9880d681SAndroid Build Coastguard Worker ret void 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker; Check the high end of the TMLL range. 28*9880d681SAndroid Build Coastguard Workerdefine void @f2(i64 %a) { 29*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2: 30*9880d681SAndroid Build Coastguard Worker; CHECK: tmll %r2, 65535 31*9880d681SAndroid Build Coastguard Worker; CHECK: bner %r14 32*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 33*9880d681SAndroid Build Coastguard Workerentry: 34*9880d681SAndroid Build Coastguard Worker %and = and i64 %a, 65535 35*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne i64 %and, 0 36*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerstore: 39*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 40*9880d681SAndroid Build Coastguard Worker br label %exit 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workerexit: 43*9880d681SAndroid Build Coastguard Worker ret void 44*9880d681SAndroid Build Coastguard Worker} 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Worker; Check the lowest useful TMLH value, which is the next value up. 47*9880d681SAndroid Build Coastguard Workerdefine void @f3(i64 %a) { 48*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f3: 49*9880d681SAndroid Build Coastguard Worker; CHECK: tmlh %r2, 1 50*9880d681SAndroid Build Coastguard Worker; CHECK: bner %r14 51*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 52*9880d681SAndroid Build Coastguard Workerentry: 53*9880d681SAndroid Build Coastguard Worker %and = and i64 %a, 65536 54*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne i64 %and, 0 55*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Workerstore: 58*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 59*9880d681SAndroid Build Coastguard Worker br label %exit 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Workerexit: 62*9880d681SAndroid Build Coastguard Worker ret void 63*9880d681SAndroid Build Coastguard Worker} 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker; Check the next value up again, which cannot use TM. 66*9880d681SAndroid Build Coastguard Workerdefine void @f4(i64 %a) { 67*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f4: 68*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: {{tm[lh].}} 69*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 70*9880d681SAndroid Build Coastguard Workerentry: 71*9880d681SAndroid Build Coastguard Worker %and = and i64 %a, 4294901759 72*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i64 %and, 0 73*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Workerstore: 76*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 77*9880d681SAndroid Build Coastguard Worker br label %exit 78*9880d681SAndroid Build Coastguard Worker 79*9880d681SAndroid Build Coastguard Workerexit: 80*9880d681SAndroid Build Coastguard Worker ret void 81*9880d681SAndroid Build Coastguard Worker} 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Worker; Check the high end of the TMLH range. 84*9880d681SAndroid Build Coastguard Workerdefine void @f5(i64 %a) { 85*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f5: 86*9880d681SAndroid Build Coastguard Worker; CHECK: tmlh %r2, 65535 87*9880d681SAndroid Build Coastguard Worker; CHECK: ber %r14 88*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 89*9880d681SAndroid Build Coastguard Workerentry: 90*9880d681SAndroid Build Coastguard Worker %and = and i64 %a, 4294901760 91*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i64 %and, 0 92*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Workerstore: 95*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 96*9880d681SAndroid Build Coastguard Worker br label %exit 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Workerexit: 99*9880d681SAndroid Build Coastguard Worker ret void 100*9880d681SAndroid Build Coastguard Worker} 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Worker; Check the lowest useful TMHL value. 103*9880d681SAndroid Build Coastguard Workerdefine void @f6(i64 %a) { 104*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f6: 105*9880d681SAndroid Build Coastguard Worker; CHECK: tmhl %r2, 1 106*9880d681SAndroid Build Coastguard Worker; CHECK: ber %r14 107*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 108*9880d681SAndroid Build Coastguard Workerentry: 109*9880d681SAndroid Build Coastguard Worker %and = and i64 %a, 4294967296 110*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i64 %and, 0 111*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 112*9880d681SAndroid Build Coastguard Worker 113*9880d681SAndroid Build Coastguard Workerstore: 114*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 115*9880d681SAndroid Build Coastguard Worker br label %exit 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Workerexit: 118*9880d681SAndroid Build Coastguard Worker ret void 119*9880d681SAndroid Build Coastguard Worker} 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Worker; Check the next value up again, which cannot use TM. 122*9880d681SAndroid Build Coastguard Workerdefine void @f7(i64 %a) { 123*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f7: 124*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: {{tm[lh].}} 125*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 126*9880d681SAndroid Build Coastguard Workerentry: 127*9880d681SAndroid Build Coastguard Worker %and = and i64 %a, 4294967297 128*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne i64 %and, 0 129*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Workerstore: 132*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 133*9880d681SAndroid Build Coastguard Worker br label %exit 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Workerexit: 136*9880d681SAndroid Build Coastguard Worker ret void 137*9880d681SAndroid Build Coastguard Worker} 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Worker; Check the high end of the TMHL range. 140*9880d681SAndroid Build Coastguard Workerdefine void @f8(i64 %a) { 141*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f8: 142*9880d681SAndroid Build Coastguard Worker; CHECK: tmhl %r2, 65535 143*9880d681SAndroid Build Coastguard Worker; CHECK: bner %r14 144*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 145*9880d681SAndroid Build Coastguard Workerentry: 146*9880d681SAndroid Build Coastguard Worker %and = and i64 %a, 281470681743360 147*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne i64 %and, 0 148*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 149*9880d681SAndroid Build Coastguard Worker 150*9880d681SAndroid Build Coastguard Workerstore: 151*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 152*9880d681SAndroid Build Coastguard Worker br label %exit 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Workerexit: 155*9880d681SAndroid Build Coastguard Worker ret void 156*9880d681SAndroid Build Coastguard Worker} 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Worker; Check the lowest useful TMHH value. 159*9880d681SAndroid Build Coastguard Workerdefine void @f9(i64 %a) { 160*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f9: 161*9880d681SAndroid Build Coastguard Worker; CHECK: tmhh %r2, 1 162*9880d681SAndroid Build Coastguard Worker; CHECK: bner %r14 163*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 164*9880d681SAndroid Build Coastguard Workerentry: 165*9880d681SAndroid Build Coastguard Worker %and = and i64 %a, 281474976710656 166*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne i64 %and, 0 167*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 168*9880d681SAndroid Build Coastguard Worker 169*9880d681SAndroid Build Coastguard Workerstore: 170*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 171*9880d681SAndroid Build Coastguard Worker br label %exit 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Workerexit: 174*9880d681SAndroid Build Coastguard Worker ret void 175*9880d681SAndroid Build Coastguard Worker} 176*9880d681SAndroid Build Coastguard Worker 177*9880d681SAndroid Build Coastguard Worker; Check the high end of the TMHH range. 178*9880d681SAndroid Build Coastguard Workerdefine void @f10(i64 %a) { 179*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f10: 180*9880d681SAndroid Build Coastguard Worker; CHECK: tmhh %r2, 65535 181*9880d681SAndroid Build Coastguard Worker; CHECK: ber %r14 182*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 183*9880d681SAndroid Build Coastguard Workerentry: 184*9880d681SAndroid Build Coastguard Worker %and = and i64 %a, 18446462598732840960 185*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i64 %and, 0 186*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 187*9880d681SAndroid Build Coastguard Worker 188*9880d681SAndroid Build Coastguard Workerstore: 189*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 190*9880d681SAndroid Build Coastguard Worker br label %exit 191*9880d681SAndroid Build Coastguard Worker 192*9880d681SAndroid Build Coastguard Workerexit: 193*9880d681SAndroid Build Coastguard Worker ret void 194*9880d681SAndroid Build Coastguard Worker} 195*9880d681SAndroid Build Coastguard Worker 196*9880d681SAndroid Build Coastguard Worker; Check that we can fold an SHL into a TMxx mask. 197*9880d681SAndroid Build Coastguard Workerdefine void @f11(i64 %a) { 198*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f11: 199*9880d681SAndroid Build Coastguard Worker; CHECK: tmhl %r2, 32768 200*9880d681SAndroid Build Coastguard Worker; CHECK: bner %r14 201*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 202*9880d681SAndroid Build Coastguard Workerentry: 203*9880d681SAndroid Build Coastguard Worker %shl = shl i64 %a, 1 204*9880d681SAndroid Build Coastguard Worker %and = and i64 %shl, 281474976710656 205*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne i64 %and, 0 206*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 207*9880d681SAndroid Build Coastguard Worker 208*9880d681SAndroid Build Coastguard Workerstore: 209*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 210*9880d681SAndroid Build Coastguard Worker br label %exit 211*9880d681SAndroid Build Coastguard Worker 212*9880d681SAndroid Build Coastguard Workerexit: 213*9880d681SAndroid Build Coastguard Worker ret void 214*9880d681SAndroid Build Coastguard Worker} 215*9880d681SAndroid Build Coastguard Worker 216*9880d681SAndroid Build Coastguard Worker; Check that we can fold an SHR into a TMxx mask. 217*9880d681SAndroid Build Coastguard Workerdefine void @f12(i64 %a) { 218*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f12: 219*9880d681SAndroid Build Coastguard Worker; CHECK: tmhh %r2, 256 220*9880d681SAndroid Build Coastguard Worker; CHECK: bner %r14 221*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 222*9880d681SAndroid Build Coastguard Workerentry: 223*9880d681SAndroid Build Coastguard Worker %shr = lshr i64 %a, 56 224*9880d681SAndroid Build Coastguard Worker %and = and i64 %shr, 1 225*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne i64 %and, 0 226*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 227*9880d681SAndroid Build Coastguard Worker 228*9880d681SAndroid Build Coastguard Workerstore: 229*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 230*9880d681SAndroid Build Coastguard Worker br label %exit 231*9880d681SAndroid Build Coastguard Worker 232*9880d681SAndroid Build Coastguard Workerexit: 233*9880d681SAndroid Build Coastguard Worker ret void 234*9880d681SAndroid Build Coastguard Worker} 235*9880d681SAndroid Build Coastguard Worker 236*9880d681SAndroid Build Coastguard Worker; Check a case where TMHH can be used to implement a ult comparison. 237*9880d681SAndroid Build Coastguard Workerdefine void @f13(i64 %a) { 238*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f13: 239*9880d681SAndroid Build Coastguard Worker; CHECK: tmhh %r2, 49152 240*9880d681SAndroid Build Coastguard Worker; CHECK: bnor %r14 241*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 242*9880d681SAndroid Build Coastguard Workerentry: 243*9880d681SAndroid Build Coastguard Worker %cmp = icmp ult i64 %a, 13835058055282163712 244*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 245*9880d681SAndroid Build Coastguard Worker 246*9880d681SAndroid Build Coastguard Workerstore: 247*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 248*9880d681SAndroid Build Coastguard Worker br label %exit 249*9880d681SAndroid Build Coastguard Worker 250*9880d681SAndroid Build Coastguard Workerexit: 251*9880d681SAndroid Build Coastguard Worker ret void 252*9880d681SAndroid Build Coastguard Worker} 253*9880d681SAndroid Build Coastguard Worker 254*9880d681SAndroid Build Coastguard Worker; And again with ule. 255*9880d681SAndroid Build Coastguard Workerdefine void @f14(i64 %a) { 256*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f14: 257*9880d681SAndroid Build Coastguard Worker; CHECK: tmhh %r2, 49152 258*9880d681SAndroid Build Coastguard Worker; CHECK: bnor %r14 259*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 260*9880d681SAndroid Build Coastguard Workerentry: 261*9880d681SAndroid Build Coastguard Worker %cmp = icmp ule i64 %a, 13835058055282163711 262*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 263*9880d681SAndroid Build Coastguard Worker 264*9880d681SAndroid Build Coastguard Workerstore: 265*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 266*9880d681SAndroid Build Coastguard Worker br label %exit 267*9880d681SAndroid Build Coastguard Worker 268*9880d681SAndroid Build Coastguard Workerexit: 269*9880d681SAndroid Build Coastguard Worker ret void 270*9880d681SAndroid Build Coastguard Worker} 271*9880d681SAndroid Build Coastguard Worker 272*9880d681SAndroid Build Coastguard Worker; And again with ugt. 273*9880d681SAndroid Build Coastguard Workerdefine void @f15(i64 %a) { 274*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f15: 275*9880d681SAndroid Build Coastguard Worker; CHECK: tmhh %r2, 49152 276*9880d681SAndroid Build Coastguard Worker; CHECK: bor %r14 277*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 278*9880d681SAndroid Build Coastguard Workerentry: 279*9880d681SAndroid Build Coastguard Worker %cmp = icmp ugt i64 %a, 13835058055282163711 280*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 281*9880d681SAndroid Build Coastguard Worker 282*9880d681SAndroid Build Coastguard Workerstore: 283*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 284*9880d681SAndroid Build Coastguard Worker br label %exit 285*9880d681SAndroid Build Coastguard Worker 286*9880d681SAndroid Build Coastguard Workerexit: 287*9880d681SAndroid Build Coastguard Worker ret void 288*9880d681SAndroid Build Coastguard Worker} 289*9880d681SAndroid Build Coastguard Worker 290*9880d681SAndroid Build Coastguard Worker; And again with uge. 291*9880d681SAndroid Build Coastguard Workerdefine void @f16(i64 %a) { 292*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f16: 293*9880d681SAndroid Build Coastguard Worker; CHECK: tmhh %r2, 49152 294*9880d681SAndroid Build Coastguard Worker; CHECK: bor %r14 295*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 296*9880d681SAndroid Build Coastguard Workerentry: 297*9880d681SAndroid Build Coastguard Worker %cmp = icmp uge i64 %a, 13835058055282163712 298*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 299*9880d681SAndroid Build Coastguard Worker 300*9880d681SAndroid Build Coastguard Workerstore: 301*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 302*9880d681SAndroid Build Coastguard Worker br label %exit 303*9880d681SAndroid Build Coastguard Worker 304*9880d681SAndroid Build Coastguard Workerexit: 305*9880d681SAndroid Build Coastguard Worker ret void 306*9880d681SAndroid Build Coastguard Worker} 307*9880d681SAndroid Build Coastguard Worker 308*9880d681SAndroid Build Coastguard Worker; Decrease the constant from f13 to make TMHH invalid. 309*9880d681SAndroid Build Coastguard Workerdefine void @f17(i64 %a) { 310*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f17: 311*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: tmhh 312*9880d681SAndroid Build Coastguard Worker; CHECK: srlg [[REG:%r[0-5]]], %r2, 48 313*9880d681SAndroid Build Coastguard Worker; CHECK: cgfi [[REG]], 49151 314*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: tmhh 315*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 316*9880d681SAndroid Build Coastguard Workerentry: 317*9880d681SAndroid Build Coastguard Worker %cmp = icmp ult i64 %a, 13834776580305453056 318*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 319*9880d681SAndroid Build Coastguard Worker 320*9880d681SAndroid Build Coastguard Workerstore: 321*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 322*9880d681SAndroid Build Coastguard Worker br label %exit 323*9880d681SAndroid Build Coastguard Worker 324*9880d681SAndroid Build Coastguard Workerexit: 325*9880d681SAndroid Build Coastguard Worker ret void 326*9880d681SAndroid Build Coastguard Worker} 327*9880d681SAndroid Build Coastguard Worker 328*9880d681SAndroid Build Coastguard Worker; Check that we don't use TMHH just to test the top bit. 329*9880d681SAndroid Build Coastguard Workerdefine void @f18(i64 %a) { 330*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f18: 331*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: tmhh 332*9880d681SAndroid Build Coastguard Worker; CHECK: cgibhe %r2, 0, 0(%r14) 333*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 334*9880d681SAndroid Build Coastguard Workerentry: 335*9880d681SAndroid Build Coastguard Worker %cmp = icmp ult i64 %a, 9223372036854775808 336*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %exit, label %store 337*9880d681SAndroid Build Coastguard Worker 338*9880d681SAndroid Build Coastguard Workerstore: 339*9880d681SAndroid Build Coastguard Worker store i32 1, i32 *@g 340*9880d681SAndroid Build Coastguard Worker br label %exit 341*9880d681SAndroid Build Coastguard Worker 342*9880d681SAndroid Build Coastguard Workerexit: 343*9880d681SAndroid Build Coastguard Worker ret void 344*9880d681SAndroid Build Coastguard Worker} 345