1*9880d681SAndroid Build Coastguard Worker; Test the saving and restoring of GPRs in large frames. 2*9880d681SAndroid Build Coastguard Worker; 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; This is the largest frame size that can use a plain LMG for %r6 and above. 6*9880d681SAndroid Build Coastguard Worker; It is big enough to require two emergency spill slots at 160(%r15), 7*9880d681SAndroid Build Coastguard Worker; so get a frame of size 524232 by allocating (524232 - 176) / 8 = 65507 8*9880d681SAndroid Build Coastguard Worker; extra doublewords. 9*9880d681SAndroid Build Coastguard Workerdefine void @f1(i32 *%ptr, i64 %x) { 10*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f1: 11*9880d681SAndroid Build Coastguard Worker; CHECK: stmg %r6, %r15, 48(%r15) 12*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r6, -112 13*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r7, -104 14*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r8, -96 15*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r9, -88 16*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r10, -80 17*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r11, -72 18*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r12, -64 19*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r13, -56 20*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r14, -48 21*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r15, -40 22*9880d681SAndroid Build Coastguard Worker; CHECK: agfi %r15, -524232 23*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_def_cfa_offset 524392 24*9880d681SAndroid Build Coastguard Worker; ...main function body... 25*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: ag 26*9880d681SAndroid Build Coastguard Worker; CHECK: lmg %r6, %r15, 524280(%r15) 27*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 28*9880d681SAndroid Build Coastguard Worker %l0 = load volatile i32 , i32 *%ptr 29*9880d681SAndroid Build Coastguard Worker %l1 = load volatile i32 , i32 *%ptr 30*9880d681SAndroid Build Coastguard Worker %l4 = load volatile i32 , i32 *%ptr 31*9880d681SAndroid Build Coastguard Worker %l5 = load volatile i32 , i32 *%ptr 32*9880d681SAndroid Build Coastguard Worker %l6 = load volatile i32 , i32 *%ptr 33*9880d681SAndroid Build Coastguard Worker %l7 = load volatile i32 , i32 *%ptr 34*9880d681SAndroid Build Coastguard Worker %l8 = load volatile i32 , i32 *%ptr 35*9880d681SAndroid Build Coastguard Worker %l9 = load volatile i32 , i32 *%ptr 36*9880d681SAndroid Build Coastguard Worker %l10 = load volatile i32 , i32 *%ptr 37*9880d681SAndroid Build Coastguard Worker %l11 = load volatile i32 , i32 *%ptr 38*9880d681SAndroid Build Coastguard Worker %l12 = load volatile i32 , i32 *%ptr 39*9880d681SAndroid Build Coastguard Worker %l13 = load volatile i32 , i32 *%ptr 40*9880d681SAndroid Build Coastguard Worker %l14 = load volatile i32 , i32 *%ptr 41*9880d681SAndroid Build Coastguard Worker %add0 = add i32 %l0, %l0 42*9880d681SAndroid Build Coastguard Worker %add1 = add i32 %l1, %add0 43*9880d681SAndroid Build Coastguard Worker %add4 = add i32 %l4, %add1 44*9880d681SAndroid Build Coastguard Worker %add5 = add i32 %l5, %add4 45*9880d681SAndroid Build Coastguard Worker %add6 = add i32 %l6, %add5 46*9880d681SAndroid Build Coastguard Worker %add7 = add i32 %l7, %add6 47*9880d681SAndroid Build Coastguard Worker %add8 = add i32 %l8, %add7 48*9880d681SAndroid Build Coastguard Worker %add9 = add i32 %l9, %add8 49*9880d681SAndroid Build Coastguard Worker %add10 = add i32 %l10, %add9 50*9880d681SAndroid Build Coastguard Worker %add11 = add i32 %l11, %add10 51*9880d681SAndroid Build Coastguard Worker %add12 = add i32 %l12, %add11 52*9880d681SAndroid Build Coastguard Worker %add13 = add i32 %l13, %add12 53*9880d681SAndroid Build Coastguard Worker %add14 = add i32 %l14, %add13 54*9880d681SAndroid Build Coastguard Worker store volatile i32 %add0, i32 *%ptr 55*9880d681SAndroid Build Coastguard Worker store volatile i32 %add1, i32 *%ptr 56*9880d681SAndroid Build Coastguard Worker store volatile i32 %add4, i32 *%ptr 57*9880d681SAndroid Build Coastguard Worker store volatile i32 %add5, i32 *%ptr 58*9880d681SAndroid Build Coastguard Worker store volatile i32 %add6, i32 *%ptr 59*9880d681SAndroid Build Coastguard Worker store volatile i32 %add7, i32 *%ptr 60*9880d681SAndroid Build Coastguard Worker store volatile i32 %add8, i32 *%ptr 61*9880d681SAndroid Build Coastguard Worker store volatile i32 %add9, i32 *%ptr 62*9880d681SAndroid Build Coastguard Worker store volatile i32 %add10, i32 *%ptr 63*9880d681SAndroid Build Coastguard Worker store volatile i32 %add11, i32 *%ptr 64*9880d681SAndroid Build Coastguard Worker store volatile i32 %add12, i32 *%ptr 65*9880d681SAndroid Build Coastguard Worker store volatile i32 %add13, i32 *%ptr 66*9880d681SAndroid Build Coastguard Worker store volatile i32 %add14, i32 *%ptr 67*9880d681SAndroid Build Coastguard Worker %y = alloca [65507 x i64], align 8 68*9880d681SAndroid Build Coastguard Worker %entry = getelementptr inbounds [65507 x i64], [65507 x i64]* %y, i64 0, i64 0 69*9880d681SAndroid Build Coastguard Worker store volatile i64 %x, i64* %entry 70*9880d681SAndroid Build Coastguard Worker ret void 71*9880d681SAndroid Build Coastguard Worker} 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Worker; This is the largest frame size that can use a plain LMG for %r14 and above 74*9880d681SAndroid Build Coastguard Worker; It is big enough to require two emergency spill slots at 160(%r15), 75*9880d681SAndroid Build Coastguard Worker; so get a frame of size 524168 by allocating (524168 - 176) / 8 = 65499 76*9880d681SAndroid Build Coastguard Worker; extra doublewords. 77*9880d681SAndroid Build Coastguard Workerdefine void @f2(i32 *%ptr, i64 %x) { 78*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2: 79*9880d681SAndroid Build Coastguard Worker; CHECK: stmg %r14, %r15, 112(%r15) 80*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r14, -48 81*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r15, -40 82*9880d681SAndroid Build Coastguard Worker; CHECK: agfi %r15, -524168 83*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_def_cfa_offset 524328 84*9880d681SAndroid Build Coastguard Worker; ...main function body... 85*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: ag 86*9880d681SAndroid Build Coastguard Worker; CHECK: lmg %r14, %r15, 524280(%r15) 87*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 88*9880d681SAndroid Build Coastguard Worker %l0 = load volatile i32 , i32 *%ptr 89*9880d681SAndroid Build Coastguard Worker %l1 = load volatile i32 , i32 *%ptr 90*9880d681SAndroid Build Coastguard Worker %l4 = load volatile i32 , i32 *%ptr 91*9880d681SAndroid Build Coastguard Worker %l5 = load volatile i32 , i32 *%ptr 92*9880d681SAndroid Build Coastguard Worker %l14 = load volatile i32 , i32 *%ptr 93*9880d681SAndroid Build Coastguard Worker %add0 = add i32 %l0, %l0 94*9880d681SAndroid Build Coastguard Worker %add1 = add i32 %l1, %add0 95*9880d681SAndroid Build Coastguard Worker %add4 = add i32 %l4, %add1 96*9880d681SAndroid Build Coastguard Worker %add5 = add i32 %l5, %add4 97*9880d681SAndroid Build Coastguard Worker %add14 = add i32 %l14, %add5 98*9880d681SAndroid Build Coastguard Worker store volatile i32 %add0, i32 *%ptr 99*9880d681SAndroid Build Coastguard Worker store volatile i32 %add1, i32 *%ptr 100*9880d681SAndroid Build Coastguard Worker store volatile i32 %add4, i32 *%ptr 101*9880d681SAndroid Build Coastguard Worker store volatile i32 %add5, i32 *%ptr 102*9880d681SAndroid Build Coastguard Worker store volatile i32 %add14, i32 *%ptr 103*9880d681SAndroid Build Coastguard Worker %y = alloca [65499 x i64], align 8 104*9880d681SAndroid Build Coastguard Worker %entry = getelementptr inbounds [65499 x i64], [65499 x i64]* %y, i64 0, i64 0 105*9880d681SAndroid Build Coastguard Worker store volatile i64 %x, i64* %entry 106*9880d681SAndroid Build Coastguard Worker ret void 107*9880d681SAndroid Build Coastguard Worker} 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Worker; Like f1 but with a frame that is 8 bytes bigger. This is the smallest 110*9880d681SAndroid Build Coastguard Worker; frame size that needs two instructions to perform the final LMG for 111*9880d681SAndroid Build Coastguard Worker; %r6 and above. 112*9880d681SAndroid Build Coastguard Workerdefine void @f3(i32 *%ptr, i64 %x) { 113*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f3: 114*9880d681SAndroid Build Coastguard Worker; CHECK: stmg %r6, %r15, 48(%r15) 115*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r6, -112 116*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r7, -104 117*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r8, -96 118*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r9, -88 119*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r10, -80 120*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r11, -72 121*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r12, -64 122*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r13, -56 123*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r14, -48 124*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r15, -40 125*9880d681SAndroid Build Coastguard Worker; CHECK: agfi %r15, -524240 126*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_def_cfa_offset 524400 127*9880d681SAndroid Build Coastguard Worker; ...main function body... 128*9880d681SAndroid Build Coastguard Worker; CHECK: aghi %r15, 8 129*9880d681SAndroid Build Coastguard Worker; CHECK: lmg %r6, %r15, 524280(%r15) 130*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 131*9880d681SAndroid Build Coastguard Worker %l0 = load volatile i32 , i32 *%ptr 132*9880d681SAndroid Build Coastguard Worker %l1 = load volatile i32 , i32 *%ptr 133*9880d681SAndroid Build Coastguard Worker %l4 = load volatile i32 , i32 *%ptr 134*9880d681SAndroid Build Coastguard Worker %l5 = load volatile i32 , i32 *%ptr 135*9880d681SAndroid Build Coastguard Worker %l6 = load volatile i32 , i32 *%ptr 136*9880d681SAndroid Build Coastguard Worker %l7 = load volatile i32 , i32 *%ptr 137*9880d681SAndroid Build Coastguard Worker %l8 = load volatile i32 , i32 *%ptr 138*9880d681SAndroid Build Coastguard Worker %l9 = load volatile i32 , i32 *%ptr 139*9880d681SAndroid Build Coastguard Worker %l10 = load volatile i32 , i32 *%ptr 140*9880d681SAndroid Build Coastguard Worker %l11 = load volatile i32 , i32 *%ptr 141*9880d681SAndroid Build Coastguard Worker %l12 = load volatile i32 , i32 *%ptr 142*9880d681SAndroid Build Coastguard Worker %l13 = load volatile i32 , i32 *%ptr 143*9880d681SAndroid Build Coastguard Worker %l14 = load volatile i32 , i32 *%ptr 144*9880d681SAndroid Build Coastguard Worker %add0 = add i32 %l0, %l0 145*9880d681SAndroid Build Coastguard Worker %add1 = add i32 %l1, %add0 146*9880d681SAndroid Build Coastguard Worker %add4 = add i32 %l4, %add1 147*9880d681SAndroid Build Coastguard Worker %add5 = add i32 %l5, %add4 148*9880d681SAndroid Build Coastguard Worker %add6 = add i32 %l6, %add5 149*9880d681SAndroid Build Coastguard Worker %add7 = add i32 %l7, %add6 150*9880d681SAndroid Build Coastguard Worker %add8 = add i32 %l8, %add7 151*9880d681SAndroid Build Coastguard Worker %add9 = add i32 %l9, %add8 152*9880d681SAndroid Build Coastguard Worker %add10 = add i32 %l10, %add9 153*9880d681SAndroid Build Coastguard Worker %add11 = add i32 %l11, %add10 154*9880d681SAndroid Build Coastguard Worker %add12 = add i32 %l12, %add11 155*9880d681SAndroid Build Coastguard Worker %add13 = add i32 %l13, %add12 156*9880d681SAndroid Build Coastguard Worker %add14 = add i32 %l14, %add13 157*9880d681SAndroid Build Coastguard Worker store volatile i32 %add0, i32 *%ptr 158*9880d681SAndroid Build Coastguard Worker store volatile i32 %add1, i32 *%ptr 159*9880d681SAndroid Build Coastguard Worker store volatile i32 %add4, i32 *%ptr 160*9880d681SAndroid Build Coastguard Worker store volatile i32 %add5, i32 *%ptr 161*9880d681SAndroid Build Coastguard Worker store volatile i32 %add6, i32 *%ptr 162*9880d681SAndroid Build Coastguard Worker store volatile i32 %add7, i32 *%ptr 163*9880d681SAndroid Build Coastguard Worker store volatile i32 %add8, i32 *%ptr 164*9880d681SAndroid Build Coastguard Worker store volatile i32 %add9, i32 *%ptr 165*9880d681SAndroid Build Coastguard Worker store volatile i32 %add10, i32 *%ptr 166*9880d681SAndroid Build Coastguard Worker store volatile i32 %add11, i32 *%ptr 167*9880d681SAndroid Build Coastguard Worker store volatile i32 %add12, i32 *%ptr 168*9880d681SAndroid Build Coastguard Worker store volatile i32 %add13, i32 *%ptr 169*9880d681SAndroid Build Coastguard Worker store volatile i32 %add14, i32 *%ptr 170*9880d681SAndroid Build Coastguard Worker %y = alloca [65508 x i64], align 8 171*9880d681SAndroid Build Coastguard Worker %entry = getelementptr inbounds [65508 x i64], [65508 x i64]* %y, i64 0, i64 0 172*9880d681SAndroid Build Coastguard Worker store volatile i64 %x, i64* %entry 173*9880d681SAndroid Build Coastguard Worker ret void 174*9880d681SAndroid Build Coastguard Worker} 175*9880d681SAndroid Build Coastguard Worker 176*9880d681SAndroid Build Coastguard Worker; Like f2 but with a frame that is 8 bytes bigger. This is the smallest 177*9880d681SAndroid Build Coastguard Worker; frame size that needs two instructions to perform the final LMG for 178*9880d681SAndroid Build Coastguard Worker; %r14 and %r15. 179*9880d681SAndroid Build Coastguard Workerdefine void @f4(i32 *%ptr, i64 %x) { 180*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f4: 181*9880d681SAndroid Build Coastguard Worker; CHECK: stmg %r14, %r15, 112(%r15) 182*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r14, -48 183*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r15, -40 184*9880d681SAndroid Build Coastguard Worker; CHECK: agfi %r15, -524176 185*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_def_cfa_offset 524336 186*9880d681SAndroid Build Coastguard Worker; ...main function body... 187*9880d681SAndroid Build Coastguard Worker; CHECK: aghi %r15, 8 188*9880d681SAndroid Build Coastguard Worker; CHECK: lmg %r14, %r15, 524280(%r15) 189*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 190*9880d681SAndroid Build Coastguard Worker %l0 = load volatile i32 , i32 *%ptr 191*9880d681SAndroid Build Coastguard Worker %l1 = load volatile i32 , i32 *%ptr 192*9880d681SAndroid Build Coastguard Worker %l4 = load volatile i32 , i32 *%ptr 193*9880d681SAndroid Build Coastguard Worker %l5 = load volatile i32 , i32 *%ptr 194*9880d681SAndroid Build Coastguard Worker %l14 = load volatile i32 , i32 *%ptr 195*9880d681SAndroid Build Coastguard Worker %add0 = add i32 %l0, %l0 196*9880d681SAndroid Build Coastguard Worker %add1 = add i32 %l1, %add0 197*9880d681SAndroid Build Coastguard Worker %add4 = add i32 %l4, %add1 198*9880d681SAndroid Build Coastguard Worker %add5 = add i32 %l5, %add4 199*9880d681SAndroid Build Coastguard Worker %add14 = add i32 %l14, %add5 200*9880d681SAndroid Build Coastguard Worker store volatile i32 %add0, i32 *%ptr 201*9880d681SAndroid Build Coastguard Worker store volatile i32 %add1, i32 *%ptr 202*9880d681SAndroid Build Coastguard Worker store volatile i32 %add4, i32 *%ptr 203*9880d681SAndroid Build Coastguard Worker store volatile i32 %add5, i32 *%ptr 204*9880d681SAndroid Build Coastguard Worker store volatile i32 %add14, i32 *%ptr 205*9880d681SAndroid Build Coastguard Worker %y = alloca [65500 x i64], align 8 206*9880d681SAndroid Build Coastguard Worker %entry = getelementptr inbounds [65500 x i64], [65500 x i64]* %y, i64 0, i64 0 207*9880d681SAndroid Build Coastguard Worker store volatile i64 %x, i64* %entry 208*9880d681SAndroid Build Coastguard Worker ret void 209*9880d681SAndroid Build Coastguard Worker} 210*9880d681SAndroid Build Coastguard Worker 211*9880d681SAndroid Build Coastguard Worker; This is the largest frame size for which the preparatory increment for 212*9880d681SAndroid Build Coastguard Worker; "lmg %r14, %r15, ..." can be done using AGHI. 213*9880d681SAndroid Build Coastguard Workerdefine void @f5(i32 *%ptr, i64 %x) { 214*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f5: 215*9880d681SAndroid Build Coastguard Worker; CHECK: stmg %r14, %r15, 112(%r15) 216*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r14, -48 217*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r15, -40 218*9880d681SAndroid Build Coastguard Worker; CHECK: agfi %r15, -556928 219*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_def_cfa_offset 557088 220*9880d681SAndroid Build Coastguard Worker; ...main function body... 221*9880d681SAndroid Build Coastguard Worker; CHECK: aghi %r15, 32760 222*9880d681SAndroid Build Coastguard Worker; CHECK: lmg %r14, %r15, 524280(%r15) 223*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 224*9880d681SAndroid Build Coastguard Worker %l0 = load volatile i32 , i32 *%ptr 225*9880d681SAndroid Build Coastguard Worker %l1 = load volatile i32 , i32 *%ptr 226*9880d681SAndroid Build Coastguard Worker %l4 = load volatile i32 , i32 *%ptr 227*9880d681SAndroid Build Coastguard Worker %l5 = load volatile i32 , i32 *%ptr 228*9880d681SAndroid Build Coastguard Worker %l14 = load volatile i32 , i32 *%ptr 229*9880d681SAndroid Build Coastguard Worker %add0 = add i32 %l0, %l0 230*9880d681SAndroid Build Coastguard Worker %add1 = add i32 %l1, %add0 231*9880d681SAndroid Build Coastguard Worker %add4 = add i32 %l4, %add1 232*9880d681SAndroid Build Coastguard Worker %add5 = add i32 %l5, %add4 233*9880d681SAndroid Build Coastguard Worker %add14 = add i32 %l14, %add5 234*9880d681SAndroid Build Coastguard Worker store volatile i32 %add0, i32 *%ptr 235*9880d681SAndroid Build Coastguard Worker store volatile i32 %add1, i32 *%ptr 236*9880d681SAndroid Build Coastguard Worker store volatile i32 %add4, i32 *%ptr 237*9880d681SAndroid Build Coastguard Worker store volatile i32 %add5, i32 *%ptr 238*9880d681SAndroid Build Coastguard Worker store volatile i32 %add14, i32 *%ptr 239*9880d681SAndroid Build Coastguard Worker %y = alloca [69594 x i64], align 8 240*9880d681SAndroid Build Coastguard Worker %entry = getelementptr inbounds [69594 x i64], [69594 x i64]* %y, i64 0, i64 0 241*9880d681SAndroid Build Coastguard Worker store volatile i64 %x, i64* %entry 242*9880d681SAndroid Build Coastguard Worker ret void 243*9880d681SAndroid Build Coastguard Worker} 244*9880d681SAndroid Build Coastguard Worker 245*9880d681SAndroid Build Coastguard Worker; This is the smallest frame size for which the preparatory increment for 246*9880d681SAndroid Build Coastguard Worker; "lmg %r14, %r15, ..." needs to be done using AGFI. 247*9880d681SAndroid Build Coastguard Workerdefine void @f6(i32 *%ptr, i64 %x) { 248*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f6: 249*9880d681SAndroid Build Coastguard Worker; CHECK: stmg %r14, %r15, 112(%r15) 250*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r14, -48 251*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_offset %r15, -40 252*9880d681SAndroid Build Coastguard Worker; CHECK: agfi %r15, -556936 253*9880d681SAndroid Build Coastguard Worker; CHECK: .cfi_def_cfa_offset 557096 254*9880d681SAndroid Build Coastguard Worker; ...main function body... 255*9880d681SAndroid Build Coastguard Worker; CHECK: agfi %r15, 32768 256*9880d681SAndroid Build Coastguard Worker; CHECK: lmg %r14, %r15, 524280(%r15) 257*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 258*9880d681SAndroid Build Coastguard Worker %l0 = load volatile i32 , i32 *%ptr 259*9880d681SAndroid Build Coastguard Worker %l1 = load volatile i32 , i32 *%ptr 260*9880d681SAndroid Build Coastguard Worker %l4 = load volatile i32 , i32 *%ptr 261*9880d681SAndroid Build Coastguard Worker %l5 = load volatile i32 , i32 *%ptr 262*9880d681SAndroid Build Coastguard Worker %l14 = load volatile i32 , i32 *%ptr 263*9880d681SAndroid Build Coastguard Worker %add0 = add i32 %l0, %l0 264*9880d681SAndroid Build Coastguard Worker %add1 = add i32 %l1, %add0 265*9880d681SAndroid Build Coastguard Worker %add4 = add i32 %l4, %add1 266*9880d681SAndroid Build Coastguard Worker %add5 = add i32 %l5, %add4 267*9880d681SAndroid Build Coastguard Worker %add14 = add i32 %l14, %add5 268*9880d681SAndroid Build Coastguard Worker store volatile i32 %add0, i32 *%ptr 269*9880d681SAndroid Build Coastguard Worker store volatile i32 %add1, i32 *%ptr 270*9880d681SAndroid Build Coastguard Worker store volatile i32 %add4, i32 *%ptr 271*9880d681SAndroid Build Coastguard Worker store volatile i32 %add5, i32 *%ptr 272*9880d681SAndroid Build Coastguard Worker store volatile i32 %add14, i32 *%ptr 273*9880d681SAndroid Build Coastguard Worker %y = alloca [69595 x i64], align 8 274*9880d681SAndroid Build Coastguard Worker %entry = getelementptr inbounds [69595 x i64], [69595 x i64]* %y, i64 0, i64 0 275*9880d681SAndroid Build Coastguard Worker store volatile i64 %x, i64* %entry 276*9880d681SAndroid Build Coastguard Worker ret void 277*9880d681SAndroid Build Coastguard Worker} 278