xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/arm64-ld1.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=arm64 -aarch64-neon-syntax=apple -verify-machineinstrs -asm-verbose=false | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker%struct.__neon_int8x8x2_t = type { <8 x i8>,  <8 x i8> }
4*9880d681SAndroid Build Coastguard Worker%struct.__neon_int8x8x3_t = type { <8 x i8>,  <8 x i8>,  <8 x i8> }
5*9880d681SAndroid Build Coastguard Worker%struct.__neon_int8x8x4_t = type { <8 x i8>,  <8 x i8>, <8 x i8>,  <8 x i8> }
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x8x2_t @ld2_8b(i8* %A) nounwind {
8*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld2_8b
9*9880d681SAndroid Build Coastguard Worker; Make sure we are loading into the results defined by the ABI (i.e., v0, v1)
10*9880d681SAndroid Build Coastguard Worker; and from the argument of the function also defined by ABI (i.e., x0)
11*9880d681SAndroid Build Coastguard Worker; CHECK: ld2.8b { v0, v1 }, [x0]
12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
13*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int8x8x2_t @llvm.aarch64.neon.ld2.v8i8.p0i8(i8* %A)
14*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int8x8x2_t  %tmp2
15*9880d681SAndroid Build Coastguard Worker}
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x8x3_t @ld3_8b(i8* %A) nounwind {
18*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld3_8b
19*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
20*9880d681SAndroid Build Coastguard Worker; CHECK: ld3.8b { v0, v1, v2 }, [x0]
21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
22*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int8x8x3_t @llvm.aarch64.neon.ld3.v8i8.p0i8(i8* %A)
23*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int8x8x3_t  %tmp2
24*9880d681SAndroid Build Coastguard Worker}
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x8x4_t @ld4_8b(i8* %A) nounwind {
27*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld4_8b
28*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
29*9880d681SAndroid Build Coastguard Worker; CHECK: ld4.8b { v0, v1, v2, v3 }, [x0]
30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
31*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int8x8x4_t @llvm.aarch64.neon.ld4.v8i8.p0i8(i8* %A)
32*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int8x8x4_t  %tmp2
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x8x2_t @llvm.aarch64.neon.ld2.v8i8.p0i8(i8*) nounwind readonly
36*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x8x3_t @llvm.aarch64.neon.ld3.v8i8.p0i8(i8*) nounwind readonly
37*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x8x4_t @llvm.aarch64.neon.ld4.v8i8.p0i8(i8*) nounwind readonly
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker%struct.__neon_int8x16x2_t = type { <16 x i8>,  <16 x i8> }
40*9880d681SAndroid Build Coastguard Worker%struct.__neon_int8x16x3_t = type { <16 x i8>,  <16 x i8>,  <16 x i8> }
41*9880d681SAndroid Build Coastguard Worker%struct.__neon_int8x16x4_t = type { <16 x i8>,  <16 x i8>, <16 x i8>,  <16 x i8> }
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x16x2_t @ld2_16b(i8* %A) nounwind {
44*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld2_16b
45*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
46*9880d681SAndroid Build Coastguard Worker; CHECK: ld2.16b { v0, v1 }, [x0]
47*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
48*9880d681SAndroid Build Coastguard Worker  %tmp2 = call %struct.__neon_int8x16x2_t @llvm.aarch64.neon.ld2.v16i8.p0i8(i8* %A)
49*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int8x16x2_t  %tmp2
50*9880d681SAndroid Build Coastguard Worker}
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x16x3_t @ld3_16b(i8* %A) nounwind {
53*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld3_16b
54*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
55*9880d681SAndroid Build Coastguard Worker; CHECK: ld3.16b { v0, v1, v2 }, [x0]
56*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
57*9880d681SAndroid Build Coastguard Worker  %tmp2 = call %struct.__neon_int8x16x3_t @llvm.aarch64.neon.ld3.v16i8.p0i8(i8* %A)
58*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int8x16x3_t  %tmp2
59*9880d681SAndroid Build Coastguard Worker}
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x16x4_t @ld4_16b(i8* %A) nounwind {
62*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld4_16b
63*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
64*9880d681SAndroid Build Coastguard Worker; CHECK: ld4.16b { v0, v1, v2, v3 }, [x0]
65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
66*9880d681SAndroid Build Coastguard Worker  %tmp2 = call %struct.__neon_int8x16x4_t @llvm.aarch64.neon.ld4.v16i8.p0i8(i8* %A)
67*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int8x16x4_t  %tmp2
68*9880d681SAndroid Build Coastguard Worker}
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x16x2_t @llvm.aarch64.neon.ld2.v16i8.p0i8(i8*) nounwind readonly
71*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x16x3_t @llvm.aarch64.neon.ld3.v16i8.p0i8(i8*) nounwind readonly
72*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x16x4_t @llvm.aarch64.neon.ld4.v16i8.p0i8(i8*) nounwind readonly
73*9880d681SAndroid Build Coastguard Worker
74*9880d681SAndroid Build Coastguard Worker%struct.__neon_int16x4x2_t = type { <4 x i16>,  <4 x i16> }
75*9880d681SAndroid Build Coastguard Worker%struct.__neon_int16x4x3_t = type { <4 x i16>,  <4 x i16>,  <4 x i16> }
76*9880d681SAndroid Build Coastguard Worker%struct.__neon_int16x4x4_t = type { <4 x i16>,  <4 x i16>, <4 x i16>,  <4 x i16> }
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x4x2_t @ld2_4h(i16* %A) nounwind {
79*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld2_4h
80*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
81*9880d681SAndroid Build Coastguard Worker; CHECK: ld2.4h { v0, v1 }, [x0]
82*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
83*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int16x4x2_t @llvm.aarch64.neon.ld2.v4i16.p0i16(i16* %A)
84*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int16x4x2_t  %tmp2
85*9880d681SAndroid Build Coastguard Worker}
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x4x3_t @ld3_4h(i16* %A) nounwind {
88*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld3_4h
89*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
90*9880d681SAndroid Build Coastguard Worker; CHECK: ld3.4h { v0, v1, v2 }, [x0]
91*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
92*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int16x4x3_t @llvm.aarch64.neon.ld3.v4i16.p0i16(i16* %A)
93*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int16x4x3_t  %tmp2
94*9880d681SAndroid Build Coastguard Worker}
95*9880d681SAndroid Build Coastguard Worker
96*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x4x4_t @ld4_4h(i16* %A) nounwind {
97*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld4_4h
98*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
99*9880d681SAndroid Build Coastguard Worker; CHECK: ld4.4h { v0, v1, v2, v3 }, [x0]
100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
101*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int16x4x4_t @llvm.aarch64.neon.ld4.v4i16.p0i16(i16* %A)
102*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int16x4x4_t  %tmp2
103*9880d681SAndroid Build Coastguard Worker}
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x4x2_t @llvm.aarch64.neon.ld2.v4i16.p0i16(i16*) nounwind readonly
106*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x4x3_t @llvm.aarch64.neon.ld3.v4i16.p0i16(i16*) nounwind readonly
107*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x4x4_t @llvm.aarch64.neon.ld4.v4i16.p0i16(i16*) nounwind readonly
108*9880d681SAndroid Build Coastguard Worker
109*9880d681SAndroid Build Coastguard Worker%struct.__neon_int16x8x2_t = type { <8 x i16>,  <8 x i16> }
110*9880d681SAndroid Build Coastguard Worker%struct.__neon_int16x8x3_t = type { <8 x i16>,  <8 x i16>,  <8 x i16> }
111*9880d681SAndroid Build Coastguard Worker%struct.__neon_int16x8x4_t = type { <8 x i16>,  <8 x i16>, <8 x i16>,  <8 x i16> }
112*9880d681SAndroid Build Coastguard Worker
113*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x8x2_t @ld2_8h(i16* %A) nounwind {
114*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld2_8h
115*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
116*9880d681SAndroid Build Coastguard Worker; CHECK: ld2.8h { v0, v1 }, [x0]
117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
118*9880d681SAndroid Build Coastguard Worker  %tmp2 = call %struct.__neon_int16x8x2_t @llvm.aarch64.neon.ld2.v8i16.p0i16(i16* %A)
119*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int16x8x2_t  %tmp2
120*9880d681SAndroid Build Coastguard Worker}
121*9880d681SAndroid Build Coastguard Worker
122*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x8x3_t @ld3_8h(i16* %A) nounwind {
123*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld3_8h
124*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
125*9880d681SAndroid Build Coastguard Worker; CHECK: ld3.8h { v0, v1, v2 }, [x0]
126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
127*9880d681SAndroid Build Coastguard Worker  %tmp2 = call %struct.__neon_int16x8x3_t @llvm.aarch64.neon.ld3.v8i16.p0i16(i16* %A)
128*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int16x8x3_t %tmp2
129*9880d681SAndroid Build Coastguard Worker}
130*9880d681SAndroid Build Coastguard Worker
131*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x8x4_t @ld4_8h(i16* %A) nounwind {
132*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld4_8h
133*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
134*9880d681SAndroid Build Coastguard Worker; CHECK: ld4.8h { v0, v1, v2, v3 }, [x0]
135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
136*9880d681SAndroid Build Coastguard Worker  %tmp2 = call %struct.__neon_int16x8x4_t @llvm.aarch64.neon.ld4.v8i16.p0i16(i16* %A)
137*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int16x8x4_t  %tmp2
138*9880d681SAndroid Build Coastguard Worker}
139*9880d681SAndroid Build Coastguard Worker
140*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x8x2_t @llvm.aarch64.neon.ld2.v8i16.p0i16(i16*) nounwind readonly
141*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x8x3_t @llvm.aarch64.neon.ld3.v8i16.p0i16(i16*) nounwind readonly
142*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x8x4_t @llvm.aarch64.neon.ld4.v8i16.p0i16(i16*) nounwind readonly
143*9880d681SAndroid Build Coastguard Worker
144*9880d681SAndroid Build Coastguard Worker%struct.__neon_int32x2x2_t = type { <2 x i32>,  <2 x i32> }
145*9880d681SAndroid Build Coastguard Worker%struct.__neon_int32x2x3_t = type { <2 x i32>,  <2 x i32>,  <2 x i32> }
146*9880d681SAndroid Build Coastguard Worker%struct.__neon_int32x2x4_t = type { <2 x i32>,  <2 x i32>, <2 x i32>,  <2 x i32> }
147*9880d681SAndroid Build Coastguard Worker
148*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x2x2_t @ld2_2s(i32* %A) nounwind {
149*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld2_2s
150*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
151*9880d681SAndroid Build Coastguard Worker; CHECK: ld2.2s { v0, v1 }, [x0]
152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
153*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x2x2_t @llvm.aarch64.neon.ld2.v2i32.p0i32(i32* %A)
154*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x2x2_t  %tmp2
155*9880d681SAndroid Build Coastguard Worker}
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x2x3_t @ld3_2s(i32* %A) nounwind {
158*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld3_2s
159*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
160*9880d681SAndroid Build Coastguard Worker; CHECK: ld3.2s { v0, v1, v2 }, [x0]
161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
162*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x2x3_t @llvm.aarch64.neon.ld3.v2i32.p0i32(i32* %A)
163*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x2x3_t  %tmp2
164*9880d681SAndroid Build Coastguard Worker}
165*9880d681SAndroid Build Coastguard Worker
166*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x2x4_t @ld4_2s(i32* %A) nounwind {
167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld4_2s
168*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
169*9880d681SAndroid Build Coastguard Worker; CHECK: ld4.2s { v0, v1, v2, v3 }, [x0]
170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
171*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x2x4_t @llvm.aarch64.neon.ld4.v2i32.p0i32(i32* %A)
172*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x2x4_t  %tmp2
173*9880d681SAndroid Build Coastguard Worker}
174*9880d681SAndroid Build Coastguard Worker
175*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x2x2_t @llvm.aarch64.neon.ld2.v2i32.p0i32(i32*) nounwind readonly
176*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x2x3_t @llvm.aarch64.neon.ld3.v2i32.p0i32(i32*) nounwind readonly
177*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x2x4_t @llvm.aarch64.neon.ld4.v2i32.p0i32(i32*) nounwind readonly
178*9880d681SAndroid Build Coastguard Worker
179*9880d681SAndroid Build Coastguard Worker%struct.__neon_int32x4x2_t = type { <4 x i32>,  <4 x i32> }
180*9880d681SAndroid Build Coastguard Worker%struct.__neon_int32x4x3_t = type { <4 x i32>,  <4 x i32>,  <4 x i32> }
181*9880d681SAndroid Build Coastguard Worker%struct.__neon_int32x4x4_t = type { <4 x i32>,  <4 x i32>, <4 x i32>,  <4 x i32> }
182*9880d681SAndroid Build Coastguard Worker
183*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x4x2_t @ld2_4s(i32* %A) nounwind {
184*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld2_4s
185*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
186*9880d681SAndroid Build Coastguard Worker; CHECK: ld2.4s { v0, v1 }, [x0]
187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
188*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x4x2_t @llvm.aarch64.neon.ld2.v4i32.p0i32(i32* %A)
189*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x4x2_t  %tmp2
190*9880d681SAndroid Build Coastguard Worker}
191*9880d681SAndroid Build Coastguard Worker
192*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x4x3_t @ld3_4s(i32* %A) nounwind {
193*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld3_4s
194*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
195*9880d681SAndroid Build Coastguard Worker; CHECK: ld3.4s { v0, v1, v2 }, [x0]
196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
197*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x4x3_t @llvm.aarch64.neon.ld3.v4i32.p0i32(i32* %A)
198*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x4x3_t  %tmp2
199*9880d681SAndroid Build Coastguard Worker}
200*9880d681SAndroid Build Coastguard Worker
201*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x4x4_t @ld4_4s(i32* %A) nounwind {
202*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld4_4s
203*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
204*9880d681SAndroid Build Coastguard Worker; CHECK: ld4.4s { v0, v1, v2, v3 }, [x0]
205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
206*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x4x4_t @llvm.aarch64.neon.ld4.v4i32.p0i32(i32* %A)
207*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x4x4_t  %tmp2
208*9880d681SAndroid Build Coastguard Worker}
209*9880d681SAndroid Build Coastguard Worker
210*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x4x2_t @llvm.aarch64.neon.ld2.v4i32.p0i32(i32*) nounwind readonly
211*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x4x3_t @llvm.aarch64.neon.ld3.v4i32.p0i32(i32*) nounwind readonly
212*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x4x4_t @llvm.aarch64.neon.ld4.v4i32.p0i32(i32*) nounwind readonly
213*9880d681SAndroid Build Coastguard Worker
214*9880d681SAndroid Build Coastguard Worker%struct.__neon_int64x2x2_t = type { <2 x i64>,  <2 x i64> }
215*9880d681SAndroid Build Coastguard Worker%struct.__neon_int64x2x3_t = type { <2 x i64>,  <2 x i64>,  <2 x i64> }
216*9880d681SAndroid Build Coastguard Worker%struct.__neon_int64x2x4_t = type { <2 x i64>,  <2 x i64>, <2 x i64>,  <2 x i64> }
217*9880d681SAndroid Build Coastguard Worker
218*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x2x2_t @ld2_2d(i64* %A) nounwind {
219*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld2_2d
220*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
221*9880d681SAndroid Build Coastguard Worker; CHECK: ld2.2d { v0, v1 }, [x0]
222*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
223*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x2x2_t @llvm.aarch64.neon.ld2.v2i64.p0i64(i64* %A)
224*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x2x2_t  %tmp2
225*9880d681SAndroid Build Coastguard Worker}
226*9880d681SAndroid Build Coastguard Worker
227*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x2x3_t @ld3_2d(i64* %A) nounwind {
228*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld3_2d
229*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
230*9880d681SAndroid Build Coastguard Worker; CHECK: ld3.2d { v0, v1, v2 }, [x0]
231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
232*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x2x3_t @llvm.aarch64.neon.ld3.v2i64.p0i64(i64* %A)
233*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x2x3_t  %tmp2
234*9880d681SAndroid Build Coastguard Worker}
235*9880d681SAndroid Build Coastguard Worker
236*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x2x4_t @ld4_2d(i64* %A) nounwind {
237*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld4_2d
238*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
239*9880d681SAndroid Build Coastguard Worker; CHECK: ld4.2d { v0, v1, v2, v3 }, [x0]
240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
241*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x2x4_t @llvm.aarch64.neon.ld4.v2i64.p0i64(i64* %A)
242*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x2x4_t  %tmp2
243*9880d681SAndroid Build Coastguard Worker}
244*9880d681SAndroid Build Coastguard Worker
245*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x2x2_t @llvm.aarch64.neon.ld2.v2i64.p0i64(i64*) nounwind readonly
246*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x2x3_t @llvm.aarch64.neon.ld3.v2i64.p0i64(i64*) nounwind readonly
247*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x2x4_t @llvm.aarch64.neon.ld4.v2i64.p0i64(i64*) nounwind readonly
248*9880d681SAndroid Build Coastguard Worker
249*9880d681SAndroid Build Coastguard Worker%struct.__neon_int64x1x2_t = type { <1 x i64>,  <1 x i64> }
250*9880d681SAndroid Build Coastguard Worker%struct.__neon_int64x1x3_t = type { <1 x i64>,  <1 x i64>, <1 x i64> }
251*9880d681SAndroid Build Coastguard Worker%struct.__neon_int64x1x4_t = type { <1 x i64>,  <1 x i64>, <1 x i64>, <1 x i64> }
252*9880d681SAndroid Build Coastguard Worker
253*9880d681SAndroid Build Coastguard Worker
254*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x1x2_t @ld2_1di64(i64* %A) nounwind {
255*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld2_1di64
256*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
257*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.1d { v0, v1 }, [x0]
258*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
259*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x1x2_t @llvm.aarch64.neon.ld2.v1i64.p0i64(i64* %A)
260*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x1x2_t  %tmp2
261*9880d681SAndroid Build Coastguard Worker}
262*9880d681SAndroid Build Coastguard Worker
263*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x1x3_t @ld3_1di64(i64* %A) nounwind {
264*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld3_1di64
265*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
266*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.1d { v0, v1, v2 }, [x0]
267*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
268*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x1x3_t @llvm.aarch64.neon.ld3.v1i64.p0i64(i64* %A)
269*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x1x3_t  %tmp2
270*9880d681SAndroid Build Coastguard Worker}
271*9880d681SAndroid Build Coastguard Worker
272*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x1x4_t @ld4_1di64(i64* %A) nounwind {
273*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld4_1di64
274*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
275*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.1d { v0, v1, v2, v3 }, [x0]
276*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
277*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x1x4_t @llvm.aarch64.neon.ld4.v1i64.p0i64(i64* %A)
278*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x1x4_t  %tmp2
279*9880d681SAndroid Build Coastguard Worker}
280*9880d681SAndroid Build Coastguard Worker
281*9880d681SAndroid Build Coastguard Worker
282*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x1x2_t @llvm.aarch64.neon.ld2.v1i64.p0i64(i64*) nounwind readonly
283*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x1x3_t @llvm.aarch64.neon.ld3.v1i64.p0i64(i64*) nounwind readonly
284*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x1x4_t @llvm.aarch64.neon.ld4.v1i64.p0i64(i64*) nounwind readonly
285*9880d681SAndroid Build Coastguard Worker
286*9880d681SAndroid Build Coastguard Worker%struct.__neon_float64x1x2_t = type { <1 x double>,  <1 x double> }
287*9880d681SAndroid Build Coastguard Worker%struct.__neon_float64x1x3_t = type { <1 x double>,  <1 x double>, <1 x double> }
288*9880d681SAndroid Build Coastguard Worker%struct.__neon_float64x1x4_t = type { <1 x double>,  <1 x double>, <1 x double>, <1 x double> }
289*9880d681SAndroid Build Coastguard Worker
290*9880d681SAndroid Build Coastguard Worker
291*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float64x1x2_t @ld2_1df64(double* %A) nounwind {
292*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld2_1df64
293*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
294*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.1d { v0, v1 }, [x0]
295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
296*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_float64x1x2_t @llvm.aarch64.neon.ld2.v1f64.p0f64(double* %A)
297*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_float64x1x2_t  %tmp2
298*9880d681SAndroid Build Coastguard Worker}
299*9880d681SAndroid Build Coastguard Worker
300*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float64x1x3_t @ld3_1df64(double* %A) nounwind {
301*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld3_1df64
302*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
303*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.1d { v0, v1, v2 }, [x0]
304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
305*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_float64x1x3_t @llvm.aarch64.neon.ld3.v1f64.p0f64(double* %A)
306*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_float64x1x3_t  %tmp2
307*9880d681SAndroid Build Coastguard Worker}
308*9880d681SAndroid Build Coastguard Worker
309*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float64x1x4_t @ld4_1df64(double* %A) nounwind {
310*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld4_1df64
311*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
312*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.1d { v0, v1, v2, v3 }, [x0]
313*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
314*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_float64x1x4_t @llvm.aarch64.neon.ld4.v1f64.p0f64(double* %A)
315*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_float64x1x4_t  %tmp2
316*9880d681SAndroid Build Coastguard Worker}
317*9880d681SAndroid Build Coastguard Worker
318*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float64x1x2_t @llvm.aarch64.neon.ld2.v1f64.p0f64(double*) nounwind readonly
319*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float64x1x3_t @llvm.aarch64.neon.ld3.v1f64.p0f64(double*) nounwind readonly
320*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float64x1x4_t @llvm.aarch64.neon.ld4.v1f64.p0f64(double*) nounwind readonly
321*9880d681SAndroid Build Coastguard Worker
322*9880d681SAndroid Build Coastguard Worker
323*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x16x2_t @ld2lane_16b(<16 x i8> %L1, <16 x i8> %L2, i8* %A) nounwind {
324*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
325*9880d681SAndroid Build Coastguard Worker; CHECK: ld2lane_16b
326*9880d681SAndroid Build Coastguard Worker; CHECK: ld2.b { v0, v1 }[1], [x0]
327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
328*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int8x16x2_t @llvm.aarch64.neon.ld2lane.v16i8.p0i8(<16 x i8> %L1, <16 x i8> %L2, i64 1, i8* %A)
329*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int8x16x2_t  %tmp2
330*9880d681SAndroid Build Coastguard Worker}
331*9880d681SAndroid Build Coastguard Worker
332*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x16x3_t @ld3lane_16b(<16 x i8> %L1, <16 x i8> %L2, <16 x i8> %L3, i8* %A) nounwind {
333*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
334*9880d681SAndroid Build Coastguard Worker; CHECK: ld3lane_16b
335*9880d681SAndroid Build Coastguard Worker; CHECK: ld3.b { v0, v1, v2 }[1], [x0]
336*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
337*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int8x16x3_t @llvm.aarch64.neon.ld3lane.v16i8.p0i8(<16 x i8> %L1, <16 x i8> %L2, <16 x i8> %L3, i64 1, i8* %A)
338*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int8x16x3_t  %tmp2
339*9880d681SAndroid Build Coastguard Worker}
340*9880d681SAndroid Build Coastguard Worker
341*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x16x4_t @ld4lane_16b(<16 x i8> %L1, <16 x i8> %L2, <16 x i8> %L3, <16 x i8> %L4, i8* %A) nounwind {
342*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
343*9880d681SAndroid Build Coastguard Worker; CHECK: ld4lane_16b
344*9880d681SAndroid Build Coastguard Worker; CHECK: ld4.b { v0, v1, v2, v3 }[1], [x0]
345*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
346*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int8x16x4_t @llvm.aarch64.neon.ld4lane.v16i8.p0i8(<16 x i8> %L1, <16 x i8> %L2, <16 x i8> %L3, <16 x i8> %L4, i64 1, i8* %A)
347*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int8x16x4_t  %tmp2
348*9880d681SAndroid Build Coastguard Worker}
349*9880d681SAndroid Build Coastguard Worker
350*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x16x2_t @llvm.aarch64.neon.ld2lane.v16i8.p0i8(<16 x i8>, <16 x i8>, i64, i8*) nounwind readonly
351*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x16x3_t @llvm.aarch64.neon.ld3lane.v16i8.p0i8(<16 x i8>, <16 x i8>, <16 x i8>, i64, i8*) nounwind readonly
352*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x16x4_t @llvm.aarch64.neon.ld4lane.v16i8.p0i8(<16 x i8>, <16 x i8>, <16 x i8>, <16 x i8>, i64, i8*) nounwind readonly
353*9880d681SAndroid Build Coastguard Worker
354*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x8x2_t @ld2lane_8h(<8 x i16> %L1, <8 x i16> %L2, i16* %A) nounwind {
355*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
356*9880d681SAndroid Build Coastguard Worker; CHECK: ld2lane_8h
357*9880d681SAndroid Build Coastguard Worker; CHECK: ld2.h { v0, v1 }[1], [x0]
358*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
359*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int16x8x2_t @llvm.aarch64.neon.ld2lane.v8i16.p0i16(<8 x i16> %L1, <8 x i16> %L2, i64 1, i16* %A)
360*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int16x8x2_t  %tmp2
361*9880d681SAndroid Build Coastguard Worker}
362*9880d681SAndroid Build Coastguard Worker
363*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x8x3_t @ld3lane_8h(<8 x i16> %L1, <8 x i16> %L2, <8 x i16> %L3, i16* %A) nounwind {
364*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
365*9880d681SAndroid Build Coastguard Worker; CHECK: ld3lane_8h
366*9880d681SAndroid Build Coastguard Worker; CHECK: ld3.h { v0, v1, v2 }[1], [x0]
367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
368*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int16x8x3_t @llvm.aarch64.neon.ld3lane.v8i16.p0i16(<8 x i16> %L1, <8 x i16> %L2, <8 x i16> %L3, i64 1, i16* %A)
369*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int16x8x3_t  %tmp2
370*9880d681SAndroid Build Coastguard Worker}
371*9880d681SAndroid Build Coastguard Worker
372*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x8x4_t @ld4lane_8h(<8 x i16> %L1, <8 x i16> %L2, <8 x i16> %L3, <8 x i16> %L4, i16* %A) nounwind {
373*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
374*9880d681SAndroid Build Coastguard Worker; CHECK: ld4lane_8h
375*9880d681SAndroid Build Coastguard Worker; CHECK: ld4.h { v0, v1, v2, v3 }[1], [x0]
376*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
377*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int16x8x4_t @llvm.aarch64.neon.ld4lane.v8i16.p0i16(<8 x i16> %L1, <8 x i16> %L2, <8 x i16> %L3, <8 x i16> %L4, i64 1, i16* %A)
378*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int16x8x4_t  %tmp2
379*9880d681SAndroid Build Coastguard Worker}
380*9880d681SAndroid Build Coastguard Worker
381*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x8x2_t @llvm.aarch64.neon.ld2lane.v8i16.p0i16(<8 x i16>, <8 x i16>, i64, i16*) nounwind readonly
382*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x8x3_t @llvm.aarch64.neon.ld3lane.v8i16.p0i16(<8 x i16>, <8 x i16>, <8 x i16>, i64, i16*) nounwind readonly
383*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x8x4_t @llvm.aarch64.neon.ld4lane.v8i16.p0i16(<8 x i16>, <8 x i16>, <8 x i16>, <8 x i16>, i64, i16*) nounwind readonly
384*9880d681SAndroid Build Coastguard Worker
385*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x4x2_t @ld2lane_4s(<4 x i32> %L1, <4 x i32> %L2, i32* %A) nounwind {
386*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
387*9880d681SAndroid Build Coastguard Worker; CHECK: ld2lane_4s
388*9880d681SAndroid Build Coastguard Worker; CHECK: ld2.s { v0, v1 }[1], [x0]
389*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
390*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x4x2_t @llvm.aarch64.neon.ld2lane.v4i32.p0i32(<4 x i32> %L1, <4 x i32> %L2, i64 1, i32* %A)
391*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x4x2_t  %tmp2
392*9880d681SAndroid Build Coastguard Worker}
393*9880d681SAndroid Build Coastguard Worker
394*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x4x3_t @ld3lane_4s(<4 x i32> %L1, <4 x i32> %L2, <4 x i32> %L3, i32* %A) nounwind {
395*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
396*9880d681SAndroid Build Coastguard Worker; CHECK: ld3lane_4s
397*9880d681SAndroid Build Coastguard Worker; CHECK: ld3.s { v0, v1, v2 }[1], [x0]
398*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
399*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x4x3_t @llvm.aarch64.neon.ld3lane.v4i32.p0i32(<4 x i32> %L1, <4 x i32> %L2, <4 x i32> %L3, i64 1, i32* %A)
400*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x4x3_t  %tmp2
401*9880d681SAndroid Build Coastguard Worker}
402*9880d681SAndroid Build Coastguard Worker
403*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x4x4_t @ld4lane_4s(<4 x i32> %L1, <4 x i32> %L2, <4 x i32> %L3, <4 x i32> %L4, i32* %A) nounwind {
404*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
405*9880d681SAndroid Build Coastguard Worker; CHECK: ld4lane_4s
406*9880d681SAndroid Build Coastguard Worker; CHECK: ld4.s { v0, v1, v2, v3 }[1], [x0]
407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
408*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x4x4_t @llvm.aarch64.neon.ld4lane.v4i32.p0i32(<4 x i32> %L1, <4 x i32> %L2, <4 x i32> %L3, <4 x i32> %L4, i64 1, i32* %A)
409*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x4x4_t  %tmp2
410*9880d681SAndroid Build Coastguard Worker}
411*9880d681SAndroid Build Coastguard Worker
412*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x4x2_t @llvm.aarch64.neon.ld2lane.v4i32.p0i32(<4 x i32>, <4 x i32>, i64, i32*) nounwind readonly
413*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x4x3_t @llvm.aarch64.neon.ld3lane.v4i32.p0i32(<4 x i32>, <4 x i32>, <4 x i32>, i64, i32*) nounwind readonly
414*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x4x4_t @llvm.aarch64.neon.ld4lane.v4i32.p0i32(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i64, i32*) nounwind readonly
415*9880d681SAndroid Build Coastguard Worker
416*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x2x2_t @ld2lane_2d(<2 x i64> %L1, <2 x i64> %L2, i64* %A) nounwind {
417*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
418*9880d681SAndroid Build Coastguard Worker; CHECK: ld2lane_2d
419*9880d681SAndroid Build Coastguard Worker; CHECK: ld2.d { v0, v1 }[1], [x0]
420*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
421*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x2x2_t @llvm.aarch64.neon.ld2lane.v2i64.p0i64(<2 x i64> %L1, <2 x i64> %L2, i64 1, i64* %A)
422*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x2x2_t  %tmp2
423*9880d681SAndroid Build Coastguard Worker}
424*9880d681SAndroid Build Coastguard Worker
425*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x2x3_t @ld3lane_2d(<2 x i64> %L1, <2 x i64> %L2, <2 x i64> %L3, i64* %A) nounwind {
426*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
427*9880d681SAndroid Build Coastguard Worker; CHECK: ld3lane_2d
428*9880d681SAndroid Build Coastguard Worker; CHECK: ld3.d { v0, v1, v2 }[1], [x0]
429*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
430*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x2x3_t @llvm.aarch64.neon.ld3lane.v2i64.p0i64(<2 x i64> %L1, <2 x i64> %L2, <2 x i64> %L3, i64 1, i64* %A)
431*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x2x3_t  %tmp2
432*9880d681SAndroid Build Coastguard Worker}
433*9880d681SAndroid Build Coastguard Worker
434*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x2x4_t @ld4lane_2d(<2 x i64> %L1, <2 x i64> %L2, <2 x i64> %L3, <2 x i64> %L4, i64* %A) nounwind {
435*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
436*9880d681SAndroid Build Coastguard Worker; CHECK: ld4lane_2d
437*9880d681SAndroid Build Coastguard Worker; CHECK: ld4.d { v0, v1, v2, v3 }[1], [x0]
438*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
439*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x2x4_t @llvm.aarch64.neon.ld4lane.v2i64.p0i64(<2 x i64> %L1, <2 x i64> %L2, <2 x i64> %L3, <2 x i64> %L4, i64 1, i64* %A)
440*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x2x4_t  %tmp2
441*9880d681SAndroid Build Coastguard Worker}
442*9880d681SAndroid Build Coastguard Worker
443*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x2x2_t @llvm.aarch64.neon.ld2lane.v2i64.p0i64(<2 x i64>, <2 x i64>, i64, i64*) nounwind readonly
444*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x2x3_t @llvm.aarch64.neon.ld3lane.v2i64.p0i64(<2 x i64>, <2 x i64>, <2 x i64>, i64, i64*) nounwind readonly
445*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x2x4_t @llvm.aarch64.neon.ld4lane.v2i64.p0i64(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64, i64*) nounwind readonly
446*9880d681SAndroid Build Coastguard Worker
447*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @ld1r_8b(i8* %bar) {
448*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r_8b
449*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
450*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.8b { v0 }, [x0]
451*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
452*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i8, i8* %bar
453*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <8 x i8> <i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef>, i8 %tmp1, i32 0
454*9880d681SAndroid Build Coastguard Worker  %tmp3 = insertelement <8 x i8> %tmp2, i8 %tmp1, i32 1
455*9880d681SAndroid Build Coastguard Worker  %tmp4 = insertelement <8 x i8> %tmp3, i8 %tmp1, i32 2
456*9880d681SAndroid Build Coastguard Worker  %tmp5 = insertelement <8 x i8> %tmp4, i8 %tmp1, i32 3
457*9880d681SAndroid Build Coastguard Worker  %tmp6 = insertelement <8 x i8> %tmp5, i8 %tmp1, i32 4
458*9880d681SAndroid Build Coastguard Worker  %tmp7 = insertelement <8 x i8> %tmp6, i8 %tmp1, i32 5
459*9880d681SAndroid Build Coastguard Worker  %tmp8 = insertelement <8 x i8> %tmp7, i8 %tmp1, i32 6
460*9880d681SAndroid Build Coastguard Worker  %tmp9 = insertelement <8 x i8> %tmp8, i8 %tmp1, i32 7
461*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %tmp9
462*9880d681SAndroid Build Coastguard Worker}
463*9880d681SAndroid Build Coastguard Worker
464*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @ld1r_16b(i8* %bar) {
465*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r_16b
466*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
467*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.16b { v0 }, [x0]
468*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
469*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i8, i8* %bar
470*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <16 x i8> <i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef>, i8 %tmp1, i32 0
471*9880d681SAndroid Build Coastguard Worker  %tmp3 = insertelement <16 x i8> %tmp2, i8 %tmp1, i32 1
472*9880d681SAndroid Build Coastguard Worker  %tmp4 = insertelement <16 x i8> %tmp3, i8 %tmp1, i32 2
473*9880d681SAndroid Build Coastguard Worker  %tmp5 = insertelement <16 x i8> %tmp4, i8 %tmp1, i32 3
474*9880d681SAndroid Build Coastguard Worker  %tmp6 = insertelement <16 x i8> %tmp5, i8 %tmp1, i32 4
475*9880d681SAndroid Build Coastguard Worker  %tmp7 = insertelement <16 x i8> %tmp6, i8 %tmp1, i32 5
476*9880d681SAndroid Build Coastguard Worker  %tmp8 = insertelement <16 x i8> %tmp7, i8 %tmp1, i32 6
477*9880d681SAndroid Build Coastguard Worker  %tmp9 = insertelement <16 x i8> %tmp8, i8 %tmp1, i32 7
478*9880d681SAndroid Build Coastguard Worker  %tmp10 = insertelement <16 x i8> %tmp9, i8 %tmp1, i32 8
479*9880d681SAndroid Build Coastguard Worker  %tmp11 = insertelement <16 x i8> %tmp10, i8 %tmp1, i32 9
480*9880d681SAndroid Build Coastguard Worker  %tmp12 = insertelement <16 x i8> %tmp11, i8 %tmp1, i32 10
481*9880d681SAndroid Build Coastguard Worker  %tmp13 = insertelement <16 x i8> %tmp12, i8 %tmp1, i32 11
482*9880d681SAndroid Build Coastguard Worker  %tmp14 = insertelement <16 x i8> %tmp13, i8 %tmp1, i32 12
483*9880d681SAndroid Build Coastguard Worker  %tmp15 = insertelement <16 x i8> %tmp14, i8 %tmp1, i32 13
484*9880d681SAndroid Build Coastguard Worker  %tmp16 = insertelement <16 x i8> %tmp15, i8 %tmp1, i32 14
485*9880d681SAndroid Build Coastguard Worker  %tmp17 = insertelement <16 x i8> %tmp16, i8 %tmp1, i32 15
486*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %tmp17
487*9880d681SAndroid Build Coastguard Worker}
488*9880d681SAndroid Build Coastguard Worker
489*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @ld1r_4h(i16* %bar) {
490*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r_4h
491*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
492*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.4h { v0 }, [x0]
493*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
494*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i16, i16* %bar
495*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <4 x i16> <i16 undef, i16 undef, i16 undef, i16 undef>, i16 %tmp1, i32 0
496*9880d681SAndroid Build Coastguard Worker  %tmp3 = insertelement <4 x i16> %tmp2, i16 %tmp1, i32 1
497*9880d681SAndroid Build Coastguard Worker  %tmp4 = insertelement <4 x i16> %tmp3, i16 %tmp1, i32 2
498*9880d681SAndroid Build Coastguard Worker  %tmp5 = insertelement <4 x i16> %tmp4, i16 %tmp1, i32 3
499*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %tmp5
500*9880d681SAndroid Build Coastguard Worker}
501*9880d681SAndroid Build Coastguard Worker
502*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @ld1r_8h(i16* %bar) {
503*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r_8h
504*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
505*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.8h { v0 }, [x0]
506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
507*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i16, i16* %bar
508*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <8 x i16> <i16 undef, i16 undef, i16 undef, i16 undef, i16 undef, i16 undef, i16 undef, i16 undef>, i16 %tmp1, i32 0
509*9880d681SAndroid Build Coastguard Worker  %tmp3 = insertelement <8 x i16> %tmp2, i16 %tmp1, i32 1
510*9880d681SAndroid Build Coastguard Worker  %tmp4 = insertelement <8 x i16> %tmp3, i16 %tmp1, i32 2
511*9880d681SAndroid Build Coastguard Worker  %tmp5 = insertelement <8 x i16> %tmp4, i16 %tmp1, i32 3
512*9880d681SAndroid Build Coastguard Worker  %tmp6 = insertelement <8 x i16> %tmp5, i16 %tmp1, i32 4
513*9880d681SAndroid Build Coastguard Worker  %tmp7 = insertelement <8 x i16> %tmp6, i16 %tmp1, i32 5
514*9880d681SAndroid Build Coastguard Worker  %tmp8 = insertelement <8 x i16> %tmp7, i16 %tmp1, i32 6
515*9880d681SAndroid Build Coastguard Worker  %tmp9 = insertelement <8 x i16> %tmp8, i16 %tmp1, i32 7
516*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %tmp9
517*9880d681SAndroid Build Coastguard Worker}
518*9880d681SAndroid Build Coastguard Worker
519*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @ld1r_2s(i32* %bar) {
520*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r_2s
521*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
522*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2s { v0 }, [x0]
523*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
524*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i32, i32* %bar
525*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <2 x i32> <i32 undef, i32 undef>, i32 %tmp1, i32 0
526*9880d681SAndroid Build Coastguard Worker  %tmp3 = insertelement <2 x i32> %tmp2, i32 %tmp1, i32 1
527*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %tmp3
528*9880d681SAndroid Build Coastguard Worker}
529*9880d681SAndroid Build Coastguard Worker
530*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @ld1r_4s(i32* %bar) {
531*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r_4s
532*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
533*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.4s { v0 }, [x0]
534*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
535*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i32, i32* %bar
536*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <4 x i32> <i32 undef, i32 undef, i32 undef, i32 undef>, i32 %tmp1, i32 0
537*9880d681SAndroid Build Coastguard Worker  %tmp3 = insertelement <4 x i32> %tmp2, i32 %tmp1, i32 1
538*9880d681SAndroid Build Coastguard Worker  %tmp4 = insertelement <4 x i32> %tmp3, i32 %tmp1, i32 2
539*9880d681SAndroid Build Coastguard Worker  %tmp5 = insertelement <4 x i32> %tmp4, i32 %tmp1, i32 3
540*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %tmp5
541*9880d681SAndroid Build Coastguard Worker}
542*9880d681SAndroid Build Coastguard Worker
543*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @ld1r_2d(i64* %bar) {
544*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r_2d
545*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
546*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2d { v0 }, [x0]
547*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
548*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i64, i64* %bar
549*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <2 x i64> <i64 undef, i64 undef>, i64 %tmp1, i32 0
550*9880d681SAndroid Build Coastguard Worker  %tmp3 = insertelement <2 x i64> %tmp2, i64 %tmp1, i32 1
551*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %tmp3
552*9880d681SAndroid Build Coastguard Worker}
553*9880d681SAndroid Build Coastguard Worker
554*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x8x2_t @ld2r_8b(i8* %A) nounwind {
555*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r_8b
556*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
557*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r.8b { v0, v1 }, [x0]
558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
559*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int8x8x2_t @llvm.aarch64.neon.ld2r.v8i8.p0i8(i8* %A)
560*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int8x8x2_t  %tmp2
561*9880d681SAndroid Build Coastguard Worker}
562*9880d681SAndroid Build Coastguard Worker
563*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x8x3_t @ld3r_8b(i8* %A) nounwind {
564*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r_8b
565*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
566*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r.8b { v0, v1, v2 }, [x0]
567*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
568*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int8x8x3_t @llvm.aarch64.neon.ld3r.v8i8.p0i8(i8* %A)
569*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int8x8x3_t  %tmp2
570*9880d681SAndroid Build Coastguard Worker}
571*9880d681SAndroid Build Coastguard Worker
572*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x8x4_t @ld4r_8b(i8* %A) nounwind {
573*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r_8b
574*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
575*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r.8b { v0, v1, v2, v3 }, [x0]
576*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
577*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int8x8x4_t @llvm.aarch64.neon.ld4r.v8i8.p0i8(i8* %A)
578*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int8x8x4_t  %tmp2
579*9880d681SAndroid Build Coastguard Worker}
580*9880d681SAndroid Build Coastguard Worker
581*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x8x2_t @llvm.aarch64.neon.ld2r.v8i8.p0i8(i8*) nounwind readonly
582*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x8x3_t @llvm.aarch64.neon.ld3r.v8i8.p0i8(i8*) nounwind readonly
583*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x8x4_t @llvm.aarch64.neon.ld4r.v8i8.p0i8(i8*) nounwind readonly
584*9880d681SAndroid Build Coastguard Worker
585*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x16x2_t @ld2r_16b(i8* %A) nounwind {
586*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r_16b
587*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
588*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r.16b { v0, v1 }, [x0]
589*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
590*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int8x16x2_t @llvm.aarch64.neon.ld2r.v16i8.p0i8(i8* %A)
591*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int8x16x2_t  %tmp2
592*9880d681SAndroid Build Coastguard Worker}
593*9880d681SAndroid Build Coastguard Worker
594*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x16x3_t @ld3r_16b(i8* %A) nounwind {
595*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r_16b
596*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
597*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r.16b { v0, v1, v2 }, [x0]
598*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
599*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int8x16x3_t @llvm.aarch64.neon.ld3r.v16i8.p0i8(i8* %A)
600*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int8x16x3_t  %tmp2
601*9880d681SAndroid Build Coastguard Worker}
602*9880d681SAndroid Build Coastguard Worker
603*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x16x4_t @ld4r_16b(i8* %A) nounwind {
604*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r_16b
605*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
606*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r.16b { v0, v1, v2, v3 }, [x0]
607*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
608*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int8x16x4_t @llvm.aarch64.neon.ld4r.v16i8.p0i8(i8* %A)
609*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int8x16x4_t  %tmp2
610*9880d681SAndroid Build Coastguard Worker}
611*9880d681SAndroid Build Coastguard Worker
612*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x16x2_t @llvm.aarch64.neon.ld2r.v16i8.p0i8(i8*) nounwind readonly
613*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x16x3_t @llvm.aarch64.neon.ld3r.v16i8.p0i8(i8*) nounwind readonly
614*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x16x4_t @llvm.aarch64.neon.ld4r.v16i8.p0i8(i8*) nounwind readonly
615*9880d681SAndroid Build Coastguard Worker
616*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x4x2_t @ld2r_4h(i16* %A) nounwind {
617*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r_4h
618*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
619*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r.4h { v0, v1 }, [x0]
620*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
621*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int16x4x2_t @llvm.aarch64.neon.ld2r.v4i16.p0i16(i16* %A)
622*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int16x4x2_t  %tmp2
623*9880d681SAndroid Build Coastguard Worker}
624*9880d681SAndroid Build Coastguard Worker
625*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x4x3_t @ld3r_4h(i16* %A) nounwind {
626*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r_4h
627*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
628*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r.4h { v0, v1, v2 }, [x0]
629*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
630*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int16x4x3_t @llvm.aarch64.neon.ld3r.v4i16.p0i16(i16* %A)
631*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int16x4x3_t  %tmp2
632*9880d681SAndroid Build Coastguard Worker}
633*9880d681SAndroid Build Coastguard Worker
634*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x4x4_t @ld4r_4h(i16* %A) nounwind {
635*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r_4h
636*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
637*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r.4h { v0, v1, v2, v3 }, [x0]
638*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
639*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int16x4x4_t @llvm.aarch64.neon.ld4r.v4i16.p0i16(i16* %A)
640*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int16x4x4_t  %tmp2
641*9880d681SAndroid Build Coastguard Worker}
642*9880d681SAndroid Build Coastguard Worker
643*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x4x2_t @llvm.aarch64.neon.ld2r.v4i16.p0i16(i16*) nounwind readonly
644*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x4x3_t @llvm.aarch64.neon.ld3r.v4i16.p0i16(i16*) nounwind readonly
645*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x4x4_t @llvm.aarch64.neon.ld4r.v4i16.p0i16(i16*) nounwind readonly
646*9880d681SAndroid Build Coastguard Worker
647*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x8x2_t @ld2r_8h(i16* %A) nounwind {
648*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r_8h
649*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
650*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r.8h { v0, v1 }, [x0]
651*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
652*9880d681SAndroid Build Coastguard Worker  %tmp2 = call %struct.__neon_int16x8x2_t @llvm.aarch64.neon.ld2r.v8i16.p0i16(i16* %A)
653*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int16x8x2_t  %tmp2
654*9880d681SAndroid Build Coastguard Worker}
655*9880d681SAndroid Build Coastguard Worker
656*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x8x3_t @ld3r_8h(i16* %A) nounwind {
657*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r_8h
658*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
659*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r.8h { v0, v1, v2 }, [x0]
660*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
661*9880d681SAndroid Build Coastguard Worker  %tmp2 = call %struct.__neon_int16x8x3_t @llvm.aarch64.neon.ld3r.v8i16.p0i16(i16* %A)
662*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int16x8x3_t  %tmp2
663*9880d681SAndroid Build Coastguard Worker}
664*9880d681SAndroid Build Coastguard Worker
665*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x8x4_t @ld4r_8h(i16* %A) nounwind {
666*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r_8h
667*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
668*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r.8h { v0, v1, v2, v3 }, [x0]
669*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
670*9880d681SAndroid Build Coastguard Worker  %tmp2 = call %struct.__neon_int16x8x4_t @llvm.aarch64.neon.ld4r.v8i16.p0i16(i16* %A)
671*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int16x8x4_t  %tmp2
672*9880d681SAndroid Build Coastguard Worker}
673*9880d681SAndroid Build Coastguard Worker
674*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x8x2_t @llvm.aarch64.neon.ld2r.v8i16.p0i16(i16*) nounwind readonly
675*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x8x3_t @llvm.aarch64.neon.ld3r.v8i16.p0i16(i16*) nounwind readonly
676*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x8x4_t @llvm.aarch64.neon.ld4r.v8i16.p0i16(i16*) nounwind readonly
677*9880d681SAndroid Build Coastguard Worker
678*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x2x2_t @ld2r_2s(i32* %A) nounwind {
679*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r_2s
680*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
681*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r.2s { v0, v1 }, [x0]
682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
683*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x2x2_t @llvm.aarch64.neon.ld2r.v2i32.p0i32(i32* %A)
684*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x2x2_t  %tmp2
685*9880d681SAndroid Build Coastguard Worker}
686*9880d681SAndroid Build Coastguard Worker
687*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x2x3_t @ld3r_2s(i32* %A) nounwind {
688*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r_2s
689*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
690*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r.2s { v0, v1, v2 }, [x0]
691*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
692*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x2x3_t @llvm.aarch64.neon.ld3r.v2i32.p0i32(i32* %A)
693*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x2x3_t  %tmp2
694*9880d681SAndroid Build Coastguard Worker}
695*9880d681SAndroid Build Coastguard Worker
696*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x2x4_t @ld4r_2s(i32* %A) nounwind {
697*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r_2s
698*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
699*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r.2s { v0, v1, v2, v3 }, [x0]
700*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
701*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x2x4_t @llvm.aarch64.neon.ld4r.v2i32.p0i32(i32* %A)
702*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x2x4_t  %tmp2
703*9880d681SAndroid Build Coastguard Worker}
704*9880d681SAndroid Build Coastguard Worker
705*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x2x2_t @llvm.aarch64.neon.ld2r.v2i32.p0i32(i32*) nounwind readonly
706*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x2x3_t @llvm.aarch64.neon.ld3r.v2i32.p0i32(i32*) nounwind readonly
707*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x2x4_t @llvm.aarch64.neon.ld4r.v2i32.p0i32(i32*) nounwind readonly
708*9880d681SAndroid Build Coastguard Worker
709*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x4x2_t @ld2r_4s(i32* %A) nounwind {
710*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r_4s
711*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
712*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r.4s { v0, v1 }, [x0]
713*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
714*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x4x2_t @llvm.aarch64.neon.ld2r.v4i32.p0i32(i32* %A)
715*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x4x2_t  %tmp2
716*9880d681SAndroid Build Coastguard Worker}
717*9880d681SAndroid Build Coastguard Worker
718*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x4x3_t @ld3r_4s(i32* %A) nounwind {
719*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r_4s
720*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
721*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r.4s { v0, v1, v2 }, [x0]
722*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
723*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x4x3_t @llvm.aarch64.neon.ld3r.v4i32.p0i32(i32* %A)
724*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x4x3_t  %tmp2
725*9880d681SAndroid Build Coastguard Worker}
726*9880d681SAndroid Build Coastguard Worker
727*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x4x4_t @ld4r_4s(i32* %A) nounwind {
728*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r_4s
729*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
730*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r.4s { v0, v1, v2, v3 }, [x0]
731*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
732*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int32x4x4_t @llvm.aarch64.neon.ld4r.v4i32.p0i32(i32* %A)
733*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int32x4x4_t  %tmp2
734*9880d681SAndroid Build Coastguard Worker}
735*9880d681SAndroid Build Coastguard Worker
736*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x4x2_t @llvm.aarch64.neon.ld2r.v4i32.p0i32(i32*) nounwind readonly
737*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x4x3_t @llvm.aarch64.neon.ld3r.v4i32.p0i32(i32*) nounwind readonly
738*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x4x4_t @llvm.aarch64.neon.ld4r.v4i32.p0i32(i32*) nounwind readonly
739*9880d681SAndroid Build Coastguard Worker
740*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x1x2_t @ld2r_1d(i64* %A) nounwind {
741*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r_1d
742*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
743*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r.1d { v0, v1 }, [x0]
744*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
745*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x1x2_t @llvm.aarch64.neon.ld2r.v1i64.p0i64(i64* %A)
746*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x1x2_t  %tmp2
747*9880d681SAndroid Build Coastguard Worker}
748*9880d681SAndroid Build Coastguard Worker
749*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x1x3_t @ld3r_1d(i64* %A) nounwind {
750*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r_1d
751*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
752*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r.1d { v0, v1, v2 }, [x0]
753*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
754*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x1x3_t @llvm.aarch64.neon.ld3r.v1i64.p0i64(i64* %A)
755*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x1x3_t  %tmp2
756*9880d681SAndroid Build Coastguard Worker}
757*9880d681SAndroid Build Coastguard Worker
758*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x1x4_t @ld4r_1d(i64* %A) nounwind {
759*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r_1d
760*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
761*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r.1d { v0, v1, v2, v3 }, [x0]
762*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
763*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x1x4_t @llvm.aarch64.neon.ld4r.v1i64.p0i64(i64* %A)
764*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x1x4_t  %tmp2
765*9880d681SAndroid Build Coastguard Worker}
766*9880d681SAndroid Build Coastguard Worker
767*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x1x2_t @llvm.aarch64.neon.ld2r.v1i64.p0i64(i64*) nounwind readonly
768*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x1x3_t @llvm.aarch64.neon.ld3r.v1i64.p0i64(i64*) nounwind readonly
769*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x1x4_t @llvm.aarch64.neon.ld4r.v1i64.p0i64(i64*) nounwind readonly
770*9880d681SAndroid Build Coastguard Worker
771*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x2x2_t @ld2r_2d(i64* %A) nounwind {
772*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r_2d
773*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
774*9880d681SAndroid Build Coastguard Worker; CHECK: ld2r.2d { v0, v1 }, [x0]
775*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
776*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x2x2_t @llvm.aarch64.neon.ld2r.v2i64.p0i64(i64* %A)
777*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x2x2_t  %tmp2
778*9880d681SAndroid Build Coastguard Worker}
779*9880d681SAndroid Build Coastguard Worker
780*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x2x3_t @ld3r_2d(i64* %A) nounwind {
781*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r_2d
782*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
783*9880d681SAndroid Build Coastguard Worker; CHECK: ld3r.2d { v0, v1, v2 }, [x0]
784*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
785*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x2x3_t @llvm.aarch64.neon.ld3r.v2i64.p0i64(i64* %A)
786*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x2x3_t  %tmp2
787*9880d681SAndroid Build Coastguard Worker}
788*9880d681SAndroid Build Coastguard Worker
789*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x2x4_t @ld4r_2d(i64* %A) nounwind {
790*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r_2d
791*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
792*9880d681SAndroid Build Coastguard Worker; CHECK: ld4r.2d { v0, v1, v2, v3 }, [x0]
793*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
794*9880d681SAndroid Build Coastguard Worker	%tmp2 = call %struct.__neon_int64x2x4_t @llvm.aarch64.neon.ld4r.v2i64.p0i64(i64* %A)
795*9880d681SAndroid Build Coastguard Worker	ret %struct.__neon_int64x2x4_t  %tmp2
796*9880d681SAndroid Build Coastguard Worker}
797*9880d681SAndroid Build Coastguard Worker
798*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x2x2_t @llvm.aarch64.neon.ld2r.v2i64.p0i64(i64*) nounwind readonly
799*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x2x3_t @llvm.aarch64.neon.ld3r.v2i64.p0i64(i64*) nounwind readonly
800*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x2x4_t @llvm.aarch64.neon.ld4r.v2i64.p0i64(i64*) nounwind readonly
801*9880d681SAndroid Build Coastguard Worker
802*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @ld1_16b(<16 x i8> %V, i8* %bar) {
803*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_16b
804*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
805*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.b { v0 }[0], [x0]
806*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
807*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i8, i8* %bar
808*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <16 x i8> %V, i8 %tmp1, i32 0
809*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %tmp2
810*9880d681SAndroid Build Coastguard Worker}
811*9880d681SAndroid Build Coastguard Worker
812*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @ld1_8h(<8 x i16> %V, i16* %bar) {
813*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_8h
814*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
815*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.h { v0 }[0], [x0]
816*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
817*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i16, i16* %bar
818*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <8 x i16> %V, i16 %tmp1, i32 0
819*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %tmp2
820*9880d681SAndroid Build Coastguard Worker}
821*9880d681SAndroid Build Coastguard Worker
822*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @ld1_4s(<4 x i32> %V, i32* %bar) {
823*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_4s
824*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
825*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.s { v0 }[0], [x0]
826*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
827*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i32, i32* %bar
828*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <4 x i32> %V, i32 %tmp1, i32 0
829*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %tmp2
830*9880d681SAndroid Build Coastguard Worker}
831*9880d681SAndroid Build Coastguard Worker
832*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @ld1_4s_float(<4 x float> %V, float* %bar) {
833*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_4s_float:
834*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
835*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.s { v0 }[0], [x0]
836*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
837*9880d681SAndroid Build Coastguard Worker  %tmp1 = load float, float* %bar
838*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <4 x float> %V, float %tmp1, i32 0
839*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %tmp2
840*9880d681SAndroid Build Coastguard Worker}
841*9880d681SAndroid Build Coastguard Worker
842*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @ld1_2d(<2 x i64> %V, i64* %bar) {
843*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_2d
844*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
845*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.d { v0 }[0], [x0]
846*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
847*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i64, i64* %bar
848*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <2 x i64> %V, i64 %tmp1, i32 0
849*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %tmp2
850*9880d681SAndroid Build Coastguard Worker}
851*9880d681SAndroid Build Coastguard Worker
852*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @ld1_2d_double(<2 x double> %V, double* %bar) {
853*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_2d_double:
854*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
855*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.d { v0 }[0], [x0]
856*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
857*9880d681SAndroid Build Coastguard Worker  %tmp1 = load double, double* %bar
858*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <2 x double> %V, double %tmp1, i32 0
859*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %tmp2
860*9880d681SAndroid Build Coastguard Worker}
861*9880d681SAndroid Build Coastguard Worker
862*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @ld1_1d(<1 x i64>* %p) {
863*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_1d
864*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
865*9880d681SAndroid Build Coastguard Worker; CHECK: ldr [[REG:d[0-9]+]], [x0]
866*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
867*9880d681SAndroid Build Coastguard Worker  %tmp = load <1 x i64>, <1 x i64>* %p, align 8
868*9880d681SAndroid Build Coastguard Worker  ret <1 x i64> %tmp
869*9880d681SAndroid Build Coastguard Worker}
870*9880d681SAndroid Build Coastguard Worker
871*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @ld1_8b(<8 x i8> %V, i8* %bar) {
872*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_8b
873*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
874*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.b { v0 }[0], [x0]
875*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
876*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i8, i8* %bar
877*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <8 x i8> %V, i8 %tmp1, i32 0
878*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %tmp2
879*9880d681SAndroid Build Coastguard Worker}
880*9880d681SAndroid Build Coastguard Worker
881*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @ld1_4h(<4 x i16> %V, i16* %bar) {
882*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_4h
883*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
884*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.h { v0 }[0], [x0]
885*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
886*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i16, i16* %bar
887*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <4 x i16> %V, i16 %tmp1, i32 0
888*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %tmp2
889*9880d681SAndroid Build Coastguard Worker}
890*9880d681SAndroid Build Coastguard Worker
891*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @ld1_2s(<2 x i32> %V, i32* %bar) {
892*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_2s:
893*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
894*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.s { v0 }[0], [x0]
895*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
896*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i32, i32* %bar
897*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <2 x i32> %V, i32 %tmp1, i32 0
898*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %tmp2
899*9880d681SAndroid Build Coastguard Worker}
900*9880d681SAndroid Build Coastguard Worker
901*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @ld1_2s_float(<2 x float> %V, float* %bar) {
902*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_2s_float:
903*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
904*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.s { v0 }[0], [x0]
905*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
906*9880d681SAndroid Build Coastguard Worker  %tmp1 = load float, float* %bar
907*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <2 x float> %V, float %tmp1, i32 0
908*9880d681SAndroid Build Coastguard Worker  ret <2 x float> %tmp2
909*9880d681SAndroid Build Coastguard Worker}
910*9880d681SAndroid Build Coastguard Worker
911*9880d681SAndroid Build Coastguard Worker
912*9880d681SAndroid Build Coastguard Worker; Add rdar://13098923 test case: vld1_dup_u32 doesn't generate ld1r.2s
913*9880d681SAndroid Build Coastguard Workerdefine void @ld1r_2s_from_dup(i8* nocapture %a, i8* nocapture %b, i16* nocapture %diff) nounwind ssp {
914*9880d681SAndroid Build Coastguard Workerentry:
915*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r_2s_from_dup
916*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2s { [[ARG1:v[0-9]+]] }, [x0]
917*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ld1r.2s { [[ARG2:v[0-9]+]] }, [x1]
918*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: usubl.8h v[[RESREGNUM:[0-9]+]], [[ARG1]], [[ARG2]]
919*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: str d[[RESREGNUM]], [x2]
920*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
921*9880d681SAndroid Build Coastguard Worker  %tmp = bitcast i8* %a to i32*
922*9880d681SAndroid Build Coastguard Worker  %tmp1 = load i32, i32* %tmp, align 4
923*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <2 x i32> undef, i32 %tmp1, i32 0
924*9880d681SAndroid Build Coastguard Worker  %lane = shufflevector <2 x i32> %tmp2, <2 x i32> undef, <2 x i32> zeroinitializer
925*9880d681SAndroid Build Coastguard Worker  %tmp3 = bitcast <2 x i32> %lane to <8 x i8>
926*9880d681SAndroid Build Coastguard Worker  %tmp4 = bitcast i8* %b to i32*
927*9880d681SAndroid Build Coastguard Worker  %tmp5 = load i32, i32* %tmp4, align 4
928*9880d681SAndroid Build Coastguard Worker  %tmp6 = insertelement <2 x i32> undef, i32 %tmp5, i32 0
929*9880d681SAndroid Build Coastguard Worker  %lane1 = shufflevector <2 x i32> %tmp6, <2 x i32> undef, <2 x i32> zeroinitializer
930*9880d681SAndroid Build Coastguard Worker  %tmp7 = bitcast <2 x i32> %lane1 to <8 x i8>
931*9880d681SAndroid Build Coastguard Worker  %vmovl.i.i = zext <8 x i8> %tmp3 to <8 x i16>
932*9880d681SAndroid Build Coastguard Worker  %vmovl.i4.i = zext <8 x i8> %tmp7 to <8 x i16>
933*9880d681SAndroid Build Coastguard Worker  %sub.i = sub <8 x i16> %vmovl.i.i, %vmovl.i4.i
934*9880d681SAndroid Build Coastguard Worker  %tmp8 = bitcast <8 x i16> %sub.i to <2 x i64>
935*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i64> %tmp8, <2 x i64> undef, <1 x i32> zeroinitializer
936*9880d681SAndroid Build Coastguard Worker  %tmp9 = bitcast <1 x i64> %shuffle.i to <4 x i16>
937*9880d681SAndroid Build Coastguard Worker  %tmp10 = bitcast i16* %diff to <4 x i16>*
938*9880d681SAndroid Build Coastguard Worker  store <4 x i16> %tmp9, <4 x i16>* %tmp10, align 8
939*9880d681SAndroid Build Coastguard Worker  ret void
940*9880d681SAndroid Build Coastguard Worker}
941*9880d681SAndroid Build Coastguard Worker
942*9880d681SAndroid Build Coastguard Worker; Tests for rdar://11947069: vld1_dup_* and vld1q_dup_* code gen is suboptimal
943*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @ld1r_4s_float(float* nocapture %x) {
944*9880d681SAndroid Build Coastguard Workerentry:
945*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1r_4s_float
946*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
947*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.4s { v0 }, [x0]
948*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
949*9880d681SAndroid Build Coastguard Worker  %tmp = load float, float* %x, align 4
950*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <4 x float> undef, float %tmp, i32 0
951*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <4 x float> %tmp1, float %tmp, i32 1
952*9880d681SAndroid Build Coastguard Worker  %tmp3 = insertelement <4 x float> %tmp2, float %tmp, i32 2
953*9880d681SAndroid Build Coastguard Worker  %tmp4 = insertelement <4 x float> %tmp3, float %tmp, i32 3
954*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %tmp4
955*9880d681SAndroid Build Coastguard Worker}
956*9880d681SAndroid Build Coastguard Worker
957*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @ld1r_2s_float(float* nocapture %x) {
958*9880d681SAndroid Build Coastguard Workerentry:
959*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1r_2s_float
960*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
961*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2s { v0 }, [x0]
962*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
963*9880d681SAndroid Build Coastguard Worker  %tmp = load float, float* %x, align 4
964*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <2 x float> undef, float %tmp, i32 0
965*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <2 x float> %tmp1, float %tmp, i32 1
966*9880d681SAndroid Build Coastguard Worker  ret <2 x float> %tmp2
967*9880d681SAndroid Build Coastguard Worker}
968*9880d681SAndroid Build Coastguard Worker
969*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @ld1r_2d_double(double* nocapture %x) {
970*9880d681SAndroid Build Coastguard Workerentry:
971*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1r_2d_double
972*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
973*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2d { v0 }, [x0]
974*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
975*9880d681SAndroid Build Coastguard Worker  %tmp = load double, double* %x, align 4
976*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <2 x double> undef, double %tmp, i32 0
977*9880d681SAndroid Build Coastguard Worker  %tmp2 = insertelement <2 x double> %tmp1, double %tmp, i32 1
978*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %tmp2
979*9880d681SAndroid Build Coastguard Worker}
980*9880d681SAndroid Build Coastguard Worker
981*9880d681SAndroid Build Coastguard Workerdefine <1 x double> @ld1r_1d_double(double* nocapture %x) {
982*9880d681SAndroid Build Coastguard Workerentry:
983*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1r_1d_double
984*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
985*9880d681SAndroid Build Coastguard Worker; CHECK: ldr d0, [x0]
986*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
987*9880d681SAndroid Build Coastguard Worker  %tmp = load double, double* %x, align 4
988*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <1 x double> undef, double %tmp, i32 0
989*9880d681SAndroid Build Coastguard Worker  ret <1 x double> %tmp1
990*9880d681SAndroid Build Coastguard Worker}
991*9880d681SAndroid Build Coastguard Worker
992*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @ld1r_4s_float_shuff(float* nocapture %x) {
993*9880d681SAndroid Build Coastguard Workerentry:
994*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1r_4s_float_shuff
995*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
996*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.4s { v0 }, [x0]
997*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
998*9880d681SAndroid Build Coastguard Worker  %tmp = load float, float* %x, align 4
999*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <4 x float> undef, float %tmp, i32 0
1000*9880d681SAndroid Build Coastguard Worker  %lane = shufflevector <4 x float> %tmp1, <4 x float> undef, <4 x i32> zeroinitializer
1001*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %lane
1002*9880d681SAndroid Build Coastguard Worker}
1003*9880d681SAndroid Build Coastguard Worker
1004*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @ld1r_2s_float_shuff(float* nocapture %x) {
1005*9880d681SAndroid Build Coastguard Workerentry:
1006*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1r_2s_float_shuff
1007*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
1008*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2s { v0 }, [x0]
1009*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
1010*9880d681SAndroid Build Coastguard Worker  %tmp = load float, float* %x, align 4
1011*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <2 x float> undef, float %tmp, i32 0
1012*9880d681SAndroid Build Coastguard Worker  %lane = shufflevector <2 x float> %tmp1, <2 x float> undef, <2 x i32> zeroinitializer
1013*9880d681SAndroid Build Coastguard Worker  ret <2 x float> %lane
1014*9880d681SAndroid Build Coastguard Worker}
1015*9880d681SAndroid Build Coastguard Worker
1016*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @ld1r_2d_double_shuff(double* nocapture %x) {
1017*9880d681SAndroid Build Coastguard Workerentry:
1018*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1r_2d_double_shuff
1019*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
1020*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2d { v0 }, [x0]
1021*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
1022*9880d681SAndroid Build Coastguard Worker  %tmp = load double, double* %x, align 4
1023*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <2 x double> undef, double %tmp, i32 0
1024*9880d681SAndroid Build Coastguard Worker  %lane = shufflevector <2 x double> %tmp1, <2 x double> undef, <2 x i32> zeroinitializer
1025*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %lane
1026*9880d681SAndroid Build Coastguard Worker}
1027*9880d681SAndroid Build Coastguard Worker
1028*9880d681SAndroid Build Coastguard Workerdefine <1 x double> @ld1r_1d_double_shuff(double* nocapture %x) {
1029*9880d681SAndroid Build Coastguard Workerentry:
1030*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1r_1d_double_shuff
1031*9880d681SAndroid Build Coastguard Worker; Make sure we are using the operands defined by the ABI
1032*9880d681SAndroid Build Coastguard Worker; CHECK: ldr d0, [x0]
1033*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
1034*9880d681SAndroid Build Coastguard Worker  %tmp = load double, double* %x, align 4
1035*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <1 x double> undef, double %tmp, i32 0
1036*9880d681SAndroid Build Coastguard Worker  %lane = shufflevector <1 x double> %tmp1, <1 x double> undef, <1 x i32> zeroinitializer
1037*9880d681SAndroid Build Coastguard Worker  ret <1 x double> %lane
1038*9880d681SAndroid Build Coastguard Worker}
1039*9880d681SAndroid Build Coastguard Worker
1040*9880d681SAndroid Build Coastguard Worker%struct.__neon_float32x2x2_t = type { <2 x float>,  <2 x float> }
1041*9880d681SAndroid Build Coastguard Worker%struct.__neon_float32x2x3_t = type { <2 x float>,  <2 x float>,  <2 x float> }
1042*9880d681SAndroid Build Coastguard Worker%struct.__neon_float32x2x4_t = type { <2 x float>,  <2 x float>, <2 x float>,  <2 x float> }
1043*9880d681SAndroid Build Coastguard Worker
1044*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x8x2_t @llvm.aarch64.neon.ld1x2.v8i8.p0i8(i8*) nounwind readonly
1045*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x4x2_t @llvm.aarch64.neon.ld1x2.v4i16.p0i16(i16*) nounwind readonly
1046*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x2x2_t @llvm.aarch64.neon.ld1x2.v2i32.p0i32(i32*) nounwind readonly
1047*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float32x2x2_t @llvm.aarch64.neon.ld1x2.v2f32.p0f32(float*) nounwind readonly
1048*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x1x2_t @llvm.aarch64.neon.ld1x2.v1i64.p0i64(i64*) nounwind readonly
1049*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float64x1x2_t @llvm.aarch64.neon.ld1x2.v1f64.p0f64(double*) nounwind readonly
1050*9880d681SAndroid Build Coastguard Worker
1051*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x8x2_t @ld1_x2_v8i8(i8* %addr) {
1052*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x2_v8i8:
1053*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.8b { {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1054*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int8x8x2_t @llvm.aarch64.neon.ld1x2.v8i8.p0i8(i8* %addr)
1055*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int8x8x2_t %val
1056*9880d681SAndroid Build Coastguard Worker}
1057*9880d681SAndroid Build Coastguard Worker
1058*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x4x2_t @ld1_x2_v4i16(i16* %addr) {
1059*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x2_v4i16:
1060*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.4h { {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1061*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int16x4x2_t @llvm.aarch64.neon.ld1x2.v4i16.p0i16(i16* %addr)
1062*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int16x4x2_t %val
1063*9880d681SAndroid Build Coastguard Worker}
1064*9880d681SAndroid Build Coastguard Worker
1065*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x2x2_t @ld1_x2_v2i32(i32* %addr) {
1066*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x2_v2i32:
1067*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.2s { {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1068*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int32x2x2_t @llvm.aarch64.neon.ld1x2.v2i32.p0i32(i32* %addr)
1069*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int32x2x2_t %val
1070*9880d681SAndroid Build Coastguard Worker}
1071*9880d681SAndroid Build Coastguard Worker
1072*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float32x2x2_t @ld1_x2_v2f32(float* %addr) {
1073*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x2_v2f32:
1074*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.2s { {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1075*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_float32x2x2_t @llvm.aarch64.neon.ld1x2.v2f32.p0f32(float* %addr)
1076*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_float32x2x2_t %val
1077*9880d681SAndroid Build Coastguard Worker}
1078*9880d681SAndroid Build Coastguard Worker
1079*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x1x2_t @ld1_x2_v1i64(i64* %addr) {
1080*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x2_v1i64:
1081*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.1d { {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1082*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int64x1x2_t @llvm.aarch64.neon.ld1x2.v1i64.p0i64(i64* %addr)
1083*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int64x1x2_t %val
1084*9880d681SAndroid Build Coastguard Worker}
1085*9880d681SAndroid Build Coastguard Worker
1086*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float64x1x2_t @ld1_x2_v1f64(double* %addr) {
1087*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x2_v1f64:
1088*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.1d { {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1089*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_float64x1x2_t @llvm.aarch64.neon.ld1x2.v1f64.p0f64(double* %addr)
1090*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_float64x1x2_t %val
1091*9880d681SAndroid Build Coastguard Worker}
1092*9880d681SAndroid Build Coastguard Worker
1093*9880d681SAndroid Build Coastguard Worker
1094*9880d681SAndroid Build Coastguard Worker%struct.__neon_float32x4x2_t = type { <4 x float>,  <4 x float> }
1095*9880d681SAndroid Build Coastguard Worker%struct.__neon_float32x4x3_t = type { <4 x float>,  <4 x float>,  <4 x float> }
1096*9880d681SAndroid Build Coastguard Worker%struct.__neon_float32x4x4_t = type { <4 x float>,  <4 x float>, <4 x float>,  <4 x float> }
1097*9880d681SAndroid Build Coastguard Worker
1098*9880d681SAndroid Build Coastguard Worker%struct.__neon_float64x2x2_t = type { <2 x double>,  <2 x double> }
1099*9880d681SAndroid Build Coastguard Worker%struct.__neon_float64x2x3_t = type { <2 x double>,  <2 x double>,  <2 x double> }
1100*9880d681SAndroid Build Coastguard Worker%struct.__neon_float64x2x4_t = type { <2 x double>,  <2 x double>, <2 x double>,  <2 x double> }
1101*9880d681SAndroid Build Coastguard Worker
1102*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x16x2_t @llvm.aarch64.neon.ld1x2.v16i8.p0i8(i8*) nounwind readonly
1103*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x8x2_t @llvm.aarch64.neon.ld1x2.v8i16.p0i16(i16*) nounwind readonly
1104*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x4x2_t @llvm.aarch64.neon.ld1x2.v4i32.p0i32(i32*) nounwind readonly
1105*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float32x4x2_t @llvm.aarch64.neon.ld1x2.v4f32.p0f32(float*) nounwind readonly
1106*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x2x2_t @llvm.aarch64.neon.ld1x2.v2i64.p0i64(i64*) nounwind readonly
1107*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float64x2x2_t @llvm.aarch64.neon.ld1x2.v2f64.p0f64(double*) nounwind readonly
1108*9880d681SAndroid Build Coastguard Worker
1109*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x16x2_t @ld1_x2_v16i8(i8* %addr) {
1110*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x2_v16i8:
1111*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.16b { {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1112*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int8x16x2_t @llvm.aarch64.neon.ld1x2.v16i8.p0i8(i8* %addr)
1113*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int8x16x2_t %val
1114*9880d681SAndroid Build Coastguard Worker}
1115*9880d681SAndroid Build Coastguard Worker
1116*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x8x2_t @ld1_x2_v8i16(i16* %addr) {
1117*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x2_v8i16:
1118*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.8h { {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1119*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int16x8x2_t @llvm.aarch64.neon.ld1x2.v8i16.p0i16(i16* %addr)
1120*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int16x8x2_t %val
1121*9880d681SAndroid Build Coastguard Worker}
1122*9880d681SAndroid Build Coastguard Worker
1123*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x4x2_t @ld1_x2_v4i32(i32* %addr) {
1124*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x2_v4i32:
1125*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.4s { {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1126*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int32x4x2_t @llvm.aarch64.neon.ld1x2.v4i32.p0i32(i32* %addr)
1127*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int32x4x2_t %val
1128*9880d681SAndroid Build Coastguard Worker}
1129*9880d681SAndroid Build Coastguard Worker
1130*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float32x4x2_t @ld1_x2_v4f32(float* %addr) {
1131*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x2_v4f32:
1132*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.4s { {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1133*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_float32x4x2_t @llvm.aarch64.neon.ld1x2.v4f32.p0f32(float* %addr)
1134*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_float32x4x2_t %val
1135*9880d681SAndroid Build Coastguard Worker}
1136*9880d681SAndroid Build Coastguard Worker
1137*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x2x2_t @ld1_x2_v2i64(i64* %addr) {
1138*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x2_v2i64:
1139*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.2d { {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1140*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int64x2x2_t @llvm.aarch64.neon.ld1x2.v2i64.p0i64(i64* %addr)
1141*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int64x2x2_t %val
1142*9880d681SAndroid Build Coastguard Worker}
1143*9880d681SAndroid Build Coastguard Worker
1144*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float64x2x2_t @ld1_x2_v2f64(double* %addr) {
1145*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x2_v2f64:
1146*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.2d { {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1147*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_float64x2x2_t @llvm.aarch64.neon.ld1x2.v2f64.p0f64(double* %addr)
1148*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_float64x2x2_t %val
1149*9880d681SAndroid Build Coastguard Worker}
1150*9880d681SAndroid Build Coastguard Worker
1151*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x8x3_t @llvm.aarch64.neon.ld1x3.v8i8.p0i8(i8*) nounwind readonly
1152*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x4x3_t @llvm.aarch64.neon.ld1x3.v4i16.p0i16(i16*) nounwind readonly
1153*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x2x3_t @llvm.aarch64.neon.ld1x3.v2i32.p0i32(i32*) nounwind readonly
1154*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float32x2x3_t @llvm.aarch64.neon.ld1x3.v2f32.p0f32(float*) nounwind readonly
1155*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x1x3_t @llvm.aarch64.neon.ld1x3.v1i64.p0i64(i64*) nounwind readonly
1156*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float64x1x3_t @llvm.aarch64.neon.ld1x3.v1f64.p0f64(double*) nounwind readonly
1157*9880d681SAndroid Build Coastguard Worker
1158*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x8x3_t @ld1_x3_v8i8(i8* %addr) {
1159*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x3_v8i8:
1160*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.8b { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1161*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int8x8x3_t @llvm.aarch64.neon.ld1x3.v8i8.p0i8(i8* %addr)
1162*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int8x8x3_t %val
1163*9880d681SAndroid Build Coastguard Worker}
1164*9880d681SAndroid Build Coastguard Worker
1165*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x4x3_t @ld1_x3_v4i16(i16* %addr) {
1166*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x3_v4i16:
1167*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.4h { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1168*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int16x4x3_t @llvm.aarch64.neon.ld1x3.v4i16.p0i16(i16* %addr)
1169*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int16x4x3_t %val
1170*9880d681SAndroid Build Coastguard Worker}
1171*9880d681SAndroid Build Coastguard Worker
1172*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x2x3_t @ld1_x3_v2i32(i32* %addr) {
1173*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x3_v2i32:
1174*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.2s { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1175*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int32x2x3_t @llvm.aarch64.neon.ld1x3.v2i32.p0i32(i32* %addr)
1176*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int32x2x3_t %val
1177*9880d681SAndroid Build Coastguard Worker}
1178*9880d681SAndroid Build Coastguard Worker
1179*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float32x2x3_t @ld1_x3_v2f32(float* %addr) {
1180*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x3_v2f32:
1181*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.2s { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1182*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_float32x2x3_t @llvm.aarch64.neon.ld1x3.v2f32.p0f32(float* %addr)
1183*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_float32x2x3_t %val
1184*9880d681SAndroid Build Coastguard Worker}
1185*9880d681SAndroid Build Coastguard Worker
1186*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x1x3_t @ld1_x3_v1i64(i64* %addr) {
1187*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x3_v1i64:
1188*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.1d { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1189*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int64x1x3_t @llvm.aarch64.neon.ld1x3.v1i64.p0i64(i64* %addr)
1190*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int64x1x3_t %val
1191*9880d681SAndroid Build Coastguard Worker}
1192*9880d681SAndroid Build Coastguard Worker
1193*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float64x1x3_t @ld1_x3_v1f64(double* %addr) {
1194*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x3_v1f64:
1195*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.1d { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1196*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_float64x1x3_t @llvm.aarch64.neon.ld1x3.v1f64.p0f64(double* %addr)
1197*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_float64x1x3_t %val
1198*9880d681SAndroid Build Coastguard Worker}
1199*9880d681SAndroid Build Coastguard Worker
1200*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x16x3_t @llvm.aarch64.neon.ld1x3.v16i8.p0i8(i8*) nounwind readonly
1201*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x8x3_t @llvm.aarch64.neon.ld1x3.v8i16.p0i16(i16*) nounwind readonly
1202*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x4x3_t @llvm.aarch64.neon.ld1x3.v4i32.p0i32(i32*) nounwind readonly
1203*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float32x4x3_t @llvm.aarch64.neon.ld1x3.v4f32.p0f32(float*) nounwind readonly
1204*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x2x3_t @llvm.aarch64.neon.ld1x3.v2i64.p0i64(i64*) nounwind readonly
1205*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float64x2x3_t @llvm.aarch64.neon.ld1x3.v2f64.p0f64(double*) nounwind readonly
1206*9880d681SAndroid Build Coastguard Worker
1207*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x16x3_t @ld1_x3_v16i8(i8* %addr) {
1208*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x3_v16i8:
1209*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.16b { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1210*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int8x16x3_t @llvm.aarch64.neon.ld1x3.v16i8.p0i8(i8* %addr)
1211*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int8x16x3_t %val
1212*9880d681SAndroid Build Coastguard Worker}
1213*9880d681SAndroid Build Coastguard Worker
1214*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x8x3_t @ld1_x3_v8i16(i16* %addr) {
1215*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x3_v8i16:
1216*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.8h { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1217*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int16x8x3_t @llvm.aarch64.neon.ld1x3.v8i16.p0i16(i16* %addr)
1218*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int16x8x3_t %val
1219*9880d681SAndroid Build Coastguard Worker}
1220*9880d681SAndroid Build Coastguard Worker
1221*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x4x3_t @ld1_x3_v4i32(i32* %addr) {
1222*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x3_v4i32:
1223*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.4s { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1224*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int32x4x3_t @llvm.aarch64.neon.ld1x3.v4i32.p0i32(i32* %addr)
1225*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int32x4x3_t %val
1226*9880d681SAndroid Build Coastguard Worker}
1227*9880d681SAndroid Build Coastguard Worker
1228*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float32x4x3_t @ld1_x3_v4f32(float* %addr) {
1229*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x3_v4f32:
1230*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.4s { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1231*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_float32x4x3_t @llvm.aarch64.neon.ld1x3.v4f32.p0f32(float* %addr)
1232*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_float32x4x3_t %val
1233*9880d681SAndroid Build Coastguard Worker}
1234*9880d681SAndroid Build Coastguard Worker
1235*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x2x3_t @ld1_x3_v2i64(i64* %addr) {
1236*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x3_v2i64:
1237*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.2d { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1238*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int64x2x3_t @llvm.aarch64.neon.ld1x3.v2i64.p0i64(i64* %addr)
1239*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int64x2x3_t %val
1240*9880d681SAndroid Build Coastguard Worker}
1241*9880d681SAndroid Build Coastguard Worker
1242*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float64x2x3_t @ld1_x3_v2f64(double* %addr) {
1243*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x3_v2f64:
1244*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.2d { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1245*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_float64x2x3_t @llvm.aarch64.neon.ld1x3.v2f64.p0f64(double* %addr)
1246*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_float64x2x3_t %val
1247*9880d681SAndroid Build Coastguard Worker}
1248*9880d681SAndroid Build Coastguard Worker
1249*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x8x4_t @llvm.aarch64.neon.ld1x4.v8i8.p0i8(i8*) nounwind readonly
1250*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x4x4_t @llvm.aarch64.neon.ld1x4.v4i16.p0i16(i16*) nounwind readonly
1251*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x2x4_t @llvm.aarch64.neon.ld1x4.v2i32.p0i32(i32*) nounwind readonly
1252*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float32x2x4_t @llvm.aarch64.neon.ld1x4.v2f32.p0f32(float*) nounwind readonly
1253*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x1x4_t @llvm.aarch64.neon.ld1x4.v1i64.p0i64(i64*) nounwind readonly
1254*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float64x1x4_t @llvm.aarch64.neon.ld1x4.v1f64.p0f64(double*) nounwind readonly
1255*9880d681SAndroid Build Coastguard Worker
1256*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x8x4_t @ld1_x4_v8i8(i8* %addr) {
1257*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x4_v8i8:
1258*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.8b { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1259*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int8x8x4_t @llvm.aarch64.neon.ld1x4.v8i8.p0i8(i8* %addr)
1260*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int8x8x4_t %val
1261*9880d681SAndroid Build Coastguard Worker}
1262*9880d681SAndroid Build Coastguard Worker
1263*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x4x4_t @ld1_x4_v4i16(i16* %addr) {
1264*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x4_v4i16:
1265*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.4h { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1266*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int16x4x4_t @llvm.aarch64.neon.ld1x4.v4i16.p0i16(i16* %addr)
1267*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int16x4x4_t %val
1268*9880d681SAndroid Build Coastguard Worker}
1269*9880d681SAndroid Build Coastguard Worker
1270*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x2x4_t @ld1_x4_v2i32(i32* %addr) {
1271*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x4_v2i32:
1272*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.2s { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1273*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int32x2x4_t @llvm.aarch64.neon.ld1x4.v2i32.p0i32(i32* %addr)
1274*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int32x2x4_t %val
1275*9880d681SAndroid Build Coastguard Worker}
1276*9880d681SAndroid Build Coastguard Worker
1277*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float32x2x4_t @ld1_x4_v2f32(float* %addr) {
1278*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x4_v2f32:
1279*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.2s { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1280*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_float32x2x4_t @llvm.aarch64.neon.ld1x4.v2f32.p0f32(float* %addr)
1281*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_float32x2x4_t %val
1282*9880d681SAndroid Build Coastguard Worker}
1283*9880d681SAndroid Build Coastguard Worker
1284*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x1x4_t @ld1_x4_v1i64(i64* %addr) {
1285*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x4_v1i64:
1286*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.1d { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1287*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int64x1x4_t @llvm.aarch64.neon.ld1x4.v1i64.p0i64(i64* %addr)
1288*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int64x1x4_t %val
1289*9880d681SAndroid Build Coastguard Worker}
1290*9880d681SAndroid Build Coastguard Worker
1291*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float64x1x4_t @ld1_x4_v1f64(double* %addr) {
1292*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x4_v1f64:
1293*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.1d { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1294*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_float64x1x4_t @llvm.aarch64.neon.ld1x4.v1f64.p0f64(double* %addr)
1295*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_float64x1x4_t %val
1296*9880d681SAndroid Build Coastguard Worker}
1297*9880d681SAndroid Build Coastguard Worker
1298*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int8x16x4_t @llvm.aarch64.neon.ld1x4.v16i8.p0i8(i8*) nounwind readonly
1299*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int16x8x4_t @llvm.aarch64.neon.ld1x4.v8i16.p0i16(i16*) nounwind readonly
1300*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int32x4x4_t @llvm.aarch64.neon.ld1x4.v4i32.p0i32(i32*) nounwind readonly
1301*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float32x4x4_t @llvm.aarch64.neon.ld1x4.v4f32.p0f32(float*) nounwind readonly
1302*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_int64x2x4_t @llvm.aarch64.neon.ld1x4.v2i64.p0i64(i64*) nounwind readonly
1303*9880d681SAndroid Build Coastguard Workerdeclare %struct.__neon_float64x2x4_t @llvm.aarch64.neon.ld1x4.v2f64.p0f64(double*) nounwind readonly
1304*9880d681SAndroid Build Coastguard Worker
1305*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int8x16x4_t @ld1_x4_v16i8(i8* %addr) {
1306*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x4_v16i8:
1307*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.16b { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1308*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int8x16x4_t @llvm.aarch64.neon.ld1x4.v16i8.p0i8(i8* %addr)
1309*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int8x16x4_t %val
1310*9880d681SAndroid Build Coastguard Worker}
1311*9880d681SAndroid Build Coastguard Worker
1312*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int16x8x4_t @ld1_x4_v8i16(i16* %addr) {
1313*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x4_v8i16:
1314*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.8h { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1315*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int16x8x4_t @llvm.aarch64.neon.ld1x4.v8i16.p0i16(i16* %addr)
1316*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int16x8x4_t %val
1317*9880d681SAndroid Build Coastguard Worker}
1318*9880d681SAndroid Build Coastguard Worker
1319*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int32x4x4_t @ld1_x4_v4i32(i32* %addr) {
1320*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x4_v4i32:
1321*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.4s { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1322*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int32x4x4_t @llvm.aarch64.neon.ld1x4.v4i32.p0i32(i32* %addr)
1323*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int32x4x4_t %val
1324*9880d681SAndroid Build Coastguard Worker}
1325*9880d681SAndroid Build Coastguard Worker
1326*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float32x4x4_t @ld1_x4_v4f32(float* %addr) {
1327*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x4_v4f32:
1328*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.4s { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1329*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_float32x4x4_t @llvm.aarch64.neon.ld1x4.v4f32.p0f32(float* %addr)
1330*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_float32x4x4_t %val
1331*9880d681SAndroid Build Coastguard Worker}
1332*9880d681SAndroid Build Coastguard Worker
1333*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_int64x2x4_t @ld1_x4_v2i64(i64* %addr) {
1334*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x4_v2i64:
1335*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.2d { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1336*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_int64x2x4_t @llvm.aarch64.neon.ld1x4.v2i64.p0i64(i64* %addr)
1337*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_int64x2x4_t %val
1338*9880d681SAndroid Build Coastguard Worker}
1339*9880d681SAndroid Build Coastguard Worker
1340*9880d681SAndroid Build Coastguard Workerdefine %struct.__neon_float64x2x4_t @ld1_x4_v2f64(double* %addr) {
1341*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ld1_x4_v2f64:
1342*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.2d { {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} }, [x0]
1343*9880d681SAndroid Build Coastguard Worker  %val = call %struct.__neon_float64x2x4_t @llvm.aarch64.neon.ld1x4.v2f64.p0f64(double* %addr)
1344*9880d681SAndroid Build Coastguard Worker  ret %struct.__neon_float64x2x4_t %val
1345*9880d681SAndroid Build Coastguard Worker}
1346