1 /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" { target { ! ilp32 } } } } */
2 
3 #include "test_sve_acle.h"
4 
5 /*
6 ** ldff1uw_gather_u64_tied1:
7 **	ldff1w	z0\.d, p0/z, \[z0\.d\]
8 **	ret
9 */
10 TEST_LOAD_GATHER_ZS (ldff1uw_gather_u64_tied1, svuint64_t, svuint64_t,
11 		     z0_res = svldff1uw_gather_u64base_u64 (p0, z0),
12 		     z0_res = svldff1uw_gather_u64 (p0, z0))
13 
14 /*
15 ** ldff1uw_gather_u64_untied:
16 **	ldff1w	z0\.d, p0/z, \[z1\.d\]
17 **	ret
18 */
19 TEST_LOAD_GATHER_ZS (ldff1uw_gather_u64_untied, svuint64_t, svuint64_t,
20 		     z0_res = svldff1uw_gather_u64base_u64 (p0, z1),
21 		     z0_res = svldff1uw_gather_u64 (p0, z1))
22 
23 /*
24 ** ldff1uw_gather_x0_u64_offset:
25 **	ldff1w	z0\.d, p0/z, \[x0, z0\.d\]
26 **	ret
27 */
28 TEST_LOAD_GATHER_ZS (ldff1uw_gather_x0_u64_offset, svuint64_t, svuint64_t,
29 		     z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, x0),
30 		     z0_res = svldff1uw_gather_offset_u64 (p0, z0, x0))
31 
32 /*
33 ** ldff1uw_gather_m4_u64_offset:
34 **	mov	(x[0-9]+), #?-4
35 **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
36 **	ret
37 */
38 TEST_LOAD_GATHER_ZS (ldff1uw_gather_m4_u64_offset, svuint64_t, svuint64_t,
39 		     z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, -4),
40 		     z0_res = svldff1uw_gather_offset_u64 (p0, z0, -4))
41 
42 /*
43 ** ldff1uw_gather_0_u64_offset:
44 **	ldff1w	z0\.d, p0/z, \[z0\.d\]
45 **	ret
46 */
47 TEST_LOAD_GATHER_ZS (ldff1uw_gather_0_u64_offset, svuint64_t, svuint64_t,
48 		     z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, 0),
49 		     z0_res = svldff1uw_gather_offset_u64 (p0, z0, 0))
50 
51 /*
52 ** ldff1uw_gather_5_u64_offset:
53 **	mov	(x[0-9]+), #?5
54 **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
55 **	ret
56 */
57 TEST_LOAD_GATHER_ZS (ldff1uw_gather_5_u64_offset, svuint64_t, svuint64_t,
58 		     z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, 5),
59 		     z0_res = svldff1uw_gather_offset_u64 (p0, z0, 5))
60 
61 /*
62 ** ldff1uw_gather_6_u64_offset:
63 **	mov	(x[0-9]+), #?6
64 **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
65 **	ret
66 */
67 TEST_LOAD_GATHER_ZS (ldff1uw_gather_6_u64_offset, svuint64_t, svuint64_t,
68 		     z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, 6),
69 		     z0_res = svldff1uw_gather_offset_u64 (p0, z0, 6))
70 
71 /*
72 ** ldff1uw_gather_7_u64_offset:
73 **	mov	(x[0-9]+), #?7
74 **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
75 **	ret
76 */
77 TEST_LOAD_GATHER_ZS (ldff1uw_gather_7_u64_offset, svuint64_t, svuint64_t,
78 		     z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, 7),
79 		     z0_res = svldff1uw_gather_offset_u64 (p0, z0, 7))
80 
81 /*
82 ** ldff1uw_gather_8_u64_offset:
83 **	ldff1w	z0\.d, p0/z, \[z0\.d, #8\]
84 **	ret
85 */
86 TEST_LOAD_GATHER_ZS (ldff1uw_gather_8_u64_offset, svuint64_t, svuint64_t,
87 		     z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, 8),
88 		     z0_res = svldff1uw_gather_offset_u64 (p0, z0, 8))
89 
90 /*
91 ** ldff1uw_gather_124_u64_offset:
92 **	ldff1w	z0\.d, p0/z, \[z0\.d, #124\]
93 **	ret
94 */
95 TEST_LOAD_GATHER_ZS (ldff1uw_gather_124_u64_offset, svuint64_t, svuint64_t,
96 		     z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, 124),
97 		     z0_res = svldff1uw_gather_offset_u64 (p0, z0, 124))
98 
99 /*
100 ** ldff1uw_gather_128_u64_offset:
101 **	mov	(x[0-9]+), #?128
102 **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
103 **	ret
104 */
105 TEST_LOAD_GATHER_ZS (ldff1uw_gather_128_u64_offset, svuint64_t, svuint64_t,
106 		     z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, 128),
107 		     z0_res = svldff1uw_gather_offset_u64 (p0, z0, 128))
108 
109 /*
110 ** ldff1uw_gather_x0_u64_index:
111 **	lsl	(x[0-9]+), x0, #?2
112 **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
113 **	ret
114 */
115 TEST_LOAD_GATHER_ZS (ldff1uw_gather_x0_u64_index, svuint64_t, svuint64_t,
116 		     z0_res = svldff1uw_gather_u64base_index_u64 (p0, z0, x0),
117 		     z0_res = svldff1uw_gather_index_u64 (p0, z0, x0))
118 
119 /*
120 ** ldff1uw_gather_m1_u64_index:
121 **	mov	(x[0-9]+), #?-4
122 **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
123 **	ret
124 */
125 TEST_LOAD_GATHER_ZS (ldff1uw_gather_m1_u64_index, svuint64_t, svuint64_t,
126 		     z0_res = svldff1uw_gather_u64base_index_u64 (p0, z0, -1),
127 		     z0_res = svldff1uw_gather_index_u64 (p0, z0, -1))
128 
129 /*
130 ** ldff1uw_gather_0_u64_index:
131 **	ldff1w	z0\.d, p0/z, \[z0\.d\]
132 **	ret
133 */
134 TEST_LOAD_GATHER_ZS (ldff1uw_gather_0_u64_index, svuint64_t, svuint64_t,
135 		     z0_res = svldff1uw_gather_u64base_index_u64 (p0, z0, 0),
136 		     z0_res = svldff1uw_gather_index_u64 (p0, z0, 0))
137 
138 /*
139 ** ldff1uw_gather_5_u64_index:
140 **	ldff1w	z0\.d, p0/z, \[z0\.d, #20\]
141 **	ret
142 */
143 TEST_LOAD_GATHER_ZS (ldff1uw_gather_5_u64_index, svuint64_t, svuint64_t,
144 		     z0_res = svldff1uw_gather_u64base_index_u64 (p0, z0, 5),
145 		     z0_res = svldff1uw_gather_index_u64 (p0, z0, 5))
146 
147 /*
148 ** ldff1uw_gather_31_u64_index:
149 **	ldff1w	z0\.d, p0/z, \[z0\.d, #124\]
150 **	ret
151 */
152 TEST_LOAD_GATHER_ZS (ldff1uw_gather_31_u64_index, svuint64_t, svuint64_t,
153 		     z0_res = svldff1uw_gather_u64base_index_u64 (p0, z0, 31),
154 		     z0_res = svldff1uw_gather_index_u64 (p0, z0, 31))
155 
156 /*
157 ** ldff1uw_gather_32_u64_index:
158 **	mov	(x[0-9]+), #?128
159 **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
160 **	ret
161 */
162 TEST_LOAD_GATHER_ZS (ldff1uw_gather_32_u64_index, svuint64_t, svuint64_t,
163 		     z0_res = svldff1uw_gather_u64base_index_u64 (p0, z0, 32),
164 		     z0_res = svldff1uw_gather_index_u64 (p0, z0, 32))
165 
166 /*
167 ** ldff1uw_gather_x0_u64_s64offset:
168 **	ldff1w	z0\.d, p0/z, \[x0, z0\.d\]
169 **	ret
170 */
171 TEST_LOAD_GATHER_SZ (ldff1uw_gather_x0_u64_s64offset, svuint64_t, uint32_t, svint64_t,
172 		     z0_res = svldff1uw_gather_s64offset_u64 (p0, x0, z0),
173 		     z0_res = svldff1uw_gather_offset_u64 (p0, x0, z0))
174 
175 /*
176 ** ldff1uw_gather_tied1_u64_s64offset:
177 **	ldff1w	z0\.d, p0/z, \[x0, z0\.d\]
178 **	ret
179 */
180 TEST_LOAD_GATHER_SZ (ldff1uw_gather_tied1_u64_s64offset, svuint64_t, uint32_t, svint64_t,
181 		     z0_res = svldff1uw_gather_s64offset_u64 (p0, x0, z0),
182 		     z0_res = svldff1uw_gather_offset_u64 (p0, x0, z0))
183 
184 /*
185 ** ldff1uw_gather_untied_u64_s64offset:
186 **	ldff1w	z0\.d, p0/z, \[x0, z1\.d\]
187 **	ret
188 */
189 TEST_LOAD_GATHER_SZ (ldff1uw_gather_untied_u64_s64offset, svuint64_t, uint32_t, svint64_t,
190 		     z0_res = svldff1uw_gather_s64offset_u64 (p0, x0, z1),
191 		     z0_res = svldff1uw_gather_offset_u64 (p0, x0, z1))
192 
193 /*
194 ** ldff1uw_gather_ext_u64_s64offset:
195 **	ldff1w	z0\.d, p0/z, \[x0, z1\.d, sxtw\]
196 **	ret
197 */
198 TEST_LOAD_GATHER_SZ (ldff1uw_gather_ext_u64_s64offset, svuint64_t, uint32_t, svint64_t,
199 		     z0_res = svldff1uw_gather_s64offset_u64 (p0, x0, svextw_s64_x (p0, z1)),
200 		     z0_res = svldff1uw_gather_offset_u64 (p0, x0, svextw_x (p0, z1)))
201 
202 /*
203 ** ldff1uw_gather_x0_u64_u64offset:
204 **	ldff1w	z0\.d, p0/z, \[x0, z0\.d\]
205 **	ret
206 */
207 TEST_LOAD_GATHER_SZ (ldff1uw_gather_x0_u64_u64offset, svuint64_t, uint32_t, svuint64_t,
208 		     z0_res = svldff1uw_gather_u64offset_u64 (p0, x0, z0),
209 		     z0_res = svldff1uw_gather_offset_u64 (p0, x0, z0))
210 
211 /*
212 ** ldff1uw_gather_tied1_u64_u64offset:
213 **	ldff1w	z0\.d, p0/z, \[x0, z0\.d\]
214 **	ret
215 */
216 TEST_LOAD_GATHER_SZ (ldff1uw_gather_tied1_u64_u64offset, svuint64_t, uint32_t, svuint64_t,
217 		     z0_res = svldff1uw_gather_u64offset_u64 (p0, x0, z0),
218 		     z0_res = svldff1uw_gather_offset_u64 (p0, x0, z0))
219 
220 /*
221 ** ldff1uw_gather_untied_u64_u64offset:
222 **	ldff1w	z0\.d, p0/z, \[x0, z1\.d\]
223 **	ret
224 */
225 TEST_LOAD_GATHER_SZ (ldff1uw_gather_untied_u64_u64offset, svuint64_t, uint32_t, svuint64_t,
226 		     z0_res = svldff1uw_gather_u64offset_u64 (p0, x0, z1),
227 		     z0_res = svldff1uw_gather_offset_u64 (p0, x0, z1))
228 
229 /*
230 ** ldff1uw_gather_ext_u64_u64offset:
231 **	ldff1w	z0\.d, p0/z, \[x0, z1\.d, uxtw\]
232 **	ret
233 */
234 TEST_LOAD_GATHER_SZ (ldff1uw_gather_ext_u64_u64offset, svuint64_t, uint32_t, svuint64_t,
235 		     z0_res = svldff1uw_gather_u64offset_u64 (p0, x0, svextw_u64_x (p0, z1)),
236 		     z0_res = svldff1uw_gather_offset_u64 (p0, x0, svextw_x (p0, z1)))
237 
238 /*
239 ** ldff1uw_gather_x0_u64_s64index:
240 **	ldff1w	z0\.d, p0/z, \[x0, z0\.d, lsl 2\]
241 **	ret
242 */
243 TEST_LOAD_GATHER_SZ (ldff1uw_gather_x0_u64_s64index, svuint64_t, uint32_t, svint64_t,
244 		     z0_res = svldff1uw_gather_s64index_u64 (p0, x0, z0),
245 		     z0_res = svldff1uw_gather_index_u64 (p0, x0, z0))
246 
247 /*
248 ** ldff1uw_gather_tied1_u64_s64index:
249 **	ldff1w	z0\.d, p0/z, \[x0, z0\.d, lsl 2\]
250 **	ret
251 */
252 TEST_LOAD_GATHER_SZ (ldff1uw_gather_tied1_u64_s64index, svuint64_t, uint32_t, svint64_t,
253 		     z0_res = svldff1uw_gather_s64index_u64 (p0, x0, z0),
254 		     z0_res = svldff1uw_gather_index_u64 (p0, x0, z0))
255 
256 /*
257 ** ldff1uw_gather_untied_u64_s64index:
258 **	ldff1w	z0\.d, p0/z, \[x0, z1\.d, lsl 2\]
259 **	ret
260 */
261 TEST_LOAD_GATHER_SZ (ldff1uw_gather_untied_u64_s64index, svuint64_t, uint32_t, svint64_t,
262 		     z0_res = svldff1uw_gather_s64index_u64 (p0, x0, z1),
263 		     z0_res = svldff1uw_gather_index_u64 (p0, x0, z1))
264 
265 /*
266 ** ldff1uw_gather_ext_u64_s64index:
267 **	ldff1w	z0\.d, p0/z, \[x0, z1\.d, sxtw 2\]
268 **	ret
269 */
270 TEST_LOAD_GATHER_SZ (ldff1uw_gather_ext_u64_s64index, svuint64_t, uint32_t, svint64_t,
271 		     z0_res = svldff1uw_gather_s64index_u64 (p0, x0, svextw_s64_x (p0, z1)),
272 		     z0_res = svldff1uw_gather_index_u64 (p0, x0, svextw_x (p0, z1)))
273 
274 /*
275 ** ldff1uw_gather_x0_u64_u64index:
276 **	ldff1w	z0\.d, p0/z, \[x0, z0\.d, lsl 2\]
277 **	ret
278 */
279 TEST_LOAD_GATHER_SZ (ldff1uw_gather_x0_u64_u64index, svuint64_t, uint32_t, svuint64_t,
280 		     z0_res = svldff1uw_gather_u64index_u64 (p0, x0, z0),
281 		     z0_res = svldff1uw_gather_index_u64 (p0, x0, z0))
282 
283 /*
284 ** ldff1uw_gather_tied1_u64_u64index:
285 **	ldff1w	z0\.d, p0/z, \[x0, z0\.d, lsl 2\]
286 **	ret
287 */
288 TEST_LOAD_GATHER_SZ (ldff1uw_gather_tied1_u64_u64index, svuint64_t, uint32_t, svuint64_t,
289 		     z0_res = svldff1uw_gather_u64index_u64 (p0, x0, z0),
290 		     z0_res = svldff1uw_gather_index_u64 (p0, x0, z0))
291 
292 /*
293 ** ldff1uw_gather_untied_u64_u64index:
294 **	ldff1w	z0\.d, p0/z, \[x0, z1\.d, lsl 2\]
295 **	ret
296 */
297 TEST_LOAD_GATHER_SZ (ldff1uw_gather_untied_u64_u64index, svuint64_t, uint32_t, svuint64_t,
298 		     z0_res = svldff1uw_gather_u64index_u64 (p0, x0, z1),
299 		     z0_res = svldff1uw_gather_index_u64 (p0, x0, z1))
300 
301 /*
302 ** ldff1uw_gather_ext_u64_u64index:
303 **	ldff1w	z0\.d, p0/z, \[x0, z1\.d, uxtw 2\]
304 **	ret
305 */
306 TEST_LOAD_GATHER_SZ (ldff1uw_gather_ext_u64_u64index, svuint64_t, uint32_t, svuint64_t,
307 		     z0_res = svldff1uw_gather_u64index_u64 (p0, x0, svextw_u64_x (p0, z1)),
308 		     z0_res = svldff1uw_gather_index_u64 (p0, x0, svextw_x (p0, z1)))
309