1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine i32 @VarArg() nounwind { 6*9880d681SAndroid Build Coastguard Workerentry: 7*9880d681SAndroid Build Coastguard Worker %i = alloca i32, align 4 8*9880d681SAndroid Build Coastguard Worker %j = alloca i32, align 4 9*9880d681SAndroid Build Coastguard Worker %k = alloca i32, align 4 10*9880d681SAndroid Build Coastguard Worker %m = alloca i32, align 4 11*9880d681SAndroid Build Coastguard Worker %n = alloca i32, align 4 12*9880d681SAndroid Build Coastguard Worker %tmp = alloca i32, align 4 13*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %i, align 4 14*9880d681SAndroid Build Coastguard Worker %1 = load i32, i32* %j, align 4 15*9880d681SAndroid Build Coastguard Worker %2 = load i32, i32* %k, align 4 16*9880d681SAndroid Build Coastguard Worker %3 = load i32, i32* %m, align 4 17*9880d681SAndroid Build Coastguard Worker %4 = load i32, i32* %n, align 4 18*9880d681SAndroid Build Coastguard Worker; ARM: VarArg 19*9880d681SAndroid Build Coastguard Worker; ARM: mov [[FP:r[0-9]+]], sp 20*9880d681SAndroid Build Coastguard Worker; ARM: sub sp, sp, #32 21*9880d681SAndroid Build Coastguard Worker; ARM: movw r0, #5 22*9880d681SAndroid Build Coastguard Worker; ARM: ldr r1, {{\[}}[[FP]], #-4] 23*9880d681SAndroid Build Coastguard Worker; ARM: ldr r2, {{\[}}[[FP]], #-8] 24*9880d681SAndroid Build Coastguard Worker; ARM: ldr r3, {{\[}}[[FP]], #-12] 25*9880d681SAndroid Build Coastguard Worker; ARM: ldr [[Ra:r[0-9]+]], [sp, #16] 26*9880d681SAndroid Build Coastguard Worker; ARM: ldr [[Rb:[lr]+[0-9]*]], [sp, #12] 27*9880d681SAndroid Build Coastguard Worker; ARM: str [[Ra]], [sp] 28*9880d681SAndroid Build Coastguard Worker; ARM: str [[Rb]], [sp, #4] 29*9880d681SAndroid Build Coastguard Worker; ARM: bl {{_?CallVariadic}} 30*9880d681SAndroid Build Coastguard Worker; THUMB: sub sp, #32 31*9880d681SAndroid Build Coastguard Worker; THUMB: movs r0, #5 32*9880d681SAndroid Build Coastguard Worker; THUMB: ldr r1, [sp, #28] 33*9880d681SAndroid Build Coastguard Worker; THUMB: ldr r2, [sp, #24] 34*9880d681SAndroid Build Coastguard Worker; THUMB: ldr r3, [sp, #20] 35*9880d681SAndroid Build Coastguard Worker; THUMB: ldr.w {{[a-z0-9]+}}, [sp, #16] 36*9880d681SAndroid Build Coastguard Worker; THUMB: ldr.w {{[a-z0-9]+}}, [sp, #12] 37*9880d681SAndroid Build Coastguard Worker; THUMB: str.w {{[a-z0-9]+}}, [sp] 38*9880d681SAndroid Build Coastguard Worker; THUMB: str.w {{[a-z0-9]+}}, [sp, #4] 39*9880d681SAndroid Build Coastguard Worker; THUMB: bl {{_?}}CallVariadic 40*9880d681SAndroid Build Coastguard Worker %call = call i32 (i32, ...) @CallVariadic(i32 5, i32 %0, i32 %1, i32 %2, i32 %3, i32 %4) 41*9880d681SAndroid Build Coastguard Worker store i32 %call, i32* %tmp, align 4 42*9880d681SAndroid Build Coastguard Worker %5 = load i32, i32* %tmp, align 4 43*9880d681SAndroid Build Coastguard Worker ret i32 %5 44*9880d681SAndroid Build Coastguard Worker} 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Workerdeclare i32 @CallVariadic(i32, ...) 47