1 ; RUN: llc < %s -march=xcore | FileCheck %s
7 %struct.st0 = type { [0 x i32] }
8 declare void @f0(ptr) nounwind
9 define void @f0Test(ptr byval(%struct.st0) %s0) nounwind {
11 call void @f0(ptr %s0) nounwind
17 ; CHECK: stw r4, sp[12]
18 ; CHECK: stw r5, sp[11]
20 ; CHECK: ldaw r5, sp[1]
23 ; CHECK: bl __memcpy_4
27 ; CHECK: ldw r5, sp[11]
28 ; CHECK: ldw r4, sp[12]
30 %struct.st1 = type { [10 x i32] }
31 declare void @f1(ptr) nounwind
32 define i32 @f1Test(i32 %i, ptr byval(%struct.st1) %s1) nounwind {
34 call void @f1(ptr %s1) nounwind
40 ; CHECK: stw lr, sp[1]
42 ; CHECK-DAG: stw r2, sp[3]
43 ; CHECK-DAG: stw r3, sp[4]
44 ; CHECK: ldw r0, r0[0]
45 ; CHECK: stw r0, sp[2]
46 ; CHECK: ldaw r1, sp[2]
49 ; CHECK: ldw lr, sp[1]
50 ; CHECK: ldaw sp, sp[4]
52 %struct.st2 = type { i32 }
53 declare void @f2(i32, ptr) nounwind
54 define void @f2Test(ptr byval(%struct.st2) %s2, i32 %i, ...) nounwind {
56 call void @f2(i32 %i, ptr %s2)
63 ; CHECK: ld8u r2, r0[r1]
64 ; CHECK: ldaw r0, sp[1]
65 ; CHECK: st8 r2, r0[r1]
68 declare void @f3(ptr) nounwind
69 define void @f3Test(ptr byval(i8) %v) nounwind {
71 call void @f3(ptr %v) nounwind