1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=sparc -disable-sparc-delay-filler -disable-sparc-leaf-proc | FileCheck %s --check-prefix=CHECK --check-prefix=HARD --check-prefix=CHECK-BE 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=sparcel -disable-sparc-delay-filler -disable-sparc-leaf-proc | FileCheck %s --check-prefix=CHECK --check-prefix=HARD --check-prefix=CHECK-LE 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=sparc -disable-sparc-delay-filler -disable-sparc-leaf-proc -mattr=soft-float | FileCheck %s --check-prefix=CHECK --check-prefix=SOFT --check-prefix=CHECK-BE 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: intarg: 6*9880d681SAndroid Build Coastguard Worker; The save/restore frame is not strictly necessary here, but we would need to 7*9880d681SAndroid Build Coastguard Worker; refer to %o registers instead. 8*9880d681SAndroid Build Coastguard Worker; CHECK: save %sp, -96, %sp 9*9880d681SAndroid Build Coastguard Worker; CHECK: ld [%fp+96], [[R2:%[gilo][0-7]]] 10*9880d681SAndroid Build Coastguard Worker; CHECK: ld [%fp+92], [[R1:%[gilo][0-7]]] 11*9880d681SAndroid Build Coastguard Worker; CHECK: stb %i0, [%i4] 12*9880d681SAndroid Build Coastguard Worker; CHECK: stb %i1, [%i4] 13*9880d681SAndroid Build Coastguard Worker; CHECK: sth %i2, [%i4] 14*9880d681SAndroid Build Coastguard Worker; CHECK: st %i3, [%i4] 15*9880d681SAndroid Build Coastguard Worker; CHECK: st %i4, [%i4] 16*9880d681SAndroid Build Coastguard Worker; CHECK: st %i5, [%i4] 17*9880d681SAndroid Build Coastguard Worker; CHECK: st [[R1]], [%i4] 18*9880d681SAndroid Build Coastguard Worker; CHECK: st [[R2]], [%i4] 19*9880d681SAndroid Build Coastguard Worker; CHECK: restore 20*9880d681SAndroid Build Coastguard Workerdefine void @intarg(i8 %a0, ; %i0 21*9880d681SAndroid Build Coastguard Worker i8 %a1, ; %i1 22*9880d681SAndroid Build Coastguard Worker i16 %a2, ; %i2 23*9880d681SAndroid Build Coastguard Worker i32 %a3, ; %i3 24*9880d681SAndroid Build Coastguard Worker i8* %a4, ; %i4 25*9880d681SAndroid Build Coastguard Worker i32 %a5, ; %i5 26*9880d681SAndroid Build Coastguard Worker i32 signext %a6, ; [%fp+92] 27*9880d681SAndroid Build Coastguard Worker i8* %a7) { ; [%fp+96] 28*9880d681SAndroid Build Coastguard Worker store i8 %a0, i8* %a4 29*9880d681SAndroid Build Coastguard Worker store i8 %a1, i8* %a4 30*9880d681SAndroid Build Coastguard Worker %p16 = bitcast i8* %a4 to i16* 31*9880d681SAndroid Build Coastguard Worker store i16 %a2, i16* %p16 32*9880d681SAndroid Build Coastguard Worker %p32 = bitcast i8* %a4 to i32* 33*9880d681SAndroid Build Coastguard Worker store i32 %a3, i32* %p32 34*9880d681SAndroid Build Coastguard Worker %pp = bitcast i8* %a4 to i8** 35*9880d681SAndroid Build Coastguard Worker store i8* %a4, i8** %pp 36*9880d681SAndroid Build Coastguard Worker store i32 %a5, i32* %p32 37*9880d681SAndroid Build Coastguard Worker store i32 %a6, i32* %p32 38*9880d681SAndroid Build Coastguard Worker store i8* %a7, i8** %pp 39*9880d681SAndroid Build Coastguard Worker ret void 40*9880d681SAndroid Build Coastguard Worker} 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: call_intarg: 43*9880d681SAndroid Build Coastguard Worker; CHECK: save %sp, -104, %sp 44*9880d681SAndroid Build Coastguard Worker; Use %o0-%o5 for outgoing arguments 45*9880d681SAndroid Build Coastguard Worker; CHECK: mov 5, %o5 46*9880d681SAndroid Build Coastguard Worker; CHECK: st %i0, [%sp+92] 47*9880d681SAndroid Build Coastguard Worker; CHECK: call intarg 48*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: add %sp 49*9880d681SAndroid Build Coastguard Worker; CHECK: restore 50*9880d681SAndroid Build Coastguard Workerdefine void @call_intarg(i32 %i0, i8* %i1) { 51*9880d681SAndroid Build Coastguard Worker call void @intarg(i8 0, i8 1, i16 2, i32 3, i8* undef, i32 5, i32 %i0, i8* %i1) 52*9880d681SAndroid Build Coastguard Worker ret void 53*9880d681SAndroid Build Coastguard Worker} 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Worker;; Verify doubles starting with an even reg, starting with an odd reg, 56*9880d681SAndroid Build Coastguard Worker;; straddling the boundary of regs and mem, and floats in regs and mem. 57*9880d681SAndroid Build Coastguard Worker; 58*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: floatarg: 59*9880d681SAndroid Build Coastguard Worker; HARD: save %sp, -120, %sp 60*9880d681SAndroid Build Coastguard Worker; HARD: mov %i5, %g2 61*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: ld [%fp+92], %g3 62*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: mov %i4, %i5 63*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: ! kill 64*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: std %g2, [%fp+-24] 65*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: mov %i3, %i4 66*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: std %i4, [%fp+-16] 67*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: ! kill 68*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: std %i0, [%fp+-8] 69*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: st %i2, [%fp+-28] 70*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: ld [%fp+104], %f0 71*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: ldd [%fp+96], %f2 72*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: ld [%fp+-28], %f1 73*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: ldd [%fp+-8], %f4 74*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: ldd [%fp+-16], %f6 75*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: ldd [%fp+-24], %f8 76*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: fstod %f1, %f10 77*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: faddd %f4, %f10, %f4 78*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: faddd %f6, %f4, %f4 79*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: faddd %f8, %f4, %f4 80*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: faddd %f2, %f4, %f2 81*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: fstod %f0, %f0 82*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: faddd %f0, %f2, %f0 83*9880d681SAndroid Build Coastguard Worker; SOFT: save %sp, -96, %sp 84*9880d681SAndroid Build Coastguard Worker; SOFT: ld [%fp+104], %l0 85*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: ld [%fp+96], %l1 86*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: ld [%fp+100], %l2 87*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: ld [%fp+92], %l3 88*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i2, %o0 89*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: call __extendsfdf2 90*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: nop 91*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %o0, %i2 92*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %o1, %g2 93*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i0, %o0 94*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i1, %o1 95*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i2, %o2 96*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %g2, %o3 97*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: call __adddf3 98*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: nop 99*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %o0, %i0 100*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %o1, %i1 101*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i3, %o0 102*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i4, %o1 103*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i0, %o2 104*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i1, %o3 105*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: call __adddf3 106*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: nop 107*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %o0, %i0 108*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %o1, %i1 109*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i5, %o0 110*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %l3, %o1 111*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i0, %o2 112*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i1, %o3 113*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: call __adddf3 114*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: nop 115*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %o0, %i0 116*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %o1, %i1 117*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %l1, %o0 118*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %l2, %o1 119*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i0, %o2 120*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i1, %o3 121*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: call __adddf3 122*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: nop 123*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %o0, %i0 124*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %o1, %i1 125*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %l0, %o0 126*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: call __extendsfdf2 127*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: nop 128*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i0, %o2 129*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i1, %o3 130*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: call __adddf3 131*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: nop 132*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %o0, %i0 133*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %o1, %i1 134*9880d681SAndroid Build Coastguard Worker; CHECK: restore 135*9880d681SAndroid Build Coastguard Workerdefine double @floatarg(double %a0, ; %i0,%i1 136*9880d681SAndroid Build Coastguard Worker float %a1, ; %i2 137*9880d681SAndroid Build Coastguard Worker double %a2, ; %i3, %i4 138*9880d681SAndroid Build Coastguard Worker double %a3, ; %i5, [%fp+92] (using 4 bytes) 139*9880d681SAndroid Build Coastguard Worker double %a4, ; [%fp+96] (using 8 bytes) 140*9880d681SAndroid Build Coastguard Worker float %a5) { ; [%fp+104] (using 4 bytes) 141*9880d681SAndroid Build Coastguard Worker %d1 = fpext float %a1 to double 142*9880d681SAndroid Build Coastguard Worker %s1 = fadd double %a0, %d1 143*9880d681SAndroid Build Coastguard Worker %s2 = fadd double %a2, %s1 144*9880d681SAndroid Build Coastguard Worker %s3 = fadd double %a3, %s2 145*9880d681SAndroid Build Coastguard Worker %s4 = fadd double %a4, %s3 146*9880d681SAndroid Build Coastguard Worker %d5 = fpext float %a5 to double 147*9880d681SAndroid Build Coastguard Worker %s5 = fadd double %d5, %s4 148*9880d681SAndroid Build Coastguard Worker ret double %s5 149*9880d681SAndroid Build Coastguard Worker} 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: call_floatarg: 152*9880d681SAndroid Build Coastguard Worker; HARD: save %sp, -112, %sp 153*9880d681SAndroid Build Coastguard Worker; HARD: mov %i2, %o1 154*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: mov %i1, %o0 155*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: st %i0, [%sp+104] 156*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: std %o0, [%sp+96] 157*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: st %o1, [%sp+92] 158*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: mov %i0, %o2 159*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: mov %o0, %o3 160*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: mov %o1, %o4 161*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: mov %o0, %o5 162*9880d681SAndroid Build Coastguard Worker; HARD-NEXT: call floatarg 163*9880d681SAndroid Build Coastguard Worker; HARD: std %f0, [%i4] 164*9880d681SAndroid Build Coastguard Worker; SOFT: st %i0, [%sp+104] 165*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: st %i2, [%sp+100] 166*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: st %i1, [%sp+96] 167*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: st %i2, [%sp+92] 168*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i1, %o0 169*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i2, %o1 170*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i0, %o2 171*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i1, %o3 172*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i2, %o4 173*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: mov %i1, %o5 174*9880d681SAndroid Build Coastguard Worker; SOFT-NEXT: call floatarg 175*9880d681SAndroid Build Coastguard Worker; SOFT: std %o0, [%i4] 176*9880d681SAndroid Build Coastguard Worker; CHECK: restore 177*9880d681SAndroid Build Coastguard Workerdefine void @call_floatarg(float %f1, double %d2, float %f5, double *%p) { 178*9880d681SAndroid Build Coastguard Worker %r = call double @floatarg(double %d2, float %f1, double %d2, double %d2, 179*9880d681SAndroid Build Coastguard Worker double %d2, float %f1) 180*9880d681SAndroid Build Coastguard Worker store double %r, double* %p 181*9880d681SAndroid Build Coastguard Worker ret void 182*9880d681SAndroid Build Coastguard Worker} 183*9880d681SAndroid Build Coastguard Worker 184*9880d681SAndroid Build Coastguard Worker;; i64 arguments should effectively work the same as double: split 185*9880d681SAndroid Build Coastguard Worker;; into two locations. This is different for little-endian vs big 186*9880d681SAndroid Build Coastguard Worker;; endian, since the 64-bit math needs to be split 187*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: i64arg: 188*9880d681SAndroid Build Coastguard Worker; CHECK: save %sp, -96, %sp 189*9880d681SAndroid Build Coastguard Worker; CHECK-BE: ld [%fp+100], %g2 190*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: ld [%fp+96], %g3 191*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: ld [%fp+92], %g4 192*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: addcc %i1, %i2, %i1 193*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: addxcc %i0, 0, %i0 194*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: addcc %i4, %i1, %i1 195*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: addxcc %i3, %i0, %i0 196*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: addcc %g4, %i1, %i1 197*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: ld [%fp+104], %i2 198*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: addxcc %i5, %i0, %i0 199*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: addcc %g2, %i1, %i1 200*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: addxcc %g3, %i0, %i0 201*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: addcc %i2, %i1, %i1 202*9880d681SAndroid Build Coastguard Worker; CHECK-BE-NEXT: addxcc %i0, 0, %i0 203*9880d681SAndroid Build Coastguard Worker; 204*9880d681SAndroid Build Coastguard Worker; CHECK-LE: ld [%fp+96], %g2 205*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: ld [%fp+100], %g3 206*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: ld [%fp+92], %g4 207*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: addcc %i0, %i2, %i0 208*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: addxcc %i1, 0, %i1 209*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: addcc %i3, %i0, %i0 210*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: addxcc %i4, %i1, %i1 211*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: addcc %i5, %i0, %i0 212*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: ld [%fp+104], %i2 213*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: addxcc %g4, %i1, %i1 214*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: addcc %g2, %i0, %i0 215*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: addxcc %g3, %i1, %i1 216*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: addcc %i2, %i0, %i0 217*9880d681SAndroid Build Coastguard Worker; CHECK-LE-NEXT: addxcc %i1, 0, %i1 218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: restore 219*9880d681SAndroid Build Coastguard Worker 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Workerdefine i64 @i64arg(i64 %a0, ; %i0,%i1 222*9880d681SAndroid Build Coastguard Worker i32 %a1, ; %i2 223*9880d681SAndroid Build Coastguard Worker i64 %a2, ; %i3, %i4 224*9880d681SAndroid Build Coastguard Worker i64 %a3, ; %i5, [%fp+92] (using 4 bytes) 225*9880d681SAndroid Build Coastguard Worker i64 %a4, ; [%fp+96] (using 8 bytes) 226*9880d681SAndroid Build Coastguard Worker i32 %a5) { ; [%fp+104] (using 4 bytes) 227*9880d681SAndroid Build Coastguard Worker %a1L = zext i32 %a1 to i64 228*9880d681SAndroid Build Coastguard Worker %s1 = add i64 %a0, %a1L 229*9880d681SAndroid Build Coastguard Worker %s2 = add i64 %a2, %s1 230*9880d681SAndroid Build Coastguard Worker %s3 = add i64 %a3, %s2 231*9880d681SAndroid Build Coastguard Worker %s4 = add i64 %a4, %s3 232*9880d681SAndroid Build Coastguard Worker %a5L = zext i32 %a5 to i64 233*9880d681SAndroid Build Coastguard Worker %s5 = add i64 %a5L, %s4 234*9880d681SAndroid Build Coastguard Worker ret i64 %s5 235*9880d681SAndroid Build Coastguard Worker} 236*9880d681SAndroid Build Coastguard Worker 237*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: call_i64arg: 238*9880d681SAndroid Build Coastguard Worker; CHECK: save %sp, -112, %sp 239*9880d681SAndroid Build Coastguard Worker; CHECK: st %i0, [%sp+104] 240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: st %i2, [%sp+100] 241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: st %i1, [%sp+96] 242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: st %i2, [%sp+92] 243*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: mov %i1, %o0 244*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: mov %i2, %o1 245*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: mov %i0, %o2 246*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: mov %i1, %o3 247*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: mov %i2, %o4 248*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: mov %i1, %o5 249*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call i64arg 250*9880d681SAndroid Build Coastguard Worker; CHECK: std %o0, [%i3] 251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: restore 252*9880d681SAndroid Build Coastguard Worker 253*9880d681SAndroid Build Coastguard Workerdefine void @call_i64arg(i32 %a0, i64 %a1, i64* %p) { 254*9880d681SAndroid Build Coastguard Worker %r = call i64 @i64arg(i64 %a1, i32 %a0, i64 %a1, i64 %a1, i64 %a1, i32 %a0) 255*9880d681SAndroid Build Coastguard Worker store i64 %r, i64* %p 256*9880d681SAndroid Build Coastguard Worker ret void 257*9880d681SAndroid Build Coastguard Worker} 258