]>
Commit | Line | Data |
---|---|---|
df401d54 | 1 | /* ARM NEON intrinsics include file. |
2 | ||
fbd26352 | 3 | Copyright (C) 2011-2019 Free Software Foundation, Inc. |
df401d54 | 4 | Contributed by ARM Ltd. |
5 | ||
6 | This file is part of GCC. | |
7 | ||
8 | GCC is free software; you can redistribute it and/or modify it | |
9 | under the terms of the GNU General Public License as published | |
10 | by the Free Software Foundation; either version 3, or (at your | |
11 | option) any later version. | |
12 | ||
13 | GCC is distributed in the hope that it will be useful, but WITHOUT | |
14 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
15 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public | |
16 | License for more details. | |
17 | ||
18 | Under Section 7 of GPL version 3, you are granted additional | |
19 | permissions described in the GCC Runtime Library Exception, version | |
20 | 3.1, as published by the Free Software Foundation. | |
21 | ||
22 | You should have received a copy of the GNU General Public License and | |
23 | a copy of the GCC Runtime Library Exception along with this program; | |
24 | see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
25 | <http://www.gnu.org/licenses/>. */ | |
26 | ||
27 | #ifndef _AARCH64_NEON_H_ | |
28 | #define _AARCH64_NEON_H_ | |
29 | ||
26db5325 | 30 | #pragma GCC push_options |
31 | #pragma GCC target ("+nothing+simd") | |
1ed5a048 | 32 | |
df401d54 | 33 | #include <stdint.h> |
34 | ||
d75377fe | 35 | #define __AARCH64_UINT64_C(__C) ((uint64_t) __C) |
36 | #define __AARCH64_INT64_C(__C) ((int64_t) __C) | |
37 | ||
f3731846 | 38 | typedef __Int8x8_t int8x8_t; |
39 | typedef __Int16x4_t int16x4_t; | |
40 | typedef __Int32x2_t int32x2_t; | |
41 | typedef __Int64x1_t int64x1_t; | |
aea31229 | 42 | typedef __Float16x4_t float16x4_t; |
f3731846 | 43 | typedef __Float32x2_t float32x2_t; |
44 | typedef __Poly8x8_t poly8x8_t; | |
45 | typedef __Poly16x4_t poly16x4_t; | |
46 | typedef __Uint8x8_t uint8x8_t; | |
47 | typedef __Uint16x4_t uint16x4_t; | |
48 | typedef __Uint32x2_t uint32x2_t; | |
49 | typedef __Float64x1_t float64x1_t; | |
50 | typedef __Uint64x1_t uint64x1_t; | |
51 | typedef __Int8x16_t int8x16_t; | |
52 | typedef __Int16x8_t int16x8_t; | |
53 | typedef __Int32x4_t int32x4_t; | |
54 | typedef __Int64x2_t int64x2_t; | |
aea31229 | 55 | typedef __Float16x8_t float16x8_t; |
f3731846 | 56 | typedef __Float32x4_t float32x4_t; |
57 | typedef __Float64x2_t float64x2_t; | |
58 | typedef __Poly8x16_t poly8x16_t; | |
59 | typedef __Poly16x8_t poly16x8_t; | |
60 | typedef __Poly64x2_t poly64x2_t; | |
d4f47414 | 61 | typedef __Poly64x1_t poly64x1_t; |
f3731846 | 62 | typedef __Uint8x16_t uint8x16_t; |
63 | typedef __Uint16x8_t uint16x8_t; | |
64 | typedef __Uint32x4_t uint32x4_t; | |
65 | typedef __Uint64x2_t uint64x2_t; | |
66 | ||
67 | typedef __Poly8_t poly8_t; | |
68 | typedef __Poly16_t poly16_t; | |
69 | typedef __Poly64_t poly64_t; | |
70 | typedef __Poly128_t poly128_t; | |
df401d54 | 71 | |
aea31229 | 72 | typedef __fp16 float16_t; |
df401d54 | 73 | typedef float float32_t; |
74 | typedef double float64_t; | |
df401d54 | 75 | |
76 | typedef struct int8x8x2_t | |
77 | { | |
78 | int8x8_t val[2]; | |
79 | } int8x8x2_t; | |
80 | ||
81 | typedef struct int8x16x2_t | |
82 | { | |
83 | int8x16_t val[2]; | |
84 | } int8x16x2_t; | |
85 | ||
86 | typedef struct int16x4x2_t | |
87 | { | |
88 | int16x4_t val[2]; | |
89 | } int16x4x2_t; | |
90 | ||
91 | typedef struct int16x8x2_t | |
92 | { | |
93 | int16x8_t val[2]; | |
94 | } int16x8x2_t; | |
95 | ||
96 | typedef struct int32x2x2_t | |
97 | { | |
98 | int32x2_t val[2]; | |
99 | } int32x2x2_t; | |
100 | ||
101 | typedef struct int32x4x2_t | |
102 | { | |
103 | int32x4_t val[2]; | |
104 | } int32x4x2_t; | |
105 | ||
106 | typedef struct int64x1x2_t | |
107 | { | |
108 | int64x1_t val[2]; | |
109 | } int64x1x2_t; | |
110 | ||
111 | typedef struct int64x2x2_t | |
112 | { | |
113 | int64x2_t val[2]; | |
114 | } int64x2x2_t; | |
115 | ||
116 | typedef struct uint8x8x2_t | |
117 | { | |
118 | uint8x8_t val[2]; | |
119 | } uint8x8x2_t; | |
120 | ||
121 | typedef struct uint8x16x2_t | |
122 | { | |
123 | uint8x16_t val[2]; | |
124 | } uint8x16x2_t; | |
125 | ||
126 | typedef struct uint16x4x2_t | |
127 | { | |
128 | uint16x4_t val[2]; | |
129 | } uint16x4x2_t; | |
130 | ||
131 | typedef struct uint16x8x2_t | |
132 | { | |
133 | uint16x8_t val[2]; | |
134 | } uint16x8x2_t; | |
135 | ||
136 | typedef struct uint32x2x2_t | |
137 | { | |
138 | uint32x2_t val[2]; | |
139 | } uint32x2x2_t; | |
140 | ||
141 | typedef struct uint32x4x2_t | |
142 | { | |
143 | uint32x4_t val[2]; | |
144 | } uint32x4x2_t; | |
145 | ||
146 | typedef struct uint64x1x2_t | |
147 | { | |
148 | uint64x1_t val[2]; | |
149 | } uint64x1x2_t; | |
150 | ||
151 | typedef struct uint64x2x2_t | |
152 | { | |
153 | uint64x2_t val[2]; | |
154 | } uint64x2x2_t; | |
155 | ||
07c40439 | 156 | typedef struct float16x4x2_t |
157 | { | |
158 | float16x4_t val[2]; | |
159 | } float16x4x2_t; | |
160 | ||
161 | typedef struct float16x8x2_t | |
162 | { | |
163 | float16x8_t val[2]; | |
164 | } float16x8x2_t; | |
165 | ||
df401d54 | 166 | typedef struct float32x2x2_t |
167 | { | |
168 | float32x2_t val[2]; | |
169 | } float32x2x2_t; | |
170 | ||
171 | typedef struct float32x4x2_t | |
172 | { | |
173 | float32x4_t val[2]; | |
174 | } float32x4x2_t; | |
175 | ||
176 | typedef struct float64x2x2_t | |
177 | { | |
178 | float64x2_t val[2]; | |
179 | } float64x2x2_t; | |
180 | ||
181 | typedef struct float64x1x2_t | |
182 | { | |
183 | float64x1_t val[2]; | |
184 | } float64x1x2_t; | |
185 | ||
186 | typedef struct poly8x8x2_t | |
187 | { | |
188 | poly8x8_t val[2]; | |
189 | } poly8x8x2_t; | |
190 | ||
191 | typedef struct poly8x16x2_t | |
192 | { | |
193 | poly8x16_t val[2]; | |
194 | } poly8x16x2_t; | |
195 | ||
196 | typedef struct poly16x4x2_t | |
197 | { | |
198 | poly16x4_t val[2]; | |
199 | } poly16x4x2_t; | |
200 | ||
201 | typedef struct poly16x8x2_t | |
202 | { | |
203 | poly16x8_t val[2]; | |
204 | } poly16x8x2_t; | |
205 | ||
d4f47414 | 206 | typedef struct poly64x1x2_t |
207 | { | |
208 | poly64x1_t val[2]; | |
209 | } poly64x1x2_t; | |
210 | ||
211 | typedef struct poly64x1x3_t | |
212 | { | |
213 | poly64x1_t val[3]; | |
214 | } poly64x1x3_t; | |
215 | ||
216 | typedef struct poly64x1x4_t | |
217 | { | |
218 | poly64x1_t val[4]; | |
219 | } poly64x1x4_t; | |
220 | ||
221 | typedef struct poly64x2x2_t | |
222 | { | |
223 | poly64x2_t val[2]; | |
224 | } poly64x2x2_t; | |
225 | ||
226 | typedef struct poly64x2x3_t | |
227 | { | |
228 | poly64x2_t val[3]; | |
229 | } poly64x2x3_t; | |
230 | ||
231 | typedef struct poly64x2x4_t | |
232 | { | |
233 | poly64x2_t val[4]; | |
234 | } poly64x2x4_t; | |
235 | ||
df401d54 | 236 | typedef struct int8x8x3_t |
237 | { | |
238 | int8x8_t val[3]; | |
239 | } int8x8x3_t; | |
240 | ||
241 | typedef struct int8x16x3_t | |
242 | { | |
243 | int8x16_t val[3]; | |
244 | } int8x16x3_t; | |
245 | ||
246 | typedef struct int16x4x3_t | |
247 | { | |
248 | int16x4_t val[3]; | |
249 | } int16x4x3_t; | |
250 | ||
251 | typedef struct int16x8x3_t | |
252 | { | |
253 | int16x8_t val[3]; | |
254 | } int16x8x3_t; | |
255 | ||
256 | typedef struct int32x2x3_t | |
257 | { | |
258 | int32x2_t val[3]; | |
259 | } int32x2x3_t; | |
260 | ||
261 | typedef struct int32x4x3_t | |
262 | { | |
263 | int32x4_t val[3]; | |
264 | } int32x4x3_t; | |
265 | ||
266 | typedef struct int64x1x3_t | |
267 | { | |
268 | int64x1_t val[3]; | |
269 | } int64x1x3_t; | |
270 | ||
271 | typedef struct int64x2x3_t | |
272 | { | |
273 | int64x2_t val[3]; | |
274 | } int64x2x3_t; | |
275 | ||
276 | typedef struct uint8x8x3_t | |
277 | { | |
278 | uint8x8_t val[3]; | |
279 | } uint8x8x3_t; | |
280 | ||
281 | typedef struct uint8x16x3_t | |
282 | { | |
283 | uint8x16_t val[3]; | |
284 | } uint8x16x3_t; | |
285 | ||
286 | typedef struct uint16x4x3_t | |
287 | { | |
288 | uint16x4_t val[3]; | |
289 | } uint16x4x3_t; | |
290 | ||
291 | typedef struct uint16x8x3_t | |
292 | { | |
293 | uint16x8_t val[3]; | |
294 | } uint16x8x3_t; | |
295 | ||
296 | typedef struct uint32x2x3_t | |
297 | { | |
298 | uint32x2_t val[3]; | |
299 | } uint32x2x3_t; | |
300 | ||
301 | typedef struct uint32x4x3_t | |
302 | { | |
303 | uint32x4_t val[3]; | |
304 | } uint32x4x3_t; | |
305 | ||
306 | typedef struct uint64x1x3_t | |
307 | { | |
308 | uint64x1_t val[3]; | |
309 | } uint64x1x3_t; | |
310 | ||
311 | typedef struct uint64x2x3_t | |
312 | { | |
313 | uint64x2_t val[3]; | |
314 | } uint64x2x3_t; | |
315 | ||
07c40439 | 316 | typedef struct float16x4x3_t |
317 | { | |
318 | float16x4_t val[3]; | |
319 | } float16x4x3_t; | |
320 | ||
321 | typedef struct float16x8x3_t | |
322 | { | |
323 | float16x8_t val[3]; | |
324 | } float16x8x3_t; | |
325 | ||
df401d54 | 326 | typedef struct float32x2x3_t |
327 | { | |
328 | float32x2_t val[3]; | |
329 | } float32x2x3_t; | |
330 | ||
331 | typedef struct float32x4x3_t | |
332 | { | |
333 | float32x4_t val[3]; | |
334 | } float32x4x3_t; | |
335 | ||
336 | typedef struct float64x2x3_t | |
337 | { | |
338 | float64x2_t val[3]; | |
339 | } float64x2x3_t; | |
340 | ||
341 | typedef struct float64x1x3_t | |
342 | { | |
343 | float64x1_t val[3]; | |
344 | } float64x1x3_t; | |
345 | ||
346 | typedef struct poly8x8x3_t | |
347 | { | |
348 | poly8x8_t val[3]; | |
349 | } poly8x8x3_t; | |
350 | ||
351 | typedef struct poly8x16x3_t | |
352 | { | |
353 | poly8x16_t val[3]; | |
354 | } poly8x16x3_t; | |
355 | ||
356 | typedef struct poly16x4x3_t | |
357 | { | |
358 | poly16x4_t val[3]; | |
359 | } poly16x4x3_t; | |
360 | ||
361 | typedef struct poly16x8x3_t | |
362 | { | |
363 | poly16x8_t val[3]; | |
364 | } poly16x8x3_t; | |
365 | ||
366 | typedef struct int8x8x4_t | |
367 | { | |
368 | int8x8_t val[4]; | |
369 | } int8x8x4_t; | |
370 | ||
371 | typedef struct int8x16x4_t | |
372 | { | |
373 | int8x16_t val[4]; | |
374 | } int8x16x4_t; | |
375 | ||
376 | typedef struct int16x4x4_t | |
377 | { | |
378 | int16x4_t val[4]; | |
379 | } int16x4x4_t; | |
380 | ||
381 | typedef struct int16x8x4_t | |
382 | { | |
383 | int16x8_t val[4]; | |
384 | } int16x8x4_t; | |
385 | ||
386 | typedef struct int32x2x4_t | |
387 | { | |
388 | int32x2_t val[4]; | |
389 | } int32x2x4_t; | |
390 | ||
391 | typedef struct int32x4x4_t | |
392 | { | |
393 | int32x4_t val[4]; | |
394 | } int32x4x4_t; | |
395 | ||
396 | typedef struct int64x1x4_t | |
397 | { | |
398 | int64x1_t val[4]; | |
399 | } int64x1x4_t; | |
400 | ||
401 | typedef struct int64x2x4_t | |
402 | { | |
403 | int64x2_t val[4]; | |
404 | } int64x2x4_t; | |
405 | ||
406 | typedef struct uint8x8x4_t | |
407 | { | |
408 | uint8x8_t val[4]; | |
409 | } uint8x8x4_t; | |
410 | ||
411 | typedef struct uint8x16x4_t | |
412 | { | |
413 | uint8x16_t val[4]; | |
414 | } uint8x16x4_t; | |
415 | ||
416 | typedef struct uint16x4x4_t | |
417 | { | |
418 | uint16x4_t val[4]; | |
419 | } uint16x4x4_t; | |
420 | ||
421 | typedef struct uint16x8x4_t | |
422 | { | |
423 | uint16x8_t val[4]; | |
424 | } uint16x8x4_t; | |
425 | ||
426 | typedef struct uint32x2x4_t | |
427 | { | |
428 | uint32x2_t val[4]; | |
429 | } uint32x2x4_t; | |
430 | ||
431 | typedef struct uint32x4x4_t | |
432 | { | |
433 | uint32x4_t val[4]; | |
434 | } uint32x4x4_t; | |
435 | ||
436 | typedef struct uint64x1x4_t | |
437 | { | |
438 | uint64x1_t val[4]; | |
439 | } uint64x1x4_t; | |
440 | ||
441 | typedef struct uint64x2x4_t | |
442 | { | |
443 | uint64x2_t val[4]; | |
444 | } uint64x2x4_t; | |
445 | ||
07c40439 | 446 | typedef struct float16x4x4_t |
447 | { | |
448 | float16x4_t val[4]; | |
449 | } float16x4x4_t; | |
450 | ||
451 | typedef struct float16x8x4_t | |
452 | { | |
453 | float16x8_t val[4]; | |
454 | } float16x8x4_t; | |
455 | ||
df401d54 | 456 | typedef struct float32x2x4_t |
457 | { | |
458 | float32x2_t val[4]; | |
459 | } float32x2x4_t; | |
460 | ||
461 | typedef struct float32x4x4_t | |
462 | { | |
463 | float32x4_t val[4]; | |
464 | } float32x4x4_t; | |
465 | ||
466 | typedef struct float64x2x4_t | |
467 | { | |
468 | float64x2_t val[4]; | |
469 | } float64x2x4_t; | |
470 | ||
471 | typedef struct float64x1x4_t | |
472 | { | |
473 | float64x1_t val[4]; | |
474 | } float64x1x4_t; | |
475 | ||
476 | typedef struct poly8x8x4_t | |
477 | { | |
478 | poly8x8_t val[4]; | |
479 | } poly8x8x4_t; | |
480 | ||
481 | typedef struct poly8x16x4_t | |
482 | { | |
483 | poly8x16_t val[4]; | |
484 | } poly8x16x4_t; | |
485 | ||
486 | typedef struct poly16x4x4_t | |
487 | { | |
488 | poly16x4_t val[4]; | |
489 | } poly16x4x4_t; | |
490 | ||
491 | typedef struct poly16x8x4_t | |
492 | { | |
493 | poly16x8_t val[4]; | |
494 | } poly16x8x4_t; | |
495 | ||
2d67c34c | 496 | /* __aarch64_vdup_lane internal macros. */ |
12e851f9 | 497 | #define __aarch64_vdup_lane_any(__size, __q, __a, __b) \ |
498 | vdup##__q##_n_##__size (__aarch64_vget_lane_any (__a, __b)) | |
2d67c34c | 499 | |
7d8a6c0e | 500 | #define __aarch64_vdup_lane_f16(__a, __b) \ |
501 | __aarch64_vdup_lane_any (f16, , __a, __b) | |
2d67c34c | 502 | #define __aarch64_vdup_lane_f32(__a, __b) \ |
12e851f9 | 503 | __aarch64_vdup_lane_any (f32, , __a, __b) |
ac292ff5 | 504 | #define __aarch64_vdup_lane_f64(__a, __b) \ |
12e851f9 | 505 | __aarch64_vdup_lane_any (f64, , __a, __b) |
2d67c34c | 506 | #define __aarch64_vdup_lane_p8(__a, __b) \ |
12e851f9 | 507 | __aarch64_vdup_lane_any (p8, , __a, __b) |
2d67c34c | 508 | #define __aarch64_vdup_lane_p16(__a, __b) \ |
12e851f9 | 509 | __aarch64_vdup_lane_any (p16, , __a, __b) |
d4f47414 | 510 | #define __aarch64_vdup_lane_p64(__a, __b) \ |
511 | __aarch64_vdup_lane_any (p64, , __a, __b) | |
2d67c34c | 512 | #define __aarch64_vdup_lane_s8(__a, __b) \ |
12e851f9 | 513 | __aarch64_vdup_lane_any (s8, , __a, __b) |
2d67c34c | 514 | #define __aarch64_vdup_lane_s16(__a, __b) \ |
12e851f9 | 515 | __aarch64_vdup_lane_any (s16, , __a, __b) |
2d67c34c | 516 | #define __aarch64_vdup_lane_s32(__a, __b) \ |
12e851f9 | 517 | __aarch64_vdup_lane_any (s32, , __a, __b) |
12fc7207 | 518 | #define __aarch64_vdup_lane_s64(__a, __b) \ |
12e851f9 | 519 | __aarch64_vdup_lane_any (s64, , __a, __b) |
2d67c34c | 520 | #define __aarch64_vdup_lane_u8(__a, __b) \ |
12e851f9 | 521 | __aarch64_vdup_lane_any (u8, , __a, __b) |
2d67c34c | 522 | #define __aarch64_vdup_lane_u16(__a, __b) \ |
12e851f9 | 523 | __aarch64_vdup_lane_any (u16, , __a, __b) |
2d67c34c | 524 | #define __aarch64_vdup_lane_u32(__a, __b) \ |
12e851f9 | 525 | __aarch64_vdup_lane_any (u32, , __a, __b) |
12fc7207 | 526 | #define __aarch64_vdup_lane_u64(__a, __b) \ |
12e851f9 | 527 | __aarch64_vdup_lane_any (u64, , __a, __b) |
2d67c34c | 528 | |
529 | /* __aarch64_vdup_laneq internal macros. */ | |
7d8a6c0e | 530 | #define __aarch64_vdup_laneq_f16(__a, __b) \ |
531 | __aarch64_vdup_lane_any (f16, , __a, __b) | |
2d67c34c | 532 | #define __aarch64_vdup_laneq_f32(__a, __b) \ |
12e851f9 | 533 | __aarch64_vdup_lane_any (f32, , __a, __b) |
2d67c34c | 534 | #define __aarch64_vdup_laneq_f64(__a, __b) \ |
12e851f9 | 535 | __aarch64_vdup_lane_any (f64, , __a, __b) |
2d67c34c | 536 | #define __aarch64_vdup_laneq_p8(__a, __b) \ |
12e851f9 | 537 | __aarch64_vdup_lane_any (p8, , __a, __b) |
2d67c34c | 538 | #define __aarch64_vdup_laneq_p16(__a, __b) \ |
12e851f9 | 539 | __aarch64_vdup_lane_any (p16, , __a, __b) |
d4f47414 | 540 | #define __aarch64_vdup_laneq_p64(__a, __b) \ |
541 | __aarch64_vdup_lane_any (p64, , __a, __b) | |
2d67c34c | 542 | #define __aarch64_vdup_laneq_s8(__a, __b) \ |
12e851f9 | 543 | __aarch64_vdup_lane_any (s8, , __a, __b) |
2d67c34c | 544 | #define __aarch64_vdup_laneq_s16(__a, __b) \ |
12e851f9 | 545 | __aarch64_vdup_lane_any (s16, , __a, __b) |
2d67c34c | 546 | #define __aarch64_vdup_laneq_s32(__a, __b) \ |
12e851f9 | 547 | __aarch64_vdup_lane_any (s32, , __a, __b) |
2d67c34c | 548 | #define __aarch64_vdup_laneq_s64(__a, __b) \ |
12e851f9 | 549 | __aarch64_vdup_lane_any (s64, , __a, __b) |
2d67c34c | 550 | #define __aarch64_vdup_laneq_u8(__a, __b) \ |
12e851f9 | 551 | __aarch64_vdup_lane_any (u8, , __a, __b) |
2d67c34c | 552 | #define __aarch64_vdup_laneq_u16(__a, __b) \ |
12e851f9 | 553 | __aarch64_vdup_lane_any (u16, , __a, __b) |
2d67c34c | 554 | #define __aarch64_vdup_laneq_u32(__a, __b) \ |
12e851f9 | 555 | __aarch64_vdup_lane_any (u32, , __a, __b) |
2d67c34c | 556 | #define __aarch64_vdup_laneq_u64(__a, __b) \ |
12e851f9 | 557 | __aarch64_vdup_lane_any (u64, , __a, __b) |
2d67c34c | 558 | |
559 | /* __aarch64_vdupq_lane internal macros. */ | |
7d8a6c0e | 560 | #define __aarch64_vdupq_lane_f16(__a, __b) \ |
561 | __aarch64_vdup_lane_any (f16, q, __a, __b) | |
2d67c34c | 562 | #define __aarch64_vdupq_lane_f32(__a, __b) \ |
12e851f9 | 563 | __aarch64_vdup_lane_any (f32, q, __a, __b) |
ac292ff5 | 564 | #define __aarch64_vdupq_lane_f64(__a, __b) \ |
12e851f9 | 565 | __aarch64_vdup_lane_any (f64, q, __a, __b) |
2d67c34c | 566 | #define __aarch64_vdupq_lane_p8(__a, __b) \ |
12e851f9 | 567 | __aarch64_vdup_lane_any (p8, q, __a, __b) |
2d67c34c | 568 | #define __aarch64_vdupq_lane_p16(__a, __b) \ |
12e851f9 | 569 | __aarch64_vdup_lane_any (p16, q, __a, __b) |
d4f47414 | 570 | #define __aarch64_vdupq_lane_p64(__a, __b) \ |
571 | __aarch64_vdup_lane_any (p64, q, __a, __b) | |
2d67c34c | 572 | #define __aarch64_vdupq_lane_s8(__a, __b) \ |
12e851f9 | 573 | __aarch64_vdup_lane_any (s8, q, __a, __b) |
2d67c34c | 574 | #define __aarch64_vdupq_lane_s16(__a, __b) \ |
12e851f9 | 575 | __aarch64_vdup_lane_any (s16, q, __a, __b) |
2d67c34c | 576 | #define __aarch64_vdupq_lane_s32(__a, __b) \ |
12e851f9 | 577 | __aarch64_vdup_lane_any (s32, q, __a, __b) |
12fc7207 | 578 | #define __aarch64_vdupq_lane_s64(__a, __b) \ |
12e851f9 | 579 | __aarch64_vdup_lane_any (s64, q, __a, __b) |
2d67c34c | 580 | #define __aarch64_vdupq_lane_u8(__a, __b) \ |
12e851f9 | 581 | __aarch64_vdup_lane_any (u8, q, __a, __b) |
2d67c34c | 582 | #define __aarch64_vdupq_lane_u16(__a, __b) \ |
12e851f9 | 583 | __aarch64_vdup_lane_any (u16, q, __a, __b) |
2d67c34c | 584 | #define __aarch64_vdupq_lane_u32(__a, __b) \ |
12e851f9 | 585 | __aarch64_vdup_lane_any (u32, q, __a, __b) |
12fc7207 | 586 | #define __aarch64_vdupq_lane_u64(__a, __b) \ |
12e851f9 | 587 | __aarch64_vdup_lane_any (u64, q, __a, __b) |
2d67c34c | 588 | |
589 | /* __aarch64_vdupq_laneq internal macros. */ | |
7d8a6c0e | 590 | #define __aarch64_vdupq_laneq_f16(__a, __b) \ |
591 | __aarch64_vdup_lane_any (f16, q, __a, __b) | |
2d67c34c | 592 | #define __aarch64_vdupq_laneq_f32(__a, __b) \ |
12e851f9 | 593 | __aarch64_vdup_lane_any (f32, q, __a, __b) |
2d67c34c | 594 | #define __aarch64_vdupq_laneq_f64(__a, __b) \ |
12e851f9 | 595 | __aarch64_vdup_lane_any (f64, q, __a, __b) |
2d67c34c | 596 | #define __aarch64_vdupq_laneq_p8(__a, __b) \ |
12e851f9 | 597 | __aarch64_vdup_lane_any (p8, q, __a, __b) |
2d67c34c | 598 | #define __aarch64_vdupq_laneq_p16(__a, __b) \ |
12e851f9 | 599 | __aarch64_vdup_lane_any (p16, q, __a, __b) |
d4f47414 | 600 | #define __aarch64_vdupq_laneq_p64(__a, __b) \ |
601 | __aarch64_vdup_lane_any (p64, q, __a, __b) | |
2d67c34c | 602 | #define __aarch64_vdupq_laneq_s8(__a, __b) \ |
12e851f9 | 603 | __aarch64_vdup_lane_any (s8, q, __a, __b) |
2d67c34c | 604 | #define __aarch64_vdupq_laneq_s16(__a, __b) \ |
12e851f9 | 605 | __aarch64_vdup_lane_any (s16, q, __a, __b) |
2d67c34c | 606 | #define __aarch64_vdupq_laneq_s32(__a, __b) \ |
12e851f9 | 607 | __aarch64_vdup_lane_any (s32, q, __a, __b) |
2d67c34c | 608 | #define __aarch64_vdupq_laneq_s64(__a, __b) \ |
12e851f9 | 609 | __aarch64_vdup_lane_any (s64, q, __a, __b) |
2d67c34c | 610 | #define __aarch64_vdupq_laneq_u8(__a, __b) \ |
12e851f9 | 611 | __aarch64_vdup_lane_any (u8, q, __a, __b) |
2d67c34c | 612 | #define __aarch64_vdupq_laneq_u16(__a, __b) \ |
12e851f9 | 613 | __aarch64_vdup_lane_any (u16, q, __a, __b) |
2d67c34c | 614 | #define __aarch64_vdupq_laneq_u32(__a, __b) \ |
12e851f9 | 615 | __aarch64_vdup_lane_any (u32, q, __a, __b) |
2d67c34c | 616 | #define __aarch64_vdupq_laneq_u64(__a, __b) \ |
12e851f9 | 617 | __aarch64_vdup_lane_any (u64, q, __a, __b) |
2d67c34c | 618 | |
96ddcbba | 619 | /* Internal macro for lane indices. */ |
620 | ||
621 | #define __AARCH64_NUM_LANES(__v) (sizeof (__v) / sizeof (__v[0])) | |
e5827b9c | 622 | #define __AARCH64_LANE_CHECK(__vec, __idx) \ |
1b59d1a1 | 623 | __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __idx) |
544c03e7 | 624 | |
544c03e7 | 625 | /* For big-endian, GCC's vector indices are the opposite way around |
626 | to the architectural lane indices used by Neon intrinsics. */ | |
96ddcbba | 627 | #ifdef __AARCH64EB__ |
628 | #define __aarch64_lane(__vec, __idx) (__AARCH64_NUM_LANES (__vec) - 1 - __idx) | |
544c03e7 | 629 | #else |
96ddcbba | 630 | #define __aarch64_lane(__vec, __idx) __idx |
544c03e7 | 631 | #endif |
632 | ||
12e851f9 | 633 | /* vget_lane internal macro. */ |
634 | #define __aarch64_vget_lane_any(__vec, __index) \ | |
635 | __extension__ \ | |
636 | ({ \ | |
637 | __AARCH64_LANE_CHECK (__vec, __index); \ | |
638 | __vec[__aarch64_lane (__vec, __index)]; \ | |
639 | }) | |
544c03e7 | 640 | |
12e851f9 | 641 | /* vset_lane and vld1_lane internal macro. */ |
96ddcbba | 642 | #define __aarch64_vset_lane_any(__elem, __vec, __index) \ |
643 | __extension__ \ | |
644 | ({ \ | |
e5827b9c | 645 | __AARCH64_LANE_CHECK (__vec, __index); \ |
96ddcbba | 646 | __vec[__aarch64_lane (__vec, __index)] = __elem; \ |
647 | __vec; \ | |
648 | }) | |
544c03e7 | 649 | |
5e7bd7ac | 650 | /* vadd */ |
49ab9992 | 651 | __extension__ extern __inline int8x8_t |
652 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 653 | vadd_s8 (int8x8_t __a, int8x8_t __b) |
654 | { | |
655 | return __a + __b; | |
656 | } | |
657 | ||
49ab9992 | 658 | __extension__ extern __inline int16x4_t |
659 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 660 | vadd_s16 (int16x4_t __a, int16x4_t __b) |
661 | { | |
662 | return __a + __b; | |
663 | } | |
664 | ||
49ab9992 | 665 | __extension__ extern __inline int32x2_t |
666 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 667 | vadd_s32 (int32x2_t __a, int32x2_t __b) |
668 | { | |
669 | return __a + __b; | |
670 | } | |
671 | ||
49ab9992 | 672 | __extension__ extern __inline float32x2_t |
673 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 674 | vadd_f32 (float32x2_t __a, float32x2_t __b) |
675 | { | |
676 | return __a + __b; | |
677 | } | |
678 | ||
49ab9992 | 679 | __extension__ extern __inline float64x1_t |
680 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
94637ba9 | 681 | vadd_f64 (float64x1_t __a, float64x1_t __b) |
682 | { | |
683 | return __a + __b; | |
684 | } | |
685 | ||
49ab9992 | 686 | __extension__ extern __inline uint8x8_t |
687 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 688 | vadd_u8 (uint8x8_t __a, uint8x8_t __b) |
689 | { | |
690 | return __a + __b; | |
691 | } | |
692 | ||
49ab9992 | 693 | __extension__ extern __inline uint16x4_t |
694 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 695 | vadd_u16 (uint16x4_t __a, uint16x4_t __b) |
696 | { | |
697 | return __a + __b; | |
698 | } | |
699 | ||
49ab9992 | 700 | __extension__ extern __inline uint32x2_t |
701 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 702 | vadd_u32 (uint32x2_t __a, uint32x2_t __b) |
703 | { | |
704 | return __a + __b; | |
705 | } | |
706 | ||
49ab9992 | 707 | __extension__ extern __inline int64x1_t |
708 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 709 | vadd_s64 (int64x1_t __a, int64x1_t __b) |
710 | { | |
711 | return __a + __b; | |
712 | } | |
713 | ||
49ab9992 | 714 | __extension__ extern __inline uint64x1_t |
715 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 716 | vadd_u64 (uint64x1_t __a, uint64x1_t __b) |
717 | { | |
718 | return __a + __b; | |
719 | } | |
720 | ||
49ab9992 | 721 | __extension__ extern __inline int8x16_t |
722 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 723 | vaddq_s8 (int8x16_t __a, int8x16_t __b) |
724 | { | |
725 | return __a + __b; | |
726 | } | |
727 | ||
49ab9992 | 728 | __extension__ extern __inline int16x8_t |
729 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 730 | vaddq_s16 (int16x8_t __a, int16x8_t __b) |
731 | { | |
732 | return __a + __b; | |
733 | } | |
734 | ||
49ab9992 | 735 | __extension__ extern __inline int32x4_t |
736 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 737 | vaddq_s32 (int32x4_t __a, int32x4_t __b) |
738 | { | |
739 | return __a + __b; | |
740 | } | |
741 | ||
49ab9992 | 742 | __extension__ extern __inline int64x2_t |
743 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 744 | vaddq_s64 (int64x2_t __a, int64x2_t __b) |
745 | { | |
746 | return __a + __b; | |
747 | } | |
748 | ||
49ab9992 | 749 | __extension__ extern __inline float32x4_t |
750 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 751 | vaddq_f32 (float32x4_t __a, float32x4_t __b) |
752 | { | |
753 | return __a + __b; | |
754 | } | |
755 | ||
49ab9992 | 756 | __extension__ extern __inline float64x2_t |
757 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 758 | vaddq_f64 (float64x2_t __a, float64x2_t __b) |
759 | { | |
760 | return __a + __b; | |
761 | } | |
762 | ||
49ab9992 | 763 | __extension__ extern __inline uint8x16_t |
764 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 765 | vaddq_u8 (uint8x16_t __a, uint8x16_t __b) |
766 | { | |
767 | return __a + __b; | |
768 | } | |
769 | ||
49ab9992 | 770 | __extension__ extern __inline uint16x8_t |
771 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 772 | vaddq_u16 (uint16x8_t __a, uint16x8_t __b) |
773 | { | |
774 | return __a + __b; | |
775 | } | |
776 | ||
49ab9992 | 777 | __extension__ extern __inline uint32x4_t |
778 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 779 | vaddq_u32 (uint32x4_t __a, uint32x4_t __b) |
780 | { | |
781 | return __a + __b; | |
782 | } | |
783 | ||
49ab9992 | 784 | __extension__ extern __inline uint64x2_t |
785 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 786 | vaddq_u64 (uint64x2_t __a, uint64x2_t __b) |
787 | { | |
788 | return __a + __b; | |
789 | } | |
790 | ||
49ab9992 | 791 | __extension__ extern __inline int16x8_t |
792 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 793 | vaddl_s8 (int8x8_t __a, int8x8_t __b) |
794 | { | |
795 | return (int16x8_t) __builtin_aarch64_saddlv8qi (__a, __b); | |
796 | } | |
797 | ||
49ab9992 | 798 | __extension__ extern __inline int32x4_t |
799 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 800 | vaddl_s16 (int16x4_t __a, int16x4_t __b) |
801 | { | |
802 | return (int32x4_t) __builtin_aarch64_saddlv4hi (__a, __b); | |
803 | } | |
804 | ||
49ab9992 | 805 | __extension__ extern __inline int64x2_t |
806 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 807 | vaddl_s32 (int32x2_t __a, int32x2_t __b) |
808 | { | |
809 | return (int64x2_t) __builtin_aarch64_saddlv2si (__a, __b); | |
810 | } | |
811 | ||
49ab9992 | 812 | __extension__ extern __inline uint16x8_t |
813 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 814 | vaddl_u8 (uint8x8_t __a, uint8x8_t __b) |
815 | { | |
816 | return (uint16x8_t) __builtin_aarch64_uaddlv8qi ((int8x8_t) __a, | |
817 | (int8x8_t) __b); | |
818 | } | |
819 | ||
49ab9992 | 820 | __extension__ extern __inline uint32x4_t |
821 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 822 | vaddl_u16 (uint16x4_t __a, uint16x4_t __b) |
823 | { | |
824 | return (uint32x4_t) __builtin_aarch64_uaddlv4hi ((int16x4_t) __a, | |
825 | (int16x4_t) __b); | |
826 | } | |
827 | ||
49ab9992 | 828 | __extension__ extern __inline uint64x2_t |
829 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 830 | vaddl_u32 (uint32x2_t __a, uint32x2_t __b) |
831 | { | |
832 | return (uint64x2_t) __builtin_aarch64_uaddlv2si ((int32x2_t) __a, | |
833 | (int32x2_t) __b); | |
834 | } | |
835 | ||
49ab9992 | 836 | __extension__ extern __inline int16x8_t |
837 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 838 | vaddl_high_s8 (int8x16_t __a, int8x16_t __b) |
839 | { | |
840 | return (int16x8_t) __builtin_aarch64_saddl2v16qi (__a, __b); | |
841 | } | |
842 | ||
49ab9992 | 843 | __extension__ extern __inline int32x4_t |
844 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 845 | vaddl_high_s16 (int16x8_t __a, int16x8_t __b) |
846 | { | |
847 | return (int32x4_t) __builtin_aarch64_saddl2v8hi (__a, __b); | |
848 | } | |
849 | ||
49ab9992 | 850 | __extension__ extern __inline int64x2_t |
851 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 852 | vaddl_high_s32 (int32x4_t __a, int32x4_t __b) |
853 | { | |
854 | return (int64x2_t) __builtin_aarch64_saddl2v4si (__a, __b); | |
855 | } | |
856 | ||
49ab9992 | 857 | __extension__ extern __inline uint16x8_t |
858 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 859 | vaddl_high_u8 (uint8x16_t __a, uint8x16_t __b) |
860 | { | |
861 | return (uint16x8_t) __builtin_aarch64_uaddl2v16qi ((int8x16_t) __a, | |
862 | (int8x16_t) __b); | |
863 | } | |
864 | ||
49ab9992 | 865 | __extension__ extern __inline uint32x4_t |
866 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 867 | vaddl_high_u16 (uint16x8_t __a, uint16x8_t __b) |
868 | { | |
869 | return (uint32x4_t) __builtin_aarch64_uaddl2v8hi ((int16x8_t) __a, | |
870 | (int16x8_t) __b); | |
871 | } | |
872 | ||
49ab9992 | 873 | __extension__ extern __inline uint64x2_t |
874 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 875 | vaddl_high_u32 (uint32x4_t __a, uint32x4_t __b) |
876 | { | |
877 | return (uint64x2_t) __builtin_aarch64_uaddl2v4si ((int32x4_t) __a, | |
878 | (int32x4_t) __b); | |
879 | } | |
880 | ||
49ab9992 | 881 | __extension__ extern __inline int16x8_t |
882 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 883 | vaddw_s8 (int16x8_t __a, int8x8_t __b) |
884 | { | |
885 | return (int16x8_t) __builtin_aarch64_saddwv8qi (__a, __b); | |
886 | } | |
887 | ||
49ab9992 | 888 | __extension__ extern __inline int32x4_t |
889 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 890 | vaddw_s16 (int32x4_t __a, int16x4_t __b) |
891 | { | |
892 | return (int32x4_t) __builtin_aarch64_saddwv4hi (__a, __b); | |
893 | } | |
894 | ||
49ab9992 | 895 | __extension__ extern __inline int64x2_t |
896 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 897 | vaddw_s32 (int64x2_t __a, int32x2_t __b) |
898 | { | |
899 | return (int64x2_t) __builtin_aarch64_saddwv2si (__a, __b); | |
900 | } | |
901 | ||
49ab9992 | 902 | __extension__ extern __inline uint16x8_t |
903 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 904 | vaddw_u8 (uint16x8_t __a, uint8x8_t __b) |
905 | { | |
906 | return (uint16x8_t) __builtin_aarch64_uaddwv8qi ((int16x8_t) __a, | |
907 | (int8x8_t) __b); | |
908 | } | |
909 | ||
49ab9992 | 910 | __extension__ extern __inline uint32x4_t |
911 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 912 | vaddw_u16 (uint32x4_t __a, uint16x4_t __b) |
913 | { | |
914 | return (uint32x4_t) __builtin_aarch64_uaddwv4hi ((int32x4_t) __a, | |
915 | (int16x4_t) __b); | |
916 | } | |
917 | ||
49ab9992 | 918 | __extension__ extern __inline uint64x2_t |
919 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 920 | vaddw_u32 (uint64x2_t __a, uint32x2_t __b) |
921 | { | |
922 | return (uint64x2_t) __builtin_aarch64_uaddwv2si ((int64x2_t) __a, | |
923 | (int32x2_t) __b); | |
924 | } | |
925 | ||
49ab9992 | 926 | __extension__ extern __inline int16x8_t |
927 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 928 | vaddw_high_s8 (int16x8_t __a, int8x16_t __b) |
929 | { | |
930 | return (int16x8_t) __builtin_aarch64_saddw2v16qi (__a, __b); | |
931 | } | |
932 | ||
49ab9992 | 933 | __extension__ extern __inline int32x4_t |
934 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 935 | vaddw_high_s16 (int32x4_t __a, int16x8_t __b) |
936 | { | |
937 | return (int32x4_t) __builtin_aarch64_saddw2v8hi (__a, __b); | |
938 | } | |
939 | ||
49ab9992 | 940 | __extension__ extern __inline int64x2_t |
941 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 942 | vaddw_high_s32 (int64x2_t __a, int32x4_t __b) |
943 | { | |
944 | return (int64x2_t) __builtin_aarch64_saddw2v4si (__a, __b); | |
945 | } | |
946 | ||
49ab9992 | 947 | __extension__ extern __inline uint16x8_t |
948 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 949 | vaddw_high_u8 (uint16x8_t __a, uint8x16_t __b) |
950 | { | |
951 | return (uint16x8_t) __builtin_aarch64_uaddw2v16qi ((int16x8_t) __a, | |
952 | (int8x16_t) __b); | |
953 | } | |
954 | ||
49ab9992 | 955 | __extension__ extern __inline uint32x4_t |
956 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 957 | vaddw_high_u16 (uint32x4_t __a, uint16x8_t __b) |
958 | { | |
959 | return (uint32x4_t) __builtin_aarch64_uaddw2v8hi ((int32x4_t) __a, | |
960 | (int16x8_t) __b); | |
961 | } | |
962 | ||
49ab9992 | 963 | __extension__ extern __inline uint64x2_t |
964 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 965 | vaddw_high_u32 (uint64x2_t __a, uint32x4_t __b) |
966 | { | |
967 | return (uint64x2_t) __builtin_aarch64_uaddw2v4si ((int64x2_t) __a, | |
968 | (int32x4_t) __b); | |
969 | } | |
970 | ||
49ab9992 | 971 | __extension__ extern __inline int8x8_t |
972 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 973 | vhadd_s8 (int8x8_t __a, int8x8_t __b) |
974 | { | |
975 | return (int8x8_t) __builtin_aarch64_shaddv8qi (__a, __b); | |
976 | } | |
977 | ||
49ab9992 | 978 | __extension__ extern __inline int16x4_t |
979 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 980 | vhadd_s16 (int16x4_t __a, int16x4_t __b) |
981 | { | |
982 | return (int16x4_t) __builtin_aarch64_shaddv4hi (__a, __b); | |
983 | } | |
984 | ||
49ab9992 | 985 | __extension__ extern __inline int32x2_t |
986 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 987 | vhadd_s32 (int32x2_t __a, int32x2_t __b) |
988 | { | |
989 | return (int32x2_t) __builtin_aarch64_shaddv2si (__a, __b); | |
990 | } | |
991 | ||
49ab9992 | 992 | __extension__ extern __inline uint8x8_t |
993 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 994 | vhadd_u8 (uint8x8_t __a, uint8x8_t __b) |
995 | { | |
996 | return (uint8x8_t) __builtin_aarch64_uhaddv8qi ((int8x8_t) __a, | |
997 | (int8x8_t) __b); | |
998 | } | |
999 | ||
49ab9992 | 1000 | __extension__ extern __inline uint16x4_t |
1001 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1002 | vhadd_u16 (uint16x4_t __a, uint16x4_t __b) |
1003 | { | |
1004 | return (uint16x4_t) __builtin_aarch64_uhaddv4hi ((int16x4_t) __a, | |
1005 | (int16x4_t) __b); | |
1006 | } | |
1007 | ||
49ab9992 | 1008 | __extension__ extern __inline uint32x2_t |
1009 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1010 | vhadd_u32 (uint32x2_t __a, uint32x2_t __b) |
1011 | { | |
1012 | return (uint32x2_t) __builtin_aarch64_uhaddv2si ((int32x2_t) __a, | |
1013 | (int32x2_t) __b); | |
1014 | } | |
1015 | ||
49ab9992 | 1016 | __extension__ extern __inline int8x16_t |
1017 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1018 | vhaddq_s8 (int8x16_t __a, int8x16_t __b) |
1019 | { | |
1020 | return (int8x16_t) __builtin_aarch64_shaddv16qi (__a, __b); | |
1021 | } | |
1022 | ||
49ab9992 | 1023 | __extension__ extern __inline int16x8_t |
1024 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1025 | vhaddq_s16 (int16x8_t __a, int16x8_t __b) |
1026 | { | |
1027 | return (int16x8_t) __builtin_aarch64_shaddv8hi (__a, __b); | |
1028 | } | |
1029 | ||
49ab9992 | 1030 | __extension__ extern __inline int32x4_t |
1031 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1032 | vhaddq_s32 (int32x4_t __a, int32x4_t __b) |
1033 | { | |
1034 | return (int32x4_t) __builtin_aarch64_shaddv4si (__a, __b); | |
1035 | } | |
1036 | ||
49ab9992 | 1037 | __extension__ extern __inline uint8x16_t |
1038 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1039 | vhaddq_u8 (uint8x16_t __a, uint8x16_t __b) |
1040 | { | |
1041 | return (uint8x16_t) __builtin_aarch64_uhaddv16qi ((int8x16_t) __a, | |
1042 | (int8x16_t) __b); | |
1043 | } | |
1044 | ||
49ab9992 | 1045 | __extension__ extern __inline uint16x8_t |
1046 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1047 | vhaddq_u16 (uint16x8_t __a, uint16x8_t __b) |
1048 | { | |
1049 | return (uint16x8_t) __builtin_aarch64_uhaddv8hi ((int16x8_t) __a, | |
1050 | (int16x8_t) __b); | |
1051 | } | |
1052 | ||
49ab9992 | 1053 | __extension__ extern __inline uint32x4_t |
1054 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1055 | vhaddq_u32 (uint32x4_t __a, uint32x4_t __b) |
1056 | { | |
1057 | return (uint32x4_t) __builtin_aarch64_uhaddv4si ((int32x4_t) __a, | |
1058 | (int32x4_t) __b); | |
1059 | } | |
1060 | ||
49ab9992 | 1061 | __extension__ extern __inline int8x8_t |
1062 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1063 | vrhadd_s8 (int8x8_t __a, int8x8_t __b) |
1064 | { | |
1065 | return (int8x8_t) __builtin_aarch64_srhaddv8qi (__a, __b); | |
1066 | } | |
1067 | ||
49ab9992 | 1068 | __extension__ extern __inline int16x4_t |
1069 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1070 | vrhadd_s16 (int16x4_t __a, int16x4_t __b) |
1071 | { | |
1072 | return (int16x4_t) __builtin_aarch64_srhaddv4hi (__a, __b); | |
1073 | } | |
1074 | ||
49ab9992 | 1075 | __extension__ extern __inline int32x2_t |
1076 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1077 | vrhadd_s32 (int32x2_t __a, int32x2_t __b) |
1078 | { | |
1079 | return (int32x2_t) __builtin_aarch64_srhaddv2si (__a, __b); | |
1080 | } | |
1081 | ||
49ab9992 | 1082 | __extension__ extern __inline uint8x8_t |
1083 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1084 | vrhadd_u8 (uint8x8_t __a, uint8x8_t __b) |
1085 | { | |
1086 | return (uint8x8_t) __builtin_aarch64_urhaddv8qi ((int8x8_t) __a, | |
1087 | (int8x8_t) __b); | |
1088 | } | |
1089 | ||
49ab9992 | 1090 | __extension__ extern __inline uint16x4_t |
1091 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1092 | vrhadd_u16 (uint16x4_t __a, uint16x4_t __b) |
1093 | { | |
1094 | return (uint16x4_t) __builtin_aarch64_urhaddv4hi ((int16x4_t) __a, | |
1095 | (int16x4_t) __b); | |
1096 | } | |
1097 | ||
49ab9992 | 1098 | __extension__ extern __inline uint32x2_t |
1099 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1100 | vrhadd_u32 (uint32x2_t __a, uint32x2_t __b) |
1101 | { | |
1102 | return (uint32x2_t) __builtin_aarch64_urhaddv2si ((int32x2_t) __a, | |
1103 | (int32x2_t) __b); | |
1104 | } | |
1105 | ||
49ab9992 | 1106 | __extension__ extern __inline int8x16_t |
1107 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1108 | vrhaddq_s8 (int8x16_t __a, int8x16_t __b) |
1109 | { | |
1110 | return (int8x16_t) __builtin_aarch64_srhaddv16qi (__a, __b); | |
1111 | } | |
1112 | ||
49ab9992 | 1113 | __extension__ extern __inline int16x8_t |
1114 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1115 | vrhaddq_s16 (int16x8_t __a, int16x8_t __b) |
1116 | { | |
1117 | return (int16x8_t) __builtin_aarch64_srhaddv8hi (__a, __b); | |
1118 | } | |
1119 | ||
49ab9992 | 1120 | __extension__ extern __inline int32x4_t |
1121 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1122 | vrhaddq_s32 (int32x4_t __a, int32x4_t __b) |
1123 | { | |
1124 | return (int32x4_t) __builtin_aarch64_srhaddv4si (__a, __b); | |
1125 | } | |
1126 | ||
49ab9992 | 1127 | __extension__ extern __inline uint8x16_t |
1128 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1129 | vrhaddq_u8 (uint8x16_t __a, uint8x16_t __b) |
1130 | { | |
1131 | return (uint8x16_t) __builtin_aarch64_urhaddv16qi ((int8x16_t) __a, | |
1132 | (int8x16_t) __b); | |
1133 | } | |
1134 | ||
49ab9992 | 1135 | __extension__ extern __inline uint16x8_t |
1136 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1137 | vrhaddq_u16 (uint16x8_t __a, uint16x8_t __b) |
1138 | { | |
1139 | return (uint16x8_t) __builtin_aarch64_urhaddv8hi ((int16x8_t) __a, | |
1140 | (int16x8_t) __b); | |
1141 | } | |
1142 | ||
49ab9992 | 1143 | __extension__ extern __inline uint32x4_t |
1144 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1145 | vrhaddq_u32 (uint32x4_t __a, uint32x4_t __b) |
1146 | { | |
1147 | return (uint32x4_t) __builtin_aarch64_urhaddv4si ((int32x4_t) __a, | |
1148 | (int32x4_t) __b); | |
1149 | } | |
1150 | ||
49ab9992 | 1151 | __extension__ extern __inline int8x8_t |
1152 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1153 | vaddhn_s16 (int16x8_t __a, int16x8_t __b) |
1154 | { | |
1155 | return (int8x8_t) __builtin_aarch64_addhnv8hi (__a, __b); | |
1156 | } | |
1157 | ||
49ab9992 | 1158 | __extension__ extern __inline int16x4_t |
1159 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1160 | vaddhn_s32 (int32x4_t __a, int32x4_t __b) |
1161 | { | |
1162 | return (int16x4_t) __builtin_aarch64_addhnv4si (__a, __b); | |
1163 | } | |
1164 | ||
49ab9992 | 1165 | __extension__ extern __inline int32x2_t |
1166 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1167 | vaddhn_s64 (int64x2_t __a, int64x2_t __b) |
1168 | { | |
1169 | return (int32x2_t) __builtin_aarch64_addhnv2di (__a, __b); | |
1170 | } | |
1171 | ||
49ab9992 | 1172 | __extension__ extern __inline uint8x8_t |
1173 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1174 | vaddhn_u16 (uint16x8_t __a, uint16x8_t __b) |
1175 | { | |
1176 | return (uint8x8_t) __builtin_aarch64_addhnv8hi ((int16x8_t) __a, | |
1177 | (int16x8_t) __b); | |
1178 | } | |
1179 | ||
49ab9992 | 1180 | __extension__ extern __inline uint16x4_t |
1181 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1182 | vaddhn_u32 (uint32x4_t __a, uint32x4_t __b) |
1183 | { | |
1184 | return (uint16x4_t) __builtin_aarch64_addhnv4si ((int32x4_t) __a, | |
1185 | (int32x4_t) __b); | |
1186 | } | |
1187 | ||
49ab9992 | 1188 | __extension__ extern __inline uint32x2_t |
1189 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1190 | vaddhn_u64 (uint64x2_t __a, uint64x2_t __b) |
1191 | { | |
1192 | return (uint32x2_t) __builtin_aarch64_addhnv2di ((int64x2_t) __a, | |
1193 | (int64x2_t) __b); | |
1194 | } | |
1195 | ||
49ab9992 | 1196 | __extension__ extern __inline int8x8_t |
1197 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1198 | vraddhn_s16 (int16x8_t __a, int16x8_t __b) |
1199 | { | |
1200 | return (int8x8_t) __builtin_aarch64_raddhnv8hi (__a, __b); | |
1201 | } | |
1202 | ||
49ab9992 | 1203 | __extension__ extern __inline int16x4_t |
1204 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1205 | vraddhn_s32 (int32x4_t __a, int32x4_t __b) |
1206 | { | |
1207 | return (int16x4_t) __builtin_aarch64_raddhnv4si (__a, __b); | |
1208 | } | |
1209 | ||
49ab9992 | 1210 | __extension__ extern __inline int32x2_t |
1211 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1212 | vraddhn_s64 (int64x2_t __a, int64x2_t __b) |
1213 | { | |
1214 | return (int32x2_t) __builtin_aarch64_raddhnv2di (__a, __b); | |
1215 | } | |
1216 | ||
49ab9992 | 1217 | __extension__ extern __inline uint8x8_t |
1218 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1219 | vraddhn_u16 (uint16x8_t __a, uint16x8_t __b) |
1220 | { | |
1221 | return (uint8x8_t) __builtin_aarch64_raddhnv8hi ((int16x8_t) __a, | |
1222 | (int16x8_t) __b); | |
1223 | } | |
1224 | ||
49ab9992 | 1225 | __extension__ extern __inline uint16x4_t |
1226 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1227 | vraddhn_u32 (uint32x4_t __a, uint32x4_t __b) |
1228 | { | |
1229 | return (uint16x4_t) __builtin_aarch64_raddhnv4si ((int32x4_t) __a, | |
1230 | (int32x4_t) __b); | |
1231 | } | |
1232 | ||
49ab9992 | 1233 | __extension__ extern __inline uint32x2_t |
1234 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1235 | vraddhn_u64 (uint64x2_t __a, uint64x2_t __b) |
1236 | { | |
1237 | return (uint32x2_t) __builtin_aarch64_raddhnv2di ((int64x2_t) __a, | |
1238 | (int64x2_t) __b); | |
1239 | } | |
1240 | ||
49ab9992 | 1241 | __extension__ extern __inline int8x16_t |
1242 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1243 | vaddhn_high_s16 (int8x8_t __a, int16x8_t __b, int16x8_t __c) |
1244 | { | |
1245 | return (int8x16_t) __builtin_aarch64_addhn2v8hi (__a, __b, __c); | |
1246 | } | |
1247 | ||
49ab9992 | 1248 | __extension__ extern __inline int16x8_t |
1249 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1250 | vaddhn_high_s32 (int16x4_t __a, int32x4_t __b, int32x4_t __c) |
1251 | { | |
1252 | return (int16x8_t) __builtin_aarch64_addhn2v4si (__a, __b, __c); | |
1253 | } | |
1254 | ||
49ab9992 | 1255 | __extension__ extern __inline int32x4_t |
1256 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1257 | vaddhn_high_s64 (int32x2_t __a, int64x2_t __b, int64x2_t __c) |
1258 | { | |
1259 | return (int32x4_t) __builtin_aarch64_addhn2v2di (__a, __b, __c); | |
1260 | } | |
1261 | ||
49ab9992 | 1262 | __extension__ extern __inline uint8x16_t |
1263 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1264 | vaddhn_high_u16 (uint8x8_t __a, uint16x8_t __b, uint16x8_t __c) |
1265 | { | |
1266 | return (uint8x16_t) __builtin_aarch64_addhn2v8hi ((int8x8_t) __a, | |
1267 | (int16x8_t) __b, | |
1268 | (int16x8_t) __c); | |
1269 | } | |
1270 | ||
49ab9992 | 1271 | __extension__ extern __inline uint16x8_t |
1272 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1273 | vaddhn_high_u32 (uint16x4_t __a, uint32x4_t __b, uint32x4_t __c) |
1274 | { | |
1275 | return (uint16x8_t) __builtin_aarch64_addhn2v4si ((int16x4_t) __a, | |
1276 | (int32x4_t) __b, | |
1277 | (int32x4_t) __c); | |
1278 | } | |
1279 | ||
49ab9992 | 1280 | __extension__ extern __inline uint32x4_t |
1281 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1282 | vaddhn_high_u64 (uint32x2_t __a, uint64x2_t __b, uint64x2_t __c) |
1283 | { | |
1284 | return (uint32x4_t) __builtin_aarch64_addhn2v2di ((int32x2_t) __a, | |
1285 | (int64x2_t) __b, | |
1286 | (int64x2_t) __c); | |
1287 | } | |
1288 | ||
49ab9992 | 1289 | __extension__ extern __inline int8x16_t |
1290 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1291 | vraddhn_high_s16 (int8x8_t __a, int16x8_t __b, int16x8_t __c) |
1292 | { | |
1293 | return (int8x16_t) __builtin_aarch64_raddhn2v8hi (__a, __b, __c); | |
1294 | } | |
1295 | ||
49ab9992 | 1296 | __extension__ extern __inline int16x8_t |
1297 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1298 | vraddhn_high_s32 (int16x4_t __a, int32x4_t __b, int32x4_t __c) |
1299 | { | |
1300 | return (int16x8_t) __builtin_aarch64_raddhn2v4si (__a, __b, __c); | |
1301 | } | |
1302 | ||
49ab9992 | 1303 | __extension__ extern __inline int32x4_t |
1304 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1305 | vraddhn_high_s64 (int32x2_t __a, int64x2_t __b, int64x2_t __c) |
1306 | { | |
1307 | return (int32x4_t) __builtin_aarch64_raddhn2v2di (__a, __b, __c); | |
1308 | } | |
1309 | ||
49ab9992 | 1310 | __extension__ extern __inline uint8x16_t |
1311 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1312 | vraddhn_high_u16 (uint8x8_t __a, uint16x8_t __b, uint16x8_t __c) |
1313 | { | |
1314 | return (uint8x16_t) __builtin_aarch64_raddhn2v8hi ((int8x8_t) __a, | |
1315 | (int16x8_t) __b, | |
1316 | (int16x8_t) __c); | |
1317 | } | |
1318 | ||
49ab9992 | 1319 | __extension__ extern __inline uint16x8_t |
1320 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1321 | vraddhn_high_u32 (uint16x4_t __a, uint32x4_t __b, uint32x4_t __c) |
1322 | { | |
1323 | return (uint16x8_t) __builtin_aarch64_raddhn2v4si ((int16x4_t) __a, | |
1324 | (int32x4_t) __b, | |
1325 | (int32x4_t) __c); | |
1326 | } | |
1327 | ||
49ab9992 | 1328 | __extension__ extern __inline uint32x4_t |
1329 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1330 | vraddhn_high_u64 (uint32x2_t __a, uint64x2_t __b, uint64x2_t __c) |
1331 | { | |
1332 | return (uint32x4_t) __builtin_aarch64_raddhn2v2di ((int32x2_t) __a, | |
1333 | (int64x2_t) __b, | |
1334 | (int64x2_t) __c); | |
1335 | } | |
1336 | ||
49ab9992 | 1337 | __extension__ extern __inline float32x2_t |
1338 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1339 | vdiv_f32 (float32x2_t __a, float32x2_t __b) |
1340 | { | |
1341 | return __a / __b; | |
1342 | } | |
1343 | ||
49ab9992 | 1344 | __extension__ extern __inline float64x1_t |
1345 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f095bb56 | 1346 | vdiv_f64 (float64x1_t __a, float64x1_t __b) |
1347 | { | |
1348 | return __a / __b; | |
1349 | } | |
1350 | ||
49ab9992 | 1351 | __extension__ extern __inline float32x4_t |
1352 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1353 | vdivq_f32 (float32x4_t __a, float32x4_t __b) |
1354 | { | |
1355 | return __a / __b; | |
1356 | } | |
1357 | ||
49ab9992 | 1358 | __extension__ extern __inline float64x2_t |
1359 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1360 | vdivq_f64 (float64x2_t __a, float64x2_t __b) |
1361 | { | |
1362 | return __a / __b; | |
1363 | } | |
1364 | ||
49ab9992 | 1365 | __extension__ extern __inline int8x8_t |
1366 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1367 | vmul_s8 (int8x8_t __a, int8x8_t __b) |
1368 | { | |
1369 | return __a * __b; | |
1370 | } | |
1371 | ||
49ab9992 | 1372 | __extension__ extern __inline int16x4_t |
1373 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1374 | vmul_s16 (int16x4_t __a, int16x4_t __b) |
1375 | { | |
1376 | return __a * __b; | |
1377 | } | |
1378 | ||
49ab9992 | 1379 | __extension__ extern __inline int32x2_t |
1380 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1381 | vmul_s32 (int32x2_t __a, int32x2_t __b) |
1382 | { | |
1383 | return __a * __b; | |
1384 | } | |
1385 | ||
49ab9992 | 1386 | __extension__ extern __inline float32x2_t |
1387 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1388 | vmul_f32 (float32x2_t __a, float32x2_t __b) |
1389 | { | |
1390 | return __a * __b; | |
1391 | } | |
1392 | ||
49ab9992 | 1393 | __extension__ extern __inline float64x1_t |
1394 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
1ef25b15 | 1395 | vmul_f64 (float64x1_t __a, float64x1_t __b) |
1396 | { | |
1397 | return __a * __b; | |
1398 | } | |
1399 | ||
49ab9992 | 1400 | __extension__ extern __inline uint8x8_t |
1401 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1402 | vmul_u8 (uint8x8_t __a, uint8x8_t __b) |
1403 | { | |
1404 | return __a * __b; | |
1405 | } | |
1406 | ||
49ab9992 | 1407 | __extension__ extern __inline uint16x4_t |
1408 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1409 | vmul_u16 (uint16x4_t __a, uint16x4_t __b) |
1410 | { | |
1411 | return __a * __b; | |
1412 | } | |
1413 | ||
49ab9992 | 1414 | __extension__ extern __inline uint32x2_t |
1415 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1416 | vmul_u32 (uint32x2_t __a, uint32x2_t __b) |
1417 | { | |
1418 | return __a * __b; | |
1419 | } | |
1420 | ||
49ab9992 | 1421 | __extension__ extern __inline poly8x8_t |
1422 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1423 | vmul_p8 (poly8x8_t __a, poly8x8_t __b) |
1424 | { | |
1425 | return (poly8x8_t) __builtin_aarch64_pmulv8qi ((int8x8_t) __a, | |
1426 | (int8x8_t) __b); | |
1427 | } | |
1428 | ||
49ab9992 | 1429 | __extension__ extern __inline int8x16_t |
1430 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1431 | vmulq_s8 (int8x16_t __a, int8x16_t __b) |
1432 | { | |
1433 | return __a * __b; | |
1434 | } | |
1435 | ||
49ab9992 | 1436 | __extension__ extern __inline int16x8_t |
1437 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1438 | vmulq_s16 (int16x8_t __a, int16x8_t __b) |
1439 | { | |
1440 | return __a * __b; | |
1441 | } | |
1442 | ||
49ab9992 | 1443 | __extension__ extern __inline int32x4_t |
1444 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1445 | vmulq_s32 (int32x4_t __a, int32x4_t __b) |
1446 | { | |
1447 | return __a * __b; | |
1448 | } | |
1449 | ||
49ab9992 | 1450 | __extension__ extern __inline float32x4_t |
1451 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1452 | vmulq_f32 (float32x4_t __a, float32x4_t __b) |
1453 | { | |
1454 | return __a * __b; | |
1455 | } | |
1456 | ||
49ab9992 | 1457 | __extension__ extern __inline float64x2_t |
1458 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1459 | vmulq_f64 (float64x2_t __a, float64x2_t __b) |
1460 | { | |
1461 | return __a * __b; | |
1462 | } | |
1463 | ||
49ab9992 | 1464 | __extension__ extern __inline uint8x16_t |
1465 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1466 | vmulq_u8 (uint8x16_t __a, uint8x16_t __b) |
1467 | { | |
1468 | return __a * __b; | |
1469 | } | |
1470 | ||
49ab9992 | 1471 | __extension__ extern __inline uint16x8_t |
1472 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1473 | vmulq_u16 (uint16x8_t __a, uint16x8_t __b) |
1474 | { | |
1475 | return __a * __b; | |
1476 | } | |
1477 | ||
49ab9992 | 1478 | __extension__ extern __inline uint32x4_t |
1479 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1480 | vmulq_u32 (uint32x4_t __a, uint32x4_t __b) |
1481 | { | |
1482 | return __a * __b; | |
1483 | } | |
1484 | ||
49ab9992 | 1485 | __extension__ extern __inline poly8x16_t |
1486 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1487 | vmulq_p8 (poly8x16_t __a, poly8x16_t __b) |
1488 | { | |
1489 | return (poly8x16_t) __builtin_aarch64_pmulv16qi ((int8x16_t) __a, | |
1490 | (int8x16_t) __b); | |
1491 | } | |
1492 | ||
49ab9992 | 1493 | __extension__ extern __inline int8x8_t |
1494 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1495 | vand_s8 (int8x8_t __a, int8x8_t __b) |
1496 | { | |
1497 | return __a & __b; | |
1498 | } | |
1499 | ||
49ab9992 | 1500 | __extension__ extern __inline int16x4_t |
1501 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1502 | vand_s16 (int16x4_t __a, int16x4_t __b) |
1503 | { | |
1504 | return __a & __b; | |
1505 | } | |
1506 | ||
49ab9992 | 1507 | __extension__ extern __inline int32x2_t |
1508 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1509 | vand_s32 (int32x2_t __a, int32x2_t __b) |
1510 | { | |
1511 | return __a & __b; | |
1512 | } | |
1513 | ||
49ab9992 | 1514 | __extension__ extern __inline uint8x8_t |
1515 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1516 | vand_u8 (uint8x8_t __a, uint8x8_t __b) |
1517 | { | |
1518 | return __a & __b; | |
1519 | } | |
1520 | ||
49ab9992 | 1521 | __extension__ extern __inline uint16x4_t |
1522 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1523 | vand_u16 (uint16x4_t __a, uint16x4_t __b) |
1524 | { | |
1525 | return __a & __b; | |
1526 | } | |
1527 | ||
49ab9992 | 1528 | __extension__ extern __inline uint32x2_t |
1529 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1530 | vand_u32 (uint32x2_t __a, uint32x2_t __b) |
1531 | { | |
1532 | return __a & __b; | |
1533 | } | |
1534 | ||
49ab9992 | 1535 | __extension__ extern __inline int64x1_t |
1536 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1537 | vand_s64 (int64x1_t __a, int64x1_t __b) |
1538 | { | |
1539 | return __a & __b; | |
1540 | } | |
1541 | ||
49ab9992 | 1542 | __extension__ extern __inline uint64x1_t |
1543 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1544 | vand_u64 (uint64x1_t __a, uint64x1_t __b) |
1545 | { | |
1546 | return __a & __b; | |
1547 | } | |
1548 | ||
49ab9992 | 1549 | __extension__ extern __inline int8x16_t |
1550 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1551 | vandq_s8 (int8x16_t __a, int8x16_t __b) |
1552 | { | |
1553 | return __a & __b; | |
1554 | } | |
1555 | ||
49ab9992 | 1556 | __extension__ extern __inline int16x8_t |
1557 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1558 | vandq_s16 (int16x8_t __a, int16x8_t __b) |
1559 | { | |
1560 | return __a & __b; | |
1561 | } | |
1562 | ||
49ab9992 | 1563 | __extension__ extern __inline int32x4_t |
1564 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1565 | vandq_s32 (int32x4_t __a, int32x4_t __b) |
1566 | { | |
1567 | return __a & __b; | |
1568 | } | |
1569 | ||
49ab9992 | 1570 | __extension__ extern __inline int64x2_t |
1571 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1572 | vandq_s64 (int64x2_t __a, int64x2_t __b) |
1573 | { | |
1574 | return __a & __b; | |
1575 | } | |
1576 | ||
49ab9992 | 1577 | __extension__ extern __inline uint8x16_t |
1578 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1579 | vandq_u8 (uint8x16_t __a, uint8x16_t __b) |
1580 | { | |
1581 | return __a & __b; | |
1582 | } | |
1583 | ||
49ab9992 | 1584 | __extension__ extern __inline uint16x8_t |
1585 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1586 | vandq_u16 (uint16x8_t __a, uint16x8_t __b) |
1587 | { | |
1588 | return __a & __b; | |
1589 | } | |
1590 | ||
49ab9992 | 1591 | __extension__ extern __inline uint32x4_t |
1592 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1593 | vandq_u32 (uint32x4_t __a, uint32x4_t __b) |
1594 | { | |
1595 | return __a & __b; | |
1596 | } | |
1597 | ||
49ab9992 | 1598 | __extension__ extern __inline uint64x2_t |
1599 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1600 | vandq_u64 (uint64x2_t __a, uint64x2_t __b) |
1601 | { | |
1602 | return __a & __b; | |
1603 | } | |
1604 | ||
49ab9992 | 1605 | __extension__ extern __inline int8x8_t |
1606 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1607 | vorr_s8 (int8x8_t __a, int8x8_t __b) |
1608 | { | |
1609 | return __a | __b; | |
1610 | } | |
1611 | ||
49ab9992 | 1612 | __extension__ extern __inline int16x4_t |
1613 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1614 | vorr_s16 (int16x4_t __a, int16x4_t __b) |
1615 | { | |
1616 | return __a | __b; | |
1617 | } | |
1618 | ||
49ab9992 | 1619 | __extension__ extern __inline int32x2_t |
1620 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1621 | vorr_s32 (int32x2_t __a, int32x2_t __b) |
1622 | { | |
1623 | return __a | __b; | |
1624 | } | |
1625 | ||
49ab9992 | 1626 | __extension__ extern __inline uint8x8_t |
1627 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1628 | vorr_u8 (uint8x8_t __a, uint8x8_t __b) |
1629 | { | |
1630 | return __a | __b; | |
1631 | } | |
1632 | ||
49ab9992 | 1633 | __extension__ extern __inline uint16x4_t |
1634 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1635 | vorr_u16 (uint16x4_t __a, uint16x4_t __b) |
1636 | { | |
1637 | return __a | __b; | |
1638 | } | |
1639 | ||
49ab9992 | 1640 | __extension__ extern __inline uint32x2_t |
1641 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1642 | vorr_u32 (uint32x2_t __a, uint32x2_t __b) |
1643 | { | |
1644 | return __a | __b; | |
1645 | } | |
1646 | ||
49ab9992 | 1647 | __extension__ extern __inline int64x1_t |
1648 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1649 | vorr_s64 (int64x1_t __a, int64x1_t __b) |
1650 | { | |
1651 | return __a | __b; | |
1652 | } | |
1653 | ||
49ab9992 | 1654 | __extension__ extern __inline uint64x1_t |
1655 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1656 | vorr_u64 (uint64x1_t __a, uint64x1_t __b) |
1657 | { | |
1658 | return __a | __b; | |
1659 | } | |
1660 | ||
49ab9992 | 1661 | __extension__ extern __inline int8x16_t |
1662 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1663 | vorrq_s8 (int8x16_t __a, int8x16_t __b) |
1664 | { | |
1665 | return __a | __b; | |
1666 | } | |
1667 | ||
49ab9992 | 1668 | __extension__ extern __inline int16x8_t |
1669 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1670 | vorrq_s16 (int16x8_t __a, int16x8_t __b) |
1671 | { | |
1672 | return __a | __b; | |
1673 | } | |
1674 | ||
49ab9992 | 1675 | __extension__ extern __inline int32x4_t |
1676 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1677 | vorrq_s32 (int32x4_t __a, int32x4_t __b) |
1678 | { | |
1679 | return __a | __b; | |
1680 | } | |
1681 | ||
49ab9992 | 1682 | __extension__ extern __inline int64x2_t |
1683 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1684 | vorrq_s64 (int64x2_t __a, int64x2_t __b) |
1685 | { | |
1686 | return __a | __b; | |
1687 | } | |
1688 | ||
49ab9992 | 1689 | __extension__ extern __inline uint8x16_t |
1690 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1691 | vorrq_u8 (uint8x16_t __a, uint8x16_t __b) |
1692 | { | |
1693 | return __a | __b; | |
1694 | } | |
1695 | ||
49ab9992 | 1696 | __extension__ extern __inline uint16x8_t |
1697 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1698 | vorrq_u16 (uint16x8_t __a, uint16x8_t __b) |
1699 | { | |
1700 | return __a | __b; | |
1701 | } | |
1702 | ||
49ab9992 | 1703 | __extension__ extern __inline uint32x4_t |
1704 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1705 | vorrq_u32 (uint32x4_t __a, uint32x4_t __b) |
1706 | { | |
1707 | return __a | __b; | |
1708 | } | |
1709 | ||
49ab9992 | 1710 | __extension__ extern __inline uint64x2_t |
1711 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1712 | vorrq_u64 (uint64x2_t __a, uint64x2_t __b) |
1713 | { | |
1714 | return __a | __b; | |
1715 | } | |
1716 | ||
49ab9992 | 1717 | __extension__ extern __inline int8x8_t |
1718 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1719 | veor_s8 (int8x8_t __a, int8x8_t __b) |
1720 | { | |
1721 | return __a ^ __b; | |
1722 | } | |
1723 | ||
49ab9992 | 1724 | __extension__ extern __inline int16x4_t |
1725 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1726 | veor_s16 (int16x4_t __a, int16x4_t __b) |
1727 | { | |
1728 | return __a ^ __b; | |
1729 | } | |
1730 | ||
49ab9992 | 1731 | __extension__ extern __inline int32x2_t |
1732 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1733 | veor_s32 (int32x2_t __a, int32x2_t __b) |
1734 | { | |
1735 | return __a ^ __b; | |
1736 | } | |
1737 | ||
49ab9992 | 1738 | __extension__ extern __inline uint8x8_t |
1739 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1740 | veor_u8 (uint8x8_t __a, uint8x8_t __b) |
1741 | { | |
1742 | return __a ^ __b; | |
1743 | } | |
1744 | ||
49ab9992 | 1745 | __extension__ extern __inline uint16x4_t |
1746 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1747 | veor_u16 (uint16x4_t __a, uint16x4_t __b) |
1748 | { | |
1749 | return __a ^ __b; | |
1750 | } | |
1751 | ||
49ab9992 | 1752 | __extension__ extern __inline uint32x2_t |
1753 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1754 | veor_u32 (uint32x2_t __a, uint32x2_t __b) |
1755 | { | |
1756 | return __a ^ __b; | |
1757 | } | |
1758 | ||
49ab9992 | 1759 | __extension__ extern __inline int64x1_t |
1760 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1761 | veor_s64 (int64x1_t __a, int64x1_t __b) |
1762 | { | |
1763 | return __a ^ __b; | |
1764 | } | |
1765 | ||
49ab9992 | 1766 | __extension__ extern __inline uint64x1_t |
1767 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1768 | veor_u64 (uint64x1_t __a, uint64x1_t __b) |
1769 | { | |
1770 | return __a ^ __b; | |
1771 | } | |
1772 | ||
49ab9992 | 1773 | __extension__ extern __inline int8x16_t |
1774 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1775 | veorq_s8 (int8x16_t __a, int8x16_t __b) |
1776 | { | |
1777 | return __a ^ __b; | |
1778 | } | |
1779 | ||
49ab9992 | 1780 | __extension__ extern __inline int16x8_t |
1781 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1782 | veorq_s16 (int16x8_t __a, int16x8_t __b) |
1783 | { | |
1784 | return __a ^ __b; | |
1785 | } | |
1786 | ||
49ab9992 | 1787 | __extension__ extern __inline int32x4_t |
1788 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1789 | veorq_s32 (int32x4_t __a, int32x4_t __b) |
1790 | { | |
1791 | return __a ^ __b; | |
1792 | } | |
1793 | ||
49ab9992 | 1794 | __extension__ extern __inline int64x2_t |
1795 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1796 | veorq_s64 (int64x2_t __a, int64x2_t __b) |
1797 | { | |
1798 | return __a ^ __b; | |
1799 | } | |
1800 | ||
49ab9992 | 1801 | __extension__ extern __inline uint8x16_t |
1802 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1803 | veorq_u8 (uint8x16_t __a, uint8x16_t __b) |
1804 | { | |
1805 | return __a ^ __b; | |
1806 | } | |
1807 | ||
49ab9992 | 1808 | __extension__ extern __inline uint16x8_t |
1809 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1810 | veorq_u16 (uint16x8_t __a, uint16x8_t __b) |
1811 | { | |
1812 | return __a ^ __b; | |
1813 | } | |
1814 | ||
49ab9992 | 1815 | __extension__ extern __inline uint32x4_t |
1816 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1817 | veorq_u32 (uint32x4_t __a, uint32x4_t __b) |
1818 | { | |
1819 | return __a ^ __b; | |
1820 | } | |
1821 | ||
49ab9992 | 1822 | __extension__ extern __inline uint64x2_t |
1823 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1824 | veorq_u64 (uint64x2_t __a, uint64x2_t __b) |
1825 | { | |
1826 | return __a ^ __b; | |
1827 | } | |
1828 | ||
49ab9992 | 1829 | __extension__ extern __inline int8x8_t |
1830 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1831 | vbic_s8 (int8x8_t __a, int8x8_t __b) |
1832 | { | |
1833 | return __a & ~__b; | |
1834 | } | |
1835 | ||
49ab9992 | 1836 | __extension__ extern __inline int16x4_t |
1837 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1838 | vbic_s16 (int16x4_t __a, int16x4_t __b) |
1839 | { | |
1840 | return __a & ~__b; | |
1841 | } | |
1842 | ||
49ab9992 | 1843 | __extension__ extern __inline int32x2_t |
1844 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1845 | vbic_s32 (int32x2_t __a, int32x2_t __b) |
1846 | { | |
1847 | return __a & ~__b; | |
1848 | } | |
1849 | ||
49ab9992 | 1850 | __extension__ extern __inline uint8x8_t |
1851 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1852 | vbic_u8 (uint8x8_t __a, uint8x8_t __b) |
1853 | { | |
1854 | return __a & ~__b; | |
1855 | } | |
1856 | ||
49ab9992 | 1857 | __extension__ extern __inline uint16x4_t |
1858 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1859 | vbic_u16 (uint16x4_t __a, uint16x4_t __b) |
1860 | { | |
1861 | return __a & ~__b; | |
1862 | } | |
1863 | ||
49ab9992 | 1864 | __extension__ extern __inline uint32x2_t |
1865 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1866 | vbic_u32 (uint32x2_t __a, uint32x2_t __b) |
1867 | { | |
1868 | return __a & ~__b; | |
1869 | } | |
1870 | ||
49ab9992 | 1871 | __extension__ extern __inline int64x1_t |
1872 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1873 | vbic_s64 (int64x1_t __a, int64x1_t __b) |
1874 | { | |
1875 | return __a & ~__b; | |
1876 | } | |
1877 | ||
49ab9992 | 1878 | __extension__ extern __inline uint64x1_t |
1879 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1880 | vbic_u64 (uint64x1_t __a, uint64x1_t __b) |
1881 | { | |
1882 | return __a & ~__b; | |
1883 | } | |
1884 | ||
49ab9992 | 1885 | __extension__ extern __inline int8x16_t |
1886 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1887 | vbicq_s8 (int8x16_t __a, int8x16_t __b) |
1888 | { | |
1889 | return __a & ~__b; | |
1890 | } | |
1891 | ||
49ab9992 | 1892 | __extension__ extern __inline int16x8_t |
1893 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1894 | vbicq_s16 (int16x8_t __a, int16x8_t __b) |
1895 | { | |
1896 | return __a & ~__b; | |
1897 | } | |
1898 | ||
49ab9992 | 1899 | __extension__ extern __inline int32x4_t |
1900 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1901 | vbicq_s32 (int32x4_t __a, int32x4_t __b) |
1902 | { | |
1903 | return __a & ~__b; | |
1904 | } | |
1905 | ||
49ab9992 | 1906 | __extension__ extern __inline int64x2_t |
1907 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1908 | vbicq_s64 (int64x2_t __a, int64x2_t __b) |
1909 | { | |
1910 | return __a & ~__b; | |
1911 | } | |
1912 | ||
49ab9992 | 1913 | __extension__ extern __inline uint8x16_t |
1914 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1915 | vbicq_u8 (uint8x16_t __a, uint8x16_t __b) |
1916 | { | |
1917 | return __a & ~__b; | |
1918 | } | |
1919 | ||
49ab9992 | 1920 | __extension__ extern __inline uint16x8_t |
1921 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1922 | vbicq_u16 (uint16x8_t __a, uint16x8_t __b) |
1923 | { | |
1924 | return __a & ~__b; | |
1925 | } | |
1926 | ||
49ab9992 | 1927 | __extension__ extern __inline uint32x4_t |
1928 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1929 | vbicq_u32 (uint32x4_t __a, uint32x4_t __b) |
1930 | { | |
1931 | return __a & ~__b; | |
1932 | } | |
1933 | ||
49ab9992 | 1934 | __extension__ extern __inline uint64x2_t |
1935 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1936 | vbicq_u64 (uint64x2_t __a, uint64x2_t __b) |
1937 | { | |
1938 | return __a & ~__b; | |
1939 | } | |
1940 | ||
49ab9992 | 1941 | __extension__ extern __inline int8x8_t |
1942 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1943 | vorn_s8 (int8x8_t __a, int8x8_t __b) |
1944 | { | |
1945 | return __a | ~__b; | |
1946 | } | |
1947 | ||
49ab9992 | 1948 | __extension__ extern __inline int16x4_t |
1949 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1950 | vorn_s16 (int16x4_t __a, int16x4_t __b) |
1951 | { | |
1952 | return __a | ~__b; | |
1953 | } | |
1954 | ||
49ab9992 | 1955 | __extension__ extern __inline int32x2_t |
1956 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1957 | vorn_s32 (int32x2_t __a, int32x2_t __b) |
1958 | { | |
1959 | return __a | ~__b; | |
1960 | } | |
1961 | ||
49ab9992 | 1962 | __extension__ extern __inline uint8x8_t |
1963 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1964 | vorn_u8 (uint8x8_t __a, uint8x8_t __b) |
1965 | { | |
1966 | return __a | ~__b; | |
1967 | } | |
1968 | ||
49ab9992 | 1969 | __extension__ extern __inline uint16x4_t |
1970 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1971 | vorn_u16 (uint16x4_t __a, uint16x4_t __b) |
1972 | { | |
1973 | return __a | ~__b; | |
1974 | } | |
1975 | ||
49ab9992 | 1976 | __extension__ extern __inline uint32x2_t |
1977 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1978 | vorn_u32 (uint32x2_t __a, uint32x2_t __b) |
1979 | { | |
1980 | return __a | ~__b; | |
1981 | } | |
1982 | ||
49ab9992 | 1983 | __extension__ extern __inline int64x1_t |
1984 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1985 | vorn_s64 (int64x1_t __a, int64x1_t __b) |
1986 | { | |
1987 | return __a | ~__b; | |
1988 | } | |
1989 | ||
49ab9992 | 1990 | __extension__ extern __inline uint64x1_t |
1991 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1992 | vorn_u64 (uint64x1_t __a, uint64x1_t __b) |
1993 | { | |
1994 | return __a | ~__b; | |
1995 | } | |
1996 | ||
49ab9992 | 1997 | __extension__ extern __inline int8x16_t |
1998 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 1999 | vornq_s8 (int8x16_t __a, int8x16_t __b) |
2000 | { | |
2001 | return __a | ~__b; | |
2002 | } | |
2003 | ||
49ab9992 | 2004 | __extension__ extern __inline int16x8_t |
2005 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2006 | vornq_s16 (int16x8_t __a, int16x8_t __b) |
2007 | { | |
2008 | return __a | ~__b; | |
2009 | } | |
2010 | ||
49ab9992 | 2011 | __extension__ extern __inline int32x4_t |
2012 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2013 | vornq_s32 (int32x4_t __a, int32x4_t __b) |
2014 | { | |
2015 | return __a | ~__b; | |
2016 | } | |
2017 | ||
49ab9992 | 2018 | __extension__ extern __inline int64x2_t |
2019 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2020 | vornq_s64 (int64x2_t __a, int64x2_t __b) |
2021 | { | |
2022 | return __a | ~__b; | |
2023 | } | |
2024 | ||
49ab9992 | 2025 | __extension__ extern __inline uint8x16_t |
2026 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2027 | vornq_u8 (uint8x16_t __a, uint8x16_t __b) |
2028 | { | |
2029 | return __a | ~__b; | |
2030 | } | |
2031 | ||
49ab9992 | 2032 | __extension__ extern __inline uint16x8_t |
2033 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2034 | vornq_u16 (uint16x8_t __a, uint16x8_t __b) |
2035 | { | |
2036 | return __a | ~__b; | |
2037 | } | |
2038 | ||
49ab9992 | 2039 | __extension__ extern __inline uint32x4_t |
2040 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2041 | vornq_u32 (uint32x4_t __a, uint32x4_t __b) |
2042 | { | |
2043 | return __a | ~__b; | |
2044 | } | |
2045 | ||
49ab9992 | 2046 | __extension__ extern __inline uint64x2_t |
2047 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2048 | vornq_u64 (uint64x2_t __a, uint64x2_t __b) |
2049 | { | |
2050 | return __a | ~__b; | |
2051 | } | |
2052 | ||
49ab9992 | 2053 | __extension__ extern __inline int8x8_t |
2054 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2055 | vsub_s8 (int8x8_t __a, int8x8_t __b) |
2056 | { | |
2057 | return __a - __b; | |
2058 | } | |
2059 | ||
49ab9992 | 2060 | __extension__ extern __inline int16x4_t |
2061 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2062 | vsub_s16 (int16x4_t __a, int16x4_t __b) |
2063 | { | |
2064 | return __a - __b; | |
2065 | } | |
2066 | ||
49ab9992 | 2067 | __extension__ extern __inline int32x2_t |
2068 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2069 | vsub_s32 (int32x2_t __a, int32x2_t __b) |
2070 | { | |
2071 | return __a - __b; | |
2072 | } | |
2073 | ||
49ab9992 | 2074 | __extension__ extern __inline float32x2_t |
2075 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2076 | vsub_f32 (float32x2_t __a, float32x2_t __b) |
2077 | { | |
2078 | return __a - __b; | |
2079 | } | |
2080 | ||
49ab9992 | 2081 | __extension__ extern __inline float64x1_t |
2082 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
94637ba9 | 2083 | vsub_f64 (float64x1_t __a, float64x1_t __b) |
2084 | { | |
2085 | return __a - __b; | |
2086 | } | |
2087 | ||
49ab9992 | 2088 | __extension__ extern __inline uint8x8_t |
2089 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2090 | vsub_u8 (uint8x8_t __a, uint8x8_t __b) |
2091 | { | |
2092 | return __a - __b; | |
2093 | } | |
2094 | ||
49ab9992 | 2095 | __extension__ extern __inline uint16x4_t |
2096 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2097 | vsub_u16 (uint16x4_t __a, uint16x4_t __b) |
2098 | { | |
2099 | return __a - __b; | |
2100 | } | |
2101 | ||
49ab9992 | 2102 | __extension__ extern __inline uint32x2_t |
2103 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2104 | vsub_u32 (uint32x2_t __a, uint32x2_t __b) |
2105 | { | |
2106 | return __a - __b; | |
2107 | } | |
2108 | ||
49ab9992 | 2109 | __extension__ extern __inline int64x1_t |
2110 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2111 | vsub_s64 (int64x1_t __a, int64x1_t __b) |
2112 | { | |
2113 | return __a - __b; | |
2114 | } | |
2115 | ||
49ab9992 | 2116 | __extension__ extern __inline uint64x1_t |
2117 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2118 | vsub_u64 (uint64x1_t __a, uint64x1_t __b) |
2119 | { | |
2120 | return __a - __b; | |
2121 | } | |
2122 | ||
49ab9992 | 2123 | __extension__ extern __inline int8x16_t |
2124 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2125 | vsubq_s8 (int8x16_t __a, int8x16_t __b) |
2126 | { | |
2127 | return __a - __b; | |
2128 | } | |
2129 | ||
49ab9992 | 2130 | __extension__ extern __inline int16x8_t |
2131 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2132 | vsubq_s16 (int16x8_t __a, int16x8_t __b) |
2133 | { | |
2134 | return __a - __b; | |
2135 | } | |
2136 | ||
49ab9992 | 2137 | __extension__ extern __inline int32x4_t |
2138 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2139 | vsubq_s32 (int32x4_t __a, int32x4_t __b) |
2140 | { | |
2141 | return __a - __b; | |
2142 | } | |
2143 | ||
49ab9992 | 2144 | __extension__ extern __inline int64x2_t |
2145 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2146 | vsubq_s64 (int64x2_t __a, int64x2_t __b) |
2147 | { | |
2148 | return __a - __b; | |
2149 | } | |
2150 | ||
49ab9992 | 2151 | __extension__ extern __inline float32x4_t |
2152 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2153 | vsubq_f32 (float32x4_t __a, float32x4_t __b) |
2154 | { | |
2155 | return __a - __b; | |
2156 | } | |
2157 | ||
49ab9992 | 2158 | __extension__ extern __inline float64x2_t |
2159 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2160 | vsubq_f64 (float64x2_t __a, float64x2_t __b) |
2161 | { | |
2162 | return __a - __b; | |
2163 | } | |
2164 | ||
49ab9992 | 2165 | __extension__ extern __inline uint8x16_t |
2166 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2167 | vsubq_u8 (uint8x16_t __a, uint8x16_t __b) |
2168 | { | |
2169 | return __a - __b; | |
2170 | } | |
2171 | ||
49ab9992 | 2172 | __extension__ extern __inline uint16x8_t |
2173 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2174 | vsubq_u16 (uint16x8_t __a, uint16x8_t __b) |
2175 | { | |
2176 | return __a - __b; | |
2177 | } | |
2178 | ||
49ab9992 | 2179 | __extension__ extern __inline uint32x4_t |
2180 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2181 | vsubq_u32 (uint32x4_t __a, uint32x4_t __b) |
2182 | { | |
2183 | return __a - __b; | |
2184 | } | |
2185 | ||
49ab9992 | 2186 | __extension__ extern __inline uint64x2_t |
2187 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2188 | vsubq_u64 (uint64x2_t __a, uint64x2_t __b) |
2189 | { | |
2190 | return __a - __b; | |
2191 | } | |
2192 | ||
49ab9992 | 2193 | __extension__ extern __inline int16x8_t |
2194 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2195 | vsubl_s8 (int8x8_t __a, int8x8_t __b) |
2196 | { | |
2197 | return (int16x8_t) __builtin_aarch64_ssublv8qi (__a, __b); | |
2198 | } | |
2199 | ||
49ab9992 | 2200 | __extension__ extern __inline int32x4_t |
2201 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2202 | vsubl_s16 (int16x4_t __a, int16x4_t __b) |
2203 | { | |
2204 | return (int32x4_t) __builtin_aarch64_ssublv4hi (__a, __b); | |
2205 | } | |
2206 | ||
49ab9992 | 2207 | __extension__ extern __inline int64x2_t |
2208 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2209 | vsubl_s32 (int32x2_t __a, int32x2_t __b) |
2210 | { | |
2211 | return (int64x2_t) __builtin_aarch64_ssublv2si (__a, __b); | |
2212 | } | |
2213 | ||
49ab9992 | 2214 | __extension__ extern __inline uint16x8_t |
2215 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2216 | vsubl_u8 (uint8x8_t __a, uint8x8_t __b) |
2217 | { | |
2218 | return (uint16x8_t) __builtin_aarch64_usublv8qi ((int8x8_t) __a, | |
2219 | (int8x8_t) __b); | |
2220 | } | |
2221 | ||
49ab9992 | 2222 | __extension__ extern __inline uint32x4_t |
2223 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2224 | vsubl_u16 (uint16x4_t __a, uint16x4_t __b) |
2225 | { | |
2226 | return (uint32x4_t) __builtin_aarch64_usublv4hi ((int16x4_t) __a, | |
2227 | (int16x4_t) __b); | |
2228 | } | |
2229 | ||
49ab9992 | 2230 | __extension__ extern __inline uint64x2_t |
2231 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2232 | vsubl_u32 (uint32x2_t __a, uint32x2_t __b) |
2233 | { | |
2234 | return (uint64x2_t) __builtin_aarch64_usublv2si ((int32x2_t) __a, | |
2235 | (int32x2_t) __b); | |
2236 | } | |
2237 | ||
49ab9992 | 2238 | __extension__ extern __inline int16x8_t |
2239 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2240 | vsubl_high_s8 (int8x16_t __a, int8x16_t __b) |
2241 | { | |
2242 | return (int16x8_t) __builtin_aarch64_ssubl2v16qi (__a, __b); | |
2243 | } | |
2244 | ||
49ab9992 | 2245 | __extension__ extern __inline int32x4_t |
2246 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2247 | vsubl_high_s16 (int16x8_t __a, int16x8_t __b) |
2248 | { | |
2249 | return (int32x4_t) __builtin_aarch64_ssubl2v8hi (__a, __b); | |
2250 | } | |
2251 | ||
49ab9992 | 2252 | __extension__ extern __inline int64x2_t |
2253 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2254 | vsubl_high_s32 (int32x4_t __a, int32x4_t __b) |
2255 | { | |
2256 | return (int64x2_t) __builtin_aarch64_ssubl2v4si (__a, __b); | |
2257 | } | |
2258 | ||
49ab9992 | 2259 | __extension__ extern __inline uint16x8_t |
2260 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2261 | vsubl_high_u8 (uint8x16_t __a, uint8x16_t __b) |
2262 | { | |
2263 | return (uint16x8_t) __builtin_aarch64_usubl2v16qi ((int8x16_t) __a, | |
2264 | (int8x16_t) __b); | |
2265 | } | |
2266 | ||
49ab9992 | 2267 | __extension__ extern __inline uint32x4_t |
2268 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2269 | vsubl_high_u16 (uint16x8_t __a, uint16x8_t __b) |
2270 | { | |
2271 | return (uint32x4_t) __builtin_aarch64_usubl2v8hi ((int16x8_t) __a, | |
2272 | (int16x8_t) __b); | |
2273 | } | |
2274 | ||
49ab9992 | 2275 | __extension__ extern __inline uint64x2_t |
2276 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2277 | vsubl_high_u32 (uint32x4_t __a, uint32x4_t __b) |
2278 | { | |
2279 | return (uint64x2_t) __builtin_aarch64_usubl2v4si ((int32x4_t) __a, | |
2280 | (int32x4_t) __b); | |
2281 | } | |
2282 | ||
49ab9992 | 2283 | __extension__ extern __inline int16x8_t |
2284 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2285 | vsubw_s8 (int16x8_t __a, int8x8_t __b) |
2286 | { | |
2287 | return (int16x8_t) __builtin_aarch64_ssubwv8qi (__a, __b); | |
2288 | } | |
2289 | ||
49ab9992 | 2290 | __extension__ extern __inline int32x4_t |
2291 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2292 | vsubw_s16 (int32x4_t __a, int16x4_t __b) |
2293 | { | |
2294 | return (int32x4_t) __builtin_aarch64_ssubwv4hi (__a, __b); | |
2295 | } | |
2296 | ||
49ab9992 | 2297 | __extension__ extern __inline int64x2_t |
2298 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2299 | vsubw_s32 (int64x2_t __a, int32x2_t __b) |
2300 | { | |
2301 | return (int64x2_t) __builtin_aarch64_ssubwv2si (__a, __b); | |
2302 | } | |
2303 | ||
49ab9992 | 2304 | __extension__ extern __inline uint16x8_t |
2305 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2306 | vsubw_u8 (uint16x8_t __a, uint8x8_t __b) |
2307 | { | |
2308 | return (uint16x8_t) __builtin_aarch64_usubwv8qi ((int16x8_t) __a, | |
2309 | (int8x8_t) __b); | |
2310 | } | |
2311 | ||
49ab9992 | 2312 | __extension__ extern __inline uint32x4_t |
2313 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2314 | vsubw_u16 (uint32x4_t __a, uint16x4_t __b) |
2315 | { | |
2316 | return (uint32x4_t) __builtin_aarch64_usubwv4hi ((int32x4_t) __a, | |
2317 | (int16x4_t) __b); | |
2318 | } | |
2319 | ||
49ab9992 | 2320 | __extension__ extern __inline uint64x2_t |
2321 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2322 | vsubw_u32 (uint64x2_t __a, uint32x2_t __b) |
2323 | { | |
2324 | return (uint64x2_t) __builtin_aarch64_usubwv2si ((int64x2_t) __a, | |
2325 | (int32x2_t) __b); | |
2326 | } | |
2327 | ||
49ab9992 | 2328 | __extension__ extern __inline int16x8_t |
2329 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2330 | vsubw_high_s8 (int16x8_t __a, int8x16_t __b) |
2331 | { | |
2332 | return (int16x8_t) __builtin_aarch64_ssubw2v16qi (__a, __b); | |
2333 | } | |
2334 | ||
49ab9992 | 2335 | __extension__ extern __inline int32x4_t |
2336 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2337 | vsubw_high_s16 (int32x4_t __a, int16x8_t __b) |
2338 | { | |
2339 | return (int32x4_t) __builtin_aarch64_ssubw2v8hi (__a, __b); | |
2340 | } | |
2341 | ||
49ab9992 | 2342 | __extension__ extern __inline int64x2_t |
2343 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2344 | vsubw_high_s32 (int64x2_t __a, int32x4_t __b) |
2345 | { | |
2346 | return (int64x2_t) __builtin_aarch64_ssubw2v4si (__a, __b); | |
2347 | } | |
2348 | ||
49ab9992 | 2349 | __extension__ extern __inline uint16x8_t |
2350 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2351 | vsubw_high_u8 (uint16x8_t __a, uint8x16_t __b) |
2352 | { | |
2353 | return (uint16x8_t) __builtin_aarch64_usubw2v16qi ((int16x8_t) __a, | |
2354 | (int8x16_t) __b); | |
2355 | } | |
2356 | ||
49ab9992 | 2357 | __extension__ extern __inline uint32x4_t |
2358 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2359 | vsubw_high_u16 (uint32x4_t __a, uint16x8_t __b) |
2360 | { | |
2361 | return (uint32x4_t) __builtin_aarch64_usubw2v8hi ((int32x4_t) __a, | |
2362 | (int16x8_t) __b); | |
2363 | } | |
2364 | ||
49ab9992 | 2365 | __extension__ extern __inline uint64x2_t |
2366 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2367 | vsubw_high_u32 (uint64x2_t __a, uint32x4_t __b) |
2368 | { | |
2369 | return (uint64x2_t) __builtin_aarch64_usubw2v4si ((int64x2_t) __a, | |
2370 | (int32x4_t) __b); | |
2371 | } | |
2372 | ||
49ab9992 | 2373 | __extension__ extern __inline int8x8_t |
2374 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2375 | vqadd_s8 (int8x8_t __a, int8x8_t __b) |
2376 | { | |
2377 | return (int8x8_t) __builtin_aarch64_sqaddv8qi (__a, __b); | |
2378 | } | |
2379 | ||
49ab9992 | 2380 | __extension__ extern __inline int16x4_t |
2381 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2382 | vqadd_s16 (int16x4_t __a, int16x4_t __b) |
2383 | { | |
2384 | return (int16x4_t) __builtin_aarch64_sqaddv4hi (__a, __b); | |
2385 | } | |
2386 | ||
49ab9992 | 2387 | __extension__ extern __inline int32x2_t |
2388 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2389 | vqadd_s32 (int32x2_t __a, int32x2_t __b) |
2390 | { | |
2391 | return (int32x2_t) __builtin_aarch64_sqaddv2si (__a, __b); | |
2392 | } | |
2393 | ||
49ab9992 | 2394 | __extension__ extern __inline int64x1_t |
2395 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2396 | vqadd_s64 (int64x1_t __a, int64x1_t __b) |
2397 | { | |
12fc7207 | 2398 | return (int64x1_t) {__builtin_aarch64_sqadddi (__a[0], __b[0])}; |
df401d54 | 2399 | } |
2400 | ||
49ab9992 | 2401 | __extension__ extern __inline uint8x8_t |
2402 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2403 | vqadd_u8 (uint8x8_t __a, uint8x8_t __b) |
2404 | { | |
201e54b7 | 2405 | return __builtin_aarch64_uqaddv8qi_uuu (__a, __b); |
df401d54 | 2406 | } |
2407 | ||
49ab9992 | 2408 | __extension__ extern __inline int8x8_t |
2409 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2410 | vhsub_s8 (int8x8_t __a, int8x8_t __b) |
2411 | { | |
2412 | return (int8x8_t)__builtin_aarch64_shsubv8qi (__a, __b); | |
2413 | } | |
2414 | ||
49ab9992 | 2415 | __extension__ extern __inline int16x4_t |
2416 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2417 | vhsub_s16 (int16x4_t __a, int16x4_t __b) |
2418 | { | |
2419 | return (int16x4_t) __builtin_aarch64_shsubv4hi (__a, __b); | |
2420 | } | |
2421 | ||
49ab9992 | 2422 | __extension__ extern __inline int32x2_t |
2423 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2424 | vhsub_s32 (int32x2_t __a, int32x2_t __b) |
2425 | { | |
2426 | return (int32x2_t) __builtin_aarch64_shsubv2si (__a, __b); | |
2427 | } | |
2428 | ||
49ab9992 | 2429 | __extension__ extern __inline uint8x8_t |
2430 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2431 | vhsub_u8 (uint8x8_t __a, uint8x8_t __b) |
2432 | { | |
2433 | return (uint8x8_t) __builtin_aarch64_uhsubv8qi ((int8x8_t) __a, | |
2434 | (int8x8_t) __b); | |
2435 | } | |
2436 | ||
49ab9992 | 2437 | __extension__ extern __inline uint16x4_t |
2438 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2439 | vhsub_u16 (uint16x4_t __a, uint16x4_t __b) |
2440 | { | |
2441 | return (uint16x4_t) __builtin_aarch64_uhsubv4hi ((int16x4_t) __a, | |
2442 | (int16x4_t) __b); | |
2443 | } | |
2444 | ||
49ab9992 | 2445 | __extension__ extern __inline uint32x2_t |
2446 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2447 | vhsub_u32 (uint32x2_t __a, uint32x2_t __b) |
2448 | { | |
2449 | return (uint32x2_t) __builtin_aarch64_uhsubv2si ((int32x2_t) __a, | |
2450 | (int32x2_t) __b); | |
2451 | } | |
2452 | ||
49ab9992 | 2453 | __extension__ extern __inline int8x16_t |
2454 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2455 | vhsubq_s8 (int8x16_t __a, int8x16_t __b) |
2456 | { | |
2457 | return (int8x16_t) __builtin_aarch64_shsubv16qi (__a, __b); | |
2458 | } | |
2459 | ||
49ab9992 | 2460 | __extension__ extern __inline int16x8_t |
2461 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2462 | vhsubq_s16 (int16x8_t __a, int16x8_t __b) |
2463 | { | |
2464 | return (int16x8_t) __builtin_aarch64_shsubv8hi (__a, __b); | |
2465 | } | |
2466 | ||
49ab9992 | 2467 | __extension__ extern __inline int32x4_t |
2468 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2469 | vhsubq_s32 (int32x4_t __a, int32x4_t __b) |
2470 | { | |
2471 | return (int32x4_t) __builtin_aarch64_shsubv4si (__a, __b); | |
2472 | } | |
2473 | ||
49ab9992 | 2474 | __extension__ extern __inline uint8x16_t |
2475 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2476 | vhsubq_u8 (uint8x16_t __a, uint8x16_t __b) |
2477 | { | |
2478 | return (uint8x16_t) __builtin_aarch64_uhsubv16qi ((int8x16_t) __a, | |
2479 | (int8x16_t) __b); | |
2480 | } | |
2481 | ||
49ab9992 | 2482 | __extension__ extern __inline uint16x8_t |
2483 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2484 | vhsubq_u16 (uint16x8_t __a, uint16x8_t __b) |
2485 | { | |
2486 | return (uint16x8_t) __builtin_aarch64_uhsubv8hi ((int16x8_t) __a, | |
2487 | (int16x8_t) __b); | |
2488 | } | |
2489 | ||
49ab9992 | 2490 | __extension__ extern __inline uint32x4_t |
2491 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2492 | vhsubq_u32 (uint32x4_t __a, uint32x4_t __b) |
2493 | { | |
2494 | return (uint32x4_t) __builtin_aarch64_uhsubv4si ((int32x4_t) __a, | |
2495 | (int32x4_t) __b); | |
2496 | } | |
2497 | ||
49ab9992 | 2498 | __extension__ extern __inline int8x8_t |
2499 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2500 | vsubhn_s16 (int16x8_t __a, int16x8_t __b) |
2501 | { | |
2502 | return (int8x8_t) __builtin_aarch64_subhnv8hi (__a, __b); | |
2503 | } | |
2504 | ||
49ab9992 | 2505 | __extension__ extern __inline int16x4_t |
2506 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2507 | vsubhn_s32 (int32x4_t __a, int32x4_t __b) |
2508 | { | |
2509 | return (int16x4_t) __builtin_aarch64_subhnv4si (__a, __b); | |
2510 | } | |
2511 | ||
49ab9992 | 2512 | __extension__ extern __inline int32x2_t |
2513 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2514 | vsubhn_s64 (int64x2_t __a, int64x2_t __b) |
2515 | { | |
2516 | return (int32x2_t) __builtin_aarch64_subhnv2di (__a, __b); | |
2517 | } | |
2518 | ||
49ab9992 | 2519 | __extension__ extern __inline uint8x8_t |
2520 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2521 | vsubhn_u16 (uint16x8_t __a, uint16x8_t __b) |
2522 | { | |
2523 | return (uint8x8_t) __builtin_aarch64_subhnv8hi ((int16x8_t) __a, | |
2524 | (int16x8_t) __b); | |
2525 | } | |
2526 | ||
49ab9992 | 2527 | __extension__ extern __inline uint16x4_t |
2528 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2529 | vsubhn_u32 (uint32x4_t __a, uint32x4_t __b) |
2530 | { | |
2531 | return (uint16x4_t) __builtin_aarch64_subhnv4si ((int32x4_t) __a, | |
2532 | (int32x4_t) __b); | |
2533 | } | |
2534 | ||
49ab9992 | 2535 | __extension__ extern __inline uint32x2_t |
2536 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2537 | vsubhn_u64 (uint64x2_t __a, uint64x2_t __b) |
2538 | { | |
2539 | return (uint32x2_t) __builtin_aarch64_subhnv2di ((int64x2_t) __a, | |
2540 | (int64x2_t) __b); | |
2541 | } | |
2542 | ||
49ab9992 | 2543 | __extension__ extern __inline int8x8_t |
2544 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2545 | vrsubhn_s16 (int16x8_t __a, int16x8_t __b) |
2546 | { | |
2547 | return (int8x8_t) __builtin_aarch64_rsubhnv8hi (__a, __b); | |
2548 | } | |
2549 | ||
49ab9992 | 2550 | __extension__ extern __inline int16x4_t |
2551 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2552 | vrsubhn_s32 (int32x4_t __a, int32x4_t __b) |
2553 | { | |
2554 | return (int16x4_t) __builtin_aarch64_rsubhnv4si (__a, __b); | |
2555 | } | |
2556 | ||
49ab9992 | 2557 | __extension__ extern __inline int32x2_t |
2558 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2559 | vrsubhn_s64 (int64x2_t __a, int64x2_t __b) |
2560 | { | |
2561 | return (int32x2_t) __builtin_aarch64_rsubhnv2di (__a, __b); | |
2562 | } | |
2563 | ||
49ab9992 | 2564 | __extension__ extern __inline uint8x8_t |
2565 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2566 | vrsubhn_u16 (uint16x8_t __a, uint16x8_t __b) |
2567 | { | |
2568 | return (uint8x8_t) __builtin_aarch64_rsubhnv8hi ((int16x8_t) __a, | |
2569 | (int16x8_t) __b); | |
2570 | } | |
2571 | ||
49ab9992 | 2572 | __extension__ extern __inline uint16x4_t |
2573 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2574 | vrsubhn_u32 (uint32x4_t __a, uint32x4_t __b) |
2575 | { | |
2576 | return (uint16x4_t) __builtin_aarch64_rsubhnv4si ((int32x4_t) __a, | |
2577 | (int32x4_t) __b); | |
2578 | } | |
2579 | ||
49ab9992 | 2580 | __extension__ extern __inline uint32x2_t |
2581 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2582 | vrsubhn_u64 (uint64x2_t __a, uint64x2_t __b) |
2583 | { | |
2584 | return (uint32x2_t) __builtin_aarch64_rsubhnv2di ((int64x2_t) __a, | |
2585 | (int64x2_t) __b); | |
2586 | } | |
2587 | ||
49ab9992 | 2588 | __extension__ extern __inline int8x16_t |
2589 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2590 | vrsubhn_high_s16 (int8x8_t __a, int16x8_t __b, int16x8_t __c) |
2591 | { | |
2592 | return (int8x16_t) __builtin_aarch64_rsubhn2v8hi (__a, __b, __c); | |
2593 | } | |
2594 | ||
49ab9992 | 2595 | __extension__ extern __inline int16x8_t |
2596 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2597 | vrsubhn_high_s32 (int16x4_t __a, int32x4_t __b, int32x4_t __c) |
2598 | { | |
2599 | return (int16x8_t) __builtin_aarch64_rsubhn2v4si (__a, __b, __c); | |
2600 | } | |
2601 | ||
49ab9992 | 2602 | __extension__ extern __inline int32x4_t |
2603 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2604 | vrsubhn_high_s64 (int32x2_t __a, int64x2_t __b, int64x2_t __c) |
2605 | { | |
2606 | return (int32x4_t) __builtin_aarch64_rsubhn2v2di (__a, __b, __c); | |
2607 | } | |
2608 | ||
49ab9992 | 2609 | __extension__ extern __inline uint8x16_t |
2610 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2611 | vrsubhn_high_u16 (uint8x8_t __a, uint16x8_t __b, uint16x8_t __c) |
2612 | { | |
2613 | return (uint8x16_t) __builtin_aarch64_rsubhn2v8hi ((int8x8_t) __a, | |
2614 | (int16x8_t) __b, | |
2615 | (int16x8_t) __c); | |
2616 | } | |
2617 | ||
49ab9992 | 2618 | __extension__ extern __inline uint16x8_t |
2619 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2620 | vrsubhn_high_u32 (uint16x4_t __a, uint32x4_t __b, uint32x4_t __c) |
2621 | { | |
2622 | return (uint16x8_t) __builtin_aarch64_rsubhn2v4si ((int16x4_t) __a, | |
2623 | (int32x4_t) __b, | |
2624 | (int32x4_t) __c); | |
2625 | } | |
2626 | ||
49ab9992 | 2627 | __extension__ extern __inline uint32x4_t |
2628 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2629 | vrsubhn_high_u64 (uint32x2_t __a, uint64x2_t __b, uint64x2_t __c) |
2630 | { | |
2631 | return (uint32x4_t) __builtin_aarch64_rsubhn2v2di ((int32x2_t) __a, | |
2632 | (int64x2_t) __b, | |
2633 | (int64x2_t) __c); | |
2634 | } | |
2635 | ||
49ab9992 | 2636 | __extension__ extern __inline int8x16_t |
2637 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2638 | vsubhn_high_s16 (int8x8_t __a, int16x8_t __b, int16x8_t __c) |
2639 | { | |
2640 | return (int8x16_t) __builtin_aarch64_subhn2v8hi (__a, __b, __c); | |
2641 | } | |
2642 | ||
49ab9992 | 2643 | __extension__ extern __inline int16x8_t |
2644 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2645 | vsubhn_high_s32 (int16x4_t __a, int32x4_t __b, int32x4_t __c) |
2646 | { | |
2647 | return (int16x8_t) __builtin_aarch64_subhn2v4si (__a, __b, __c);; | |
2648 | } | |
2649 | ||
49ab9992 | 2650 | __extension__ extern __inline int32x4_t |
2651 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2652 | vsubhn_high_s64 (int32x2_t __a, int64x2_t __b, int64x2_t __c) |
2653 | { | |
2654 | return (int32x4_t) __builtin_aarch64_subhn2v2di (__a, __b, __c); | |
2655 | } | |
2656 | ||
49ab9992 | 2657 | __extension__ extern __inline uint8x16_t |
2658 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2659 | vsubhn_high_u16 (uint8x8_t __a, uint16x8_t __b, uint16x8_t __c) |
2660 | { | |
2661 | return (uint8x16_t) __builtin_aarch64_subhn2v8hi ((int8x8_t) __a, | |
2662 | (int16x8_t) __b, | |
2663 | (int16x8_t) __c); | |
2664 | } | |
2665 | ||
49ab9992 | 2666 | __extension__ extern __inline uint16x8_t |
2667 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2668 | vsubhn_high_u32 (uint16x4_t __a, uint32x4_t __b, uint32x4_t __c) |
2669 | { | |
2670 | return (uint16x8_t) __builtin_aarch64_subhn2v4si ((int16x4_t) __a, | |
2671 | (int32x4_t) __b, | |
2672 | (int32x4_t) __c); | |
2673 | } | |
2674 | ||
49ab9992 | 2675 | __extension__ extern __inline uint32x4_t |
2676 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 2677 | vsubhn_high_u64 (uint32x2_t __a, uint64x2_t __b, uint64x2_t __c) |
2678 | { | |
2679 | return (uint32x4_t) __builtin_aarch64_subhn2v2di ((int32x2_t) __a, | |
2680 | (int64x2_t) __b, | |
2681 | (int64x2_t) __c); | |
2682 | } | |
2683 | ||
49ab9992 | 2684 | __extension__ extern __inline uint16x4_t |
2685 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2686 | vqadd_u16 (uint16x4_t __a, uint16x4_t __b) |
2687 | { | |
201e54b7 | 2688 | return __builtin_aarch64_uqaddv4hi_uuu (__a, __b); |
df401d54 | 2689 | } |
2690 | ||
49ab9992 | 2691 | __extension__ extern __inline uint32x2_t |
2692 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2693 | vqadd_u32 (uint32x2_t __a, uint32x2_t __b) |
2694 | { | |
201e54b7 | 2695 | return __builtin_aarch64_uqaddv2si_uuu (__a, __b); |
df401d54 | 2696 | } |
2697 | ||
49ab9992 | 2698 | __extension__ extern __inline uint64x1_t |
2699 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2700 | vqadd_u64 (uint64x1_t __a, uint64x1_t __b) |
2701 | { | |
12fc7207 | 2702 | return (uint64x1_t) {__builtin_aarch64_uqadddi_uuu (__a[0], __b[0])}; |
df401d54 | 2703 | } |
2704 | ||
49ab9992 | 2705 | __extension__ extern __inline int8x16_t |
2706 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2707 | vqaddq_s8 (int8x16_t __a, int8x16_t __b) |
2708 | { | |
2709 | return (int8x16_t) __builtin_aarch64_sqaddv16qi (__a, __b); | |
2710 | } | |
2711 | ||
49ab9992 | 2712 | __extension__ extern __inline int16x8_t |
2713 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2714 | vqaddq_s16 (int16x8_t __a, int16x8_t __b) |
2715 | { | |
2716 | return (int16x8_t) __builtin_aarch64_sqaddv8hi (__a, __b); | |
2717 | } | |
2718 | ||
49ab9992 | 2719 | __extension__ extern __inline int32x4_t |
2720 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2721 | vqaddq_s32 (int32x4_t __a, int32x4_t __b) |
2722 | { | |
2723 | return (int32x4_t) __builtin_aarch64_sqaddv4si (__a, __b); | |
2724 | } | |
2725 | ||
49ab9992 | 2726 | __extension__ extern __inline int64x2_t |
2727 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2728 | vqaddq_s64 (int64x2_t __a, int64x2_t __b) |
2729 | { | |
2730 | return (int64x2_t) __builtin_aarch64_sqaddv2di (__a, __b); | |
2731 | } | |
2732 | ||
49ab9992 | 2733 | __extension__ extern __inline uint8x16_t |
2734 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2735 | vqaddq_u8 (uint8x16_t __a, uint8x16_t __b) |
2736 | { | |
201e54b7 | 2737 | return __builtin_aarch64_uqaddv16qi_uuu (__a, __b); |
df401d54 | 2738 | } |
2739 | ||
49ab9992 | 2740 | __extension__ extern __inline uint16x8_t |
2741 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2742 | vqaddq_u16 (uint16x8_t __a, uint16x8_t __b) |
2743 | { | |
201e54b7 | 2744 | return __builtin_aarch64_uqaddv8hi_uuu (__a, __b); |
df401d54 | 2745 | } |
2746 | ||
49ab9992 | 2747 | __extension__ extern __inline uint32x4_t |
2748 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2749 | vqaddq_u32 (uint32x4_t __a, uint32x4_t __b) |
2750 | { | |
201e54b7 | 2751 | return __builtin_aarch64_uqaddv4si_uuu (__a, __b); |
df401d54 | 2752 | } |
2753 | ||
49ab9992 | 2754 | __extension__ extern __inline uint64x2_t |
2755 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2756 | vqaddq_u64 (uint64x2_t __a, uint64x2_t __b) |
2757 | { | |
201e54b7 | 2758 | return __builtin_aarch64_uqaddv2di_uuu (__a, __b); |
df401d54 | 2759 | } |
2760 | ||
49ab9992 | 2761 | __extension__ extern __inline int8x8_t |
2762 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2763 | vqsub_s8 (int8x8_t __a, int8x8_t __b) |
2764 | { | |
2765 | return (int8x8_t) __builtin_aarch64_sqsubv8qi (__a, __b); | |
2766 | } | |
2767 | ||
49ab9992 | 2768 | __extension__ extern __inline int16x4_t |
2769 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2770 | vqsub_s16 (int16x4_t __a, int16x4_t __b) |
2771 | { | |
2772 | return (int16x4_t) __builtin_aarch64_sqsubv4hi (__a, __b); | |
2773 | } | |
2774 | ||
49ab9992 | 2775 | __extension__ extern __inline int32x2_t |
2776 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2777 | vqsub_s32 (int32x2_t __a, int32x2_t __b) |
2778 | { | |
2779 | return (int32x2_t) __builtin_aarch64_sqsubv2si (__a, __b); | |
2780 | } | |
2781 | ||
49ab9992 | 2782 | __extension__ extern __inline int64x1_t |
2783 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2784 | vqsub_s64 (int64x1_t __a, int64x1_t __b) |
2785 | { | |
12fc7207 | 2786 | return (int64x1_t) {__builtin_aarch64_sqsubdi (__a[0], __b[0])}; |
df401d54 | 2787 | } |
2788 | ||
49ab9992 | 2789 | __extension__ extern __inline uint8x8_t |
2790 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2791 | vqsub_u8 (uint8x8_t __a, uint8x8_t __b) |
2792 | { | |
201e54b7 | 2793 | return __builtin_aarch64_uqsubv8qi_uuu (__a, __b); |
df401d54 | 2794 | } |
2795 | ||
49ab9992 | 2796 | __extension__ extern __inline uint16x4_t |
2797 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2798 | vqsub_u16 (uint16x4_t __a, uint16x4_t __b) |
2799 | { | |
201e54b7 | 2800 | return __builtin_aarch64_uqsubv4hi_uuu (__a, __b); |
df401d54 | 2801 | } |
2802 | ||
49ab9992 | 2803 | __extension__ extern __inline uint32x2_t |
2804 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2805 | vqsub_u32 (uint32x2_t __a, uint32x2_t __b) |
2806 | { | |
201e54b7 | 2807 | return __builtin_aarch64_uqsubv2si_uuu (__a, __b); |
df401d54 | 2808 | } |
2809 | ||
49ab9992 | 2810 | __extension__ extern __inline uint64x1_t |
2811 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2812 | vqsub_u64 (uint64x1_t __a, uint64x1_t __b) |
2813 | { | |
12fc7207 | 2814 | return (uint64x1_t) {__builtin_aarch64_uqsubdi_uuu (__a[0], __b[0])}; |
df401d54 | 2815 | } |
2816 | ||
49ab9992 | 2817 | __extension__ extern __inline int8x16_t |
2818 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2819 | vqsubq_s8 (int8x16_t __a, int8x16_t __b) |
2820 | { | |
2821 | return (int8x16_t) __builtin_aarch64_sqsubv16qi (__a, __b); | |
2822 | } | |
2823 | ||
49ab9992 | 2824 | __extension__ extern __inline int16x8_t |
2825 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2826 | vqsubq_s16 (int16x8_t __a, int16x8_t __b) |
2827 | { | |
2828 | return (int16x8_t) __builtin_aarch64_sqsubv8hi (__a, __b); | |
2829 | } | |
2830 | ||
49ab9992 | 2831 | __extension__ extern __inline int32x4_t |
2832 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2833 | vqsubq_s32 (int32x4_t __a, int32x4_t __b) |
2834 | { | |
2835 | return (int32x4_t) __builtin_aarch64_sqsubv4si (__a, __b); | |
2836 | } | |
2837 | ||
49ab9992 | 2838 | __extension__ extern __inline int64x2_t |
2839 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2840 | vqsubq_s64 (int64x2_t __a, int64x2_t __b) |
2841 | { | |
2842 | return (int64x2_t) __builtin_aarch64_sqsubv2di (__a, __b); | |
2843 | } | |
2844 | ||
49ab9992 | 2845 | __extension__ extern __inline uint8x16_t |
2846 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2847 | vqsubq_u8 (uint8x16_t __a, uint8x16_t __b) |
2848 | { | |
201e54b7 | 2849 | return __builtin_aarch64_uqsubv16qi_uuu (__a, __b); |
df401d54 | 2850 | } |
2851 | ||
49ab9992 | 2852 | __extension__ extern __inline uint16x8_t |
2853 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2854 | vqsubq_u16 (uint16x8_t __a, uint16x8_t __b) |
2855 | { | |
201e54b7 | 2856 | return __builtin_aarch64_uqsubv8hi_uuu (__a, __b); |
df401d54 | 2857 | } |
2858 | ||
49ab9992 | 2859 | __extension__ extern __inline uint32x4_t |
2860 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2861 | vqsubq_u32 (uint32x4_t __a, uint32x4_t __b) |
2862 | { | |
201e54b7 | 2863 | return __builtin_aarch64_uqsubv4si_uuu (__a, __b); |
df401d54 | 2864 | } |
2865 | ||
49ab9992 | 2866 | __extension__ extern __inline uint64x2_t |
2867 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2868 | vqsubq_u64 (uint64x2_t __a, uint64x2_t __b) |
2869 | { | |
201e54b7 | 2870 | return __builtin_aarch64_uqsubv2di_uuu (__a, __b); |
df401d54 | 2871 | } |
2872 | ||
49ab9992 | 2873 | __extension__ extern __inline int8x8_t |
2874 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2875 | vqneg_s8 (int8x8_t __a) |
2876 | { | |
2877 | return (int8x8_t) __builtin_aarch64_sqnegv8qi (__a); | |
2878 | } | |
2879 | ||
49ab9992 | 2880 | __extension__ extern __inline int16x4_t |
2881 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2882 | vqneg_s16 (int16x4_t __a) |
2883 | { | |
2884 | return (int16x4_t) __builtin_aarch64_sqnegv4hi (__a); | |
2885 | } | |
2886 | ||
49ab9992 | 2887 | __extension__ extern __inline int32x2_t |
2888 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2889 | vqneg_s32 (int32x2_t __a) |
2890 | { | |
2891 | return (int32x2_t) __builtin_aarch64_sqnegv2si (__a); | |
2892 | } | |
2893 | ||
49ab9992 | 2894 | __extension__ extern __inline int64x1_t |
2895 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a9aae8ec | 2896 | vqneg_s64 (int64x1_t __a) |
2897 | { | |
12fc7207 | 2898 | return (int64x1_t) {__builtin_aarch64_sqnegdi (__a[0])}; |
a9aae8ec | 2899 | } |
2900 | ||
49ab9992 | 2901 | __extension__ extern __inline int8x16_t |
2902 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2903 | vqnegq_s8 (int8x16_t __a) |
2904 | { | |
2905 | return (int8x16_t) __builtin_aarch64_sqnegv16qi (__a); | |
2906 | } | |
2907 | ||
49ab9992 | 2908 | __extension__ extern __inline int16x8_t |
2909 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2910 | vqnegq_s16 (int16x8_t __a) |
2911 | { | |
2912 | return (int16x8_t) __builtin_aarch64_sqnegv8hi (__a); | |
2913 | } | |
2914 | ||
49ab9992 | 2915 | __extension__ extern __inline int32x4_t |
2916 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2917 | vqnegq_s32 (int32x4_t __a) |
2918 | { | |
2919 | return (int32x4_t) __builtin_aarch64_sqnegv4si (__a); | |
2920 | } | |
2921 | ||
49ab9992 | 2922 | __extension__ extern __inline int8x8_t |
2923 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2924 | vqabs_s8 (int8x8_t __a) |
2925 | { | |
2926 | return (int8x8_t) __builtin_aarch64_sqabsv8qi (__a); | |
2927 | } | |
2928 | ||
49ab9992 | 2929 | __extension__ extern __inline int16x4_t |
2930 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2931 | vqabs_s16 (int16x4_t __a) |
2932 | { | |
2933 | return (int16x4_t) __builtin_aarch64_sqabsv4hi (__a); | |
2934 | } | |
2935 | ||
49ab9992 | 2936 | __extension__ extern __inline int32x2_t |
2937 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2938 | vqabs_s32 (int32x2_t __a) |
2939 | { | |
2940 | return (int32x2_t) __builtin_aarch64_sqabsv2si (__a); | |
2941 | } | |
2942 | ||
49ab9992 | 2943 | __extension__ extern __inline int64x1_t |
2944 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a9aae8ec | 2945 | vqabs_s64 (int64x1_t __a) |
2946 | { | |
12fc7207 | 2947 | return (int64x1_t) {__builtin_aarch64_sqabsdi (__a[0])}; |
a9aae8ec | 2948 | } |
2949 | ||
49ab9992 | 2950 | __extension__ extern __inline int8x16_t |
2951 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2952 | vqabsq_s8 (int8x16_t __a) |
2953 | { | |
2954 | return (int8x16_t) __builtin_aarch64_sqabsv16qi (__a); | |
2955 | } | |
2956 | ||
49ab9992 | 2957 | __extension__ extern __inline int16x8_t |
2958 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2959 | vqabsq_s16 (int16x8_t __a) |
2960 | { | |
2961 | return (int16x8_t) __builtin_aarch64_sqabsv8hi (__a); | |
2962 | } | |
2963 | ||
49ab9992 | 2964 | __extension__ extern __inline int32x4_t |
2965 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2966 | vqabsq_s32 (int32x4_t __a) |
2967 | { | |
2968 | return (int32x4_t) __builtin_aarch64_sqabsv4si (__a); | |
2969 | } | |
2970 | ||
49ab9992 | 2971 | __extension__ extern __inline int16x4_t |
2972 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2973 | vqdmulh_s16 (int16x4_t __a, int16x4_t __b) |
2974 | { | |
2975 | return (int16x4_t) __builtin_aarch64_sqdmulhv4hi (__a, __b); | |
2976 | } | |
2977 | ||
49ab9992 | 2978 | __extension__ extern __inline int32x2_t |
2979 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2980 | vqdmulh_s32 (int32x2_t __a, int32x2_t __b) |
2981 | { | |
2982 | return (int32x2_t) __builtin_aarch64_sqdmulhv2si (__a, __b); | |
2983 | } | |
2984 | ||
49ab9992 | 2985 | __extension__ extern __inline int16x8_t |
2986 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2987 | vqdmulhq_s16 (int16x8_t __a, int16x8_t __b) |
2988 | { | |
2989 | return (int16x8_t) __builtin_aarch64_sqdmulhv8hi (__a, __b); | |
2990 | } | |
2991 | ||
49ab9992 | 2992 | __extension__ extern __inline int32x4_t |
2993 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 2994 | vqdmulhq_s32 (int32x4_t __a, int32x4_t __b) |
2995 | { | |
2996 | return (int32x4_t) __builtin_aarch64_sqdmulhv4si (__a, __b); | |
2997 | } | |
2998 | ||
49ab9992 | 2999 | __extension__ extern __inline int16x4_t |
3000 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3001 | vqrdmulh_s16 (int16x4_t __a, int16x4_t __b) |
3002 | { | |
3003 | return (int16x4_t) __builtin_aarch64_sqrdmulhv4hi (__a, __b); | |
3004 | } | |
3005 | ||
49ab9992 | 3006 | __extension__ extern __inline int32x2_t |
3007 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3008 | vqrdmulh_s32 (int32x2_t __a, int32x2_t __b) |
3009 | { | |
3010 | return (int32x2_t) __builtin_aarch64_sqrdmulhv2si (__a, __b); | |
3011 | } | |
3012 | ||
49ab9992 | 3013 | __extension__ extern __inline int16x8_t |
3014 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3015 | vqrdmulhq_s16 (int16x8_t __a, int16x8_t __b) |
3016 | { | |
3017 | return (int16x8_t) __builtin_aarch64_sqrdmulhv8hi (__a, __b); | |
3018 | } | |
3019 | ||
49ab9992 | 3020 | __extension__ extern __inline int32x4_t |
3021 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3022 | vqrdmulhq_s32 (int32x4_t __a, int32x4_t __b) |
3023 | { | |
3024 | return (int32x4_t) __builtin_aarch64_sqrdmulhv4si (__a, __b); | |
3025 | } | |
3026 | ||
49ab9992 | 3027 | __extension__ extern __inline int8x8_t |
3028 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3029 | vcreate_s8 (uint64_t __a) |
3030 | { | |
3031 | return (int8x8_t) __a; | |
3032 | } | |
3033 | ||
49ab9992 | 3034 | __extension__ extern __inline int16x4_t |
3035 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3036 | vcreate_s16 (uint64_t __a) |
3037 | { | |
3038 | return (int16x4_t) __a; | |
3039 | } | |
3040 | ||
49ab9992 | 3041 | __extension__ extern __inline int32x2_t |
3042 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3043 | vcreate_s32 (uint64_t __a) |
3044 | { | |
3045 | return (int32x2_t) __a; | |
3046 | } | |
3047 | ||
49ab9992 | 3048 | __extension__ extern __inline int64x1_t |
3049 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3050 | vcreate_s64 (uint64_t __a) |
3051 | { | |
12fc7207 | 3052 | return (int64x1_t) {__a}; |
df401d54 | 3053 | } |
3054 | ||
49ab9992 | 3055 | __extension__ extern __inline float16x4_t |
3056 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 3057 | vcreate_f16 (uint64_t __a) |
3058 | { | |
3059 | return (float16x4_t) __a; | |
3060 | } | |
3061 | ||
49ab9992 | 3062 | __extension__ extern __inline float32x2_t |
3063 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3064 | vcreate_f32 (uint64_t __a) |
3065 | { | |
3066 | return (float32x2_t) __a; | |
3067 | } | |
3068 | ||
49ab9992 | 3069 | __extension__ extern __inline uint8x8_t |
3070 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3071 | vcreate_u8 (uint64_t __a) |
3072 | { | |
3073 | return (uint8x8_t) __a; | |
3074 | } | |
3075 | ||
49ab9992 | 3076 | __extension__ extern __inline uint16x4_t |
3077 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3078 | vcreate_u16 (uint64_t __a) |
3079 | { | |
3080 | return (uint16x4_t) __a; | |
3081 | } | |
3082 | ||
49ab9992 | 3083 | __extension__ extern __inline uint32x2_t |
3084 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3085 | vcreate_u32 (uint64_t __a) |
3086 | { | |
3087 | return (uint32x2_t) __a; | |
3088 | } | |
3089 | ||
49ab9992 | 3090 | __extension__ extern __inline uint64x1_t |
3091 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3092 | vcreate_u64 (uint64_t __a) |
3093 | { | |
12fc7207 | 3094 | return (uint64x1_t) {__a}; |
df401d54 | 3095 | } |
3096 | ||
49ab9992 | 3097 | __extension__ extern __inline float64x1_t |
3098 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3099 | vcreate_f64 (uint64_t __a) |
3100 | { | |
d1045960 | 3101 | return (float64x1_t) __a; |
df401d54 | 3102 | } |
3103 | ||
49ab9992 | 3104 | __extension__ extern __inline poly8x8_t |
3105 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3106 | vcreate_p8 (uint64_t __a) |
3107 | { | |
3108 | return (poly8x8_t) __a; | |
3109 | } | |
3110 | ||
49ab9992 | 3111 | __extension__ extern __inline poly16x4_t |
3112 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3113 | vcreate_p16 (uint64_t __a) |
3114 | { | |
3115 | return (poly16x4_t) __a; | |
3116 | } | |
3117 | ||
d4f47414 | 3118 | __extension__ extern __inline poly64x1_t |
3119 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3120 | vcreate_p64 (uint64_t __a) | |
3121 | { | |
3122 | return (poly64x1_t) __a; | |
3123 | } | |
3124 | ||
5e7bd7ac | 3125 | /* vget_lane */ |
3126 | ||
49ab9992 | 3127 | __extension__ extern __inline float16_t |
3128 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
aea31229 | 3129 | vget_lane_f16 (float16x4_t __a, const int __b) |
3130 | { | |
3131 | return __aarch64_vget_lane_any (__a, __b); | |
3132 | } | |
3133 | ||
49ab9992 | 3134 | __extension__ extern __inline float32_t |
3135 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5e7bd7ac | 3136 | vget_lane_f32 (float32x2_t __a, const int __b) |
3137 | { | |
12e851f9 | 3138 | return __aarch64_vget_lane_any (__a, __b); |
5e7bd7ac | 3139 | } |
3140 | ||
49ab9992 | 3141 | __extension__ extern __inline float64_t |
3142 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5e7bd7ac | 3143 | vget_lane_f64 (float64x1_t __a, const int __b) |
3144 | { | |
12e851f9 | 3145 | return __aarch64_vget_lane_any (__a, __b); |
5e7bd7ac | 3146 | } |
3147 | ||
49ab9992 | 3148 | __extension__ extern __inline poly8_t |
3149 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5e7bd7ac | 3150 | vget_lane_p8 (poly8x8_t __a, const int __b) |
3151 | { | |
12e851f9 | 3152 | return __aarch64_vget_lane_any (__a, __b); |
5e7bd7ac | 3153 | } |
3154 | ||
49ab9992 | 3155 | __extension__ extern __inline poly16_t |
3156 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5e7bd7ac | 3157 | vget_lane_p16 (poly16x4_t __a, const int __b) |
3158 | { | |
12e851f9 | 3159 | return __aarch64_vget_lane_any (__a, __b); |
5e7bd7ac | 3160 | } |
3161 | ||
d4f47414 | 3162 | __extension__ extern __inline poly64_t |
3163 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3164 | vget_lane_p64 (poly64x1_t __a, const int __b) | |
3165 | { | |
3166 | return __aarch64_vget_lane_any (__a, __b); | |
3167 | } | |
3168 | ||
49ab9992 | 3169 | __extension__ extern __inline int8_t |
3170 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3171 | vget_lane_s8 (int8x8_t __a, const int __b) |
3172 | { | |
12e851f9 | 3173 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3174 | } |
3175 | ||
49ab9992 | 3176 | __extension__ extern __inline int16_t |
3177 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3178 | vget_lane_s16 (int16x4_t __a, const int __b) |
3179 | { | |
12e851f9 | 3180 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3181 | } |
3182 | ||
49ab9992 | 3183 | __extension__ extern __inline int32_t |
3184 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3185 | vget_lane_s32 (int32x2_t __a, const int __b) |
3186 | { | |
12e851f9 | 3187 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3188 | } |
3189 | ||
49ab9992 | 3190 | __extension__ extern __inline int64_t |
3191 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5e7bd7ac | 3192 | vget_lane_s64 (int64x1_t __a, const int __b) |
df401d54 | 3193 | { |
12e851f9 | 3194 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3195 | } |
3196 | ||
49ab9992 | 3197 | __extension__ extern __inline uint8_t |
3198 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3199 | vget_lane_u8 (uint8x8_t __a, const int __b) |
3200 | { | |
12e851f9 | 3201 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3202 | } |
3203 | ||
49ab9992 | 3204 | __extension__ extern __inline uint16_t |
3205 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3206 | vget_lane_u16 (uint16x4_t __a, const int __b) |
3207 | { | |
12e851f9 | 3208 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3209 | } |
3210 | ||
49ab9992 | 3211 | __extension__ extern __inline uint32_t |
3212 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3213 | vget_lane_u32 (uint32x2_t __a, const int __b) |
3214 | { | |
12e851f9 | 3215 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3216 | } |
3217 | ||
49ab9992 | 3218 | __extension__ extern __inline uint64_t |
3219 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5e7bd7ac | 3220 | vget_lane_u64 (uint64x1_t __a, const int __b) |
df401d54 | 3221 | { |
12e851f9 | 3222 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3223 | } |
3224 | ||
5e7bd7ac | 3225 | /* vgetq_lane */ |
3226 | ||
49ab9992 | 3227 | __extension__ extern __inline float16_t |
3228 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
aea31229 | 3229 | vgetq_lane_f16 (float16x8_t __a, const int __b) |
3230 | { | |
3231 | return __aarch64_vget_lane_any (__a, __b); | |
3232 | } | |
3233 | ||
49ab9992 | 3234 | __extension__ extern __inline float32_t |
3235 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5e7bd7ac | 3236 | vgetq_lane_f32 (float32x4_t __a, const int __b) |
df401d54 | 3237 | { |
12e851f9 | 3238 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3239 | } |
3240 | ||
49ab9992 | 3241 | __extension__ extern __inline float64_t |
3242 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5e7bd7ac | 3243 | vgetq_lane_f64 (float64x2_t __a, const int __b) |
df401d54 | 3244 | { |
12e851f9 | 3245 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3246 | } |
3247 | ||
49ab9992 | 3248 | __extension__ extern __inline poly8_t |
3249 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5e7bd7ac | 3250 | vgetq_lane_p8 (poly8x16_t __a, const int __b) |
3251 | { | |
12e851f9 | 3252 | return __aarch64_vget_lane_any (__a, __b); |
5e7bd7ac | 3253 | } |
3254 | ||
49ab9992 | 3255 | __extension__ extern __inline poly16_t |
3256 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5e7bd7ac | 3257 | vgetq_lane_p16 (poly16x8_t __a, const int __b) |
df401d54 | 3258 | { |
12e851f9 | 3259 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3260 | } |
3261 | ||
d4f47414 | 3262 | __extension__ extern __inline poly64_t |
3263 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3264 | vgetq_lane_p64 (poly64x2_t __a, const int __b) | |
3265 | { | |
3266 | return __aarch64_vget_lane_any (__a, __b); | |
3267 | } | |
3268 | ||
49ab9992 | 3269 | __extension__ extern __inline int8_t |
3270 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3271 | vgetq_lane_s8 (int8x16_t __a, const int __b) |
3272 | { | |
12e851f9 | 3273 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3274 | } |
3275 | ||
49ab9992 | 3276 | __extension__ extern __inline int16_t |
3277 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3278 | vgetq_lane_s16 (int16x8_t __a, const int __b) |
3279 | { | |
12e851f9 | 3280 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3281 | } |
3282 | ||
49ab9992 | 3283 | __extension__ extern __inline int32_t |
3284 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3285 | vgetq_lane_s32 (int32x4_t __a, const int __b) |
3286 | { | |
12e851f9 | 3287 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3288 | } |
3289 | ||
49ab9992 | 3290 | __extension__ extern __inline int64_t |
3291 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5e7bd7ac | 3292 | vgetq_lane_s64 (int64x2_t __a, const int __b) |
df401d54 | 3293 | { |
12e851f9 | 3294 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3295 | } |
3296 | ||
49ab9992 | 3297 | __extension__ extern __inline uint8_t |
3298 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3299 | vgetq_lane_u8 (uint8x16_t __a, const int __b) |
3300 | { | |
12e851f9 | 3301 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3302 | } |
3303 | ||
49ab9992 | 3304 | __extension__ extern __inline uint16_t |
3305 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3306 | vgetq_lane_u16 (uint16x8_t __a, const int __b) |
3307 | { | |
12e851f9 | 3308 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3309 | } |
3310 | ||
49ab9992 | 3311 | __extension__ extern __inline uint32_t |
3312 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3313 | vgetq_lane_u32 (uint32x4_t __a, const int __b) |
3314 | { | |
12e851f9 | 3315 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3316 | } |
3317 | ||
49ab9992 | 3318 | __extension__ extern __inline uint64_t |
3319 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3320 | vgetq_lane_u64 (uint64x2_t __a, const int __b) |
3321 | { | |
12e851f9 | 3322 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 3323 | } |
3324 | ||
5e7bd7ac | 3325 | /* vreinterpret */ |
3326 | ||
49ab9992 | 3327 | __extension__ extern __inline poly8x8_t |
3328 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 3329 | vreinterpret_p8_f16 (float16x4_t __a) |
3330 | { | |
3331 | return (poly8x8_t) __a; | |
3332 | } | |
3333 | ||
49ab9992 | 3334 | __extension__ extern __inline poly8x8_t |
3335 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 3336 | vreinterpret_p8_f64 (float64x1_t __a) |
3337 | { | |
7c18bc4f | 3338 | return (poly8x8_t) __a; |
fe44ff96 | 3339 | } |
3340 | ||
49ab9992 | 3341 | __extension__ extern __inline poly8x8_t |
3342 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3343 | vreinterpret_p8_s8 (int8x8_t __a) |
3344 | { | |
dbdcebb4 | 3345 | return (poly8x8_t) __a; |
df401d54 | 3346 | } |
3347 | ||
49ab9992 | 3348 | __extension__ extern __inline poly8x8_t |
3349 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3350 | vreinterpret_p8_s16 (int16x4_t __a) |
3351 | { | |
dbdcebb4 | 3352 | return (poly8x8_t) __a; |
df401d54 | 3353 | } |
3354 | ||
49ab9992 | 3355 | __extension__ extern __inline poly8x8_t |
3356 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3357 | vreinterpret_p8_s32 (int32x2_t __a) |
3358 | { | |
dbdcebb4 | 3359 | return (poly8x8_t) __a; |
df401d54 | 3360 | } |
3361 | ||
49ab9992 | 3362 | __extension__ extern __inline poly8x8_t |
3363 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3364 | vreinterpret_p8_s64 (int64x1_t __a) |
3365 | { | |
dbdcebb4 | 3366 | return (poly8x8_t) __a; |
df401d54 | 3367 | } |
3368 | ||
49ab9992 | 3369 | __extension__ extern __inline poly8x8_t |
3370 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3371 | vreinterpret_p8_f32 (float32x2_t __a) |
3372 | { | |
dbdcebb4 | 3373 | return (poly8x8_t) __a; |
df401d54 | 3374 | } |
3375 | ||
49ab9992 | 3376 | __extension__ extern __inline poly8x8_t |
3377 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3378 | vreinterpret_p8_u8 (uint8x8_t __a) |
3379 | { | |
dbdcebb4 | 3380 | return (poly8x8_t) __a; |
df401d54 | 3381 | } |
3382 | ||
49ab9992 | 3383 | __extension__ extern __inline poly8x8_t |
3384 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3385 | vreinterpret_p8_u16 (uint16x4_t __a) |
3386 | { | |
dbdcebb4 | 3387 | return (poly8x8_t) __a; |
df401d54 | 3388 | } |
3389 | ||
49ab9992 | 3390 | __extension__ extern __inline poly8x8_t |
3391 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3392 | vreinterpret_p8_u32 (uint32x2_t __a) |
3393 | { | |
dbdcebb4 | 3394 | return (poly8x8_t) __a; |
df401d54 | 3395 | } |
3396 | ||
49ab9992 | 3397 | __extension__ extern __inline poly8x8_t |
3398 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3399 | vreinterpret_p8_u64 (uint64x1_t __a) |
3400 | { | |
dbdcebb4 | 3401 | return (poly8x8_t) __a; |
df401d54 | 3402 | } |
3403 | ||
49ab9992 | 3404 | __extension__ extern __inline poly8x8_t |
3405 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3406 | vreinterpret_p8_p16 (poly16x4_t __a) |
3407 | { | |
dbdcebb4 | 3408 | return (poly8x8_t) __a; |
df401d54 | 3409 | } |
3410 | ||
d4f47414 | 3411 | __extension__ extern __inline poly8x8_t |
3412 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3413 | vreinterpret_p8_p64 (poly64x1_t __a) | |
3414 | { | |
3415 | return (poly8x8_t) __a; | |
3416 | } | |
3417 | ||
49ab9992 | 3418 | __extension__ extern __inline poly8x16_t |
3419 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 3420 | vreinterpretq_p8_f64 (float64x2_t __a) |
3421 | { | |
3422 | return (poly8x16_t) __a; | |
3423 | } | |
3424 | ||
49ab9992 | 3425 | __extension__ extern __inline poly8x16_t |
3426 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3427 | vreinterpretq_p8_s8 (int8x16_t __a) |
3428 | { | |
dbdcebb4 | 3429 | return (poly8x16_t) __a; |
df401d54 | 3430 | } |
3431 | ||
49ab9992 | 3432 | __extension__ extern __inline poly8x16_t |
3433 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3434 | vreinterpretq_p8_s16 (int16x8_t __a) |
3435 | { | |
dbdcebb4 | 3436 | return (poly8x16_t) __a; |
df401d54 | 3437 | } |
3438 | ||
49ab9992 | 3439 | __extension__ extern __inline poly8x16_t |
3440 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3441 | vreinterpretq_p8_s32 (int32x4_t __a) |
3442 | { | |
dbdcebb4 | 3443 | return (poly8x16_t) __a; |
df401d54 | 3444 | } |
3445 | ||
49ab9992 | 3446 | __extension__ extern __inline poly8x16_t |
3447 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3448 | vreinterpretq_p8_s64 (int64x2_t __a) |
3449 | { | |
dbdcebb4 | 3450 | return (poly8x16_t) __a; |
df401d54 | 3451 | } |
3452 | ||
49ab9992 | 3453 | __extension__ extern __inline poly8x16_t |
3454 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 3455 | vreinterpretq_p8_f16 (float16x8_t __a) |
3456 | { | |
3457 | return (poly8x16_t) __a; | |
3458 | } | |
3459 | ||
49ab9992 | 3460 | __extension__ extern __inline poly8x16_t |
3461 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3462 | vreinterpretq_p8_f32 (float32x4_t __a) |
3463 | { | |
dbdcebb4 | 3464 | return (poly8x16_t) __a; |
df401d54 | 3465 | } |
3466 | ||
49ab9992 | 3467 | __extension__ extern __inline poly8x16_t |
3468 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3469 | vreinterpretq_p8_u8 (uint8x16_t __a) |
3470 | { | |
dbdcebb4 | 3471 | return (poly8x16_t) __a; |
df401d54 | 3472 | } |
3473 | ||
49ab9992 | 3474 | __extension__ extern __inline poly8x16_t |
3475 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3476 | vreinterpretq_p8_u16 (uint16x8_t __a) |
3477 | { | |
dbdcebb4 | 3478 | return (poly8x16_t) __a; |
df401d54 | 3479 | } |
3480 | ||
49ab9992 | 3481 | __extension__ extern __inline poly8x16_t |
3482 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3483 | vreinterpretq_p8_u32 (uint32x4_t __a) |
3484 | { | |
dbdcebb4 | 3485 | return (poly8x16_t) __a; |
df401d54 | 3486 | } |
3487 | ||
49ab9992 | 3488 | __extension__ extern __inline poly8x16_t |
3489 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3490 | vreinterpretq_p8_u64 (uint64x2_t __a) |
3491 | { | |
dbdcebb4 | 3492 | return (poly8x16_t) __a; |
df401d54 | 3493 | } |
3494 | ||
49ab9992 | 3495 | __extension__ extern __inline poly8x16_t |
3496 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3497 | vreinterpretq_p8_p16 (poly16x8_t __a) |
3498 | { | |
dbdcebb4 | 3499 | return (poly8x16_t) __a; |
df401d54 | 3500 | } |
3501 | ||
d4f47414 | 3502 | __extension__ extern __inline poly8x16_t |
3503 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3504 | vreinterpretq_p8_p64 (poly64x2_t __a) | |
3505 | { | |
3506 | return (poly8x16_t) __a; | |
3507 | } | |
3508 | ||
97789447 | 3509 | __extension__ extern __inline poly8x16_t |
3510 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3511 | vreinterpretq_p8_p128 (poly128_t __a) | |
3512 | { | |
3513 | return (poly8x16_t)__a; | |
3514 | } | |
3515 | ||
49ab9992 | 3516 | __extension__ extern __inline poly16x4_t |
3517 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 3518 | vreinterpret_p16_f16 (float16x4_t __a) |
3519 | { | |
3520 | return (poly16x4_t) __a; | |
3521 | } | |
3522 | ||
49ab9992 | 3523 | __extension__ extern __inline poly16x4_t |
3524 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 3525 | vreinterpret_p16_f64 (float64x1_t __a) |
3526 | { | |
7c18bc4f | 3527 | return (poly16x4_t) __a; |
fe44ff96 | 3528 | } |
3529 | ||
49ab9992 | 3530 | __extension__ extern __inline poly16x4_t |
3531 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3532 | vreinterpret_p16_s8 (int8x8_t __a) |
3533 | { | |
dbdcebb4 | 3534 | return (poly16x4_t) __a; |
df401d54 | 3535 | } |
3536 | ||
49ab9992 | 3537 | __extension__ extern __inline poly16x4_t |
3538 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3539 | vreinterpret_p16_s16 (int16x4_t __a) |
3540 | { | |
dbdcebb4 | 3541 | return (poly16x4_t) __a; |
df401d54 | 3542 | } |
3543 | ||
49ab9992 | 3544 | __extension__ extern __inline poly16x4_t |
3545 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3546 | vreinterpret_p16_s32 (int32x2_t __a) |
3547 | { | |
dbdcebb4 | 3548 | return (poly16x4_t) __a; |
df401d54 | 3549 | } |
3550 | ||
49ab9992 | 3551 | __extension__ extern __inline poly16x4_t |
3552 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3553 | vreinterpret_p16_s64 (int64x1_t __a) |
3554 | { | |
dbdcebb4 | 3555 | return (poly16x4_t) __a; |
df401d54 | 3556 | } |
3557 | ||
49ab9992 | 3558 | __extension__ extern __inline poly16x4_t |
3559 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3560 | vreinterpret_p16_f32 (float32x2_t __a) |
3561 | { | |
dbdcebb4 | 3562 | return (poly16x4_t) __a; |
df401d54 | 3563 | } |
3564 | ||
49ab9992 | 3565 | __extension__ extern __inline poly16x4_t |
3566 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3567 | vreinterpret_p16_u8 (uint8x8_t __a) |
3568 | { | |
dbdcebb4 | 3569 | return (poly16x4_t) __a; |
df401d54 | 3570 | } |
3571 | ||
49ab9992 | 3572 | __extension__ extern __inline poly16x4_t |
3573 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3574 | vreinterpret_p16_u16 (uint16x4_t __a) |
3575 | { | |
dbdcebb4 | 3576 | return (poly16x4_t) __a; |
df401d54 | 3577 | } |
3578 | ||
49ab9992 | 3579 | __extension__ extern __inline poly16x4_t |
3580 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3581 | vreinterpret_p16_u32 (uint32x2_t __a) |
3582 | { | |
dbdcebb4 | 3583 | return (poly16x4_t) __a; |
df401d54 | 3584 | } |
3585 | ||
49ab9992 | 3586 | __extension__ extern __inline poly16x4_t |
3587 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3588 | vreinterpret_p16_u64 (uint64x1_t __a) |
3589 | { | |
dbdcebb4 | 3590 | return (poly16x4_t) __a; |
df401d54 | 3591 | } |
3592 | ||
49ab9992 | 3593 | __extension__ extern __inline poly16x4_t |
3594 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3595 | vreinterpret_p16_p8 (poly8x8_t __a) |
3596 | { | |
dbdcebb4 | 3597 | return (poly16x4_t) __a; |
df401d54 | 3598 | } |
3599 | ||
d4f47414 | 3600 | __extension__ extern __inline poly16x4_t |
3601 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3602 | vreinterpret_p16_p64 (poly64x1_t __a) | |
3603 | { | |
3604 | return (poly16x4_t) __a; | |
3605 | } | |
3606 | ||
49ab9992 | 3607 | __extension__ extern __inline poly16x8_t |
3608 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 3609 | vreinterpretq_p16_f64 (float64x2_t __a) |
3610 | { | |
3611 | return (poly16x8_t) __a; | |
3612 | } | |
3613 | ||
49ab9992 | 3614 | __extension__ extern __inline poly16x8_t |
3615 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3616 | vreinterpretq_p16_s8 (int8x16_t __a) |
3617 | { | |
dbdcebb4 | 3618 | return (poly16x8_t) __a; |
df401d54 | 3619 | } |
3620 | ||
49ab9992 | 3621 | __extension__ extern __inline poly16x8_t |
3622 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3623 | vreinterpretq_p16_s16 (int16x8_t __a) |
3624 | { | |
dbdcebb4 | 3625 | return (poly16x8_t) __a; |
df401d54 | 3626 | } |
3627 | ||
49ab9992 | 3628 | __extension__ extern __inline poly16x8_t |
3629 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3630 | vreinterpretq_p16_s32 (int32x4_t __a) |
3631 | { | |
dbdcebb4 | 3632 | return (poly16x8_t) __a; |
df401d54 | 3633 | } |
3634 | ||
49ab9992 | 3635 | __extension__ extern __inline poly16x8_t |
3636 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3637 | vreinterpretq_p16_s64 (int64x2_t __a) |
3638 | { | |
dbdcebb4 | 3639 | return (poly16x8_t) __a; |
df401d54 | 3640 | } |
3641 | ||
49ab9992 | 3642 | __extension__ extern __inline poly16x8_t |
3643 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 3644 | vreinterpretq_p16_f16 (float16x8_t __a) |
3645 | { | |
3646 | return (poly16x8_t) __a; | |
3647 | } | |
3648 | ||
49ab9992 | 3649 | __extension__ extern __inline poly16x8_t |
3650 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3651 | vreinterpretq_p16_f32 (float32x4_t __a) |
3652 | { | |
dbdcebb4 | 3653 | return (poly16x8_t) __a; |
df401d54 | 3654 | } |
3655 | ||
49ab9992 | 3656 | __extension__ extern __inline poly16x8_t |
3657 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3658 | vreinterpretq_p16_u8 (uint8x16_t __a) |
3659 | { | |
dbdcebb4 | 3660 | return (poly16x8_t) __a; |
df401d54 | 3661 | } |
3662 | ||
49ab9992 | 3663 | __extension__ extern __inline poly16x8_t |
3664 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3665 | vreinterpretq_p16_u16 (uint16x8_t __a) |
3666 | { | |
dbdcebb4 | 3667 | return (poly16x8_t) __a; |
df401d54 | 3668 | } |
3669 | ||
49ab9992 | 3670 | __extension__ extern __inline poly16x8_t |
3671 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3672 | vreinterpretq_p16_u32 (uint32x4_t __a) |
3673 | { | |
dbdcebb4 | 3674 | return (poly16x8_t) __a; |
df401d54 | 3675 | } |
3676 | ||
49ab9992 | 3677 | __extension__ extern __inline poly16x8_t |
3678 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3679 | vreinterpretq_p16_u64 (uint64x2_t __a) |
3680 | { | |
dbdcebb4 | 3681 | return (poly16x8_t) __a; |
df401d54 | 3682 | } |
3683 | ||
49ab9992 | 3684 | __extension__ extern __inline poly16x8_t |
3685 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 3686 | vreinterpretq_p16_p8 (poly8x16_t __a) |
3687 | { | |
dbdcebb4 | 3688 | return (poly16x8_t) __a; |
df401d54 | 3689 | } |
3690 | ||
d4f47414 | 3691 | __extension__ extern __inline poly16x8_t |
3692 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3693 | vreinterpretq_p16_p64 (poly64x2_t __a) | |
3694 | { | |
3695 | return (poly16x8_t) __a; | |
3696 | } | |
3697 | ||
97789447 | 3698 | __extension__ extern __inline poly16x8_t |
3699 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3700 | vreinterpretq_p16_p128 (poly128_t __a) | |
3701 | { | |
3702 | return (poly16x8_t)__a; | |
3703 | } | |
3704 | ||
d4f47414 | 3705 | __extension__ extern __inline poly64x1_t |
3706 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3707 | vreinterpret_p64_f16 (float16x4_t __a) | |
3708 | { | |
3709 | return (poly64x1_t) __a; | |
3710 | } | |
3711 | ||
3712 | __extension__ extern __inline poly64x1_t | |
3713 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3714 | vreinterpret_p64_f64 (float64x1_t __a) | |
3715 | { | |
3716 | return (poly64x1_t) __a; | |
3717 | } | |
3718 | ||
3719 | __extension__ extern __inline poly64x1_t | |
3720 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3721 | vreinterpret_p64_s8 (int8x8_t __a) | |
3722 | { | |
3723 | return (poly64x1_t) __a; | |
3724 | } | |
3725 | ||
3726 | __extension__ extern __inline poly64x1_t | |
3727 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3728 | vreinterpret_p64_s16 (int16x4_t __a) | |
3729 | { | |
3730 | return (poly64x1_t) __a; | |
3731 | } | |
3732 | ||
3733 | __extension__ extern __inline poly64x1_t | |
3734 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3735 | vreinterpret_p64_s32 (int32x2_t __a) | |
3736 | { | |
3737 | return (poly64x1_t) __a; | |
3738 | } | |
3739 | ||
3740 | __extension__ extern __inline poly64x1_t | |
3741 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3742 | vreinterpret_p64_s64 (int64x1_t __a) | |
3743 | { | |
3744 | return (poly64x1_t) __a; | |
3745 | } | |
3746 | ||
3747 | __extension__ extern __inline poly64x1_t | |
3748 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3749 | vreinterpret_p64_f32 (float32x2_t __a) | |
3750 | { | |
3751 | return (poly64x1_t) __a; | |
3752 | } | |
3753 | ||
3754 | __extension__ extern __inline poly64x1_t | |
3755 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3756 | vreinterpret_p64_u8 (uint8x8_t __a) | |
3757 | { | |
3758 | return (poly64x1_t) __a; | |
3759 | } | |
3760 | ||
3761 | __extension__ extern __inline poly64x1_t | |
3762 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3763 | vreinterpret_p64_u16 (uint16x4_t __a) | |
3764 | { | |
3765 | return (poly64x1_t) __a; | |
3766 | } | |
3767 | ||
3768 | __extension__ extern __inline poly64x1_t | |
3769 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3770 | vreinterpret_p64_u32 (uint32x2_t __a) | |
3771 | { | |
3772 | return (poly64x1_t) __a; | |
3773 | } | |
3774 | ||
3775 | __extension__ extern __inline poly64x1_t | |
3776 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3777 | vreinterpret_p64_u64 (uint64x1_t __a) | |
3778 | { | |
3779 | return (poly64x1_t) __a; | |
3780 | } | |
3781 | ||
3782 | __extension__ extern __inline poly64x1_t | |
3783 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3784 | vreinterpret_p64_p8 (poly8x8_t __a) | |
3785 | { | |
3786 | return (poly64x1_t) __a; | |
3787 | } | |
3788 | ||
97789447 | 3789 | __extension__ extern __inline poly64x1_t |
3790 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3791 | vreinterpret_p64_p16 (poly16x4_t __a) | |
3792 | { | |
3793 | return (poly64x1_t)__a; | |
3794 | } | |
3795 | ||
d4f47414 | 3796 | __extension__ extern __inline poly64x2_t |
3797 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3798 | vreinterpretq_p64_f64 (float64x2_t __a) | |
3799 | { | |
3800 | return (poly64x2_t) __a; | |
3801 | } | |
3802 | ||
3803 | __extension__ extern __inline poly64x2_t | |
3804 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3805 | vreinterpretq_p64_s8 (int8x16_t __a) | |
3806 | { | |
3807 | return (poly64x2_t) __a; | |
3808 | } | |
3809 | ||
3810 | __extension__ extern __inline poly64x2_t | |
3811 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3812 | vreinterpretq_p64_s16 (int16x8_t __a) | |
3813 | { | |
3814 | return (poly64x2_t) __a; | |
3815 | } | |
3816 | ||
3817 | __extension__ extern __inline poly64x2_t | |
3818 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3819 | vreinterpretq_p64_s32 (int32x4_t __a) | |
3820 | { | |
3821 | return (poly64x2_t) __a; | |
3822 | } | |
3823 | ||
3824 | __extension__ extern __inline poly64x2_t | |
3825 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3826 | vreinterpretq_p64_s64 (int64x2_t __a) | |
3827 | { | |
3828 | return (poly64x2_t) __a; | |
3829 | } | |
3830 | ||
3831 | __extension__ extern __inline poly64x2_t | |
3832 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3833 | vreinterpretq_p64_f16 (float16x8_t __a) | |
3834 | { | |
3835 | return (poly64x2_t) __a; | |
3836 | } | |
3837 | ||
3838 | __extension__ extern __inline poly64x2_t | |
3839 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3840 | vreinterpretq_p64_f32 (float32x4_t __a) | |
3841 | { | |
3842 | return (poly64x2_t) __a; | |
3843 | } | |
3844 | ||
97789447 | 3845 | __extension__ extern __inline poly64x2_t |
3846 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3847 | vreinterpretq_p64_p128 (poly128_t __a) | |
3848 | { | |
3849 | return (poly64x2_t)__a; | |
3850 | } | |
3851 | ||
d4f47414 | 3852 | __extension__ extern __inline poly64x2_t |
3853 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3854 | vreinterpretq_p64_u8 (uint8x16_t __a) | |
3855 | { | |
3856 | return (poly64x2_t) __a; | |
3857 | } | |
3858 | ||
3859 | __extension__ extern __inline poly64x2_t | |
3860 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3861 | vreinterpretq_p64_u16 (uint16x8_t __a) | |
3862 | { | |
3863 | return (poly64x2_t) __a; | |
3864 | } | |
3865 | ||
97789447 | 3866 | __extension__ extern __inline poly64x2_t |
3867 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3868 | vreinterpretq_p64_p16 (poly16x8_t __a) | |
3869 | { | |
3870 | return (poly64x2_t)__a; | |
3871 | } | |
3872 | ||
d4f47414 | 3873 | __extension__ extern __inline poly64x2_t |
3874 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3875 | vreinterpretq_p64_u32 (uint32x4_t __a) | |
3876 | { | |
3877 | return (poly64x2_t) __a; | |
3878 | } | |
3879 | ||
3880 | __extension__ extern __inline poly64x2_t | |
3881 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3882 | vreinterpretq_p64_u64 (uint64x2_t __a) | |
3883 | { | |
3884 | return (poly64x2_t) __a; | |
3885 | } | |
3886 | ||
3887 | __extension__ extern __inline poly64x2_t | |
3888 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3889 | vreinterpretq_p64_p8 (poly8x16_t __a) | |
3890 | { | |
3891 | return (poly64x2_t) __a; | |
3892 | } | |
3893 | ||
97789447 | 3894 | __extension__ extern __inline poly128_t |
3895 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3896 | vreinterpretq_p128_p8 (poly8x16_t __a) | |
3897 | { | |
3898 | return (poly128_t)__a; | |
3899 | } | |
3900 | ||
3901 | __extension__ extern __inline poly128_t | |
3902 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3903 | vreinterpretq_p128_p16 (poly16x8_t __a) | |
3904 | { | |
3905 | return (poly128_t)__a; | |
3906 | } | |
3907 | ||
3908 | __extension__ extern __inline poly128_t | |
3909 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3910 | vreinterpretq_p128_f16 (float16x8_t __a) | |
3911 | { | |
3912 | return (poly128_t) __a; | |
3913 | } | |
3914 | ||
3915 | __extension__ extern __inline poly128_t | |
3916 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3917 | vreinterpretq_p128_f32 (float32x4_t __a) | |
3918 | { | |
3919 | return (poly128_t)__a; | |
3920 | } | |
3921 | ||
3922 | __extension__ extern __inline poly128_t | |
3923 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3924 | vreinterpretq_p128_p64 (poly64x2_t __a) | |
3925 | { | |
3926 | return (poly128_t)__a; | |
3927 | } | |
3928 | ||
3929 | __extension__ extern __inline poly128_t | |
3930 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3931 | vreinterpretq_p128_s64 (int64x2_t __a) | |
3932 | { | |
3933 | return (poly128_t)__a; | |
3934 | } | |
3935 | ||
3936 | __extension__ extern __inline poly128_t | |
3937 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3938 | vreinterpretq_p128_u64 (uint64x2_t __a) | |
3939 | { | |
3940 | return (poly128_t)__a; | |
3941 | } | |
3942 | ||
3943 | __extension__ extern __inline poly128_t | |
3944 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3945 | vreinterpretq_p128_s8 (int8x16_t __a) | |
3946 | { | |
3947 | return (poly128_t)__a; | |
3948 | } | |
3949 | ||
3950 | __extension__ extern __inline poly128_t | |
3951 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3952 | vreinterpretq_p128_s16 (int16x8_t __a) | |
3953 | { | |
3954 | return (poly128_t)__a; | |
3955 | } | |
3956 | ||
3957 | __extension__ extern __inline poly128_t | |
3958 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3959 | vreinterpretq_p128_s32 (int32x4_t __a) | |
3960 | { | |
3961 | return (poly128_t)__a; | |
3962 | } | |
3963 | ||
3964 | __extension__ extern __inline poly128_t | |
3965 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3966 | vreinterpretq_p128_u8 (uint8x16_t __a) | |
3967 | { | |
3968 | return (poly128_t)__a; | |
3969 | } | |
3970 | ||
3971 | __extension__ extern __inline poly128_t | |
3972 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3973 | vreinterpretq_p128_u16 (uint16x8_t __a) | |
3974 | { | |
3975 | return (poly128_t)__a; | |
3976 | } | |
3977 | ||
3978 | __extension__ extern __inline poly128_t | |
3979 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3980 | vreinterpretq_p128_u32 (uint32x4_t __a) | |
3981 | { | |
3982 | return (poly128_t)__a; | |
3983 | } | |
3984 | ||
49ab9992 | 3985 | __extension__ extern __inline float16x4_t |
3986 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 3987 | vreinterpret_f16_f64 (float64x1_t __a) |
3988 | { | |
3989 | return (float16x4_t) __a; | |
3990 | } | |
3991 | ||
49ab9992 | 3992 | __extension__ extern __inline float16x4_t |
3993 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 3994 | vreinterpret_f16_s8 (int8x8_t __a) |
3995 | { | |
3996 | return (float16x4_t) __a; | |
3997 | } | |
3998 | ||
49ab9992 | 3999 | __extension__ extern __inline float16x4_t |
4000 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4001 | vreinterpret_f16_s16 (int16x4_t __a) |
4002 | { | |
4003 | return (float16x4_t) __a; | |
4004 | } | |
4005 | ||
49ab9992 | 4006 | __extension__ extern __inline float16x4_t |
4007 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4008 | vreinterpret_f16_s32 (int32x2_t __a) |
4009 | { | |
4010 | return (float16x4_t) __a; | |
4011 | } | |
4012 | ||
49ab9992 | 4013 | __extension__ extern __inline float16x4_t |
4014 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4015 | vreinterpret_f16_s64 (int64x1_t __a) |
4016 | { | |
4017 | return (float16x4_t) __a; | |
4018 | } | |
4019 | ||
49ab9992 | 4020 | __extension__ extern __inline float16x4_t |
4021 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4022 | vreinterpret_f16_f32 (float32x2_t __a) |
4023 | { | |
4024 | return (float16x4_t) __a; | |
4025 | } | |
4026 | ||
49ab9992 | 4027 | __extension__ extern __inline float16x4_t |
4028 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4029 | vreinterpret_f16_u8 (uint8x8_t __a) |
4030 | { | |
4031 | return (float16x4_t) __a; | |
4032 | } | |
4033 | ||
49ab9992 | 4034 | __extension__ extern __inline float16x4_t |
4035 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4036 | vreinterpret_f16_u16 (uint16x4_t __a) |
4037 | { | |
4038 | return (float16x4_t) __a; | |
4039 | } | |
4040 | ||
49ab9992 | 4041 | __extension__ extern __inline float16x4_t |
4042 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4043 | vreinterpret_f16_u32 (uint32x2_t __a) |
4044 | { | |
4045 | return (float16x4_t) __a; | |
4046 | } | |
4047 | ||
49ab9992 | 4048 | __extension__ extern __inline float16x4_t |
4049 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4050 | vreinterpret_f16_u64 (uint64x1_t __a) |
4051 | { | |
4052 | return (float16x4_t) __a; | |
4053 | } | |
4054 | ||
49ab9992 | 4055 | __extension__ extern __inline float16x4_t |
4056 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4057 | vreinterpret_f16_p8 (poly8x8_t __a) |
4058 | { | |
4059 | return (float16x4_t) __a; | |
4060 | } | |
4061 | ||
49ab9992 | 4062 | __extension__ extern __inline float16x4_t |
4063 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4064 | vreinterpret_f16_p16 (poly16x4_t __a) |
4065 | { | |
4066 | return (float16x4_t) __a; | |
4067 | } | |
4068 | ||
d4f47414 | 4069 | __extension__ extern __inline float16x4_t |
4070 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4071 | vreinterpret_f16_p64 (poly64x1_t __a) | |
4072 | { | |
4073 | return (float16x4_t) __a; | |
4074 | } | |
4075 | ||
49ab9992 | 4076 | __extension__ extern __inline float16x8_t |
4077 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4078 | vreinterpretq_f16_f64 (float64x2_t __a) |
4079 | { | |
4080 | return (float16x8_t) __a; | |
4081 | } | |
4082 | ||
49ab9992 | 4083 | __extension__ extern __inline float16x8_t |
4084 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4085 | vreinterpretq_f16_s8 (int8x16_t __a) |
4086 | { | |
4087 | return (float16x8_t) __a; | |
4088 | } | |
4089 | ||
49ab9992 | 4090 | __extension__ extern __inline float16x8_t |
4091 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4092 | vreinterpretq_f16_s16 (int16x8_t __a) |
4093 | { | |
4094 | return (float16x8_t) __a; | |
4095 | } | |
4096 | ||
49ab9992 | 4097 | __extension__ extern __inline float16x8_t |
4098 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4099 | vreinterpretq_f16_s32 (int32x4_t __a) |
4100 | { | |
4101 | return (float16x8_t) __a; | |
4102 | } | |
4103 | ||
49ab9992 | 4104 | __extension__ extern __inline float16x8_t |
4105 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4106 | vreinterpretq_f16_s64 (int64x2_t __a) |
4107 | { | |
4108 | return (float16x8_t) __a; | |
4109 | } | |
4110 | ||
49ab9992 | 4111 | __extension__ extern __inline float16x8_t |
4112 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4113 | vreinterpretq_f16_f32 (float32x4_t __a) |
4114 | { | |
4115 | return (float16x8_t) __a; | |
4116 | } | |
4117 | ||
49ab9992 | 4118 | __extension__ extern __inline float16x8_t |
4119 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4120 | vreinterpretq_f16_u8 (uint8x16_t __a) |
4121 | { | |
4122 | return (float16x8_t) __a; | |
4123 | } | |
4124 | ||
49ab9992 | 4125 | __extension__ extern __inline float16x8_t |
4126 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4127 | vreinterpretq_f16_u16 (uint16x8_t __a) |
4128 | { | |
4129 | return (float16x8_t) __a; | |
4130 | } | |
4131 | ||
49ab9992 | 4132 | __extension__ extern __inline float16x8_t |
4133 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4134 | vreinterpretq_f16_u32 (uint32x4_t __a) |
4135 | { | |
4136 | return (float16x8_t) __a; | |
4137 | } | |
4138 | ||
49ab9992 | 4139 | __extension__ extern __inline float16x8_t |
4140 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4141 | vreinterpretq_f16_u64 (uint64x2_t __a) |
4142 | { | |
4143 | return (float16x8_t) __a; | |
4144 | } | |
4145 | ||
49ab9992 | 4146 | __extension__ extern __inline float16x8_t |
4147 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4148 | vreinterpretq_f16_p8 (poly8x16_t __a) |
4149 | { | |
4150 | return (float16x8_t) __a; | |
4151 | } | |
4152 | ||
97789447 | 4153 | __extension__ extern __inline float16x8_t |
4154 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4155 | vreinterpretq_f16_p128 (poly128_t __a) | |
4156 | { | |
4157 | return (float16x8_t) __a; | |
4158 | } | |
4159 | ||
49ab9992 | 4160 | __extension__ extern __inline float16x8_t |
4161 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4162 | vreinterpretq_f16_p16 (poly16x8_t __a) |
4163 | { | |
4164 | return (float16x8_t) __a; | |
4165 | } | |
4166 | ||
d4f47414 | 4167 | __extension__ extern __inline float16x8_t |
4168 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4169 | vreinterpretq_f16_p64 (poly64x2_t __a) | |
4170 | { | |
4171 | return (float16x8_t) __a; | |
4172 | } | |
4173 | ||
49ab9992 | 4174 | __extension__ extern __inline float32x2_t |
4175 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4176 | vreinterpret_f32_f16 (float16x4_t __a) |
4177 | { | |
4178 | return (float32x2_t) __a; | |
4179 | } | |
4180 | ||
49ab9992 | 4181 | __extension__ extern __inline float32x2_t |
4182 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4183 | vreinterpret_f32_f64 (float64x1_t __a) |
4184 | { | |
7c18bc4f | 4185 | return (float32x2_t) __a; |
fe44ff96 | 4186 | } |
4187 | ||
49ab9992 | 4188 | __extension__ extern __inline float32x2_t |
4189 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4190 | vreinterpret_f32_s8 (int8x8_t __a) |
4191 | { | |
dbdcebb4 | 4192 | return (float32x2_t) __a; |
df401d54 | 4193 | } |
4194 | ||
49ab9992 | 4195 | __extension__ extern __inline float32x2_t |
4196 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4197 | vreinterpret_f32_s16 (int16x4_t __a) |
4198 | { | |
dbdcebb4 | 4199 | return (float32x2_t) __a; |
df401d54 | 4200 | } |
4201 | ||
49ab9992 | 4202 | __extension__ extern __inline float32x2_t |
4203 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4204 | vreinterpret_f32_s32 (int32x2_t __a) |
4205 | { | |
dbdcebb4 | 4206 | return (float32x2_t) __a; |
df401d54 | 4207 | } |
4208 | ||
49ab9992 | 4209 | __extension__ extern __inline float32x2_t |
4210 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4211 | vreinterpret_f32_s64 (int64x1_t __a) |
4212 | { | |
dbdcebb4 | 4213 | return (float32x2_t) __a; |
df401d54 | 4214 | } |
4215 | ||
49ab9992 | 4216 | __extension__ extern __inline float32x2_t |
4217 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4218 | vreinterpret_f32_u8 (uint8x8_t __a) |
4219 | { | |
dbdcebb4 | 4220 | return (float32x2_t) __a; |
df401d54 | 4221 | } |
4222 | ||
49ab9992 | 4223 | __extension__ extern __inline float32x2_t |
4224 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4225 | vreinterpret_f32_u16 (uint16x4_t __a) |
4226 | { | |
dbdcebb4 | 4227 | return (float32x2_t) __a; |
df401d54 | 4228 | } |
4229 | ||
49ab9992 | 4230 | __extension__ extern __inline float32x2_t |
4231 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4232 | vreinterpret_f32_u32 (uint32x2_t __a) |
4233 | { | |
dbdcebb4 | 4234 | return (float32x2_t) __a; |
df401d54 | 4235 | } |
4236 | ||
49ab9992 | 4237 | __extension__ extern __inline float32x2_t |
4238 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4239 | vreinterpret_f32_u64 (uint64x1_t __a) |
4240 | { | |
dbdcebb4 | 4241 | return (float32x2_t) __a; |
df401d54 | 4242 | } |
4243 | ||
49ab9992 | 4244 | __extension__ extern __inline float32x2_t |
4245 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4246 | vreinterpret_f32_p8 (poly8x8_t __a) |
4247 | { | |
dbdcebb4 | 4248 | return (float32x2_t) __a; |
df401d54 | 4249 | } |
4250 | ||
49ab9992 | 4251 | __extension__ extern __inline float32x2_t |
4252 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4253 | vreinterpret_f32_p16 (poly16x4_t __a) |
4254 | { | |
dbdcebb4 | 4255 | return (float32x2_t) __a; |
df401d54 | 4256 | } |
4257 | ||
d4f47414 | 4258 | __extension__ extern __inline float32x2_t |
4259 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4260 | vreinterpret_f32_p64 (poly64x1_t __a) | |
4261 | { | |
4262 | return (float32x2_t) __a; | |
4263 | } | |
4264 | ||
49ab9992 | 4265 | __extension__ extern __inline float32x4_t |
4266 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4267 | vreinterpretq_f32_f16 (float16x8_t __a) |
4268 | { | |
4269 | return (float32x4_t) __a; | |
4270 | } | |
4271 | ||
49ab9992 | 4272 | __extension__ extern __inline float32x4_t |
4273 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4274 | vreinterpretq_f32_f64 (float64x2_t __a) |
4275 | { | |
4276 | return (float32x4_t) __a; | |
4277 | } | |
4278 | ||
49ab9992 | 4279 | __extension__ extern __inline float32x4_t |
4280 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4281 | vreinterpretq_f32_s8 (int8x16_t __a) |
4282 | { | |
dbdcebb4 | 4283 | return (float32x4_t) __a; |
df401d54 | 4284 | } |
4285 | ||
49ab9992 | 4286 | __extension__ extern __inline float32x4_t |
4287 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4288 | vreinterpretq_f32_s16 (int16x8_t __a) |
4289 | { | |
dbdcebb4 | 4290 | return (float32x4_t) __a; |
df401d54 | 4291 | } |
4292 | ||
49ab9992 | 4293 | __extension__ extern __inline float32x4_t |
4294 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4295 | vreinterpretq_f32_s32 (int32x4_t __a) |
4296 | { | |
dbdcebb4 | 4297 | return (float32x4_t) __a; |
df401d54 | 4298 | } |
4299 | ||
49ab9992 | 4300 | __extension__ extern __inline float32x4_t |
4301 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4302 | vreinterpretq_f32_s64 (int64x2_t __a) |
4303 | { | |
dbdcebb4 | 4304 | return (float32x4_t) __a; |
df401d54 | 4305 | } |
4306 | ||
49ab9992 | 4307 | __extension__ extern __inline float32x4_t |
4308 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4309 | vreinterpretq_f32_u8 (uint8x16_t __a) |
4310 | { | |
dbdcebb4 | 4311 | return (float32x4_t) __a; |
df401d54 | 4312 | } |
4313 | ||
49ab9992 | 4314 | __extension__ extern __inline float32x4_t |
4315 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4316 | vreinterpretq_f32_u16 (uint16x8_t __a) |
4317 | { | |
dbdcebb4 | 4318 | return (float32x4_t) __a; |
df401d54 | 4319 | } |
4320 | ||
49ab9992 | 4321 | __extension__ extern __inline float32x4_t |
4322 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4323 | vreinterpretq_f32_u32 (uint32x4_t __a) |
4324 | { | |
dbdcebb4 | 4325 | return (float32x4_t) __a; |
df401d54 | 4326 | } |
4327 | ||
49ab9992 | 4328 | __extension__ extern __inline float32x4_t |
4329 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4330 | vreinterpretq_f32_u64 (uint64x2_t __a) |
4331 | { | |
dbdcebb4 | 4332 | return (float32x4_t) __a; |
df401d54 | 4333 | } |
4334 | ||
49ab9992 | 4335 | __extension__ extern __inline float32x4_t |
4336 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4337 | vreinterpretq_f32_p8 (poly8x16_t __a) |
4338 | { | |
dbdcebb4 | 4339 | return (float32x4_t) __a; |
df401d54 | 4340 | } |
4341 | ||
49ab9992 | 4342 | __extension__ extern __inline float32x4_t |
4343 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4344 | vreinterpretq_f32_p16 (poly16x8_t __a) |
4345 | { | |
dbdcebb4 | 4346 | return (float32x4_t) __a; |
df401d54 | 4347 | } |
4348 | ||
d4f47414 | 4349 | __extension__ extern __inline float32x4_t |
4350 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4351 | vreinterpretq_f32_p64 (poly64x2_t __a) | |
4352 | { | |
4353 | return (float32x4_t) __a; | |
4354 | } | |
4355 | ||
97789447 | 4356 | __extension__ extern __inline float32x4_t |
4357 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4358 | vreinterpretq_f32_p128 (poly128_t __a) | |
4359 | { | |
4360 | return (float32x4_t)__a; | |
4361 | } | |
4362 | ||
4363 | ||
49ab9992 | 4364 | __extension__ extern __inline float64x1_t |
4365 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4366 | vreinterpret_f64_f16 (float16x4_t __a) |
4367 | { | |
4368 | return (float64x1_t) __a; | |
4369 | } | |
4370 | ||
49ab9992 | 4371 | __extension__ extern __inline float64x1_t |
4372 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4373 | vreinterpret_f64_f32 (float32x2_t __a) |
4374 | { | |
7c18bc4f | 4375 | return (float64x1_t) __a; |
fe44ff96 | 4376 | } |
4377 | ||
49ab9992 | 4378 | __extension__ extern __inline float64x1_t |
4379 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4380 | vreinterpret_f64_p8 (poly8x8_t __a) |
4381 | { | |
7c18bc4f | 4382 | return (float64x1_t) __a; |
fe44ff96 | 4383 | } |
4384 | ||
49ab9992 | 4385 | __extension__ extern __inline float64x1_t |
4386 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4387 | vreinterpret_f64_p16 (poly16x4_t __a) |
4388 | { | |
7c18bc4f | 4389 | return (float64x1_t) __a; |
fe44ff96 | 4390 | } |
4391 | ||
d4f47414 | 4392 | __extension__ extern __inline float64x1_t |
4393 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4394 | vreinterpret_f64_p64 (poly64x1_t __a) | |
4395 | { | |
4396 | return (float64x1_t) __a; | |
4397 | } | |
4398 | ||
49ab9992 | 4399 | __extension__ extern __inline float64x1_t |
4400 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4401 | vreinterpret_f64_s8 (int8x8_t __a) |
4402 | { | |
7c18bc4f | 4403 | return (float64x1_t) __a; |
fe44ff96 | 4404 | } |
4405 | ||
49ab9992 | 4406 | __extension__ extern __inline float64x1_t |
4407 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4408 | vreinterpret_f64_s16 (int16x4_t __a) |
4409 | { | |
7c18bc4f | 4410 | return (float64x1_t) __a; |
fe44ff96 | 4411 | } |
4412 | ||
49ab9992 | 4413 | __extension__ extern __inline float64x1_t |
4414 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4415 | vreinterpret_f64_s32 (int32x2_t __a) |
4416 | { | |
7c18bc4f | 4417 | return (float64x1_t) __a; |
fe44ff96 | 4418 | } |
4419 | ||
49ab9992 | 4420 | __extension__ extern __inline float64x1_t |
4421 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4422 | vreinterpret_f64_s64 (int64x1_t __a) |
4423 | { | |
d1045960 | 4424 | return (float64x1_t) __a; |
fe44ff96 | 4425 | } |
4426 | ||
49ab9992 | 4427 | __extension__ extern __inline float64x1_t |
4428 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4429 | vreinterpret_f64_u8 (uint8x8_t __a) |
4430 | { | |
7c18bc4f | 4431 | return (float64x1_t) __a; |
fe44ff96 | 4432 | } |
4433 | ||
49ab9992 | 4434 | __extension__ extern __inline float64x1_t |
4435 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4436 | vreinterpret_f64_u16 (uint16x4_t __a) |
4437 | { | |
7c18bc4f | 4438 | return (float64x1_t) __a; |
fe44ff96 | 4439 | } |
4440 | ||
49ab9992 | 4441 | __extension__ extern __inline float64x1_t |
4442 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4443 | vreinterpret_f64_u32 (uint32x2_t __a) |
4444 | { | |
7c18bc4f | 4445 | return (float64x1_t) __a; |
fe44ff96 | 4446 | } |
4447 | ||
49ab9992 | 4448 | __extension__ extern __inline float64x1_t |
4449 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4450 | vreinterpret_f64_u64 (uint64x1_t __a) |
4451 | { | |
d1045960 | 4452 | return (float64x1_t) __a; |
fe44ff96 | 4453 | } |
4454 | ||
49ab9992 | 4455 | __extension__ extern __inline float64x2_t |
4456 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4457 | vreinterpretq_f64_f16 (float16x8_t __a) |
4458 | { | |
4459 | return (float64x2_t) __a; | |
4460 | } | |
4461 | ||
49ab9992 | 4462 | __extension__ extern __inline float64x2_t |
4463 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4464 | vreinterpretq_f64_f32 (float32x4_t __a) |
4465 | { | |
4466 | return (float64x2_t) __a; | |
4467 | } | |
4468 | ||
49ab9992 | 4469 | __extension__ extern __inline float64x2_t |
4470 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4471 | vreinterpretq_f64_p8 (poly8x16_t __a) |
4472 | { | |
4473 | return (float64x2_t) __a; | |
4474 | } | |
4475 | ||
49ab9992 | 4476 | __extension__ extern __inline float64x2_t |
4477 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4478 | vreinterpretq_f64_p16 (poly16x8_t __a) |
4479 | { | |
4480 | return (float64x2_t) __a; | |
4481 | } | |
4482 | ||
d4f47414 | 4483 | __extension__ extern __inline float64x2_t |
4484 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4485 | vreinterpretq_f64_p64 (poly64x2_t __a) | |
4486 | { | |
4487 | return (float64x2_t) __a; | |
4488 | } | |
4489 | ||
49ab9992 | 4490 | __extension__ extern __inline float64x2_t |
4491 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4492 | vreinterpretq_f64_s8 (int8x16_t __a) |
4493 | { | |
4494 | return (float64x2_t) __a; | |
4495 | } | |
4496 | ||
49ab9992 | 4497 | __extension__ extern __inline float64x2_t |
4498 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4499 | vreinterpretq_f64_s16 (int16x8_t __a) |
4500 | { | |
4501 | return (float64x2_t) __a; | |
4502 | } | |
4503 | ||
49ab9992 | 4504 | __extension__ extern __inline float64x2_t |
4505 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4506 | vreinterpretq_f64_s32 (int32x4_t __a) |
4507 | { | |
4508 | return (float64x2_t) __a; | |
4509 | } | |
4510 | ||
49ab9992 | 4511 | __extension__ extern __inline float64x2_t |
4512 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4513 | vreinterpretq_f64_s64 (int64x2_t __a) |
4514 | { | |
4515 | return (float64x2_t) __a; | |
4516 | } | |
4517 | ||
49ab9992 | 4518 | __extension__ extern __inline float64x2_t |
4519 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4520 | vreinterpretq_f64_u8 (uint8x16_t __a) |
4521 | { | |
4522 | return (float64x2_t) __a; | |
4523 | } | |
4524 | ||
49ab9992 | 4525 | __extension__ extern __inline float64x2_t |
4526 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4527 | vreinterpretq_f64_u16 (uint16x8_t __a) |
4528 | { | |
4529 | return (float64x2_t) __a; | |
4530 | } | |
4531 | ||
49ab9992 | 4532 | __extension__ extern __inline float64x2_t |
4533 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4534 | vreinterpretq_f64_u32 (uint32x4_t __a) |
4535 | { | |
4536 | return (float64x2_t) __a; | |
4537 | } | |
4538 | ||
49ab9992 | 4539 | __extension__ extern __inline float64x2_t |
4540 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4541 | vreinterpretq_f64_u64 (uint64x2_t __a) |
4542 | { | |
4543 | return (float64x2_t) __a; | |
4544 | } | |
4545 | ||
49ab9992 | 4546 | __extension__ extern __inline int64x1_t |
4547 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4548 | vreinterpret_s64_f16 (float16x4_t __a) |
4549 | { | |
4550 | return (int64x1_t) __a; | |
4551 | } | |
4552 | ||
49ab9992 | 4553 | __extension__ extern __inline int64x1_t |
4554 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4555 | vreinterpret_s64_f64 (float64x1_t __a) |
4556 | { | |
7c18bc4f | 4557 | return (int64x1_t) __a; |
fe44ff96 | 4558 | } |
4559 | ||
49ab9992 | 4560 | __extension__ extern __inline int64x1_t |
4561 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4562 | vreinterpret_s64_s8 (int8x8_t __a) |
4563 | { | |
dbdcebb4 | 4564 | return (int64x1_t) __a; |
df401d54 | 4565 | } |
4566 | ||
49ab9992 | 4567 | __extension__ extern __inline int64x1_t |
4568 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4569 | vreinterpret_s64_s16 (int16x4_t __a) |
4570 | { | |
dbdcebb4 | 4571 | return (int64x1_t) __a; |
df401d54 | 4572 | } |
4573 | ||
49ab9992 | 4574 | __extension__ extern __inline int64x1_t |
4575 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4576 | vreinterpret_s64_s32 (int32x2_t __a) |
4577 | { | |
dbdcebb4 | 4578 | return (int64x1_t) __a; |
df401d54 | 4579 | } |
4580 | ||
49ab9992 | 4581 | __extension__ extern __inline int64x1_t |
4582 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4583 | vreinterpret_s64_f32 (float32x2_t __a) |
4584 | { | |
dbdcebb4 | 4585 | return (int64x1_t) __a; |
df401d54 | 4586 | } |
4587 | ||
49ab9992 | 4588 | __extension__ extern __inline int64x1_t |
4589 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4590 | vreinterpret_s64_u8 (uint8x8_t __a) |
4591 | { | |
dbdcebb4 | 4592 | return (int64x1_t) __a; |
df401d54 | 4593 | } |
4594 | ||
49ab9992 | 4595 | __extension__ extern __inline int64x1_t |
4596 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4597 | vreinterpret_s64_u16 (uint16x4_t __a) |
4598 | { | |
dbdcebb4 | 4599 | return (int64x1_t) __a; |
df401d54 | 4600 | } |
4601 | ||
49ab9992 | 4602 | __extension__ extern __inline int64x1_t |
4603 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4604 | vreinterpret_s64_u32 (uint32x2_t __a) |
4605 | { | |
dbdcebb4 | 4606 | return (int64x1_t) __a; |
df401d54 | 4607 | } |
4608 | ||
49ab9992 | 4609 | __extension__ extern __inline int64x1_t |
4610 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4611 | vreinterpret_s64_u64 (uint64x1_t __a) |
4612 | { | |
dbdcebb4 | 4613 | return (int64x1_t) __a; |
df401d54 | 4614 | } |
4615 | ||
49ab9992 | 4616 | __extension__ extern __inline int64x1_t |
4617 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4618 | vreinterpret_s64_p8 (poly8x8_t __a) |
4619 | { | |
dbdcebb4 | 4620 | return (int64x1_t) __a; |
df401d54 | 4621 | } |
4622 | ||
49ab9992 | 4623 | __extension__ extern __inline int64x1_t |
4624 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4625 | vreinterpret_s64_p16 (poly16x4_t __a) |
4626 | { | |
dbdcebb4 | 4627 | return (int64x1_t) __a; |
df401d54 | 4628 | } |
4629 | ||
d4f47414 | 4630 | __extension__ extern __inline int64x1_t |
4631 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4632 | vreinterpret_s64_p64 (poly64x1_t __a) | |
4633 | { | |
4634 | return (int64x1_t) __a; | |
4635 | } | |
4636 | ||
49ab9992 | 4637 | __extension__ extern __inline int64x2_t |
4638 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4639 | vreinterpretq_s64_f64 (float64x2_t __a) |
4640 | { | |
4641 | return (int64x2_t) __a; | |
4642 | } | |
4643 | ||
49ab9992 | 4644 | __extension__ extern __inline int64x2_t |
4645 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4646 | vreinterpretq_s64_s8 (int8x16_t __a) |
4647 | { | |
dbdcebb4 | 4648 | return (int64x2_t) __a; |
df401d54 | 4649 | } |
4650 | ||
49ab9992 | 4651 | __extension__ extern __inline int64x2_t |
4652 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4653 | vreinterpretq_s64_s16 (int16x8_t __a) |
4654 | { | |
dbdcebb4 | 4655 | return (int64x2_t) __a; |
df401d54 | 4656 | } |
4657 | ||
49ab9992 | 4658 | __extension__ extern __inline int64x2_t |
4659 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4660 | vreinterpretq_s64_s32 (int32x4_t __a) |
4661 | { | |
dbdcebb4 | 4662 | return (int64x2_t) __a; |
df401d54 | 4663 | } |
4664 | ||
49ab9992 | 4665 | __extension__ extern __inline int64x2_t |
4666 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4667 | vreinterpretq_s64_f16 (float16x8_t __a) |
4668 | { | |
4669 | return (int64x2_t) __a; | |
4670 | } | |
4671 | ||
49ab9992 | 4672 | __extension__ extern __inline int64x2_t |
4673 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4674 | vreinterpretq_s64_f32 (float32x4_t __a) |
4675 | { | |
dbdcebb4 | 4676 | return (int64x2_t) __a; |
df401d54 | 4677 | } |
4678 | ||
49ab9992 | 4679 | __extension__ extern __inline int64x2_t |
4680 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4681 | vreinterpretq_s64_u8 (uint8x16_t __a) |
4682 | { | |
dbdcebb4 | 4683 | return (int64x2_t) __a; |
df401d54 | 4684 | } |
4685 | ||
49ab9992 | 4686 | __extension__ extern __inline int64x2_t |
4687 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4688 | vreinterpretq_s64_u16 (uint16x8_t __a) |
4689 | { | |
dbdcebb4 | 4690 | return (int64x2_t) __a; |
df401d54 | 4691 | } |
4692 | ||
49ab9992 | 4693 | __extension__ extern __inline int64x2_t |
4694 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4695 | vreinterpretq_s64_u32 (uint32x4_t __a) |
4696 | { | |
dbdcebb4 | 4697 | return (int64x2_t) __a; |
df401d54 | 4698 | } |
4699 | ||
49ab9992 | 4700 | __extension__ extern __inline int64x2_t |
4701 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4702 | vreinterpretq_s64_u64 (uint64x2_t __a) |
4703 | { | |
dbdcebb4 | 4704 | return (int64x2_t) __a; |
df401d54 | 4705 | } |
4706 | ||
49ab9992 | 4707 | __extension__ extern __inline int64x2_t |
4708 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4709 | vreinterpretq_s64_p8 (poly8x16_t __a) |
4710 | { | |
dbdcebb4 | 4711 | return (int64x2_t) __a; |
df401d54 | 4712 | } |
4713 | ||
49ab9992 | 4714 | __extension__ extern __inline int64x2_t |
4715 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4716 | vreinterpretq_s64_p16 (poly16x8_t __a) |
4717 | { | |
dbdcebb4 | 4718 | return (int64x2_t) __a; |
df401d54 | 4719 | } |
4720 | ||
d4f47414 | 4721 | __extension__ extern __inline int64x2_t |
4722 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4723 | vreinterpretq_s64_p64 (poly64x2_t __a) | |
4724 | { | |
4725 | return (int64x2_t) __a; | |
4726 | } | |
4727 | ||
97789447 | 4728 | __extension__ extern __inline int64x2_t |
4729 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4730 | vreinterpretq_s64_p128 (poly128_t __a) | |
4731 | { | |
4732 | return (int64x2_t)__a; | |
4733 | } | |
4734 | ||
49ab9992 | 4735 | __extension__ extern __inline uint64x1_t |
4736 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4737 | vreinterpret_u64_f16 (float16x4_t __a) |
4738 | { | |
4739 | return (uint64x1_t) __a; | |
4740 | } | |
4741 | ||
49ab9992 | 4742 | __extension__ extern __inline uint64x1_t |
4743 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4744 | vreinterpret_u64_f64 (float64x1_t __a) |
4745 | { | |
7c18bc4f | 4746 | return (uint64x1_t) __a; |
fe44ff96 | 4747 | } |
4748 | ||
49ab9992 | 4749 | __extension__ extern __inline uint64x1_t |
4750 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4751 | vreinterpret_u64_s8 (int8x8_t __a) |
4752 | { | |
dbdcebb4 | 4753 | return (uint64x1_t) __a; |
df401d54 | 4754 | } |
4755 | ||
49ab9992 | 4756 | __extension__ extern __inline uint64x1_t |
4757 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4758 | vreinterpret_u64_s16 (int16x4_t __a) |
4759 | { | |
dbdcebb4 | 4760 | return (uint64x1_t) __a; |
df401d54 | 4761 | } |
4762 | ||
49ab9992 | 4763 | __extension__ extern __inline uint64x1_t |
4764 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4765 | vreinterpret_u64_s32 (int32x2_t __a) |
4766 | { | |
dbdcebb4 | 4767 | return (uint64x1_t) __a; |
df401d54 | 4768 | } |
4769 | ||
49ab9992 | 4770 | __extension__ extern __inline uint64x1_t |
4771 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4772 | vreinterpret_u64_s64 (int64x1_t __a) |
4773 | { | |
dbdcebb4 | 4774 | return (uint64x1_t) __a; |
df401d54 | 4775 | } |
4776 | ||
49ab9992 | 4777 | __extension__ extern __inline uint64x1_t |
4778 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4779 | vreinterpret_u64_f32 (float32x2_t __a) |
4780 | { | |
dbdcebb4 | 4781 | return (uint64x1_t) __a; |
df401d54 | 4782 | } |
4783 | ||
49ab9992 | 4784 | __extension__ extern __inline uint64x1_t |
4785 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4786 | vreinterpret_u64_u8 (uint8x8_t __a) |
4787 | { | |
dbdcebb4 | 4788 | return (uint64x1_t) __a; |
df401d54 | 4789 | } |
4790 | ||
49ab9992 | 4791 | __extension__ extern __inline uint64x1_t |
4792 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4793 | vreinterpret_u64_u16 (uint16x4_t __a) |
4794 | { | |
dbdcebb4 | 4795 | return (uint64x1_t) __a; |
df401d54 | 4796 | } |
4797 | ||
49ab9992 | 4798 | __extension__ extern __inline uint64x1_t |
4799 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4800 | vreinterpret_u64_u32 (uint32x2_t __a) |
4801 | { | |
dbdcebb4 | 4802 | return (uint64x1_t) __a; |
df401d54 | 4803 | } |
4804 | ||
49ab9992 | 4805 | __extension__ extern __inline uint64x1_t |
4806 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4807 | vreinterpret_u64_p8 (poly8x8_t __a) |
4808 | { | |
dbdcebb4 | 4809 | return (uint64x1_t) __a; |
df401d54 | 4810 | } |
4811 | ||
49ab9992 | 4812 | __extension__ extern __inline uint64x1_t |
4813 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4814 | vreinterpret_u64_p16 (poly16x4_t __a) |
4815 | { | |
dbdcebb4 | 4816 | return (uint64x1_t) __a; |
df401d54 | 4817 | } |
4818 | ||
d4f47414 | 4819 | __extension__ extern __inline uint64x1_t |
4820 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4821 | vreinterpret_u64_p64 (poly64x1_t __a) | |
4822 | { | |
4823 | return (uint64x1_t) __a; | |
4824 | } | |
4825 | ||
49ab9992 | 4826 | __extension__ extern __inline uint64x2_t |
4827 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4828 | vreinterpretq_u64_f64 (float64x2_t __a) |
4829 | { | |
4830 | return (uint64x2_t) __a; | |
4831 | } | |
4832 | ||
49ab9992 | 4833 | __extension__ extern __inline uint64x2_t |
4834 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4835 | vreinterpretq_u64_s8 (int8x16_t __a) |
4836 | { | |
dbdcebb4 | 4837 | return (uint64x2_t) __a; |
df401d54 | 4838 | } |
4839 | ||
49ab9992 | 4840 | __extension__ extern __inline uint64x2_t |
4841 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4842 | vreinterpretq_u64_s16 (int16x8_t __a) |
4843 | { | |
dbdcebb4 | 4844 | return (uint64x2_t) __a; |
df401d54 | 4845 | } |
4846 | ||
49ab9992 | 4847 | __extension__ extern __inline uint64x2_t |
4848 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4849 | vreinterpretq_u64_s32 (int32x4_t __a) |
4850 | { | |
dbdcebb4 | 4851 | return (uint64x2_t) __a; |
df401d54 | 4852 | } |
4853 | ||
49ab9992 | 4854 | __extension__ extern __inline uint64x2_t |
4855 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4856 | vreinterpretq_u64_s64 (int64x2_t __a) |
4857 | { | |
dbdcebb4 | 4858 | return (uint64x2_t) __a; |
df401d54 | 4859 | } |
4860 | ||
49ab9992 | 4861 | __extension__ extern __inline uint64x2_t |
4862 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4863 | vreinterpretq_u64_f16 (float16x8_t __a) |
4864 | { | |
4865 | return (uint64x2_t) __a; | |
4866 | } | |
4867 | ||
49ab9992 | 4868 | __extension__ extern __inline uint64x2_t |
4869 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4870 | vreinterpretq_u64_f32 (float32x4_t __a) |
4871 | { | |
dbdcebb4 | 4872 | return (uint64x2_t) __a; |
df401d54 | 4873 | } |
4874 | ||
49ab9992 | 4875 | __extension__ extern __inline uint64x2_t |
4876 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4877 | vreinterpretq_u64_u8 (uint8x16_t __a) |
4878 | { | |
dbdcebb4 | 4879 | return (uint64x2_t) __a; |
df401d54 | 4880 | } |
4881 | ||
49ab9992 | 4882 | __extension__ extern __inline uint64x2_t |
4883 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4884 | vreinterpretq_u64_u16 (uint16x8_t __a) |
4885 | { | |
dbdcebb4 | 4886 | return (uint64x2_t) __a; |
df401d54 | 4887 | } |
4888 | ||
49ab9992 | 4889 | __extension__ extern __inline uint64x2_t |
4890 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4891 | vreinterpretq_u64_u32 (uint32x4_t __a) |
4892 | { | |
dbdcebb4 | 4893 | return (uint64x2_t) __a; |
df401d54 | 4894 | } |
4895 | ||
49ab9992 | 4896 | __extension__ extern __inline uint64x2_t |
4897 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4898 | vreinterpretq_u64_p8 (poly8x16_t __a) |
4899 | { | |
dbdcebb4 | 4900 | return (uint64x2_t) __a; |
df401d54 | 4901 | } |
4902 | ||
49ab9992 | 4903 | __extension__ extern __inline uint64x2_t |
4904 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4905 | vreinterpretq_u64_p16 (poly16x8_t __a) |
4906 | { | |
dbdcebb4 | 4907 | return (uint64x2_t) __a; |
df401d54 | 4908 | } |
4909 | ||
d4f47414 | 4910 | __extension__ extern __inline uint64x2_t |
4911 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4912 | vreinterpretq_u64_p64 (poly64x2_t __a) | |
4913 | { | |
4914 | return (uint64x2_t) __a; | |
4915 | } | |
4916 | ||
97789447 | 4917 | __extension__ extern __inline uint64x2_t |
4918 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4919 | vreinterpretq_u64_p128 (poly128_t __a) | |
4920 | { | |
4921 | return (uint64x2_t)__a; | |
4922 | } | |
4923 | ||
49ab9992 | 4924 | __extension__ extern __inline int8x8_t |
4925 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 4926 | vreinterpret_s8_f16 (float16x4_t __a) |
4927 | { | |
4928 | return (int8x8_t) __a; | |
4929 | } | |
4930 | ||
49ab9992 | 4931 | __extension__ extern __inline int8x8_t |
4932 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 4933 | vreinterpret_s8_f64 (float64x1_t __a) |
4934 | { | |
7c18bc4f | 4935 | return (int8x8_t) __a; |
fe44ff96 | 4936 | } |
4937 | ||
49ab9992 | 4938 | __extension__ extern __inline int8x8_t |
4939 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4940 | vreinterpret_s8_s16 (int16x4_t __a) |
4941 | { | |
dbdcebb4 | 4942 | return (int8x8_t) __a; |
df401d54 | 4943 | } |
4944 | ||
49ab9992 | 4945 | __extension__ extern __inline int8x8_t |
4946 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4947 | vreinterpret_s8_s32 (int32x2_t __a) |
4948 | { | |
dbdcebb4 | 4949 | return (int8x8_t) __a; |
df401d54 | 4950 | } |
4951 | ||
49ab9992 | 4952 | __extension__ extern __inline int8x8_t |
4953 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4954 | vreinterpret_s8_s64 (int64x1_t __a) |
4955 | { | |
dbdcebb4 | 4956 | return (int8x8_t) __a; |
df401d54 | 4957 | } |
4958 | ||
49ab9992 | 4959 | __extension__ extern __inline int8x8_t |
4960 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4961 | vreinterpret_s8_f32 (float32x2_t __a) |
4962 | { | |
dbdcebb4 | 4963 | return (int8x8_t) __a; |
df401d54 | 4964 | } |
4965 | ||
49ab9992 | 4966 | __extension__ extern __inline int8x8_t |
4967 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4968 | vreinterpret_s8_u8 (uint8x8_t __a) |
4969 | { | |
dbdcebb4 | 4970 | return (int8x8_t) __a; |
df401d54 | 4971 | } |
4972 | ||
49ab9992 | 4973 | __extension__ extern __inline int8x8_t |
4974 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4975 | vreinterpret_s8_u16 (uint16x4_t __a) |
4976 | { | |
dbdcebb4 | 4977 | return (int8x8_t) __a; |
df401d54 | 4978 | } |
4979 | ||
49ab9992 | 4980 | __extension__ extern __inline int8x8_t |
4981 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4982 | vreinterpret_s8_u32 (uint32x2_t __a) |
4983 | { | |
dbdcebb4 | 4984 | return (int8x8_t) __a; |
df401d54 | 4985 | } |
4986 | ||
49ab9992 | 4987 | __extension__ extern __inline int8x8_t |
4988 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4989 | vreinterpret_s8_u64 (uint64x1_t __a) |
4990 | { | |
dbdcebb4 | 4991 | return (int8x8_t) __a; |
df401d54 | 4992 | } |
4993 | ||
49ab9992 | 4994 | __extension__ extern __inline int8x8_t |
4995 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 4996 | vreinterpret_s8_p8 (poly8x8_t __a) |
4997 | { | |
dbdcebb4 | 4998 | return (int8x8_t) __a; |
df401d54 | 4999 | } |
5000 | ||
49ab9992 | 5001 | __extension__ extern __inline int8x8_t |
5002 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5003 | vreinterpret_s8_p16 (poly16x4_t __a) |
5004 | { | |
dbdcebb4 | 5005 | return (int8x8_t) __a; |
df401d54 | 5006 | } |
5007 | ||
d4f47414 | 5008 | __extension__ extern __inline int8x8_t |
5009 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5010 | vreinterpret_s8_p64 (poly64x1_t __a) | |
5011 | { | |
5012 | return (int8x8_t) __a; | |
5013 | } | |
5014 | ||
49ab9992 | 5015 | __extension__ extern __inline int8x16_t |
5016 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 5017 | vreinterpretq_s8_f64 (float64x2_t __a) |
5018 | { | |
5019 | return (int8x16_t) __a; | |
5020 | } | |
5021 | ||
49ab9992 | 5022 | __extension__ extern __inline int8x16_t |
5023 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5024 | vreinterpretq_s8_s16 (int16x8_t __a) |
5025 | { | |
dbdcebb4 | 5026 | return (int8x16_t) __a; |
df401d54 | 5027 | } |
5028 | ||
49ab9992 | 5029 | __extension__ extern __inline int8x16_t |
5030 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5031 | vreinterpretq_s8_s32 (int32x4_t __a) |
5032 | { | |
dbdcebb4 | 5033 | return (int8x16_t) __a; |
df401d54 | 5034 | } |
5035 | ||
49ab9992 | 5036 | __extension__ extern __inline int8x16_t |
5037 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5038 | vreinterpretq_s8_s64 (int64x2_t __a) |
5039 | { | |
dbdcebb4 | 5040 | return (int8x16_t) __a; |
df401d54 | 5041 | } |
5042 | ||
49ab9992 | 5043 | __extension__ extern __inline int8x16_t |
5044 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 5045 | vreinterpretq_s8_f16 (float16x8_t __a) |
5046 | { | |
5047 | return (int8x16_t) __a; | |
5048 | } | |
5049 | ||
49ab9992 | 5050 | __extension__ extern __inline int8x16_t |
5051 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5052 | vreinterpretq_s8_f32 (float32x4_t __a) |
5053 | { | |
dbdcebb4 | 5054 | return (int8x16_t) __a; |
df401d54 | 5055 | } |
5056 | ||
49ab9992 | 5057 | __extension__ extern __inline int8x16_t |
5058 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5059 | vreinterpretq_s8_u8 (uint8x16_t __a) |
5060 | { | |
dbdcebb4 | 5061 | return (int8x16_t) __a; |
df401d54 | 5062 | } |
5063 | ||
49ab9992 | 5064 | __extension__ extern __inline int8x16_t |
5065 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5066 | vreinterpretq_s8_u16 (uint16x8_t __a) |
5067 | { | |
dbdcebb4 | 5068 | return (int8x16_t) __a; |
df401d54 | 5069 | } |
5070 | ||
49ab9992 | 5071 | __extension__ extern __inline int8x16_t |
5072 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5073 | vreinterpretq_s8_u32 (uint32x4_t __a) |
5074 | { | |
dbdcebb4 | 5075 | return (int8x16_t) __a; |
df401d54 | 5076 | } |
5077 | ||
49ab9992 | 5078 | __extension__ extern __inline int8x16_t |
5079 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5080 | vreinterpretq_s8_u64 (uint64x2_t __a) |
5081 | { | |
dbdcebb4 | 5082 | return (int8x16_t) __a; |
df401d54 | 5083 | } |
5084 | ||
49ab9992 | 5085 | __extension__ extern __inline int8x16_t |
5086 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5087 | vreinterpretq_s8_p8 (poly8x16_t __a) |
5088 | { | |
dbdcebb4 | 5089 | return (int8x16_t) __a; |
df401d54 | 5090 | } |
5091 | ||
49ab9992 | 5092 | __extension__ extern __inline int8x16_t |
5093 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5094 | vreinterpretq_s8_p16 (poly16x8_t __a) |
5095 | { | |
dbdcebb4 | 5096 | return (int8x16_t) __a; |
df401d54 | 5097 | } |
5098 | ||
d4f47414 | 5099 | __extension__ extern __inline int8x16_t |
5100 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5101 | vreinterpretq_s8_p64 (poly64x2_t __a) | |
5102 | { | |
5103 | return (int8x16_t) __a; | |
5104 | } | |
5105 | ||
97789447 | 5106 | __extension__ extern __inline int8x16_t |
5107 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5108 | vreinterpretq_s8_p128 (poly128_t __a) | |
5109 | { | |
5110 | return (int8x16_t)__a; | |
5111 | } | |
5112 | ||
49ab9992 | 5113 | __extension__ extern __inline int16x4_t |
5114 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 5115 | vreinterpret_s16_f16 (float16x4_t __a) |
5116 | { | |
5117 | return (int16x4_t) __a; | |
5118 | } | |
5119 | ||
49ab9992 | 5120 | __extension__ extern __inline int16x4_t |
5121 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 5122 | vreinterpret_s16_f64 (float64x1_t __a) |
5123 | { | |
7c18bc4f | 5124 | return (int16x4_t) __a; |
fe44ff96 | 5125 | } |
5126 | ||
49ab9992 | 5127 | __extension__ extern __inline int16x4_t |
5128 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5129 | vreinterpret_s16_s8 (int8x8_t __a) |
5130 | { | |
dbdcebb4 | 5131 | return (int16x4_t) __a; |
df401d54 | 5132 | } |
5133 | ||
49ab9992 | 5134 | __extension__ extern __inline int16x4_t |
5135 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5136 | vreinterpret_s16_s32 (int32x2_t __a) |
5137 | { | |
dbdcebb4 | 5138 | return (int16x4_t) __a; |
df401d54 | 5139 | } |
5140 | ||
49ab9992 | 5141 | __extension__ extern __inline int16x4_t |
5142 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5143 | vreinterpret_s16_s64 (int64x1_t __a) |
5144 | { | |
dbdcebb4 | 5145 | return (int16x4_t) __a; |
df401d54 | 5146 | } |
5147 | ||
49ab9992 | 5148 | __extension__ extern __inline int16x4_t |
5149 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5150 | vreinterpret_s16_f32 (float32x2_t __a) |
5151 | { | |
dbdcebb4 | 5152 | return (int16x4_t) __a; |
df401d54 | 5153 | } |
5154 | ||
49ab9992 | 5155 | __extension__ extern __inline int16x4_t |
5156 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5157 | vreinterpret_s16_u8 (uint8x8_t __a) |
5158 | { | |
dbdcebb4 | 5159 | return (int16x4_t) __a; |
df401d54 | 5160 | } |
5161 | ||
49ab9992 | 5162 | __extension__ extern __inline int16x4_t |
5163 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5164 | vreinterpret_s16_u16 (uint16x4_t __a) |
5165 | { | |
dbdcebb4 | 5166 | return (int16x4_t) __a; |
df401d54 | 5167 | } |
5168 | ||
49ab9992 | 5169 | __extension__ extern __inline int16x4_t |
5170 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5171 | vreinterpret_s16_u32 (uint32x2_t __a) |
5172 | { | |
dbdcebb4 | 5173 | return (int16x4_t) __a; |
df401d54 | 5174 | } |
5175 | ||
49ab9992 | 5176 | __extension__ extern __inline int16x4_t |
5177 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5178 | vreinterpret_s16_u64 (uint64x1_t __a) |
5179 | { | |
dbdcebb4 | 5180 | return (int16x4_t) __a; |
df401d54 | 5181 | } |
5182 | ||
49ab9992 | 5183 | __extension__ extern __inline int16x4_t |
5184 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5185 | vreinterpret_s16_p8 (poly8x8_t __a) |
5186 | { | |
dbdcebb4 | 5187 | return (int16x4_t) __a; |
df401d54 | 5188 | } |
5189 | ||
49ab9992 | 5190 | __extension__ extern __inline int16x4_t |
5191 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5192 | vreinterpret_s16_p16 (poly16x4_t __a) |
5193 | { | |
dbdcebb4 | 5194 | return (int16x4_t) __a; |
df401d54 | 5195 | } |
5196 | ||
d4f47414 | 5197 | __extension__ extern __inline int16x4_t |
5198 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5199 | vreinterpret_s16_p64 (poly64x1_t __a) | |
5200 | { | |
5201 | return (int16x4_t) __a; | |
5202 | } | |
5203 | ||
49ab9992 | 5204 | __extension__ extern __inline int16x8_t |
5205 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 5206 | vreinterpretq_s16_f64 (float64x2_t __a) |
5207 | { | |
5208 | return (int16x8_t) __a; | |
5209 | } | |
5210 | ||
49ab9992 | 5211 | __extension__ extern __inline int16x8_t |
5212 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5213 | vreinterpretq_s16_s8 (int8x16_t __a) |
5214 | { | |
dbdcebb4 | 5215 | return (int16x8_t) __a; |
df401d54 | 5216 | } |
5217 | ||
49ab9992 | 5218 | __extension__ extern __inline int16x8_t |
5219 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5220 | vreinterpretq_s16_s32 (int32x4_t __a) |
5221 | { | |
dbdcebb4 | 5222 | return (int16x8_t) __a; |
df401d54 | 5223 | } |
5224 | ||
49ab9992 | 5225 | __extension__ extern __inline int16x8_t |
5226 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5227 | vreinterpretq_s16_s64 (int64x2_t __a) |
5228 | { | |
dbdcebb4 | 5229 | return (int16x8_t) __a; |
df401d54 | 5230 | } |
5231 | ||
49ab9992 | 5232 | __extension__ extern __inline int16x8_t |
5233 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 5234 | vreinterpretq_s16_f16 (float16x8_t __a) |
5235 | { | |
5236 | return (int16x8_t) __a; | |
5237 | } | |
5238 | ||
49ab9992 | 5239 | __extension__ extern __inline int16x8_t |
5240 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5241 | vreinterpretq_s16_f32 (float32x4_t __a) |
5242 | { | |
dbdcebb4 | 5243 | return (int16x8_t) __a; |
df401d54 | 5244 | } |
5245 | ||
49ab9992 | 5246 | __extension__ extern __inline int16x8_t |
5247 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5248 | vreinterpretq_s16_u8 (uint8x16_t __a) |
5249 | { | |
dbdcebb4 | 5250 | return (int16x8_t) __a; |
df401d54 | 5251 | } |
5252 | ||
49ab9992 | 5253 | __extension__ extern __inline int16x8_t |
5254 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5255 | vreinterpretq_s16_u16 (uint16x8_t __a) |
5256 | { | |
dbdcebb4 | 5257 | return (int16x8_t) __a; |
df401d54 | 5258 | } |
5259 | ||
49ab9992 | 5260 | __extension__ extern __inline int16x8_t |
5261 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5262 | vreinterpretq_s16_u32 (uint32x4_t __a) |
5263 | { | |
dbdcebb4 | 5264 | return (int16x8_t) __a; |
df401d54 | 5265 | } |
5266 | ||
49ab9992 | 5267 | __extension__ extern __inline int16x8_t |
5268 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5269 | vreinterpretq_s16_u64 (uint64x2_t __a) |
5270 | { | |
dbdcebb4 | 5271 | return (int16x8_t) __a; |
df401d54 | 5272 | } |
5273 | ||
49ab9992 | 5274 | __extension__ extern __inline int16x8_t |
5275 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5276 | vreinterpretq_s16_p8 (poly8x16_t __a) |
5277 | { | |
dbdcebb4 | 5278 | return (int16x8_t) __a; |
df401d54 | 5279 | } |
5280 | ||
49ab9992 | 5281 | __extension__ extern __inline int16x8_t |
5282 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5283 | vreinterpretq_s16_p16 (poly16x8_t __a) |
5284 | { | |
dbdcebb4 | 5285 | return (int16x8_t) __a; |
df401d54 | 5286 | } |
5287 | ||
d4f47414 | 5288 | __extension__ extern __inline int16x8_t |
5289 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5290 | vreinterpretq_s16_p64 (poly64x2_t __a) | |
5291 | { | |
5292 | return (int16x8_t) __a; | |
5293 | } | |
5294 | ||
97789447 | 5295 | __extension__ extern __inline int16x8_t |
5296 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5297 | vreinterpretq_s16_p128 (poly128_t __a) | |
5298 | { | |
5299 | return (int16x8_t)__a; | |
5300 | } | |
5301 | ||
49ab9992 | 5302 | __extension__ extern __inline int32x2_t |
5303 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 5304 | vreinterpret_s32_f16 (float16x4_t __a) |
5305 | { | |
5306 | return (int32x2_t) __a; | |
5307 | } | |
5308 | ||
49ab9992 | 5309 | __extension__ extern __inline int32x2_t |
5310 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 5311 | vreinterpret_s32_f64 (float64x1_t __a) |
5312 | { | |
7c18bc4f | 5313 | return (int32x2_t) __a; |
fe44ff96 | 5314 | } |
5315 | ||
49ab9992 | 5316 | __extension__ extern __inline int32x2_t |
5317 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5318 | vreinterpret_s32_s8 (int8x8_t __a) |
5319 | { | |
dbdcebb4 | 5320 | return (int32x2_t) __a; |
df401d54 | 5321 | } |
5322 | ||
49ab9992 | 5323 | __extension__ extern __inline int32x2_t |
5324 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5325 | vreinterpret_s32_s16 (int16x4_t __a) |
5326 | { | |
dbdcebb4 | 5327 | return (int32x2_t) __a; |
df401d54 | 5328 | } |
5329 | ||
49ab9992 | 5330 | __extension__ extern __inline int32x2_t |
5331 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5332 | vreinterpret_s32_s64 (int64x1_t __a) |
5333 | { | |
dbdcebb4 | 5334 | return (int32x2_t) __a; |
df401d54 | 5335 | } |
5336 | ||
49ab9992 | 5337 | __extension__ extern __inline int32x2_t |
5338 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5339 | vreinterpret_s32_f32 (float32x2_t __a) |
5340 | { | |
dbdcebb4 | 5341 | return (int32x2_t) __a; |
df401d54 | 5342 | } |
5343 | ||
49ab9992 | 5344 | __extension__ extern __inline int32x2_t |
5345 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5346 | vreinterpret_s32_u8 (uint8x8_t __a) |
5347 | { | |
dbdcebb4 | 5348 | return (int32x2_t) __a; |
df401d54 | 5349 | } |
5350 | ||
49ab9992 | 5351 | __extension__ extern __inline int32x2_t |
5352 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5353 | vreinterpret_s32_u16 (uint16x4_t __a) |
5354 | { | |
dbdcebb4 | 5355 | return (int32x2_t) __a; |
df401d54 | 5356 | } |
5357 | ||
49ab9992 | 5358 | __extension__ extern __inline int32x2_t |
5359 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5360 | vreinterpret_s32_u32 (uint32x2_t __a) |
5361 | { | |
dbdcebb4 | 5362 | return (int32x2_t) __a; |
df401d54 | 5363 | } |
5364 | ||
49ab9992 | 5365 | __extension__ extern __inline int32x2_t |
5366 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5367 | vreinterpret_s32_u64 (uint64x1_t __a) |
5368 | { | |
dbdcebb4 | 5369 | return (int32x2_t) __a; |
df401d54 | 5370 | } |
5371 | ||
49ab9992 | 5372 | __extension__ extern __inline int32x2_t |
5373 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5374 | vreinterpret_s32_p8 (poly8x8_t __a) |
5375 | { | |
dbdcebb4 | 5376 | return (int32x2_t) __a; |
df401d54 | 5377 | } |
5378 | ||
49ab9992 | 5379 | __extension__ extern __inline int32x2_t |
5380 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5381 | vreinterpret_s32_p16 (poly16x4_t __a) |
5382 | { | |
dbdcebb4 | 5383 | return (int32x2_t) __a; |
df401d54 | 5384 | } |
5385 | ||
d4f47414 | 5386 | __extension__ extern __inline int32x2_t |
5387 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5388 | vreinterpret_s32_p64 (poly64x1_t __a) | |
5389 | { | |
5390 | return (int32x2_t) __a; | |
5391 | } | |
5392 | ||
49ab9992 | 5393 | __extension__ extern __inline int32x4_t |
5394 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 5395 | vreinterpretq_s32_f64 (float64x2_t __a) |
5396 | { | |
5397 | return (int32x4_t) __a; | |
5398 | } | |
5399 | ||
49ab9992 | 5400 | __extension__ extern __inline int32x4_t |
5401 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5402 | vreinterpretq_s32_s8 (int8x16_t __a) |
5403 | { | |
dbdcebb4 | 5404 | return (int32x4_t) __a; |
df401d54 | 5405 | } |
5406 | ||
49ab9992 | 5407 | __extension__ extern __inline int32x4_t |
5408 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5409 | vreinterpretq_s32_s16 (int16x8_t __a) |
5410 | { | |
dbdcebb4 | 5411 | return (int32x4_t) __a; |
df401d54 | 5412 | } |
5413 | ||
49ab9992 | 5414 | __extension__ extern __inline int32x4_t |
5415 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5416 | vreinterpretq_s32_s64 (int64x2_t __a) |
5417 | { | |
dbdcebb4 | 5418 | return (int32x4_t) __a; |
df401d54 | 5419 | } |
5420 | ||
49ab9992 | 5421 | __extension__ extern __inline int32x4_t |
5422 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 5423 | vreinterpretq_s32_f16 (float16x8_t __a) |
5424 | { | |
5425 | return (int32x4_t) __a; | |
5426 | } | |
5427 | ||
49ab9992 | 5428 | __extension__ extern __inline int32x4_t |
5429 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5430 | vreinterpretq_s32_f32 (float32x4_t __a) |
5431 | { | |
dbdcebb4 | 5432 | return (int32x4_t) __a; |
df401d54 | 5433 | } |
5434 | ||
49ab9992 | 5435 | __extension__ extern __inline int32x4_t |
5436 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5437 | vreinterpretq_s32_u8 (uint8x16_t __a) |
5438 | { | |
dbdcebb4 | 5439 | return (int32x4_t) __a; |
df401d54 | 5440 | } |
5441 | ||
49ab9992 | 5442 | __extension__ extern __inline int32x4_t |
5443 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5444 | vreinterpretq_s32_u16 (uint16x8_t __a) |
5445 | { | |
dbdcebb4 | 5446 | return (int32x4_t) __a; |
df401d54 | 5447 | } |
5448 | ||
49ab9992 | 5449 | __extension__ extern __inline int32x4_t |
5450 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5451 | vreinterpretq_s32_u32 (uint32x4_t __a) |
5452 | { | |
dbdcebb4 | 5453 | return (int32x4_t) __a; |
df401d54 | 5454 | } |
5455 | ||
49ab9992 | 5456 | __extension__ extern __inline int32x4_t |
5457 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5458 | vreinterpretq_s32_u64 (uint64x2_t __a) |
5459 | { | |
dbdcebb4 | 5460 | return (int32x4_t) __a; |
df401d54 | 5461 | } |
5462 | ||
49ab9992 | 5463 | __extension__ extern __inline int32x4_t |
5464 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5465 | vreinterpretq_s32_p8 (poly8x16_t __a) |
5466 | { | |
dbdcebb4 | 5467 | return (int32x4_t) __a; |
df401d54 | 5468 | } |
5469 | ||
49ab9992 | 5470 | __extension__ extern __inline int32x4_t |
5471 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5472 | vreinterpretq_s32_p16 (poly16x8_t __a) |
5473 | { | |
dbdcebb4 | 5474 | return (int32x4_t) __a; |
df401d54 | 5475 | } |
5476 | ||
d4f47414 | 5477 | __extension__ extern __inline int32x4_t |
5478 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5479 | vreinterpretq_s32_p64 (poly64x2_t __a) | |
5480 | { | |
5481 | return (int32x4_t) __a; | |
5482 | } | |
5483 | ||
97789447 | 5484 | __extension__ extern __inline int32x4_t |
5485 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5486 | vreinterpretq_s32_p128 (poly128_t __a) | |
5487 | { | |
5488 | return (int32x4_t)__a; | |
5489 | } | |
5490 | ||
49ab9992 | 5491 | __extension__ extern __inline uint8x8_t |
5492 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 5493 | vreinterpret_u8_f16 (float16x4_t __a) |
5494 | { | |
5495 | return (uint8x8_t) __a; | |
5496 | } | |
5497 | ||
49ab9992 | 5498 | __extension__ extern __inline uint8x8_t |
5499 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 5500 | vreinterpret_u8_f64 (float64x1_t __a) |
5501 | { | |
7c18bc4f | 5502 | return (uint8x8_t) __a; |
fe44ff96 | 5503 | } |
5504 | ||
49ab9992 | 5505 | __extension__ extern __inline uint8x8_t |
5506 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5507 | vreinterpret_u8_s8 (int8x8_t __a) |
5508 | { | |
dbdcebb4 | 5509 | return (uint8x8_t) __a; |
df401d54 | 5510 | } |
5511 | ||
49ab9992 | 5512 | __extension__ extern __inline uint8x8_t |
5513 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5514 | vreinterpret_u8_s16 (int16x4_t __a) |
5515 | { | |
dbdcebb4 | 5516 | return (uint8x8_t) __a; |
df401d54 | 5517 | } |
5518 | ||
49ab9992 | 5519 | __extension__ extern __inline uint8x8_t |
5520 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5521 | vreinterpret_u8_s32 (int32x2_t __a) |
5522 | { | |
dbdcebb4 | 5523 | return (uint8x8_t) __a; |
df401d54 | 5524 | } |
5525 | ||
49ab9992 | 5526 | __extension__ extern __inline uint8x8_t |
5527 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5528 | vreinterpret_u8_s64 (int64x1_t __a) |
5529 | { | |
dbdcebb4 | 5530 | return (uint8x8_t) __a; |
df401d54 | 5531 | } |
5532 | ||
49ab9992 | 5533 | __extension__ extern __inline uint8x8_t |
5534 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5535 | vreinterpret_u8_f32 (float32x2_t __a) |
5536 | { | |
dbdcebb4 | 5537 | return (uint8x8_t) __a; |
df401d54 | 5538 | } |
5539 | ||
49ab9992 | 5540 | __extension__ extern __inline uint8x8_t |
5541 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5542 | vreinterpret_u8_u16 (uint16x4_t __a) |
5543 | { | |
dbdcebb4 | 5544 | return (uint8x8_t) __a; |
df401d54 | 5545 | } |
5546 | ||
49ab9992 | 5547 | __extension__ extern __inline uint8x8_t |
5548 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5549 | vreinterpret_u8_u32 (uint32x2_t __a) |
5550 | { | |
dbdcebb4 | 5551 | return (uint8x8_t) __a; |
df401d54 | 5552 | } |
5553 | ||
49ab9992 | 5554 | __extension__ extern __inline uint8x8_t |
5555 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5556 | vreinterpret_u8_u64 (uint64x1_t __a) |
5557 | { | |
dbdcebb4 | 5558 | return (uint8x8_t) __a; |
df401d54 | 5559 | } |
5560 | ||
49ab9992 | 5561 | __extension__ extern __inline uint8x8_t |
5562 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5563 | vreinterpret_u8_p8 (poly8x8_t __a) |
5564 | { | |
dbdcebb4 | 5565 | return (uint8x8_t) __a; |
df401d54 | 5566 | } |
5567 | ||
49ab9992 | 5568 | __extension__ extern __inline uint8x8_t |
5569 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5570 | vreinterpret_u8_p16 (poly16x4_t __a) |
5571 | { | |
dbdcebb4 | 5572 | return (uint8x8_t) __a; |
df401d54 | 5573 | } |
5574 | ||
d4f47414 | 5575 | __extension__ extern __inline uint8x8_t |
5576 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5577 | vreinterpret_u8_p64 (poly64x1_t __a) | |
5578 | { | |
5579 | return (uint8x8_t) __a; | |
5580 | } | |
5581 | ||
49ab9992 | 5582 | __extension__ extern __inline uint8x16_t |
5583 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 5584 | vreinterpretq_u8_f64 (float64x2_t __a) |
5585 | { | |
5586 | return (uint8x16_t) __a; | |
5587 | } | |
5588 | ||
49ab9992 | 5589 | __extension__ extern __inline uint8x16_t |
5590 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5591 | vreinterpretq_u8_s8 (int8x16_t __a) |
5592 | { | |
dbdcebb4 | 5593 | return (uint8x16_t) __a; |
df401d54 | 5594 | } |
5595 | ||
49ab9992 | 5596 | __extension__ extern __inline uint8x16_t |
5597 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5598 | vreinterpretq_u8_s16 (int16x8_t __a) |
5599 | { | |
dbdcebb4 | 5600 | return (uint8x16_t) __a; |
df401d54 | 5601 | } |
5602 | ||
49ab9992 | 5603 | __extension__ extern __inline uint8x16_t |
5604 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5605 | vreinterpretq_u8_s32 (int32x4_t __a) |
5606 | { | |
dbdcebb4 | 5607 | return (uint8x16_t) __a; |
df401d54 | 5608 | } |
5609 | ||
49ab9992 | 5610 | __extension__ extern __inline uint8x16_t |
5611 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5612 | vreinterpretq_u8_s64 (int64x2_t __a) |
5613 | { | |
dbdcebb4 | 5614 | return (uint8x16_t) __a; |
df401d54 | 5615 | } |
5616 | ||
49ab9992 | 5617 | __extension__ extern __inline uint8x16_t |
5618 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 5619 | vreinterpretq_u8_f16 (float16x8_t __a) |
5620 | { | |
5621 | return (uint8x16_t) __a; | |
5622 | } | |
5623 | ||
49ab9992 | 5624 | __extension__ extern __inline uint8x16_t |
5625 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5626 | vreinterpretq_u8_f32 (float32x4_t __a) |
5627 | { | |
dbdcebb4 | 5628 | return (uint8x16_t) __a; |
df401d54 | 5629 | } |
5630 | ||
49ab9992 | 5631 | __extension__ extern __inline uint8x16_t |
5632 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5633 | vreinterpretq_u8_u16 (uint16x8_t __a) |
5634 | { | |
dbdcebb4 | 5635 | return (uint8x16_t) __a; |
df401d54 | 5636 | } |
5637 | ||
49ab9992 | 5638 | __extension__ extern __inline uint8x16_t |
5639 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5640 | vreinterpretq_u8_u32 (uint32x4_t __a) |
5641 | { | |
dbdcebb4 | 5642 | return (uint8x16_t) __a; |
df401d54 | 5643 | } |
5644 | ||
49ab9992 | 5645 | __extension__ extern __inline uint8x16_t |
5646 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5647 | vreinterpretq_u8_u64 (uint64x2_t __a) |
5648 | { | |
dbdcebb4 | 5649 | return (uint8x16_t) __a; |
df401d54 | 5650 | } |
5651 | ||
49ab9992 | 5652 | __extension__ extern __inline uint8x16_t |
5653 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5654 | vreinterpretq_u8_p8 (poly8x16_t __a) |
5655 | { | |
dbdcebb4 | 5656 | return (uint8x16_t) __a; |
df401d54 | 5657 | } |
5658 | ||
49ab9992 | 5659 | __extension__ extern __inline uint8x16_t |
5660 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5661 | vreinterpretq_u8_p16 (poly16x8_t __a) |
5662 | { | |
dbdcebb4 | 5663 | return (uint8x16_t) __a; |
df401d54 | 5664 | } |
5665 | ||
d4f47414 | 5666 | __extension__ extern __inline uint8x16_t |
5667 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5668 | vreinterpretq_u8_p64 (poly64x2_t __a) | |
5669 | { | |
5670 | return (uint8x16_t) __a; | |
5671 | } | |
5672 | ||
97789447 | 5673 | __extension__ extern __inline uint8x16_t |
5674 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5675 | vreinterpretq_u8_p128 (poly128_t __a) | |
5676 | { | |
5677 | return (uint8x16_t)__a; | |
5678 | } | |
5679 | ||
49ab9992 | 5680 | __extension__ extern __inline uint16x4_t |
5681 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 5682 | vreinterpret_u16_f16 (float16x4_t __a) |
5683 | { | |
5684 | return (uint16x4_t) __a; | |
5685 | } | |
5686 | ||
49ab9992 | 5687 | __extension__ extern __inline uint16x4_t |
5688 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 5689 | vreinterpret_u16_f64 (float64x1_t __a) |
5690 | { | |
7c18bc4f | 5691 | return (uint16x4_t) __a; |
fe44ff96 | 5692 | } |
5693 | ||
49ab9992 | 5694 | __extension__ extern __inline uint16x4_t |
5695 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5696 | vreinterpret_u16_s8 (int8x8_t __a) |
5697 | { | |
dbdcebb4 | 5698 | return (uint16x4_t) __a; |
df401d54 | 5699 | } |
5700 | ||
49ab9992 | 5701 | __extension__ extern __inline uint16x4_t |
5702 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5703 | vreinterpret_u16_s16 (int16x4_t __a) |
5704 | { | |
dbdcebb4 | 5705 | return (uint16x4_t) __a; |
df401d54 | 5706 | } |
5707 | ||
49ab9992 | 5708 | __extension__ extern __inline uint16x4_t |
5709 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5710 | vreinterpret_u16_s32 (int32x2_t __a) |
5711 | { | |
dbdcebb4 | 5712 | return (uint16x4_t) __a; |
df401d54 | 5713 | } |
5714 | ||
49ab9992 | 5715 | __extension__ extern __inline uint16x4_t |
5716 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5717 | vreinterpret_u16_s64 (int64x1_t __a) |
5718 | { | |
dbdcebb4 | 5719 | return (uint16x4_t) __a; |
df401d54 | 5720 | } |
5721 | ||
49ab9992 | 5722 | __extension__ extern __inline uint16x4_t |
5723 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5724 | vreinterpret_u16_f32 (float32x2_t __a) |
5725 | { | |
dbdcebb4 | 5726 | return (uint16x4_t) __a; |
df401d54 | 5727 | } |
5728 | ||
49ab9992 | 5729 | __extension__ extern __inline uint16x4_t |
5730 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5731 | vreinterpret_u16_u8 (uint8x8_t __a) |
5732 | { | |
dbdcebb4 | 5733 | return (uint16x4_t) __a; |
df401d54 | 5734 | } |
5735 | ||
49ab9992 | 5736 | __extension__ extern __inline uint16x4_t |
5737 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5738 | vreinterpret_u16_u32 (uint32x2_t __a) |
5739 | { | |
dbdcebb4 | 5740 | return (uint16x4_t) __a; |
df401d54 | 5741 | } |
5742 | ||
49ab9992 | 5743 | __extension__ extern __inline uint16x4_t |
5744 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5745 | vreinterpret_u16_u64 (uint64x1_t __a) |
5746 | { | |
dbdcebb4 | 5747 | return (uint16x4_t) __a; |
df401d54 | 5748 | } |
5749 | ||
49ab9992 | 5750 | __extension__ extern __inline uint16x4_t |
5751 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5752 | vreinterpret_u16_p8 (poly8x8_t __a) |
5753 | { | |
dbdcebb4 | 5754 | return (uint16x4_t) __a; |
df401d54 | 5755 | } |
5756 | ||
49ab9992 | 5757 | __extension__ extern __inline uint16x4_t |
5758 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5759 | vreinterpret_u16_p16 (poly16x4_t __a) |
5760 | { | |
dbdcebb4 | 5761 | return (uint16x4_t) __a; |
df401d54 | 5762 | } |
5763 | ||
d4f47414 | 5764 | __extension__ extern __inline uint16x4_t |
5765 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5766 | vreinterpret_u16_p64 (poly64x1_t __a) | |
5767 | { | |
5768 | return (uint16x4_t) __a; | |
5769 | } | |
5770 | ||
49ab9992 | 5771 | __extension__ extern __inline uint16x8_t |
5772 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 5773 | vreinterpretq_u16_f64 (float64x2_t __a) |
5774 | { | |
5775 | return (uint16x8_t) __a; | |
5776 | } | |
5777 | ||
49ab9992 | 5778 | __extension__ extern __inline uint16x8_t |
5779 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5780 | vreinterpretq_u16_s8 (int8x16_t __a) |
5781 | { | |
dbdcebb4 | 5782 | return (uint16x8_t) __a; |
df401d54 | 5783 | } |
5784 | ||
49ab9992 | 5785 | __extension__ extern __inline uint16x8_t |
5786 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5787 | vreinterpretq_u16_s16 (int16x8_t __a) |
5788 | { | |
dbdcebb4 | 5789 | return (uint16x8_t) __a; |
df401d54 | 5790 | } |
5791 | ||
49ab9992 | 5792 | __extension__ extern __inline uint16x8_t |
5793 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5794 | vreinterpretq_u16_s32 (int32x4_t __a) |
5795 | { | |
dbdcebb4 | 5796 | return (uint16x8_t) __a; |
df401d54 | 5797 | } |
5798 | ||
49ab9992 | 5799 | __extension__ extern __inline uint16x8_t |
5800 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5801 | vreinterpretq_u16_s64 (int64x2_t __a) |
5802 | { | |
dbdcebb4 | 5803 | return (uint16x8_t) __a; |
df401d54 | 5804 | } |
5805 | ||
49ab9992 | 5806 | __extension__ extern __inline uint16x8_t |
5807 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 5808 | vreinterpretq_u16_f16 (float16x8_t __a) |
5809 | { | |
5810 | return (uint16x8_t) __a; | |
5811 | } | |
5812 | ||
49ab9992 | 5813 | __extension__ extern __inline uint16x8_t |
5814 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5815 | vreinterpretq_u16_f32 (float32x4_t __a) |
5816 | { | |
dbdcebb4 | 5817 | return (uint16x8_t) __a; |
df401d54 | 5818 | } |
5819 | ||
49ab9992 | 5820 | __extension__ extern __inline uint16x8_t |
5821 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5822 | vreinterpretq_u16_u8 (uint8x16_t __a) |
5823 | { | |
dbdcebb4 | 5824 | return (uint16x8_t) __a; |
df401d54 | 5825 | } |
5826 | ||
49ab9992 | 5827 | __extension__ extern __inline uint16x8_t |
5828 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5829 | vreinterpretq_u16_u32 (uint32x4_t __a) |
5830 | { | |
dbdcebb4 | 5831 | return (uint16x8_t) __a; |
df401d54 | 5832 | } |
5833 | ||
49ab9992 | 5834 | __extension__ extern __inline uint16x8_t |
5835 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5836 | vreinterpretq_u16_u64 (uint64x2_t __a) |
5837 | { | |
dbdcebb4 | 5838 | return (uint16x8_t) __a; |
df401d54 | 5839 | } |
5840 | ||
49ab9992 | 5841 | __extension__ extern __inline uint16x8_t |
5842 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5843 | vreinterpretq_u16_p8 (poly8x16_t __a) |
5844 | { | |
dbdcebb4 | 5845 | return (uint16x8_t) __a; |
df401d54 | 5846 | } |
5847 | ||
49ab9992 | 5848 | __extension__ extern __inline uint16x8_t |
5849 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5850 | vreinterpretq_u16_p16 (poly16x8_t __a) |
5851 | { | |
dbdcebb4 | 5852 | return (uint16x8_t) __a; |
df401d54 | 5853 | } |
5854 | ||
d4f47414 | 5855 | __extension__ extern __inline uint16x8_t |
5856 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5857 | vreinterpretq_u16_p64 (poly64x2_t __a) | |
5858 | { | |
5859 | return (uint16x8_t) __a; | |
5860 | } | |
5861 | ||
97789447 | 5862 | __extension__ extern __inline uint16x8_t |
5863 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5864 | vreinterpretq_u16_p128 (poly128_t __a) | |
5865 | { | |
5866 | return (uint16x8_t)__a; | |
5867 | } | |
5868 | ||
49ab9992 | 5869 | __extension__ extern __inline uint32x2_t |
5870 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 5871 | vreinterpret_u32_f16 (float16x4_t __a) |
5872 | { | |
5873 | return (uint32x2_t) __a; | |
5874 | } | |
5875 | ||
49ab9992 | 5876 | __extension__ extern __inline uint32x2_t |
5877 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 5878 | vreinterpret_u32_f64 (float64x1_t __a) |
5879 | { | |
7c18bc4f | 5880 | return (uint32x2_t) __a; |
fe44ff96 | 5881 | } |
5882 | ||
49ab9992 | 5883 | __extension__ extern __inline uint32x2_t |
5884 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5885 | vreinterpret_u32_s8 (int8x8_t __a) |
5886 | { | |
dbdcebb4 | 5887 | return (uint32x2_t) __a; |
df401d54 | 5888 | } |
5889 | ||
49ab9992 | 5890 | __extension__ extern __inline uint32x2_t |
5891 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5892 | vreinterpret_u32_s16 (int16x4_t __a) |
5893 | { | |
dbdcebb4 | 5894 | return (uint32x2_t) __a; |
df401d54 | 5895 | } |
5896 | ||
49ab9992 | 5897 | __extension__ extern __inline uint32x2_t |
5898 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5899 | vreinterpret_u32_s32 (int32x2_t __a) |
5900 | { | |
dbdcebb4 | 5901 | return (uint32x2_t) __a; |
df401d54 | 5902 | } |
5903 | ||
49ab9992 | 5904 | __extension__ extern __inline uint32x2_t |
5905 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5906 | vreinterpret_u32_s64 (int64x1_t __a) |
5907 | { | |
dbdcebb4 | 5908 | return (uint32x2_t) __a; |
df401d54 | 5909 | } |
5910 | ||
49ab9992 | 5911 | __extension__ extern __inline uint32x2_t |
5912 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5913 | vreinterpret_u32_f32 (float32x2_t __a) |
5914 | { | |
dbdcebb4 | 5915 | return (uint32x2_t) __a; |
df401d54 | 5916 | } |
5917 | ||
49ab9992 | 5918 | __extension__ extern __inline uint32x2_t |
5919 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5920 | vreinterpret_u32_u8 (uint8x8_t __a) |
5921 | { | |
dbdcebb4 | 5922 | return (uint32x2_t) __a; |
df401d54 | 5923 | } |
5924 | ||
49ab9992 | 5925 | __extension__ extern __inline uint32x2_t |
5926 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5927 | vreinterpret_u32_u16 (uint16x4_t __a) |
5928 | { | |
dbdcebb4 | 5929 | return (uint32x2_t) __a; |
df401d54 | 5930 | } |
5931 | ||
49ab9992 | 5932 | __extension__ extern __inline uint32x2_t |
5933 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5934 | vreinterpret_u32_u64 (uint64x1_t __a) |
5935 | { | |
dbdcebb4 | 5936 | return (uint32x2_t) __a; |
df401d54 | 5937 | } |
5938 | ||
49ab9992 | 5939 | __extension__ extern __inline uint32x2_t |
5940 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5941 | vreinterpret_u32_p8 (poly8x8_t __a) |
5942 | { | |
dbdcebb4 | 5943 | return (uint32x2_t) __a; |
df401d54 | 5944 | } |
5945 | ||
49ab9992 | 5946 | __extension__ extern __inline uint32x2_t |
5947 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5948 | vreinterpret_u32_p16 (poly16x4_t __a) |
5949 | { | |
dbdcebb4 | 5950 | return (uint32x2_t) __a; |
fe44ff96 | 5951 | } |
5952 | ||
d4f47414 | 5953 | __extension__ extern __inline uint32x2_t |
5954 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5955 | vreinterpret_u32_p64 (poly64x1_t __a) | |
5956 | { | |
5957 | return (uint32x2_t) __a; | |
5958 | } | |
5959 | ||
49ab9992 | 5960 | __extension__ extern __inline uint32x4_t |
5961 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fe44ff96 | 5962 | vreinterpretq_u32_f64 (float64x2_t __a) |
5963 | { | |
5964 | return (uint32x4_t) __a; | |
df401d54 | 5965 | } |
5966 | ||
49ab9992 | 5967 | __extension__ extern __inline uint32x4_t |
5968 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5969 | vreinterpretq_u32_s8 (int8x16_t __a) |
5970 | { | |
dbdcebb4 | 5971 | return (uint32x4_t) __a; |
df401d54 | 5972 | } |
5973 | ||
49ab9992 | 5974 | __extension__ extern __inline uint32x4_t |
5975 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5976 | vreinterpretq_u32_s16 (int16x8_t __a) |
5977 | { | |
dbdcebb4 | 5978 | return (uint32x4_t) __a; |
df401d54 | 5979 | } |
5980 | ||
49ab9992 | 5981 | __extension__ extern __inline uint32x4_t |
5982 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5983 | vreinterpretq_u32_s32 (int32x4_t __a) |
5984 | { | |
dbdcebb4 | 5985 | return (uint32x4_t) __a; |
df401d54 | 5986 | } |
5987 | ||
49ab9992 | 5988 | __extension__ extern __inline uint32x4_t |
5989 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 5990 | vreinterpretq_u32_s64 (int64x2_t __a) |
5991 | { | |
dbdcebb4 | 5992 | return (uint32x4_t) __a; |
df401d54 | 5993 | } |
5994 | ||
49ab9992 | 5995 | __extension__ extern __inline uint32x4_t |
5996 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 5997 | vreinterpretq_u32_f16 (float16x8_t __a) |
5998 | { | |
5999 | return (uint32x4_t) __a; | |
6000 | } | |
6001 | ||
49ab9992 | 6002 | __extension__ extern __inline uint32x4_t |
6003 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6004 | vreinterpretq_u32_f32 (float32x4_t __a) |
6005 | { | |
dbdcebb4 | 6006 | return (uint32x4_t) __a; |
df401d54 | 6007 | } |
6008 | ||
49ab9992 | 6009 | __extension__ extern __inline uint32x4_t |
6010 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6011 | vreinterpretq_u32_u8 (uint8x16_t __a) |
6012 | { | |
dbdcebb4 | 6013 | return (uint32x4_t) __a; |
df401d54 | 6014 | } |
6015 | ||
49ab9992 | 6016 | __extension__ extern __inline uint32x4_t |
6017 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6018 | vreinterpretq_u32_u16 (uint16x8_t __a) |
6019 | { | |
dbdcebb4 | 6020 | return (uint32x4_t) __a; |
df401d54 | 6021 | } |
6022 | ||
49ab9992 | 6023 | __extension__ extern __inline uint32x4_t |
6024 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6025 | vreinterpretq_u32_u64 (uint64x2_t __a) |
6026 | { | |
dbdcebb4 | 6027 | return (uint32x4_t) __a; |
df401d54 | 6028 | } |
6029 | ||
49ab9992 | 6030 | __extension__ extern __inline uint32x4_t |
6031 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6032 | vreinterpretq_u32_p8 (poly8x16_t __a) |
6033 | { | |
dbdcebb4 | 6034 | return (uint32x4_t) __a; |
df401d54 | 6035 | } |
6036 | ||
49ab9992 | 6037 | __extension__ extern __inline uint32x4_t |
6038 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6039 | vreinterpretq_u32_p16 (poly16x8_t __a) |
6040 | { | |
dbdcebb4 | 6041 | return (uint32x4_t) __a; |
df401d54 | 6042 | } |
6043 | ||
d4f47414 | 6044 | __extension__ extern __inline uint32x4_t |
6045 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6046 | vreinterpretq_u32_p64 (poly64x2_t __a) | |
6047 | { | |
6048 | return (uint32x4_t) __a; | |
6049 | } | |
6050 | ||
97789447 | 6051 | __extension__ extern __inline uint32x4_t |
6052 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6053 | vreinterpretq_u32_p128 (poly128_t __a) | |
6054 | { | |
6055 | return (uint32x4_t)__a; | |
6056 | } | |
6057 | ||
96ddcbba | 6058 | /* vset_lane */ |
6059 | ||
49ab9992 | 6060 | __extension__ extern __inline float16x4_t |
6061 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
aea31229 | 6062 | vset_lane_f16 (float16_t __elem, float16x4_t __vec, const int __index) |
6063 | { | |
6064 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6065 | } | |
6066 | ||
49ab9992 | 6067 | __extension__ extern __inline float32x2_t |
6068 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6069 | vset_lane_f32 (float32_t __elem, float32x2_t __vec, const int __index) |
6070 | { | |
6071 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6072 | } | |
6073 | ||
49ab9992 | 6074 | __extension__ extern __inline float64x1_t |
6075 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6076 | vset_lane_f64 (float64_t __elem, float64x1_t __vec, const int __index) |
6077 | { | |
6078 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6079 | } | |
6080 | ||
49ab9992 | 6081 | __extension__ extern __inline poly8x8_t |
6082 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6083 | vset_lane_p8 (poly8_t __elem, poly8x8_t __vec, const int __index) |
6084 | { | |
6085 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6086 | } | |
6087 | ||
49ab9992 | 6088 | __extension__ extern __inline poly16x4_t |
6089 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6090 | vset_lane_p16 (poly16_t __elem, poly16x4_t __vec, const int __index) |
6091 | { | |
6092 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6093 | } | |
6094 | ||
d4f47414 | 6095 | __extension__ extern __inline poly64x1_t |
6096 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6097 | vset_lane_p64 (poly64_t __elem, poly64x1_t __vec, const int __index) | |
6098 | { | |
6099 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6100 | } | |
6101 | ||
49ab9992 | 6102 | __extension__ extern __inline int8x8_t |
6103 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6104 | vset_lane_s8 (int8_t __elem, int8x8_t __vec, const int __index) |
6105 | { | |
6106 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6107 | } | |
6108 | ||
49ab9992 | 6109 | __extension__ extern __inline int16x4_t |
6110 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6111 | vset_lane_s16 (int16_t __elem, int16x4_t __vec, const int __index) |
6112 | { | |
6113 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6114 | } | |
6115 | ||
49ab9992 | 6116 | __extension__ extern __inline int32x2_t |
6117 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6118 | vset_lane_s32 (int32_t __elem, int32x2_t __vec, const int __index) |
6119 | { | |
6120 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6121 | } | |
6122 | ||
49ab9992 | 6123 | __extension__ extern __inline int64x1_t |
6124 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6125 | vset_lane_s64 (int64_t __elem, int64x1_t __vec, const int __index) |
6126 | { | |
6127 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6128 | } | |
6129 | ||
49ab9992 | 6130 | __extension__ extern __inline uint8x8_t |
6131 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6132 | vset_lane_u8 (uint8_t __elem, uint8x8_t __vec, const int __index) |
6133 | { | |
6134 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6135 | } | |
6136 | ||
49ab9992 | 6137 | __extension__ extern __inline uint16x4_t |
6138 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6139 | vset_lane_u16 (uint16_t __elem, uint16x4_t __vec, const int __index) |
6140 | { | |
6141 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6142 | } | |
6143 | ||
49ab9992 | 6144 | __extension__ extern __inline uint32x2_t |
6145 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6146 | vset_lane_u32 (uint32_t __elem, uint32x2_t __vec, const int __index) |
6147 | { | |
6148 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6149 | } | |
6150 | ||
49ab9992 | 6151 | __extension__ extern __inline uint64x1_t |
6152 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6153 | vset_lane_u64 (uint64_t __elem, uint64x1_t __vec, const int __index) |
6154 | { | |
6155 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6156 | } | |
6157 | ||
6158 | /* vsetq_lane */ | |
6159 | ||
49ab9992 | 6160 | __extension__ extern __inline float16x8_t |
6161 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
aea31229 | 6162 | vsetq_lane_f16 (float16_t __elem, float16x8_t __vec, const int __index) |
6163 | { | |
6164 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6165 | } | |
6166 | ||
49ab9992 | 6167 | __extension__ extern __inline float32x4_t |
6168 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6169 | vsetq_lane_f32 (float32_t __elem, float32x4_t __vec, const int __index) |
6170 | { | |
6171 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6172 | } | |
6173 | ||
49ab9992 | 6174 | __extension__ extern __inline float64x2_t |
6175 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6176 | vsetq_lane_f64 (float64_t __elem, float64x2_t __vec, const int __index) |
6177 | { | |
6178 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6179 | } | |
6180 | ||
49ab9992 | 6181 | __extension__ extern __inline poly8x16_t |
6182 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6183 | vsetq_lane_p8 (poly8_t __elem, poly8x16_t __vec, const int __index) |
6184 | { | |
6185 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6186 | } | |
6187 | ||
d4f47414 | 6188 | __extension__ extern __inline poly16x8_t |
6189 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6190 | vsetq_lane_p16 (poly16_t __elem, poly16x8_t __vec, const int __index) | |
6191 | { | |
6192 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6193 | } | |
6194 | ||
6195 | __extension__ extern __inline poly64x2_t | |
49ab9992 | 6196 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
d4f47414 | 6197 | vsetq_lane_p64 (poly64_t __elem, poly64x2_t __vec, const int __index) |
96ddcbba | 6198 | { |
6199 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6200 | } | |
6201 | ||
49ab9992 | 6202 | __extension__ extern __inline int8x16_t |
6203 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6204 | vsetq_lane_s8 (int8_t __elem, int8x16_t __vec, const int __index) |
6205 | { | |
6206 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6207 | } | |
6208 | ||
49ab9992 | 6209 | __extension__ extern __inline int16x8_t |
6210 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6211 | vsetq_lane_s16 (int16_t __elem, int16x8_t __vec, const int __index) |
6212 | { | |
6213 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6214 | } | |
6215 | ||
49ab9992 | 6216 | __extension__ extern __inline int32x4_t |
6217 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6218 | vsetq_lane_s32 (int32_t __elem, int32x4_t __vec, const int __index) |
6219 | { | |
6220 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6221 | } | |
6222 | ||
49ab9992 | 6223 | __extension__ extern __inline int64x2_t |
6224 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6225 | vsetq_lane_s64 (int64_t __elem, int64x2_t __vec, const int __index) |
6226 | { | |
6227 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6228 | } | |
6229 | ||
49ab9992 | 6230 | __extension__ extern __inline uint8x16_t |
6231 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6232 | vsetq_lane_u8 (uint8_t __elem, uint8x16_t __vec, const int __index) |
6233 | { | |
6234 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6235 | } | |
6236 | ||
49ab9992 | 6237 | __extension__ extern __inline uint16x8_t |
6238 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6239 | vsetq_lane_u16 (uint16_t __elem, uint16x8_t __vec, const int __index) |
6240 | { | |
6241 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6242 | } | |
6243 | ||
49ab9992 | 6244 | __extension__ extern __inline uint32x4_t |
6245 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6246 | vsetq_lane_u32 (uint32_t __elem, uint32x4_t __vec, const int __index) |
6247 | { | |
6248 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6249 | } | |
6250 | ||
49ab9992 | 6251 | __extension__ extern __inline uint64x2_t |
6252 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96ddcbba | 6253 | vsetq_lane_u64 (uint64_t __elem, uint64x2_t __vec, const int __index) |
6254 | { | |
6255 | return __aarch64_vset_lane_any (__elem, __vec, __index); | |
6256 | } | |
6257 | ||
024b3420 | 6258 | #define __GET_LOW(__TYPE) \ |
6259 | uint64x2_t tmp = vreinterpretq_u64_##__TYPE (__a); \ | |
12fc7207 | 6260 | uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0)); \ |
024b3420 | 6261 | return vreinterpret_##__TYPE##_u64 (lo); |
6262 | ||
49ab9992 | 6263 | __extension__ extern __inline float16x4_t |
6264 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 6265 | vget_low_f16 (float16x8_t __a) |
6266 | { | |
6267 | __GET_LOW (f16); | |
6268 | } | |
6269 | ||
49ab9992 | 6270 | __extension__ extern __inline float32x2_t |
6271 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
024b3420 | 6272 | vget_low_f32 (float32x4_t __a) |
6273 | { | |
6274 | __GET_LOW (f32); | |
6275 | } | |
6276 | ||
49ab9992 | 6277 | __extension__ extern __inline float64x1_t |
6278 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
024b3420 | 6279 | vget_low_f64 (float64x2_t __a) |
6280 | { | |
ac292ff5 | 6281 | return (float64x1_t) {vgetq_lane_f64 (__a, 0)}; |
024b3420 | 6282 | } |
6283 | ||
49ab9992 | 6284 | __extension__ extern __inline poly8x8_t |
6285 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
024b3420 | 6286 | vget_low_p8 (poly8x16_t __a) |
6287 | { | |
6288 | __GET_LOW (p8); | |
6289 | } | |
6290 | ||
49ab9992 | 6291 | __extension__ extern __inline poly16x4_t |
6292 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
024b3420 | 6293 | vget_low_p16 (poly16x8_t __a) |
6294 | { | |
6295 | __GET_LOW (p16); | |
6296 | } | |
6297 | ||
d4f47414 | 6298 | __extension__ extern __inline poly64x1_t |
6299 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6300 | vget_low_p64 (poly64x2_t __a) | |
6301 | { | |
6302 | __GET_LOW (p64); | |
6303 | } | |
6304 | ||
49ab9992 | 6305 | __extension__ extern __inline int8x8_t |
6306 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
024b3420 | 6307 | vget_low_s8 (int8x16_t __a) |
6308 | { | |
6309 | __GET_LOW (s8); | |
6310 | } | |
6311 | ||
49ab9992 | 6312 | __extension__ extern __inline int16x4_t |
6313 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
024b3420 | 6314 | vget_low_s16 (int16x8_t __a) |
6315 | { | |
6316 | __GET_LOW (s16); | |
6317 | } | |
6318 | ||
49ab9992 | 6319 | __extension__ extern __inline int32x2_t |
6320 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
024b3420 | 6321 | vget_low_s32 (int32x4_t __a) |
6322 | { | |
6323 | __GET_LOW (s32); | |
6324 | } | |
6325 | ||
49ab9992 | 6326 | __extension__ extern __inline int64x1_t |
6327 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
024b3420 | 6328 | vget_low_s64 (int64x2_t __a) |
6329 | { | |
12fc7207 | 6330 | __GET_LOW (s64); |
024b3420 | 6331 | } |
6332 | ||
49ab9992 | 6333 | __extension__ extern __inline uint8x8_t |
6334 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
024b3420 | 6335 | vget_low_u8 (uint8x16_t __a) |
6336 | { | |
6337 | __GET_LOW (u8); | |
6338 | } | |
6339 | ||
49ab9992 | 6340 | __extension__ extern __inline uint16x4_t |
6341 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
024b3420 | 6342 | vget_low_u16 (uint16x8_t __a) |
6343 | { | |
6344 | __GET_LOW (u16); | |
6345 | } | |
6346 | ||
49ab9992 | 6347 | __extension__ extern __inline uint32x2_t |
6348 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
024b3420 | 6349 | vget_low_u32 (uint32x4_t __a) |
6350 | { | |
6351 | __GET_LOW (u32); | |
6352 | } | |
6353 | ||
49ab9992 | 6354 | __extension__ extern __inline uint64x1_t |
6355 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
024b3420 | 6356 | vget_low_u64 (uint64x2_t __a) |
6357 | { | |
12fc7207 | 6358 | return vcreate_u64 (vgetq_lane_u64 (__a, 0)); |
024b3420 | 6359 | } |
6360 | ||
6361 | #undef __GET_LOW | |
6362 | ||
a6b41851 | 6363 | #define __GET_HIGH(__TYPE) \ |
6364 | uint64x2_t tmp = vreinterpretq_u64_##__TYPE (__a); \ | |
6365 | uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); \ | |
6366 | return vreinterpret_##__TYPE##_u64 (hi); | |
6367 | ||
49ab9992 | 6368 | __extension__ extern __inline float16x4_t |
6369 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 6370 | vget_high_f16 (float16x8_t __a) |
6371 | { | |
6372 | __GET_HIGH (f16); | |
6373 | } | |
6374 | ||
49ab9992 | 6375 | __extension__ extern __inline float32x2_t |
6376 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a6b41851 | 6377 | vget_high_f32 (float32x4_t __a) |
6378 | { | |
6379 | __GET_HIGH (f32); | |
6380 | } | |
6381 | ||
49ab9992 | 6382 | __extension__ extern __inline float64x1_t |
6383 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a6b41851 | 6384 | vget_high_f64 (float64x2_t __a) |
6385 | { | |
6386 | __GET_HIGH (f64); | |
6387 | } | |
6388 | ||
49ab9992 | 6389 | __extension__ extern __inline poly8x8_t |
6390 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a6b41851 | 6391 | vget_high_p8 (poly8x16_t __a) |
6392 | { | |
6393 | __GET_HIGH (p8); | |
6394 | } | |
6395 | ||
49ab9992 | 6396 | __extension__ extern __inline poly16x4_t |
6397 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a6b41851 | 6398 | vget_high_p16 (poly16x8_t __a) |
6399 | { | |
6400 | __GET_HIGH (p16); | |
6401 | } | |
6402 | ||
d4f47414 | 6403 | __extension__ extern __inline poly64x1_t |
6404 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6405 | vget_high_p64 (poly64x2_t __a) | |
6406 | { | |
6407 | __GET_HIGH (p64); | |
6408 | } | |
6409 | ||
49ab9992 | 6410 | __extension__ extern __inline int8x8_t |
6411 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a6b41851 | 6412 | vget_high_s8 (int8x16_t __a) |
6413 | { | |
6414 | __GET_HIGH (s8); | |
6415 | } | |
6416 | ||
49ab9992 | 6417 | __extension__ extern __inline int16x4_t |
6418 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a6b41851 | 6419 | vget_high_s16 (int16x8_t __a) |
6420 | { | |
6421 | __GET_HIGH (s16); | |
6422 | } | |
6423 | ||
49ab9992 | 6424 | __extension__ extern __inline int32x2_t |
6425 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a6b41851 | 6426 | vget_high_s32 (int32x4_t __a) |
6427 | { | |
6428 | __GET_HIGH (s32); | |
6429 | } | |
6430 | ||
49ab9992 | 6431 | __extension__ extern __inline int64x1_t |
6432 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a6b41851 | 6433 | vget_high_s64 (int64x2_t __a) |
6434 | { | |
6435 | __GET_HIGH (s64); | |
6436 | } | |
6437 | ||
49ab9992 | 6438 | __extension__ extern __inline uint8x8_t |
6439 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a6b41851 | 6440 | vget_high_u8 (uint8x16_t __a) |
6441 | { | |
6442 | __GET_HIGH (u8); | |
6443 | } | |
6444 | ||
49ab9992 | 6445 | __extension__ extern __inline uint16x4_t |
6446 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a6b41851 | 6447 | vget_high_u16 (uint16x8_t __a) |
6448 | { | |
6449 | __GET_HIGH (u16); | |
6450 | } | |
6451 | ||
49ab9992 | 6452 | __extension__ extern __inline uint32x2_t |
6453 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a6b41851 | 6454 | vget_high_u32 (uint32x4_t __a) |
6455 | { | |
6456 | __GET_HIGH (u32); | |
6457 | } | |
6458 | ||
6459 | #undef __GET_HIGH | |
6460 | ||
49ab9992 | 6461 | __extension__ extern __inline uint64x1_t |
6462 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a6b41851 | 6463 | vget_high_u64 (uint64x2_t __a) |
6464 | { | |
6465 | return vcreate_u64 (vgetq_lane_u64 (__a, 1)); | |
6466 | } | |
6467 | ||
49ab9992 | 6468 | __extension__ extern __inline int8x16_t |
6469 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6470 | vcombine_s8 (int8x8_t __a, int8x8_t __b) |
6471 | { | |
6472 | return (int8x16_t) __builtin_aarch64_combinev8qi (__a, __b); | |
6473 | } | |
6474 | ||
49ab9992 | 6475 | __extension__ extern __inline int16x8_t |
6476 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6477 | vcombine_s16 (int16x4_t __a, int16x4_t __b) |
6478 | { | |
6479 | return (int16x8_t) __builtin_aarch64_combinev4hi (__a, __b); | |
6480 | } | |
6481 | ||
49ab9992 | 6482 | __extension__ extern __inline int32x4_t |
6483 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6484 | vcombine_s32 (int32x2_t __a, int32x2_t __b) |
6485 | { | |
6486 | return (int32x4_t) __builtin_aarch64_combinev2si (__a, __b); | |
6487 | } | |
6488 | ||
49ab9992 | 6489 | __extension__ extern __inline int64x2_t |
6490 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6491 | vcombine_s64 (int64x1_t __a, int64x1_t __b) |
6492 | { | |
12fc7207 | 6493 | return __builtin_aarch64_combinedi (__a[0], __b[0]); |
df401d54 | 6494 | } |
6495 | ||
49ab9992 | 6496 | __extension__ extern __inline float16x8_t |
6497 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 6498 | vcombine_f16 (float16x4_t __a, float16x4_t __b) |
6499 | { | |
6500 | return __builtin_aarch64_combinev4hf (__a, __b); | |
6501 | } | |
6502 | ||
49ab9992 | 6503 | __extension__ extern __inline float32x4_t |
6504 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6505 | vcombine_f32 (float32x2_t __a, float32x2_t __b) |
6506 | { | |
6507 | return (float32x4_t) __builtin_aarch64_combinev2sf (__a, __b); | |
6508 | } | |
6509 | ||
49ab9992 | 6510 | __extension__ extern __inline uint8x16_t |
6511 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6512 | vcombine_u8 (uint8x8_t __a, uint8x8_t __b) |
6513 | { | |
6514 | return (uint8x16_t) __builtin_aarch64_combinev8qi ((int8x8_t) __a, | |
6515 | (int8x8_t) __b); | |
6516 | } | |
6517 | ||
49ab9992 | 6518 | __extension__ extern __inline uint16x8_t |
6519 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6520 | vcombine_u16 (uint16x4_t __a, uint16x4_t __b) |
6521 | { | |
6522 | return (uint16x8_t) __builtin_aarch64_combinev4hi ((int16x4_t) __a, | |
6523 | (int16x4_t) __b); | |
6524 | } | |
6525 | ||
49ab9992 | 6526 | __extension__ extern __inline uint32x4_t |
6527 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6528 | vcombine_u32 (uint32x2_t __a, uint32x2_t __b) |
6529 | { | |
6530 | return (uint32x4_t) __builtin_aarch64_combinev2si ((int32x2_t) __a, | |
6531 | (int32x2_t) __b); | |
6532 | } | |
6533 | ||
49ab9992 | 6534 | __extension__ extern __inline uint64x2_t |
6535 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6536 | vcombine_u64 (uint64x1_t __a, uint64x1_t __b) |
6537 | { | |
12fc7207 | 6538 | return (uint64x2_t) __builtin_aarch64_combinedi (__a[0], __b[0]); |
df401d54 | 6539 | } |
6540 | ||
49ab9992 | 6541 | __extension__ extern __inline float64x2_t |
6542 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6543 | vcombine_f64 (float64x1_t __a, float64x1_t __b) |
6544 | { | |
ac292ff5 | 6545 | return __builtin_aarch64_combinedf (__a[0], __b[0]); |
df401d54 | 6546 | } |
6547 | ||
49ab9992 | 6548 | __extension__ extern __inline poly8x16_t |
6549 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6550 | vcombine_p8 (poly8x8_t __a, poly8x8_t __b) |
6551 | { | |
6552 | return (poly8x16_t) __builtin_aarch64_combinev8qi ((int8x8_t) __a, | |
6553 | (int8x8_t) __b); | |
6554 | } | |
6555 | ||
49ab9992 | 6556 | __extension__ extern __inline poly16x8_t |
6557 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6558 | vcombine_p16 (poly16x4_t __a, poly16x4_t __b) |
6559 | { | |
6560 | return (poly16x8_t) __builtin_aarch64_combinev4hi ((int16x4_t) __a, | |
6561 | (int16x4_t) __b); | |
6562 | } | |
6563 | ||
d4f47414 | 6564 | __extension__ extern __inline poly64x2_t |
6565 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6566 | vcombine_p64 (poly64x1_t __a, poly64x1_t __b) | |
6567 | { | |
6568 | return (poly64x2_t) __builtin_aarch64_combinedi_ppp (__a[0], __b[0]); | |
6569 | } | |
6570 | ||
df401d54 | 6571 | /* Start of temporary inline asm implementations. */ |
6572 | ||
49ab9992 | 6573 | __extension__ extern __inline int8x8_t |
6574 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6575 | vaba_s8 (int8x8_t a, int8x8_t b, int8x8_t c) |
6576 | { | |
6577 | int8x8_t result; | |
6578 | __asm__ ("saba %0.8b,%2.8b,%3.8b" | |
6579 | : "=w"(result) | |
6580 | : "0"(a), "w"(b), "w"(c) | |
6581 | : /* No clobbers */); | |
6582 | return result; | |
6583 | } | |
6584 | ||
49ab9992 | 6585 | __extension__ extern __inline int16x4_t |
6586 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6587 | vaba_s16 (int16x4_t a, int16x4_t b, int16x4_t c) |
6588 | { | |
6589 | int16x4_t result; | |
6590 | __asm__ ("saba %0.4h,%2.4h,%3.4h" | |
6591 | : "=w"(result) | |
6592 | : "0"(a), "w"(b), "w"(c) | |
6593 | : /* No clobbers */); | |
6594 | return result; | |
6595 | } | |
6596 | ||
49ab9992 | 6597 | __extension__ extern __inline int32x2_t |
6598 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6599 | vaba_s32 (int32x2_t a, int32x2_t b, int32x2_t c) |
6600 | { | |
6601 | int32x2_t result; | |
6602 | __asm__ ("saba %0.2s,%2.2s,%3.2s" | |
6603 | : "=w"(result) | |
6604 | : "0"(a), "w"(b), "w"(c) | |
6605 | : /* No clobbers */); | |
6606 | return result; | |
6607 | } | |
6608 | ||
49ab9992 | 6609 | __extension__ extern __inline uint8x8_t |
6610 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6611 | vaba_u8 (uint8x8_t a, uint8x8_t b, uint8x8_t c) |
6612 | { | |
6613 | uint8x8_t result; | |
6614 | __asm__ ("uaba %0.8b,%2.8b,%3.8b" | |
6615 | : "=w"(result) | |
6616 | : "0"(a), "w"(b), "w"(c) | |
6617 | : /* No clobbers */); | |
6618 | return result; | |
6619 | } | |
6620 | ||
49ab9992 | 6621 | __extension__ extern __inline uint16x4_t |
6622 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6623 | vaba_u16 (uint16x4_t a, uint16x4_t b, uint16x4_t c) |
6624 | { | |
6625 | uint16x4_t result; | |
6626 | __asm__ ("uaba %0.4h,%2.4h,%3.4h" | |
6627 | : "=w"(result) | |
6628 | : "0"(a), "w"(b), "w"(c) | |
6629 | : /* No clobbers */); | |
6630 | return result; | |
6631 | } | |
6632 | ||
49ab9992 | 6633 | __extension__ extern __inline uint32x2_t |
6634 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6635 | vaba_u32 (uint32x2_t a, uint32x2_t b, uint32x2_t c) |
6636 | { | |
6637 | uint32x2_t result; | |
6638 | __asm__ ("uaba %0.2s,%2.2s,%3.2s" | |
6639 | : "=w"(result) | |
6640 | : "0"(a), "w"(b), "w"(c) | |
6641 | : /* No clobbers */); | |
6642 | return result; | |
6643 | } | |
6644 | ||
49ab9992 | 6645 | __extension__ extern __inline int16x8_t |
6646 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6647 | vabal_high_s8 (int16x8_t a, int8x16_t b, int8x16_t c) |
6648 | { | |
6649 | int16x8_t result; | |
6650 | __asm__ ("sabal2 %0.8h,%2.16b,%3.16b" | |
6651 | : "=w"(result) | |
6652 | : "0"(a), "w"(b), "w"(c) | |
6653 | : /* No clobbers */); | |
6654 | return result; | |
6655 | } | |
6656 | ||
49ab9992 | 6657 | __extension__ extern __inline int32x4_t |
6658 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6659 | vabal_high_s16 (int32x4_t a, int16x8_t b, int16x8_t c) |
6660 | { | |
6661 | int32x4_t result; | |
6662 | __asm__ ("sabal2 %0.4s,%2.8h,%3.8h" | |
6663 | : "=w"(result) | |
6664 | : "0"(a), "w"(b), "w"(c) | |
6665 | : /* No clobbers */); | |
6666 | return result; | |
6667 | } | |
6668 | ||
49ab9992 | 6669 | __extension__ extern __inline int64x2_t |
6670 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6671 | vabal_high_s32 (int64x2_t a, int32x4_t b, int32x4_t c) |
6672 | { | |
6673 | int64x2_t result; | |
6674 | __asm__ ("sabal2 %0.2d,%2.4s,%3.4s" | |
6675 | : "=w"(result) | |
6676 | : "0"(a), "w"(b), "w"(c) | |
6677 | : /* No clobbers */); | |
6678 | return result; | |
6679 | } | |
6680 | ||
49ab9992 | 6681 | __extension__ extern __inline uint16x8_t |
6682 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6683 | vabal_high_u8 (uint16x8_t a, uint8x16_t b, uint8x16_t c) |
6684 | { | |
6685 | uint16x8_t result; | |
6686 | __asm__ ("uabal2 %0.8h,%2.16b,%3.16b" | |
6687 | : "=w"(result) | |
6688 | : "0"(a), "w"(b), "w"(c) | |
6689 | : /* No clobbers */); | |
6690 | return result; | |
6691 | } | |
6692 | ||
49ab9992 | 6693 | __extension__ extern __inline uint32x4_t |
6694 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6695 | vabal_high_u16 (uint32x4_t a, uint16x8_t b, uint16x8_t c) |
6696 | { | |
6697 | uint32x4_t result; | |
6698 | __asm__ ("uabal2 %0.4s,%2.8h,%3.8h" | |
6699 | : "=w"(result) | |
6700 | : "0"(a), "w"(b), "w"(c) | |
6701 | : /* No clobbers */); | |
6702 | return result; | |
6703 | } | |
6704 | ||
49ab9992 | 6705 | __extension__ extern __inline uint64x2_t |
6706 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6707 | vabal_high_u32 (uint64x2_t a, uint32x4_t b, uint32x4_t c) |
6708 | { | |
6709 | uint64x2_t result; | |
6710 | __asm__ ("uabal2 %0.2d,%2.4s,%3.4s" | |
6711 | : "=w"(result) | |
6712 | : "0"(a), "w"(b), "w"(c) | |
6713 | : /* No clobbers */); | |
6714 | return result; | |
6715 | } | |
6716 | ||
49ab9992 | 6717 | __extension__ extern __inline int16x8_t |
6718 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6719 | vabal_s8 (int16x8_t a, int8x8_t b, int8x8_t c) |
6720 | { | |
6721 | int16x8_t result; | |
6722 | __asm__ ("sabal %0.8h,%2.8b,%3.8b" | |
6723 | : "=w"(result) | |
6724 | : "0"(a), "w"(b), "w"(c) | |
6725 | : /* No clobbers */); | |
6726 | return result; | |
6727 | } | |
6728 | ||
49ab9992 | 6729 | __extension__ extern __inline int32x4_t |
6730 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6731 | vabal_s16 (int32x4_t a, int16x4_t b, int16x4_t c) |
6732 | { | |
6733 | int32x4_t result; | |
6734 | __asm__ ("sabal %0.4s,%2.4h,%3.4h" | |
6735 | : "=w"(result) | |
6736 | : "0"(a), "w"(b), "w"(c) | |
6737 | : /* No clobbers */); | |
6738 | return result; | |
6739 | } | |
6740 | ||
49ab9992 | 6741 | __extension__ extern __inline int64x2_t |
6742 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6743 | vabal_s32 (int64x2_t a, int32x2_t b, int32x2_t c) |
6744 | { | |
6745 | int64x2_t result; | |
6746 | __asm__ ("sabal %0.2d,%2.2s,%3.2s" | |
6747 | : "=w"(result) | |
6748 | : "0"(a), "w"(b), "w"(c) | |
6749 | : /* No clobbers */); | |
6750 | return result; | |
6751 | } | |
6752 | ||
49ab9992 | 6753 | __extension__ extern __inline uint16x8_t |
6754 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6755 | vabal_u8 (uint16x8_t a, uint8x8_t b, uint8x8_t c) |
6756 | { | |
6757 | uint16x8_t result; | |
6758 | __asm__ ("uabal %0.8h,%2.8b,%3.8b" | |
6759 | : "=w"(result) | |
6760 | : "0"(a), "w"(b), "w"(c) | |
6761 | : /* No clobbers */); | |
6762 | return result; | |
6763 | } | |
6764 | ||
49ab9992 | 6765 | __extension__ extern __inline uint32x4_t |
6766 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6767 | vabal_u16 (uint32x4_t a, uint16x4_t b, uint16x4_t c) |
6768 | { | |
6769 | uint32x4_t result; | |
6770 | __asm__ ("uabal %0.4s,%2.4h,%3.4h" | |
6771 | : "=w"(result) | |
6772 | : "0"(a), "w"(b), "w"(c) | |
6773 | : /* No clobbers */); | |
6774 | return result; | |
6775 | } | |
6776 | ||
49ab9992 | 6777 | __extension__ extern __inline uint64x2_t |
6778 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6779 | vabal_u32 (uint64x2_t a, uint32x2_t b, uint32x2_t c) |
6780 | { | |
6781 | uint64x2_t result; | |
6782 | __asm__ ("uabal %0.2d,%2.2s,%3.2s" | |
6783 | : "=w"(result) | |
6784 | : "0"(a), "w"(b), "w"(c) | |
6785 | : /* No clobbers */); | |
6786 | return result; | |
6787 | } | |
6788 | ||
49ab9992 | 6789 | __extension__ extern __inline int8x16_t |
6790 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6791 | vabaq_s8 (int8x16_t a, int8x16_t b, int8x16_t c) |
6792 | { | |
6793 | int8x16_t result; | |
6794 | __asm__ ("saba %0.16b,%2.16b,%3.16b" | |
6795 | : "=w"(result) | |
6796 | : "0"(a), "w"(b), "w"(c) | |
6797 | : /* No clobbers */); | |
6798 | return result; | |
6799 | } | |
6800 | ||
49ab9992 | 6801 | __extension__ extern __inline int16x8_t |
6802 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6803 | vabaq_s16 (int16x8_t a, int16x8_t b, int16x8_t c) |
6804 | { | |
6805 | int16x8_t result; | |
6806 | __asm__ ("saba %0.8h,%2.8h,%3.8h" | |
6807 | : "=w"(result) | |
6808 | : "0"(a), "w"(b), "w"(c) | |
6809 | : /* No clobbers */); | |
6810 | return result; | |
6811 | } | |
6812 | ||
49ab9992 | 6813 | __extension__ extern __inline int32x4_t |
6814 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6815 | vabaq_s32 (int32x4_t a, int32x4_t b, int32x4_t c) |
6816 | { | |
6817 | int32x4_t result; | |
6818 | __asm__ ("saba %0.4s,%2.4s,%3.4s" | |
6819 | : "=w"(result) | |
6820 | : "0"(a), "w"(b), "w"(c) | |
6821 | : /* No clobbers */); | |
6822 | return result; | |
6823 | } | |
6824 | ||
49ab9992 | 6825 | __extension__ extern __inline uint8x16_t |
6826 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6827 | vabaq_u8 (uint8x16_t a, uint8x16_t b, uint8x16_t c) |
6828 | { | |
6829 | uint8x16_t result; | |
6830 | __asm__ ("uaba %0.16b,%2.16b,%3.16b" | |
6831 | : "=w"(result) | |
6832 | : "0"(a), "w"(b), "w"(c) | |
6833 | : /* No clobbers */); | |
6834 | return result; | |
6835 | } | |
6836 | ||
49ab9992 | 6837 | __extension__ extern __inline uint16x8_t |
6838 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6839 | vabaq_u16 (uint16x8_t a, uint16x8_t b, uint16x8_t c) |
6840 | { | |
6841 | uint16x8_t result; | |
6842 | __asm__ ("uaba %0.8h,%2.8h,%3.8h" | |
6843 | : "=w"(result) | |
6844 | : "0"(a), "w"(b), "w"(c) | |
6845 | : /* No clobbers */); | |
6846 | return result; | |
6847 | } | |
6848 | ||
49ab9992 | 6849 | __extension__ extern __inline uint32x4_t |
6850 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6851 | vabaq_u32 (uint32x4_t a, uint32x4_t b, uint32x4_t c) |
6852 | { | |
6853 | uint32x4_t result; | |
6854 | __asm__ ("uaba %0.4s,%2.4s,%3.4s" | |
6855 | : "=w"(result) | |
6856 | : "0"(a), "w"(b), "w"(c) | |
6857 | : /* No clobbers */); | |
6858 | return result; | |
6859 | } | |
6860 | ||
49ab9992 | 6861 | __extension__ extern __inline int8x8_t |
6862 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6863 | vabd_s8 (int8x8_t a, int8x8_t b) |
6864 | { | |
6865 | int8x8_t result; | |
6866 | __asm__ ("sabd %0.8b, %1.8b, %2.8b" | |
6867 | : "=w"(result) | |
6868 | : "w"(a), "w"(b) | |
6869 | : /* No clobbers */); | |
6870 | return result; | |
6871 | } | |
6872 | ||
49ab9992 | 6873 | __extension__ extern __inline int16x4_t |
6874 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6875 | vabd_s16 (int16x4_t a, int16x4_t b) |
6876 | { | |
6877 | int16x4_t result; | |
6878 | __asm__ ("sabd %0.4h, %1.4h, %2.4h" | |
6879 | : "=w"(result) | |
6880 | : "w"(a), "w"(b) | |
6881 | : /* No clobbers */); | |
6882 | return result; | |
6883 | } | |
6884 | ||
49ab9992 | 6885 | __extension__ extern __inline int32x2_t |
6886 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6887 | vabd_s32 (int32x2_t a, int32x2_t b) |
6888 | { | |
6889 | int32x2_t result; | |
6890 | __asm__ ("sabd %0.2s, %1.2s, %2.2s" | |
6891 | : "=w"(result) | |
6892 | : "w"(a), "w"(b) | |
6893 | : /* No clobbers */); | |
6894 | return result; | |
6895 | } | |
6896 | ||
49ab9992 | 6897 | __extension__ extern __inline uint8x8_t |
6898 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6899 | vabd_u8 (uint8x8_t a, uint8x8_t b) |
6900 | { | |
6901 | uint8x8_t result; | |
6902 | __asm__ ("uabd %0.8b, %1.8b, %2.8b" | |
6903 | : "=w"(result) | |
6904 | : "w"(a), "w"(b) | |
6905 | : /* No clobbers */); | |
6906 | return result; | |
6907 | } | |
6908 | ||
49ab9992 | 6909 | __extension__ extern __inline uint16x4_t |
6910 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6911 | vabd_u16 (uint16x4_t a, uint16x4_t b) |
6912 | { | |
6913 | uint16x4_t result; | |
6914 | __asm__ ("uabd %0.4h, %1.4h, %2.4h" | |
6915 | : "=w"(result) | |
6916 | : "w"(a), "w"(b) | |
6917 | : /* No clobbers */); | |
6918 | return result; | |
6919 | } | |
6920 | ||
49ab9992 | 6921 | __extension__ extern __inline uint32x2_t |
6922 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6923 | vabd_u32 (uint32x2_t a, uint32x2_t b) |
6924 | { | |
6925 | uint32x2_t result; | |
6926 | __asm__ ("uabd %0.2s, %1.2s, %2.2s" | |
6927 | : "=w"(result) | |
6928 | : "w"(a), "w"(b) | |
6929 | : /* No clobbers */); | |
6930 | return result; | |
6931 | } | |
6932 | ||
49ab9992 | 6933 | __extension__ extern __inline int16x8_t |
6934 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6935 | vabdl_high_s8 (int8x16_t a, int8x16_t b) |
6936 | { | |
6937 | int16x8_t result; | |
6938 | __asm__ ("sabdl2 %0.8h,%1.16b,%2.16b" | |
6939 | : "=w"(result) | |
6940 | : "w"(a), "w"(b) | |
6941 | : /* No clobbers */); | |
6942 | return result; | |
6943 | } | |
6944 | ||
49ab9992 | 6945 | __extension__ extern __inline int32x4_t |
6946 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6947 | vabdl_high_s16 (int16x8_t a, int16x8_t b) |
6948 | { | |
6949 | int32x4_t result; | |
6950 | __asm__ ("sabdl2 %0.4s,%1.8h,%2.8h" | |
6951 | : "=w"(result) | |
6952 | : "w"(a), "w"(b) | |
6953 | : /* No clobbers */); | |
6954 | return result; | |
6955 | } | |
6956 | ||
49ab9992 | 6957 | __extension__ extern __inline int64x2_t |
6958 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6959 | vabdl_high_s32 (int32x4_t a, int32x4_t b) |
6960 | { | |
6961 | int64x2_t result; | |
6962 | __asm__ ("sabdl2 %0.2d,%1.4s,%2.4s" | |
6963 | : "=w"(result) | |
6964 | : "w"(a), "w"(b) | |
6965 | : /* No clobbers */); | |
6966 | return result; | |
6967 | } | |
6968 | ||
49ab9992 | 6969 | __extension__ extern __inline uint16x8_t |
6970 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6971 | vabdl_high_u8 (uint8x16_t a, uint8x16_t b) |
6972 | { | |
6973 | uint16x8_t result; | |
6974 | __asm__ ("uabdl2 %0.8h,%1.16b,%2.16b" | |
6975 | : "=w"(result) | |
6976 | : "w"(a), "w"(b) | |
6977 | : /* No clobbers */); | |
6978 | return result; | |
6979 | } | |
6980 | ||
49ab9992 | 6981 | __extension__ extern __inline uint32x4_t |
6982 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6983 | vabdl_high_u16 (uint16x8_t a, uint16x8_t b) |
6984 | { | |
6985 | uint32x4_t result; | |
6986 | __asm__ ("uabdl2 %0.4s,%1.8h,%2.8h" | |
6987 | : "=w"(result) | |
6988 | : "w"(a), "w"(b) | |
6989 | : /* No clobbers */); | |
6990 | return result; | |
6991 | } | |
6992 | ||
49ab9992 | 6993 | __extension__ extern __inline uint64x2_t |
6994 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 6995 | vabdl_high_u32 (uint32x4_t a, uint32x4_t b) |
6996 | { | |
6997 | uint64x2_t result; | |
6998 | __asm__ ("uabdl2 %0.2d,%1.4s,%2.4s" | |
6999 | : "=w"(result) | |
7000 | : "w"(a), "w"(b) | |
7001 | : /* No clobbers */); | |
7002 | return result; | |
7003 | } | |
7004 | ||
49ab9992 | 7005 | __extension__ extern __inline int16x8_t |
7006 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7007 | vabdl_s8 (int8x8_t a, int8x8_t b) |
7008 | { | |
7009 | int16x8_t result; | |
7010 | __asm__ ("sabdl %0.8h, %1.8b, %2.8b" | |
7011 | : "=w"(result) | |
7012 | : "w"(a), "w"(b) | |
7013 | : /* No clobbers */); | |
7014 | return result; | |
7015 | } | |
7016 | ||
49ab9992 | 7017 | __extension__ extern __inline int32x4_t |
7018 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7019 | vabdl_s16 (int16x4_t a, int16x4_t b) |
7020 | { | |
7021 | int32x4_t result; | |
7022 | __asm__ ("sabdl %0.4s, %1.4h, %2.4h" | |
7023 | : "=w"(result) | |
7024 | : "w"(a), "w"(b) | |
7025 | : /* No clobbers */); | |
7026 | return result; | |
7027 | } | |
7028 | ||
49ab9992 | 7029 | __extension__ extern __inline int64x2_t |
7030 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7031 | vabdl_s32 (int32x2_t a, int32x2_t b) |
7032 | { | |
7033 | int64x2_t result; | |
7034 | __asm__ ("sabdl %0.2d, %1.2s, %2.2s" | |
7035 | : "=w"(result) | |
7036 | : "w"(a), "w"(b) | |
7037 | : /* No clobbers */); | |
7038 | return result; | |
7039 | } | |
7040 | ||
49ab9992 | 7041 | __extension__ extern __inline uint16x8_t |
7042 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7043 | vabdl_u8 (uint8x8_t a, uint8x8_t b) |
7044 | { | |
7045 | uint16x8_t result; | |
7046 | __asm__ ("uabdl %0.8h, %1.8b, %2.8b" | |
7047 | : "=w"(result) | |
7048 | : "w"(a), "w"(b) | |
7049 | : /* No clobbers */); | |
7050 | return result; | |
7051 | } | |
7052 | ||
49ab9992 | 7053 | __extension__ extern __inline uint32x4_t |
7054 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7055 | vabdl_u16 (uint16x4_t a, uint16x4_t b) |
7056 | { | |
7057 | uint32x4_t result; | |
7058 | __asm__ ("uabdl %0.4s, %1.4h, %2.4h" | |
7059 | : "=w"(result) | |
7060 | : "w"(a), "w"(b) | |
7061 | : /* No clobbers */); | |
7062 | return result; | |
7063 | } | |
7064 | ||
49ab9992 | 7065 | __extension__ extern __inline uint64x2_t |
7066 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7067 | vabdl_u32 (uint32x2_t a, uint32x2_t b) |
7068 | { | |
7069 | uint64x2_t result; | |
7070 | __asm__ ("uabdl %0.2d, %1.2s, %2.2s" | |
7071 | : "=w"(result) | |
7072 | : "w"(a), "w"(b) | |
7073 | : /* No clobbers */); | |
7074 | return result; | |
7075 | } | |
7076 | ||
49ab9992 | 7077 | __extension__ extern __inline int8x16_t |
7078 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7079 | vabdq_s8 (int8x16_t a, int8x16_t b) |
7080 | { | |
7081 | int8x16_t result; | |
7082 | __asm__ ("sabd %0.16b, %1.16b, %2.16b" | |
7083 | : "=w"(result) | |
7084 | : "w"(a), "w"(b) | |
7085 | : /* No clobbers */); | |
7086 | return result; | |
7087 | } | |
7088 | ||
49ab9992 | 7089 | __extension__ extern __inline int16x8_t |
7090 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7091 | vabdq_s16 (int16x8_t a, int16x8_t b) |
7092 | { | |
7093 | int16x8_t result; | |
7094 | __asm__ ("sabd %0.8h, %1.8h, %2.8h" | |
7095 | : "=w"(result) | |
7096 | : "w"(a), "w"(b) | |
7097 | : /* No clobbers */); | |
7098 | return result; | |
7099 | } | |
7100 | ||
49ab9992 | 7101 | __extension__ extern __inline int32x4_t |
7102 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7103 | vabdq_s32 (int32x4_t a, int32x4_t b) |
7104 | { | |
7105 | int32x4_t result; | |
7106 | __asm__ ("sabd %0.4s, %1.4s, %2.4s" | |
7107 | : "=w"(result) | |
7108 | : "w"(a), "w"(b) | |
7109 | : /* No clobbers */); | |
7110 | return result; | |
7111 | } | |
7112 | ||
49ab9992 | 7113 | __extension__ extern __inline uint8x16_t |
7114 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7115 | vabdq_u8 (uint8x16_t a, uint8x16_t b) |
7116 | { | |
7117 | uint8x16_t result; | |
7118 | __asm__ ("uabd %0.16b, %1.16b, %2.16b" | |
7119 | : "=w"(result) | |
7120 | : "w"(a), "w"(b) | |
7121 | : /* No clobbers */); | |
7122 | return result; | |
7123 | } | |
7124 | ||
49ab9992 | 7125 | __extension__ extern __inline uint16x8_t |
7126 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7127 | vabdq_u16 (uint16x8_t a, uint16x8_t b) |
7128 | { | |
7129 | uint16x8_t result; | |
7130 | __asm__ ("uabd %0.8h, %1.8h, %2.8h" | |
7131 | : "=w"(result) | |
7132 | : "w"(a), "w"(b) | |
7133 | : /* No clobbers */); | |
7134 | return result; | |
7135 | } | |
7136 | ||
49ab9992 | 7137 | __extension__ extern __inline uint32x4_t |
7138 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7139 | vabdq_u32 (uint32x4_t a, uint32x4_t b) |
7140 | { | |
7141 | uint32x4_t result; | |
7142 | __asm__ ("uabd %0.4s, %1.4s, %2.4s" | |
7143 | : "=w"(result) | |
7144 | : "w"(a), "w"(b) | |
7145 | : /* No clobbers */); | |
7146 | return result; | |
7147 | } | |
7148 | ||
49ab9992 | 7149 | __extension__ extern __inline int16_t |
7150 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7151 | vaddlv_s8 (int8x8_t a) |
7152 | { | |
7153 | int16_t result; | |
7154 | __asm__ ("saddlv %h0,%1.8b" | |
7155 | : "=w"(result) | |
7156 | : "w"(a) | |
7157 | : /* No clobbers */); | |
7158 | return result; | |
7159 | } | |
7160 | ||
49ab9992 | 7161 | __extension__ extern __inline int32_t |
7162 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7163 | vaddlv_s16 (int16x4_t a) |
7164 | { | |
7165 | int32_t result; | |
7166 | __asm__ ("saddlv %s0,%1.4h" | |
7167 | : "=w"(result) | |
7168 | : "w"(a) | |
7169 | : /* No clobbers */); | |
7170 | return result; | |
7171 | } | |
7172 | ||
49ab9992 | 7173 | __extension__ extern __inline uint16_t |
7174 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7175 | vaddlv_u8 (uint8x8_t a) |
7176 | { | |
7177 | uint16_t result; | |
7178 | __asm__ ("uaddlv %h0,%1.8b" | |
7179 | : "=w"(result) | |
7180 | : "w"(a) | |
7181 | : /* No clobbers */); | |
7182 | return result; | |
7183 | } | |
7184 | ||
49ab9992 | 7185 | __extension__ extern __inline uint32_t |
7186 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7187 | vaddlv_u16 (uint16x4_t a) |
7188 | { | |
7189 | uint32_t result; | |
7190 | __asm__ ("uaddlv %s0,%1.4h" | |
7191 | : "=w"(result) | |
7192 | : "w"(a) | |
7193 | : /* No clobbers */); | |
7194 | return result; | |
7195 | } | |
7196 | ||
49ab9992 | 7197 | __extension__ extern __inline int16_t |
7198 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7199 | vaddlvq_s8 (int8x16_t a) |
7200 | { | |
7201 | int16_t result; | |
7202 | __asm__ ("saddlv %h0,%1.16b" | |
7203 | : "=w"(result) | |
7204 | : "w"(a) | |
7205 | : /* No clobbers */); | |
7206 | return result; | |
7207 | } | |
7208 | ||
49ab9992 | 7209 | __extension__ extern __inline int32_t |
7210 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7211 | vaddlvq_s16 (int16x8_t a) |
7212 | { | |
7213 | int32_t result; | |
7214 | __asm__ ("saddlv %s0,%1.8h" | |
7215 | : "=w"(result) | |
7216 | : "w"(a) | |
7217 | : /* No clobbers */); | |
7218 | return result; | |
7219 | } | |
7220 | ||
49ab9992 | 7221 | __extension__ extern __inline int64_t |
7222 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7223 | vaddlvq_s32 (int32x4_t a) |
7224 | { | |
7225 | int64_t result; | |
7226 | __asm__ ("saddlv %d0,%1.4s" | |
7227 | : "=w"(result) | |
7228 | : "w"(a) | |
7229 | : /* No clobbers */); | |
7230 | return result; | |
7231 | } | |
7232 | ||
49ab9992 | 7233 | __extension__ extern __inline uint16_t |
7234 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7235 | vaddlvq_u8 (uint8x16_t a) |
7236 | { | |
7237 | uint16_t result; | |
7238 | __asm__ ("uaddlv %h0,%1.16b" | |
7239 | : "=w"(result) | |
7240 | : "w"(a) | |
7241 | : /* No clobbers */); | |
7242 | return result; | |
7243 | } | |
7244 | ||
49ab9992 | 7245 | __extension__ extern __inline uint32_t |
7246 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7247 | vaddlvq_u16 (uint16x8_t a) |
7248 | { | |
7249 | uint32_t result; | |
7250 | __asm__ ("uaddlv %s0,%1.8h" | |
7251 | : "=w"(result) | |
7252 | : "w"(a) | |
7253 | : /* No clobbers */); | |
7254 | return result; | |
7255 | } | |
7256 | ||
49ab9992 | 7257 | __extension__ extern __inline uint64_t |
7258 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 7259 | vaddlvq_u32 (uint32x4_t a) |
7260 | { | |
7261 | uint64_t result; | |
7262 | __asm__ ("uaddlv %d0,%1.4s" | |
7263 | : "=w"(result) | |
7264 | : "w"(a) | |
7265 | : /* No clobbers */); | |
7266 | return result; | |
7267 | } | |
7268 | ||
49ab9992 | 7269 | __extension__ extern __inline float32x2_t |
7270 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8111d37b | 7271 | vcvtx_f32_f64 (float64x2_t a) |
df401d54 | 7272 | { |
8111d37b | 7273 | float32x2_t result; |
7274 | __asm__ ("fcvtxn %0.2s,%1.2d" | |
df401d54 | 7275 | : "=w"(result) |
7276 | : "w"(a) | |
7277 | : /* No clobbers */); | |
7278 | return result; | |
7279 | } | |
7280 | ||
49ab9992 | 7281 | __extension__ extern __inline float32x4_t |
7282 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
d7438495 | 7283 | vcvtx_high_f32_f64 (float32x2_t a, float64x2_t b) |
df401d54 | 7284 | { |
8111d37b | 7285 | float32x4_t result; |
7286 | __asm__ ("fcvtxn2 %0.4s,%1.2d" | |
df401d54 | 7287 | : "=w"(result) |
d7438495 | 7288 | : "w" (b), "0"(a) |
df401d54 | 7289 | : /* No clobbers */); |
7290 | return result; | |
7291 | } | |
7292 | ||
49ab9992 | 7293 | __extension__ extern __inline float32_t |
7294 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8111d37b | 7295 | vcvtxd_f32_f64 (float64_t a) |
df401d54 | 7296 | { |
7297 | float32_t result; | |
8111d37b | 7298 | __asm__ ("fcvtxn %s0,%d1" |
df401d54 | 7299 | : "=w"(result) |
7300 | : "w"(a) | |
7301 | : /* No clobbers */); | |
7302 | return result; | |
7303 | } | |
7304 | ||
49ab9992 | 7305 | __extension__ extern __inline float32x2_t |
7306 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7307 | vmla_n_f32 (float32x2_t a, float32x2_t b, float32_t c) |
7308 | { | |
7309 | float32x2_t result; | |
7310 | float32x2_t t1; | |
7311 | __asm__ ("fmul %1.2s, %3.2s, %4.s[0]; fadd %0.2s, %0.2s, %1.2s" | |
7312 | : "=w"(result), "=w"(t1) | |
7313 | : "0"(a), "w"(b), "w"(c) | |
7314 | : /* No clobbers */); | |
df401d54 | 7315 | return result; |
7316 | } | |
7317 | ||
49ab9992 | 7318 | __extension__ extern __inline int16x4_t |
7319 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7320 | vmla_n_s16 (int16x4_t a, int16x4_t b, int16_t c) |
df401d54 | 7321 | { |
2d67c34c | 7322 | int16x4_t result; |
7323 | __asm__ ("mla %0.4h,%2.4h,%3.h[0]" | |
7324 | : "=w"(result) | |
9d37257a | 7325 | : "0"(a), "w"(b), "x"(c) |
2d67c34c | 7326 | : /* No clobbers */); |
df401d54 | 7327 | return result; |
7328 | } | |
7329 | ||
49ab9992 | 7330 | __extension__ extern __inline int32x2_t |
7331 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7332 | vmla_n_s32 (int32x2_t a, int32x2_t b, int32_t c) |
df401d54 | 7333 | { |
2d67c34c | 7334 | int32x2_t result; |
7335 | __asm__ ("mla %0.2s,%2.2s,%3.s[0]" | |
7336 | : "=w"(result) | |
7337 | : "0"(a), "w"(b), "w"(c) | |
7338 | : /* No clobbers */); | |
df401d54 | 7339 | return result; |
7340 | } | |
7341 | ||
49ab9992 | 7342 | __extension__ extern __inline uint16x4_t |
7343 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7344 | vmla_n_u16 (uint16x4_t a, uint16x4_t b, uint16_t c) |
df401d54 | 7345 | { |
2d67c34c | 7346 | uint16x4_t result; |
7347 | __asm__ ("mla %0.4h,%2.4h,%3.h[0]" | |
7348 | : "=w"(result) | |
9d37257a | 7349 | : "0"(a), "w"(b), "x"(c) |
2d67c34c | 7350 | : /* No clobbers */); |
df401d54 | 7351 | return result; |
7352 | } | |
7353 | ||
49ab9992 | 7354 | __extension__ extern __inline uint32x2_t |
7355 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7356 | vmla_n_u32 (uint32x2_t a, uint32x2_t b, uint32_t c) |
df401d54 | 7357 | { |
2d67c34c | 7358 | uint32x2_t result; |
7359 | __asm__ ("mla %0.2s,%2.2s,%3.s[0]" | |
7360 | : "=w"(result) | |
7361 | : "0"(a), "w"(b), "w"(c) | |
7362 | : /* No clobbers */); | |
df401d54 | 7363 | return result; |
7364 | } | |
7365 | ||
49ab9992 | 7366 | __extension__ extern __inline int8x8_t |
7367 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7368 | vmla_s8 (int8x8_t a, int8x8_t b, int8x8_t c) |
df401d54 | 7369 | { |
2d67c34c | 7370 | int8x8_t result; |
7371 | __asm__ ("mla %0.8b, %2.8b, %3.8b" | |
7372 | : "=w"(result) | |
7373 | : "0"(a), "w"(b), "w"(c) | |
7374 | : /* No clobbers */); | |
df401d54 | 7375 | return result; |
7376 | } | |
7377 | ||
49ab9992 | 7378 | __extension__ extern __inline int16x4_t |
7379 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7380 | vmla_s16 (int16x4_t a, int16x4_t b, int16x4_t c) |
df401d54 | 7381 | { |
2d67c34c | 7382 | int16x4_t result; |
7383 | __asm__ ("mla %0.4h, %2.4h, %3.4h" | |
7384 | : "=w"(result) | |
7385 | : "0"(a), "w"(b), "w"(c) | |
7386 | : /* No clobbers */); | |
df401d54 | 7387 | return result; |
7388 | } | |
7389 | ||
49ab9992 | 7390 | __extension__ extern __inline int32x2_t |
7391 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7392 | vmla_s32 (int32x2_t a, int32x2_t b, int32x2_t c) |
7393 | { | |
7394 | int32x2_t result; | |
7395 | __asm__ ("mla %0.2s, %2.2s, %3.2s" | |
7396 | : "=w"(result) | |
7397 | : "0"(a), "w"(b), "w"(c) | |
7398 | : /* No clobbers */); | |
7399 | return result; | |
7400 | } | |
7401 | ||
49ab9992 | 7402 | __extension__ extern __inline uint8x8_t |
7403 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7404 | vmla_u8 (uint8x8_t a, uint8x8_t b, uint8x8_t c) |
7405 | { | |
7406 | uint8x8_t result; | |
7407 | __asm__ ("mla %0.8b, %2.8b, %3.8b" | |
7408 | : "=w"(result) | |
7409 | : "0"(a), "w"(b), "w"(c) | |
7410 | : /* No clobbers */); | |
7411 | return result; | |
7412 | } | |
7413 | ||
49ab9992 | 7414 | __extension__ extern __inline uint16x4_t |
7415 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7416 | vmla_u16 (uint16x4_t a, uint16x4_t b, uint16x4_t c) |
7417 | { | |
7418 | uint16x4_t result; | |
7419 | __asm__ ("mla %0.4h, %2.4h, %3.4h" | |
7420 | : "=w"(result) | |
7421 | : "0"(a), "w"(b), "w"(c) | |
7422 | : /* No clobbers */); | |
7423 | return result; | |
7424 | } | |
7425 | ||
49ab9992 | 7426 | __extension__ extern __inline uint32x2_t |
7427 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7428 | vmla_u32 (uint32x2_t a, uint32x2_t b, uint32x2_t c) |
7429 | { | |
7430 | uint32x2_t result; | |
7431 | __asm__ ("mla %0.2s, %2.2s, %3.2s" | |
7432 | : "=w"(result) | |
7433 | : "0"(a), "w"(b), "w"(c) | |
7434 | : /* No clobbers */); | |
7435 | return result; | |
7436 | } | |
7437 | ||
7438 | #define vmlal_high_lane_s16(a, b, c, d) \ | |
df401d54 | 7439 | __extension__ \ |
7440 | ({ \ | |
f70f57eb | 7441 | int16x4_t c_ = (c); \ |
2d67c34c | 7442 | int16x8_t b_ = (b); \ |
7443 | int32x4_t a_ = (a); \ | |
7444 | int32x4_t result; \ | |
7445 | __asm__ ("smlal2 %0.4s, %2.8h, %3.h[%4]" \ | |
df401d54 | 7446 | : "=w"(result) \ |
9d37257a | 7447 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 7448 | : /* No clobbers */); \ |
7449 | result; \ | |
7450 | }) | |
7451 | ||
2d67c34c | 7452 | #define vmlal_high_lane_s32(a, b, c, d) \ |
df401d54 | 7453 | __extension__ \ |
7454 | ({ \ | |
f70f57eb | 7455 | int32x2_t c_ = (c); \ |
2d67c34c | 7456 | int32x4_t b_ = (b); \ |
7457 | int64x2_t a_ = (a); \ | |
7458 | int64x2_t result; \ | |
7459 | __asm__ ("smlal2 %0.2d, %2.4s, %3.s[%4]" \ | |
df401d54 | 7460 | : "=w"(result) \ |
2d67c34c | 7461 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ |
df401d54 | 7462 | : /* No clobbers */); \ |
7463 | result; \ | |
7464 | }) | |
7465 | ||
2d67c34c | 7466 | #define vmlal_high_lane_u16(a, b, c, d) \ |
df401d54 | 7467 | __extension__ \ |
7468 | ({ \ | |
f70f57eb | 7469 | uint16x4_t c_ = (c); \ |
2d67c34c | 7470 | uint16x8_t b_ = (b); \ |
7471 | uint32x4_t a_ = (a); \ | |
7472 | uint32x4_t result; \ | |
7473 | __asm__ ("umlal2 %0.4s, %2.8h, %3.h[%4]" \ | |
df401d54 | 7474 | : "=w"(result) \ |
9d37257a | 7475 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 7476 | : /* No clobbers */); \ |
7477 | result; \ | |
7478 | }) | |
7479 | ||
2d67c34c | 7480 | #define vmlal_high_lane_u32(a, b, c, d) \ |
df401d54 | 7481 | __extension__ \ |
7482 | ({ \ | |
f70f57eb | 7483 | uint32x2_t c_ = (c); \ |
2d67c34c | 7484 | uint32x4_t b_ = (b); \ |
7485 | uint64x2_t a_ = (a); \ | |
7486 | uint64x2_t result; \ | |
7487 | __asm__ ("umlal2 %0.2d, %2.4s, %3.s[%4]" \ | |
df401d54 | 7488 | : "=w"(result) \ |
2d67c34c | 7489 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ |
df401d54 | 7490 | : /* No clobbers */); \ |
7491 | result; \ | |
7492 | }) | |
7493 | ||
2d67c34c | 7494 | #define vmlal_high_laneq_s16(a, b, c, d) \ |
df401d54 | 7495 | __extension__ \ |
7496 | ({ \ | |
2d67c34c | 7497 | int16x8_t c_ = (c); \ |
7498 | int16x8_t b_ = (b); \ | |
7499 | int32x4_t a_ = (a); \ | |
7500 | int32x4_t result; \ | |
7501 | __asm__ ("smlal2 %0.4s, %2.8h, %3.h[%4]" \ | |
df401d54 | 7502 | : "=w"(result) \ |
9d37257a | 7503 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 7504 | : /* No clobbers */); \ |
7505 | result; \ | |
7506 | }) | |
7507 | ||
2d67c34c | 7508 | #define vmlal_high_laneq_s32(a, b, c, d) \ |
df401d54 | 7509 | __extension__ \ |
7510 | ({ \ | |
2d67c34c | 7511 | int32x4_t c_ = (c); \ |
df401d54 | 7512 | int32x4_t b_ = (b); \ |
2d67c34c | 7513 | int64x2_t a_ = (a); \ |
df401d54 | 7514 | int64x2_t result; \ |
2d67c34c | 7515 | __asm__ ("smlal2 %0.2d, %2.4s, %3.s[%4]" \ |
df401d54 | 7516 | : "=w"(result) \ |
2d67c34c | 7517 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ |
df401d54 | 7518 | : /* No clobbers */); \ |
7519 | result; \ | |
7520 | }) | |
7521 | ||
2d67c34c | 7522 | #define vmlal_high_laneq_u16(a, b, c, d) \ |
df401d54 | 7523 | __extension__ \ |
7524 | ({ \ | |
2d67c34c | 7525 | uint16x8_t c_ = (c); \ |
df401d54 | 7526 | uint16x8_t b_ = (b); \ |
2d67c34c | 7527 | uint32x4_t a_ = (a); \ |
df401d54 | 7528 | uint32x4_t result; \ |
2d67c34c | 7529 | __asm__ ("umlal2 %0.4s, %2.8h, %3.h[%4]" \ |
df401d54 | 7530 | : "=w"(result) \ |
9d37257a | 7531 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 7532 | : /* No clobbers */); \ |
7533 | result; \ | |
7534 | }) | |
7535 | ||
2d67c34c | 7536 | #define vmlal_high_laneq_u32(a, b, c, d) \ |
df401d54 | 7537 | __extension__ \ |
7538 | ({ \ | |
2d67c34c | 7539 | uint32x4_t c_ = (c); \ |
7540 | uint32x4_t b_ = (b); \ | |
7541 | uint64x2_t a_ = (a); \ | |
df401d54 | 7542 | uint64x2_t result; \ |
2d67c34c | 7543 | __asm__ ("umlal2 %0.2d, %2.4s, %3.s[%4]" \ |
df401d54 | 7544 | : "=w"(result) \ |
df401d54 | 7545 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ |
7546 | : /* No clobbers */); \ | |
7547 | result; \ | |
7548 | }) | |
7549 | ||
49ab9992 | 7550 | __extension__ extern __inline int32x4_t |
7551 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7552 | vmlal_high_n_s16 (int32x4_t a, int16x8_t b, int16_t c) |
7553 | { | |
7554 | int32x4_t result; | |
7555 | __asm__ ("smlal2 %0.4s,%2.8h,%3.h[0]" | |
7556 | : "=w"(result) | |
9d37257a | 7557 | : "0"(a), "w"(b), "x"(c) |
2d67c34c | 7558 | : /* No clobbers */); |
7559 | return result; | |
7560 | } | |
7561 | ||
49ab9992 | 7562 | __extension__ extern __inline int64x2_t |
7563 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7564 | vmlal_high_n_s32 (int64x2_t a, int32x4_t b, int32_t c) |
7565 | { | |
7566 | int64x2_t result; | |
7567 | __asm__ ("smlal2 %0.2d,%2.4s,%3.s[0]" | |
7568 | : "=w"(result) | |
7569 | : "0"(a), "w"(b), "w"(c) | |
7570 | : /* No clobbers */); | |
7571 | return result; | |
7572 | } | |
7573 | ||
49ab9992 | 7574 | __extension__ extern __inline uint32x4_t |
7575 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7576 | vmlal_high_n_u16 (uint32x4_t a, uint16x8_t b, uint16_t c) |
7577 | { | |
7578 | uint32x4_t result; | |
7579 | __asm__ ("umlal2 %0.4s,%2.8h,%3.h[0]" | |
7580 | : "=w"(result) | |
9d37257a | 7581 | : "0"(a), "w"(b), "x"(c) |
2d67c34c | 7582 | : /* No clobbers */); |
7583 | return result; | |
7584 | } | |
7585 | ||
49ab9992 | 7586 | __extension__ extern __inline uint64x2_t |
7587 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7588 | vmlal_high_n_u32 (uint64x2_t a, uint32x4_t b, uint32_t c) |
7589 | { | |
7590 | uint64x2_t result; | |
7591 | __asm__ ("umlal2 %0.2d,%2.4s,%3.s[0]" | |
7592 | : "=w"(result) | |
7593 | : "0"(a), "w"(b), "w"(c) | |
7594 | : /* No clobbers */); | |
7595 | return result; | |
7596 | } | |
7597 | ||
49ab9992 | 7598 | __extension__ extern __inline int16x8_t |
7599 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7600 | vmlal_high_s8 (int16x8_t a, int8x16_t b, int8x16_t c) |
7601 | { | |
7602 | int16x8_t result; | |
7603 | __asm__ ("smlal2 %0.8h,%2.16b,%3.16b" | |
7604 | : "=w"(result) | |
7605 | : "0"(a), "w"(b), "w"(c) | |
7606 | : /* No clobbers */); | |
7607 | return result; | |
7608 | } | |
7609 | ||
49ab9992 | 7610 | __extension__ extern __inline int32x4_t |
7611 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7612 | vmlal_high_s16 (int32x4_t a, int16x8_t b, int16x8_t c) |
7613 | { | |
7614 | int32x4_t result; | |
7615 | __asm__ ("smlal2 %0.4s,%2.8h,%3.8h" | |
7616 | : "=w"(result) | |
7617 | : "0"(a), "w"(b), "w"(c) | |
7618 | : /* No clobbers */); | |
7619 | return result; | |
7620 | } | |
7621 | ||
49ab9992 | 7622 | __extension__ extern __inline int64x2_t |
7623 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7624 | vmlal_high_s32 (int64x2_t a, int32x4_t b, int32x4_t c) |
7625 | { | |
7626 | int64x2_t result; | |
7627 | __asm__ ("smlal2 %0.2d,%2.4s,%3.4s" | |
7628 | : "=w"(result) | |
7629 | : "0"(a), "w"(b), "w"(c) | |
7630 | : /* No clobbers */); | |
7631 | return result; | |
7632 | } | |
7633 | ||
49ab9992 | 7634 | __extension__ extern __inline uint16x8_t |
7635 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7636 | vmlal_high_u8 (uint16x8_t a, uint8x16_t b, uint8x16_t c) |
7637 | { | |
7638 | uint16x8_t result; | |
7639 | __asm__ ("umlal2 %0.8h,%2.16b,%3.16b" | |
7640 | : "=w"(result) | |
7641 | : "0"(a), "w"(b), "w"(c) | |
7642 | : /* No clobbers */); | |
7643 | return result; | |
7644 | } | |
7645 | ||
49ab9992 | 7646 | __extension__ extern __inline uint32x4_t |
7647 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7648 | vmlal_high_u16 (uint32x4_t a, uint16x8_t b, uint16x8_t c) |
7649 | { | |
7650 | uint32x4_t result; | |
7651 | __asm__ ("umlal2 %0.4s,%2.8h,%3.8h" | |
7652 | : "=w"(result) | |
7653 | : "0"(a), "w"(b), "w"(c) | |
7654 | : /* No clobbers */); | |
7655 | return result; | |
7656 | } | |
7657 | ||
49ab9992 | 7658 | __extension__ extern __inline uint64x2_t |
7659 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7660 | vmlal_high_u32 (uint64x2_t a, uint32x4_t b, uint32x4_t c) |
7661 | { | |
7662 | uint64x2_t result; | |
7663 | __asm__ ("umlal2 %0.2d,%2.4s,%3.4s" | |
7664 | : "=w"(result) | |
7665 | : "0"(a), "w"(b), "w"(c) | |
7666 | : /* No clobbers */); | |
7667 | return result; | |
7668 | } | |
7669 | ||
7670 | #define vmlal_lane_s16(a, b, c, d) \ | |
df401d54 | 7671 | __extension__ \ |
7672 | ({ \ | |
7673 | int16x4_t c_ = (c); \ | |
7674 | int16x4_t b_ = (b); \ | |
2d67c34c | 7675 | int32x4_t a_ = (a); \ |
7676 | int32x4_t result; \ | |
7677 | __asm__ ("smlal %0.4s,%2.4h,%3.h[%4]" \ | |
df401d54 | 7678 | : "=w"(result) \ |
9d37257a | 7679 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 7680 | : /* No clobbers */); \ |
7681 | result; \ | |
7682 | }) | |
7683 | ||
2d67c34c | 7684 | #define vmlal_lane_s32(a, b, c, d) \ |
df401d54 | 7685 | __extension__ \ |
7686 | ({ \ | |
7687 | int32x2_t c_ = (c); \ | |
7688 | int32x2_t b_ = (b); \ | |
2d67c34c | 7689 | int64x2_t a_ = (a); \ |
7690 | int64x2_t result; \ | |
7691 | __asm__ ("smlal %0.2d,%2.2s,%3.s[%4]" \ | |
df401d54 | 7692 | : "=w"(result) \ |
7693 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ | |
7694 | : /* No clobbers */); \ | |
7695 | result; \ | |
7696 | }) | |
7697 | ||
2d67c34c | 7698 | #define vmlal_lane_u16(a, b, c, d) \ |
df401d54 | 7699 | __extension__ \ |
7700 | ({ \ | |
7701 | uint16x4_t c_ = (c); \ | |
7702 | uint16x4_t b_ = (b); \ | |
2d67c34c | 7703 | uint32x4_t a_ = (a); \ |
7704 | uint32x4_t result; \ | |
7705 | __asm__ ("umlal %0.4s,%2.4h,%3.h[%4]" \ | |
df401d54 | 7706 | : "=w"(result) \ |
9d37257a | 7707 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 7708 | : /* No clobbers */); \ |
7709 | result; \ | |
7710 | }) | |
7711 | ||
2d67c34c | 7712 | #define vmlal_lane_u32(a, b, c, d) \ |
df401d54 | 7713 | __extension__ \ |
7714 | ({ \ | |
7715 | uint32x2_t c_ = (c); \ | |
7716 | uint32x2_t b_ = (b); \ | |
2d67c34c | 7717 | uint64x2_t a_ = (a); \ |
7718 | uint64x2_t result; \ | |
7719 | __asm__ ("umlal %0.2d, %2.2s, %3.s[%4]" \ | |
df401d54 | 7720 | : "=w"(result) \ |
7721 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ | |
7722 | : /* No clobbers */); \ | |
7723 | result; \ | |
7724 | }) | |
7725 | ||
2d67c34c | 7726 | #define vmlal_laneq_s16(a, b, c, d) \ |
df401d54 | 7727 | __extension__ \ |
7728 | ({ \ | |
7729 | int16x8_t c_ = (c); \ | |
7730 | int16x4_t b_ = (b); \ | |
2d67c34c | 7731 | int32x4_t a_ = (a); \ |
7732 | int32x4_t result; \ | |
7733 | __asm__ ("smlal %0.4s, %2.4h, %3.h[%4]" \ | |
df401d54 | 7734 | : "=w"(result) \ |
9d37257a | 7735 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 7736 | : /* No clobbers */); \ |
7737 | result; \ | |
7738 | }) | |
7739 | ||
2d67c34c | 7740 | #define vmlal_laneq_s32(a, b, c, d) \ |
df401d54 | 7741 | __extension__ \ |
7742 | ({ \ | |
7743 | int32x4_t c_ = (c); \ | |
7744 | int32x2_t b_ = (b); \ | |
2d67c34c | 7745 | int64x2_t a_ = (a); \ |
7746 | int64x2_t result; \ | |
7747 | __asm__ ("smlal %0.2d, %2.2s, %3.s[%4]" \ | |
df401d54 | 7748 | : "=w"(result) \ |
7749 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ | |
7750 | : /* No clobbers */); \ | |
7751 | result; \ | |
7752 | }) | |
7753 | ||
2d67c34c | 7754 | #define vmlal_laneq_u16(a, b, c, d) \ |
df401d54 | 7755 | __extension__ \ |
7756 | ({ \ | |
7757 | uint16x8_t c_ = (c); \ | |
7758 | uint16x4_t b_ = (b); \ | |
2d67c34c | 7759 | uint32x4_t a_ = (a); \ |
7760 | uint32x4_t result; \ | |
7761 | __asm__ ("umlal %0.4s, %2.4h, %3.h[%4]" \ | |
df401d54 | 7762 | : "=w"(result) \ |
9d37257a | 7763 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 7764 | : /* No clobbers */); \ |
7765 | result; \ | |
7766 | }) | |
7767 | ||
2d67c34c | 7768 | #define vmlal_laneq_u32(a, b, c, d) \ |
df401d54 | 7769 | __extension__ \ |
7770 | ({ \ | |
7771 | uint32x4_t c_ = (c); \ | |
7772 | uint32x2_t b_ = (b); \ | |
2d67c34c | 7773 | uint64x2_t a_ = (a); \ |
7774 | uint64x2_t result; \ | |
7775 | __asm__ ("umlal %0.2d, %2.2s, %3.s[%4]" \ | |
df401d54 | 7776 | : "=w"(result) \ |
7777 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ | |
7778 | : /* No clobbers */); \ | |
7779 | result; \ | |
7780 | }) | |
7781 | ||
49ab9992 | 7782 | __extension__ extern __inline int32x4_t |
7783 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7784 | vmlal_n_s16 (int32x4_t a, int16x4_t b, int16_t c) |
df401d54 | 7785 | { |
2d67c34c | 7786 | int32x4_t result; |
7787 | __asm__ ("smlal %0.4s,%2.4h,%3.h[0]" | |
df401d54 | 7788 | : "=w"(result) |
9d37257a | 7789 | : "0"(a), "w"(b), "x"(c) |
df401d54 | 7790 | : /* No clobbers */); |
7791 | return result; | |
7792 | } | |
7793 | ||
49ab9992 | 7794 | __extension__ extern __inline int64x2_t |
7795 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7796 | vmlal_n_s32 (int64x2_t a, int32x2_t b, int32_t c) |
df401d54 | 7797 | { |
2d67c34c | 7798 | int64x2_t result; |
7799 | __asm__ ("smlal %0.2d,%2.2s,%3.s[0]" | |
df401d54 | 7800 | : "=w"(result) |
7801 | : "0"(a), "w"(b), "w"(c) | |
7802 | : /* No clobbers */); | |
7803 | return result; | |
7804 | } | |
7805 | ||
49ab9992 | 7806 | __extension__ extern __inline uint32x4_t |
7807 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7808 | vmlal_n_u16 (uint32x4_t a, uint16x4_t b, uint16_t c) |
df401d54 | 7809 | { |
2d67c34c | 7810 | uint32x4_t result; |
7811 | __asm__ ("umlal %0.4s,%2.4h,%3.h[0]" | |
df401d54 | 7812 | : "=w"(result) |
9d37257a | 7813 | : "0"(a), "w"(b), "x"(c) |
df401d54 | 7814 | : /* No clobbers */); |
7815 | return result; | |
7816 | } | |
7817 | ||
49ab9992 | 7818 | __extension__ extern __inline uint64x2_t |
7819 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7820 | vmlal_n_u32 (uint64x2_t a, uint32x2_t b, uint32_t c) |
df401d54 | 7821 | { |
2d67c34c | 7822 | uint64x2_t result; |
7823 | __asm__ ("umlal %0.2d,%2.2s,%3.s[0]" | |
df401d54 | 7824 | : "=w"(result) |
7825 | : "0"(a), "w"(b), "w"(c) | |
7826 | : /* No clobbers */); | |
7827 | return result; | |
7828 | } | |
7829 | ||
49ab9992 | 7830 | __extension__ extern __inline int16x8_t |
7831 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7832 | vmlal_s8 (int16x8_t a, int8x8_t b, int8x8_t c) |
df401d54 | 7833 | { |
2d67c34c | 7834 | int16x8_t result; |
7835 | __asm__ ("smlal %0.8h,%2.8b,%3.8b" | |
df401d54 | 7836 | : "=w"(result) |
7837 | : "0"(a), "w"(b), "w"(c) | |
7838 | : /* No clobbers */); | |
7839 | return result; | |
7840 | } | |
7841 | ||
49ab9992 | 7842 | __extension__ extern __inline int32x4_t |
7843 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7844 | vmlal_s16 (int32x4_t a, int16x4_t b, int16x4_t c) |
df401d54 | 7845 | { |
2d67c34c | 7846 | int32x4_t result; |
7847 | __asm__ ("smlal %0.4s,%2.4h,%3.4h" | |
df401d54 | 7848 | : "=w"(result) |
7849 | : "0"(a), "w"(b), "w"(c) | |
7850 | : /* No clobbers */); | |
7851 | return result; | |
7852 | } | |
7853 | ||
49ab9992 | 7854 | __extension__ extern __inline int64x2_t |
7855 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7856 | vmlal_s32 (int64x2_t a, int32x2_t b, int32x2_t c) |
df401d54 | 7857 | { |
2d67c34c | 7858 | int64x2_t result; |
7859 | __asm__ ("smlal %0.2d,%2.2s,%3.2s" | |
df401d54 | 7860 | : "=w"(result) |
7861 | : "0"(a), "w"(b), "w"(c) | |
7862 | : /* No clobbers */); | |
7863 | return result; | |
7864 | } | |
7865 | ||
49ab9992 | 7866 | __extension__ extern __inline uint16x8_t |
7867 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7868 | vmlal_u8 (uint16x8_t a, uint8x8_t b, uint8x8_t c) |
df401d54 | 7869 | { |
2d67c34c | 7870 | uint16x8_t result; |
7871 | __asm__ ("umlal %0.8h,%2.8b,%3.8b" | |
df401d54 | 7872 | : "=w"(result) |
7873 | : "0"(a), "w"(b), "w"(c) | |
7874 | : /* No clobbers */); | |
7875 | return result; | |
7876 | } | |
7877 | ||
49ab9992 | 7878 | __extension__ extern __inline uint32x4_t |
7879 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7880 | vmlal_u16 (uint32x4_t a, uint16x4_t b, uint16x4_t c) |
df401d54 | 7881 | { |
2d67c34c | 7882 | uint32x4_t result; |
7883 | __asm__ ("umlal %0.4s,%2.4h,%3.4h" | |
df401d54 | 7884 | : "=w"(result) |
7885 | : "0"(a), "w"(b), "w"(c) | |
7886 | : /* No clobbers */); | |
7887 | return result; | |
7888 | } | |
7889 | ||
49ab9992 | 7890 | __extension__ extern __inline uint64x2_t |
7891 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7892 | vmlal_u32 (uint64x2_t a, uint32x2_t b, uint32x2_t c) |
df401d54 | 7893 | { |
2d67c34c | 7894 | uint64x2_t result; |
7895 | __asm__ ("umlal %0.2d,%2.2s,%3.2s" | |
df401d54 | 7896 | : "=w"(result) |
7897 | : "0"(a), "w"(b), "w"(c) | |
7898 | : /* No clobbers */); | |
7899 | return result; | |
7900 | } | |
7901 | ||
49ab9992 | 7902 | __extension__ extern __inline float32x4_t |
7903 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7904 | vmlaq_n_f32 (float32x4_t a, float32x4_t b, float32_t c) |
df401d54 | 7905 | { |
2d67c34c | 7906 | float32x4_t result; |
7907 | float32x4_t t1; | |
7908 | __asm__ ("fmul %1.4s, %3.4s, %4.s[0]; fadd %0.4s, %0.4s, %1.4s" | |
7909 | : "=w"(result), "=w"(t1) | |
df401d54 | 7910 | : "0"(a), "w"(b), "w"(c) |
7911 | : /* No clobbers */); | |
7912 | return result; | |
7913 | } | |
7914 | ||
49ab9992 | 7915 | __extension__ extern __inline int16x8_t |
7916 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7917 | vmlaq_n_s16 (int16x8_t a, int16x8_t b, int16_t c) |
df401d54 | 7918 | { |
2d67c34c | 7919 | int16x8_t result; |
7920 | __asm__ ("mla %0.8h,%2.8h,%3.h[0]" | |
df401d54 | 7921 | : "=w"(result) |
9d37257a | 7922 | : "0"(a), "w"(b), "x"(c) |
df401d54 | 7923 | : /* No clobbers */); |
7924 | return result; | |
7925 | } | |
7926 | ||
49ab9992 | 7927 | __extension__ extern __inline int32x4_t |
7928 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7929 | vmlaq_n_s32 (int32x4_t a, int32x4_t b, int32_t c) |
df401d54 | 7930 | { |
2d67c34c | 7931 | int32x4_t result; |
7932 | __asm__ ("mla %0.4s,%2.4s,%3.s[0]" | |
df401d54 | 7933 | : "=w"(result) |
7934 | : "0"(a), "w"(b), "w"(c) | |
7935 | : /* No clobbers */); | |
7936 | return result; | |
7937 | } | |
7938 | ||
49ab9992 | 7939 | __extension__ extern __inline uint16x8_t |
7940 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7941 | vmlaq_n_u16 (uint16x8_t a, uint16x8_t b, uint16_t c) |
df401d54 | 7942 | { |
2d67c34c | 7943 | uint16x8_t result; |
7944 | __asm__ ("mla %0.8h,%2.8h,%3.h[0]" | |
df401d54 | 7945 | : "=w"(result) |
9d37257a | 7946 | : "0"(a), "w"(b), "x"(c) |
df401d54 | 7947 | : /* No clobbers */); |
7948 | return result; | |
7949 | } | |
7950 | ||
49ab9992 | 7951 | __extension__ extern __inline uint32x4_t |
7952 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7953 | vmlaq_n_u32 (uint32x4_t a, uint32x4_t b, uint32_t c) |
df401d54 | 7954 | { |
2d67c34c | 7955 | uint32x4_t result; |
7956 | __asm__ ("mla %0.4s,%2.4s,%3.s[0]" | |
df401d54 | 7957 | : "=w"(result) |
7958 | : "0"(a), "w"(b), "w"(c) | |
7959 | : /* No clobbers */); | |
7960 | return result; | |
7961 | } | |
7962 | ||
49ab9992 | 7963 | __extension__ extern __inline int8x16_t |
7964 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7965 | vmlaq_s8 (int8x16_t a, int8x16_t b, int8x16_t c) |
df401d54 | 7966 | { |
2d67c34c | 7967 | int8x16_t result; |
7968 | __asm__ ("mla %0.16b, %2.16b, %3.16b" | |
df401d54 | 7969 | : "=w"(result) |
7970 | : "0"(a), "w"(b), "w"(c) | |
7971 | : /* No clobbers */); | |
7972 | return result; | |
7973 | } | |
7974 | ||
49ab9992 | 7975 | __extension__ extern __inline int16x8_t |
7976 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7977 | vmlaq_s16 (int16x8_t a, int16x8_t b, int16x8_t c) |
df401d54 | 7978 | { |
2d67c34c | 7979 | int16x8_t result; |
7980 | __asm__ ("mla %0.8h, %2.8h, %3.8h" | |
df401d54 | 7981 | : "=w"(result) |
7982 | : "0"(a), "w"(b), "w"(c) | |
7983 | : /* No clobbers */); | |
7984 | return result; | |
7985 | } | |
7986 | ||
49ab9992 | 7987 | __extension__ extern __inline int32x4_t |
7988 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 7989 | vmlaq_s32 (int32x4_t a, int32x4_t b, int32x4_t c) |
df401d54 | 7990 | { |
2d67c34c | 7991 | int32x4_t result; |
7992 | __asm__ ("mla %0.4s, %2.4s, %3.4s" | |
df401d54 | 7993 | : "=w"(result) |
7994 | : "0"(a), "w"(b), "w"(c) | |
7995 | : /* No clobbers */); | |
7996 | return result; | |
7997 | } | |
7998 | ||
49ab9992 | 7999 | __extension__ extern __inline uint8x16_t |
8000 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8001 | vmlaq_u8 (uint8x16_t a, uint8x16_t b, uint8x16_t c) |
df401d54 | 8002 | { |
5b44c420 | 8003 | uint8x16_t result; |
8004 | __asm__ ("mla %0.16b, %2.16b, %3.16b" | |
8005 | : "=w"(result) | |
8006 | : "0"(a), "w"(b), "w"(c) | |
8007 | : /* No clobbers */); | |
8008 | return result; | |
8009 | } | |
df401d54 | 8010 | |
49ab9992 | 8011 | __extension__ extern __inline uint16x8_t |
8012 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 8013 | vmlaq_u16 (uint16x8_t a, uint16x8_t b, uint16x8_t c) |
8014 | { | |
8015 | uint16x8_t result; | |
8016 | __asm__ ("mla %0.8h, %2.8h, %3.8h" | |
8017 | : "=w"(result) | |
8018 | : "0"(a), "w"(b), "w"(c) | |
8019 | : /* No clobbers */); | |
8020 | return result; | |
8021 | } | |
8022 | ||
49ab9992 | 8023 | __extension__ extern __inline uint32x4_t |
8024 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 8025 | vmlaq_u32 (uint32x4_t a, uint32x4_t b, uint32x4_t c) |
8026 | { | |
8027 | uint32x4_t result; | |
8028 | __asm__ ("mla %0.4s, %2.4s, %3.4s" | |
8029 | : "=w"(result) | |
8030 | : "0"(a), "w"(b), "w"(c) | |
8031 | : /* No clobbers */); | |
8032 | return result; | |
8033 | } | |
df401d54 | 8034 | |
49ab9992 | 8035 | __extension__ extern __inline float32x2_t |
8036 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8037 | vmls_n_f32 (float32x2_t a, float32x2_t b, float32_t c) |
df401d54 | 8038 | { |
2d67c34c | 8039 | float32x2_t result; |
8040 | float32x2_t t1; | |
8041 | __asm__ ("fmul %1.2s, %3.2s, %4.s[0]; fsub %0.2s, %0.2s, %1.2s" | |
8042 | : "=w"(result), "=w"(t1) | |
df401d54 | 8043 | : "0"(a), "w"(b), "w"(c) |
8044 | : /* No clobbers */); | |
8045 | return result; | |
8046 | } | |
8047 | ||
49ab9992 | 8048 | __extension__ extern __inline int16x4_t |
8049 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8050 | vmls_n_s16 (int16x4_t a, int16x4_t b, int16_t c) |
df401d54 | 8051 | { |
2d67c34c | 8052 | int16x4_t result; |
8053 | __asm__ ("mls %0.4h, %2.4h, %3.h[0]" | |
df401d54 | 8054 | : "=w"(result) |
9d37257a | 8055 | : "0"(a), "w"(b), "x"(c) |
df401d54 | 8056 | : /* No clobbers */); |
8057 | return result; | |
8058 | } | |
8059 | ||
49ab9992 | 8060 | __extension__ extern __inline int32x2_t |
8061 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8062 | vmls_n_s32 (int32x2_t a, int32x2_t b, int32_t c) |
df401d54 | 8063 | { |
2d67c34c | 8064 | int32x2_t result; |
8065 | __asm__ ("mls %0.2s, %2.2s, %3.s[0]" | |
df401d54 | 8066 | : "=w"(result) |
8067 | : "0"(a), "w"(b), "w"(c) | |
8068 | : /* No clobbers */); | |
8069 | return result; | |
8070 | } | |
8071 | ||
49ab9992 | 8072 | __extension__ extern __inline uint16x4_t |
8073 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8074 | vmls_n_u16 (uint16x4_t a, uint16x4_t b, uint16_t c) |
df401d54 | 8075 | { |
2d67c34c | 8076 | uint16x4_t result; |
8077 | __asm__ ("mls %0.4h, %2.4h, %3.h[0]" | |
df401d54 | 8078 | : "=w"(result) |
9d37257a | 8079 | : "0"(a), "w"(b), "x"(c) |
df401d54 | 8080 | : /* No clobbers */); |
8081 | return result; | |
8082 | } | |
8083 | ||
49ab9992 | 8084 | __extension__ extern __inline uint32x2_t |
8085 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8086 | vmls_n_u32 (uint32x2_t a, uint32x2_t b, uint32_t c) |
df401d54 | 8087 | { |
2d67c34c | 8088 | uint32x2_t result; |
8089 | __asm__ ("mls %0.2s, %2.2s, %3.s[0]" | |
df401d54 | 8090 | : "=w"(result) |
8091 | : "0"(a), "w"(b), "w"(c) | |
8092 | : /* No clobbers */); | |
8093 | return result; | |
8094 | } | |
8095 | ||
49ab9992 | 8096 | __extension__ extern __inline int8x8_t |
8097 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8098 | vmls_s8 (int8x8_t a, int8x8_t b, int8x8_t c) |
df401d54 | 8099 | { |
2d67c34c | 8100 | int8x8_t result; |
8101 | __asm__ ("mls %0.8b,%2.8b,%3.8b" | |
df401d54 | 8102 | : "=w"(result) |
8103 | : "0"(a), "w"(b), "w"(c) | |
8104 | : /* No clobbers */); | |
8105 | return result; | |
8106 | } | |
8107 | ||
49ab9992 | 8108 | __extension__ extern __inline int16x4_t |
8109 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8110 | vmls_s16 (int16x4_t a, int16x4_t b, int16x4_t c) |
df401d54 | 8111 | { |
2d67c34c | 8112 | int16x4_t result; |
8113 | __asm__ ("mls %0.4h,%2.4h,%3.4h" | |
df401d54 | 8114 | : "=w"(result) |
8115 | : "0"(a), "w"(b), "w"(c) | |
8116 | : /* No clobbers */); | |
8117 | return result; | |
8118 | } | |
8119 | ||
49ab9992 | 8120 | __extension__ extern __inline int32x2_t |
8121 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8122 | vmls_s32 (int32x2_t a, int32x2_t b, int32x2_t c) |
df401d54 | 8123 | { |
2d67c34c | 8124 | int32x2_t result; |
8125 | __asm__ ("mls %0.2s,%2.2s,%3.2s" | |
df401d54 | 8126 | : "=w"(result) |
8127 | : "0"(a), "w"(b), "w"(c) | |
8128 | : /* No clobbers */); | |
8129 | return result; | |
8130 | } | |
8131 | ||
49ab9992 | 8132 | __extension__ extern __inline uint8x8_t |
8133 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8134 | vmls_u8 (uint8x8_t a, uint8x8_t b, uint8x8_t c) |
df401d54 | 8135 | { |
2d67c34c | 8136 | uint8x8_t result; |
8137 | __asm__ ("mls %0.8b,%2.8b,%3.8b" | |
df401d54 | 8138 | : "=w"(result) |
8139 | : "0"(a), "w"(b), "w"(c) | |
8140 | : /* No clobbers */); | |
8141 | return result; | |
8142 | } | |
8143 | ||
49ab9992 | 8144 | __extension__ extern __inline uint16x4_t |
8145 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8146 | vmls_u16 (uint16x4_t a, uint16x4_t b, uint16x4_t c) |
df401d54 | 8147 | { |
2d67c34c | 8148 | uint16x4_t result; |
8149 | __asm__ ("mls %0.4h,%2.4h,%3.4h" | |
df401d54 | 8150 | : "=w"(result) |
8151 | : "0"(a), "w"(b), "w"(c) | |
8152 | : /* No clobbers */); | |
8153 | return result; | |
8154 | } | |
8155 | ||
49ab9992 | 8156 | __extension__ extern __inline uint32x2_t |
8157 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8158 | vmls_u32 (uint32x2_t a, uint32x2_t b, uint32x2_t c) |
8159 | { | |
8160 | uint32x2_t result; | |
8161 | __asm__ ("mls %0.2s,%2.2s,%3.2s" | |
8162 | : "=w"(result) | |
8163 | : "0"(a), "w"(b), "w"(c) | |
8164 | : /* No clobbers */); | |
8165 | return result; | |
8166 | } | |
df401d54 | 8167 | |
2d67c34c | 8168 | #define vmlsl_high_lane_s16(a, b, c, d) \ |
df401d54 | 8169 | __extension__ \ |
8170 | ({ \ | |
f70f57eb | 8171 | int16x4_t c_ = (c); \ |
df401d54 | 8172 | int16x8_t b_ = (b); \ |
2d67c34c | 8173 | int32x4_t a_ = (a); \ |
8174 | int32x4_t result; \ | |
8175 | __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[%4]" \ | |
df401d54 | 8176 | : "=w"(result) \ |
9d37257a | 8177 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 8178 | : /* No clobbers */); \ |
8179 | result; \ | |
8180 | }) | |
8181 | ||
2d67c34c | 8182 | #define vmlsl_high_lane_s32(a, b, c, d) \ |
df401d54 | 8183 | __extension__ \ |
8184 | ({ \ | |
f70f57eb | 8185 | int32x2_t c_ = (c); \ |
df401d54 | 8186 | int32x4_t b_ = (b); \ |
2d67c34c | 8187 | int64x2_t a_ = (a); \ |
8188 | int64x2_t result; \ | |
8189 | __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[%4]" \ | |
df401d54 | 8190 | : "=w"(result) \ |
8191 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ | |
8192 | : /* No clobbers */); \ | |
8193 | result; \ | |
8194 | }) | |
8195 | ||
2d67c34c | 8196 | #define vmlsl_high_lane_u16(a, b, c, d) \ |
df401d54 | 8197 | __extension__ \ |
8198 | ({ \ | |
f70f57eb | 8199 | uint16x4_t c_ = (c); \ |
df401d54 | 8200 | uint16x8_t b_ = (b); \ |
2d67c34c | 8201 | uint32x4_t a_ = (a); \ |
8202 | uint32x4_t result; \ | |
8203 | __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[%4]" \ | |
df401d54 | 8204 | : "=w"(result) \ |
9d37257a | 8205 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 8206 | : /* No clobbers */); \ |
8207 | result; \ | |
8208 | }) | |
8209 | ||
2d67c34c | 8210 | #define vmlsl_high_lane_u32(a, b, c, d) \ |
df401d54 | 8211 | __extension__ \ |
8212 | ({ \ | |
f70f57eb | 8213 | uint32x2_t c_ = (c); \ |
df401d54 | 8214 | uint32x4_t b_ = (b); \ |
2d67c34c | 8215 | uint64x2_t a_ = (a); \ |
8216 | uint64x2_t result; \ | |
8217 | __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[%4]" \ | |
df401d54 | 8218 | : "=w"(result) \ |
8219 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ | |
8220 | : /* No clobbers */); \ | |
8221 | result; \ | |
8222 | }) | |
8223 | ||
2d67c34c | 8224 | #define vmlsl_high_laneq_s16(a, b, c, d) \ |
df401d54 | 8225 | __extension__ \ |
8226 | ({ \ | |
8227 | int16x8_t c_ = (c); \ | |
8228 | int16x8_t b_ = (b); \ | |
2d67c34c | 8229 | int32x4_t a_ = (a); \ |
8230 | int32x4_t result; \ | |
8231 | __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[%4]" \ | |
df401d54 | 8232 | : "=w"(result) \ |
9d37257a | 8233 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 8234 | : /* No clobbers */); \ |
8235 | result; \ | |
8236 | }) | |
8237 | ||
2d67c34c | 8238 | #define vmlsl_high_laneq_s32(a, b, c, d) \ |
df401d54 | 8239 | __extension__ \ |
8240 | ({ \ | |
8241 | int32x4_t c_ = (c); \ | |
8242 | int32x4_t b_ = (b); \ | |
2d67c34c | 8243 | int64x2_t a_ = (a); \ |
8244 | int64x2_t result; \ | |
8245 | __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[%4]" \ | |
df401d54 | 8246 | : "=w"(result) \ |
8247 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ | |
8248 | : /* No clobbers */); \ | |
8249 | result; \ | |
8250 | }) | |
8251 | ||
2d67c34c | 8252 | #define vmlsl_high_laneq_u16(a, b, c, d) \ |
df401d54 | 8253 | __extension__ \ |
8254 | ({ \ | |
8255 | uint16x8_t c_ = (c); \ | |
8256 | uint16x8_t b_ = (b); \ | |
2d67c34c | 8257 | uint32x4_t a_ = (a); \ |
8258 | uint32x4_t result; \ | |
8259 | __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[%4]" \ | |
df401d54 | 8260 | : "=w"(result) \ |
9d37257a | 8261 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 8262 | : /* No clobbers */); \ |
8263 | result; \ | |
8264 | }) | |
8265 | ||
2d67c34c | 8266 | #define vmlsl_high_laneq_u32(a, b, c, d) \ |
df401d54 | 8267 | __extension__ \ |
8268 | ({ \ | |
8269 | uint32x4_t c_ = (c); \ | |
8270 | uint32x4_t b_ = (b); \ | |
2d67c34c | 8271 | uint64x2_t a_ = (a); \ |
8272 | uint64x2_t result; \ | |
8273 | __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[%4]" \ | |
df401d54 | 8274 | : "=w"(result) \ |
8275 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ | |
8276 | : /* No clobbers */); \ | |
8277 | result; \ | |
8278 | }) | |
8279 | ||
49ab9992 | 8280 | __extension__ extern __inline int32x4_t |
8281 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8282 | vmlsl_high_n_s16 (int32x4_t a, int16x8_t b, int16_t c) |
df401d54 | 8283 | { |
8284 | int32x4_t result; | |
2d67c34c | 8285 | __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[0]" |
df401d54 | 8286 | : "=w"(result) |
9d37257a | 8287 | : "0"(a), "w"(b), "x"(c) |
df401d54 | 8288 | : /* No clobbers */); |
8289 | return result; | |
8290 | } | |
8291 | ||
49ab9992 | 8292 | __extension__ extern __inline int64x2_t |
8293 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8294 | vmlsl_high_n_s32 (int64x2_t a, int32x4_t b, int32_t c) |
df401d54 | 8295 | { |
2d67c34c | 8296 | int64x2_t result; |
8297 | __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[0]" | |
df401d54 | 8298 | : "=w"(result) |
8299 | : "0"(a), "w"(b), "w"(c) | |
8300 | : /* No clobbers */); | |
8301 | return result; | |
8302 | } | |
8303 | ||
49ab9992 | 8304 | __extension__ extern __inline uint32x4_t |
8305 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8306 | vmlsl_high_n_u16 (uint32x4_t a, uint16x8_t b, uint16_t c) |
df401d54 | 8307 | { |
8308 | uint32x4_t result; | |
2d67c34c | 8309 | __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[0]" |
df401d54 | 8310 | : "=w"(result) |
9d37257a | 8311 | : "0"(a), "w"(b), "x"(c) |
df401d54 | 8312 | : /* No clobbers */); |
8313 | return result; | |
8314 | } | |
8315 | ||
49ab9992 | 8316 | __extension__ extern __inline uint64x2_t |
8317 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8318 | vmlsl_high_n_u32 (uint64x2_t a, uint32x4_t b, uint32_t c) |
df401d54 | 8319 | { |
2d67c34c | 8320 | uint64x2_t result; |
8321 | __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[0]" | |
df401d54 | 8322 | : "=w"(result) |
8323 | : "0"(a), "w"(b), "w"(c) | |
8324 | : /* No clobbers */); | |
8325 | return result; | |
8326 | } | |
8327 | ||
49ab9992 | 8328 | __extension__ extern __inline int16x8_t |
8329 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8330 | vmlsl_high_s8 (int16x8_t a, int8x16_t b, int8x16_t c) |
df401d54 | 8331 | { |
8332 | int16x8_t result; | |
2d67c34c | 8333 | __asm__ ("smlsl2 %0.8h,%2.16b,%3.16b" |
df401d54 | 8334 | : "=w"(result) |
8335 | : "0"(a), "w"(b), "w"(c) | |
8336 | : /* No clobbers */); | |
8337 | return result; | |
8338 | } | |
8339 | ||
49ab9992 | 8340 | __extension__ extern __inline int32x4_t |
8341 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8342 | vmlsl_high_s16 (int32x4_t a, int16x8_t b, int16x8_t c) |
df401d54 | 8343 | { |
8344 | int32x4_t result; | |
2d67c34c | 8345 | __asm__ ("smlsl2 %0.4s,%2.8h,%3.8h" |
df401d54 | 8346 | : "=w"(result) |
8347 | : "0"(a), "w"(b), "w"(c) | |
8348 | : /* No clobbers */); | |
8349 | return result; | |
8350 | } | |
8351 | ||
49ab9992 | 8352 | __extension__ extern __inline int64x2_t |
8353 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8354 | vmlsl_high_s32 (int64x2_t a, int32x4_t b, int32x4_t c) |
df401d54 | 8355 | { |
2d67c34c | 8356 | int64x2_t result; |
8357 | __asm__ ("smlsl2 %0.2d,%2.4s,%3.4s" | |
df401d54 | 8358 | : "=w"(result) |
8359 | : "0"(a), "w"(b), "w"(c) | |
8360 | : /* No clobbers */); | |
8361 | return result; | |
8362 | } | |
8363 | ||
49ab9992 | 8364 | __extension__ extern __inline uint16x8_t |
8365 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8366 | vmlsl_high_u8 (uint16x8_t a, uint8x16_t b, uint8x16_t c) |
df401d54 | 8367 | { |
8368 | uint16x8_t result; | |
2d67c34c | 8369 | __asm__ ("umlsl2 %0.8h,%2.16b,%3.16b" |
df401d54 | 8370 | : "=w"(result) |
8371 | : "0"(a), "w"(b), "w"(c) | |
8372 | : /* No clobbers */); | |
8373 | return result; | |
8374 | } | |
8375 | ||
49ab9992 | 8376 | __extension__ extern __inline uint32x4_t |
8377 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8378 | vmlsl_high_u16 (uint32x4_t a, uint16x8_t b, uint16x8_t c) |
df401d54 | 8379 | { |
8380 | uint32x4_t result; | |
2d67c34c | 8381 | __asm__ ("umlsl2 %0.4s,%2.8h,%3.8h" |
df401d54 | 8382 | : "=w"(result) |
8383 | : "0"(a), "w"(b), "w"(c) | |
8384 | : /* No clobbers */); | |
8385 | return result; | |
8386 | } | |
8387 | ||
49ab9992 | 8388 | __extension__ extern __inline uint64x2_t |
8389 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8390 | vmlsl_high_u32 (uint64x2_t a, uint32x4_t b, uint32x4_t c) |
8391 | { | |
8392 | uint64x2_t result; | |
8393 | __asm__ ("umlsl2 %0.2d,%2.4s,%3.4s" | |
8394 | : "=w"(result) | |
8395 | : "0"(a), "w"(b), "w"(c) | |
8396 | : /* No clobbers */); | |
8397 | return result; | |
8398 | } | |
8399 | ||
8400 | #define vmlsl_lane_s16(a, b, c, d) \ | |
df401d54 | 8401 | __extension__ \ |
8402 | ({ \ | |
2d67c34c | 8403 | int16x4_t c_ = (c); \ |
8404 | int16x4_t b_ = (b); \ | |
8405 | int32x4_t a_ = (a); \ | |
8406 | int32x4_t result; \ | |
8407 | __asm__ ("smlsl %0.4s, %2.4h, %3.h[%4]" \ | |
8408 | : "=w"(result) \ | |
9d37257a | 8409 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 8410 | : /* No clobbers */); \ |
8411 | result; \ | |
8412 | }) | |
8413 | ||
2d67c34c | 8414 | #define vmlsl_lane_s32(a, b, c, d) \ |
df401d54 | 8415 | __extension__ \ |
8416 | ({ \ | |
2d67c34c | 8417 | int32x2_t c_ = (c); \ |
8418 | int32x2_t b_ = (b); \ | |
8419 | int64x2_t a_ = (a); \ | |
8420 | int64x2_t result; \ | |
8421 | __asm__ ("smlsl %0.2d, %2.2s, %3.s[%4]" \ | |
8422 | : "=w"(result) \ | |
8423 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ | |
8424 | : /* No clobbers */); \ | |
8425 | result; \ | |
8426 | }) | |
8427 | ||
8428 | #define vmlsl_lane_u16(a, b, c, d) \ | |
8429 | __extension__ \ | |
8430 | ({ \ | |
8431 | uint16x4_t c_ = (c); \ | |
8432 | uint16x4_t b_ = (b); \ | |
8433 | uint32x4_t a_ = (a); \ | |
8434 | uint32x4_t result; \ | |
8435 | __asm__ ("umlsl %0.4s, %2.4h, %3.h[%4]" \ | |
8436 | : "=w"(result) \ | |
9d37257a | 8437 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
2d67c34c | 8438 | : /* No clobbers */); \ |
8439 | result; \ | |
8440 | }) | |
8441 | ||
8442 | #define vmlsl_lane_u32(a, b, c, d) \ | |
8443 | __extension__ \ | |
8444 | ({ \ | |
8445 | uint32x2_t c_ = (c); \ | |
8446 | uint32x2_t b_ = (b); \ | |
8447 | uint64x2_t a_ = (a); \ | |
8448 | uint64x2_t result; \ | |
8449 | __asm__ ("umlsl %0.2d, %2.2s, %3.s[%4]" \ | |
8450 | : "=w"(result) \ | |
8451 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ | |
8452 | : /* No clobbers */); \ | |
8453 | result; \ | |
8454 | }) | |
8455 | ||
8456 | #define vmlsl_laneq_s16(a, b, c, d) \ | |
8457 | __extension__ \ | |
8458 | ({ \ | |
8459 | int16x8_t c_ = (c); \ | |
df401d54 | 8460 | int16x4_t b_ = (b); \ |
2d67c34c | 8461 | int32x4_t a_ = (a); \ |
8462 | int32x4_t result; \ | |
8463 | __asm__ ("smlsl %0.4s, %2.4h, %3.h[%4]" \ | |
df401d54 | 8464 | : "=w"(result) \ |
9d37257a | 8465 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 8466 | : /* No clobbers */); \ |
8467 | result; \ | |
8468 | }) | |
8469 | ||
2d67c34c | 8470 | #define vmlsl_laneq_s32(a, b, c, d) \ |
df401d54 | 8471 | __extension__ \ |
8472 | ({ \ | |
2d67c34c | 8473 | int32x4_t c_ = (c); \ |
df401d54 | 8474 | int32x2_t b_ = (b); \ |
2d67c34c | 8475 | int64x2_t a_ = (a); \ |
8476 | int64x2_t result; \ | |
8477 | __asm__ ("smlsl %0.2d, %2.2s, %3.s[%4]" \ | |
df401d54 | 8478 | : "=w"(result) \ |
8479 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ | |
8480 | : /* No clobbers */); \ | |
8481 | result; \ | |
8482 | }) | |
8483 | ||
2d67c34c | 8484 | #define vmlsl_laneq_u16(a, b, c, d) \ |
df401d54 | 8485 | __extension__ \ |
8486 | ({ \ | |
2d67c34c | 8487 | uint16x8_t c_ = (c); \ |
df401d54 | 8488 | uint16x4_t b_ = (b); \ |
2d67c34c | 8489 | uint32x4_t a_ = (a); \ |
8490 | uint32x4_t result; \ | |
8491 | __asm__ ("umlsl %0.4s, %2.4h, %3.h[%4]" \ | |
df401d54 | 8492 | : "=w"(result) \ |
9d37257a | 8493 | : "0"(a_), "w"(b_), "x"(c_), "i"(d) \ |
df401d54 | 8494 | : /* No clobbers */); \ |
8495 | result; \ | |
8496 | }) | |
8497 | ||
2d67c34c | 8498 | #define vmlsl_laneq_u32(a, b, c, d) \ |
df401d54 | 8499 | __extension__ \ |
8500 | ({ \ | |
2d67c34c | 8501 | uint32x4_t c_ = (c); \ |
df401d54 | 8502 | uint32x2_t b_ = (b); \ |
2d67c34c | 8503 | uint64x2_t a_ = (a); \ |
8504 | uint64x2_t result; \ | |
8505 | __asm__ ("umlsl %0.2d, %2.2s, %3.s[%4]" \ | |
df401d54 | 8506 | : "=w"(result) \ |
8507 | : "0"(a_), "w"(b_), "w"(c_), "i"(d) \ | |
8508 | : /* No clobbers */); \ | |
8509 | result; \ | |
8510 | }) | |
8511 | ||
49ab9992 | 8512 | __extension__ extern __inline int32x4_t |
8513 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8514 | vmlsl_n_s16 (int32x4_t a, int16x4_t b, int16_t c) |
df401d54 | 8515 | { |
2d67c34c | 8516 | int32x4_t result; |
8517 | __asm__ ("smlsl %0.4s, %2.4h, %3.h[0]" | |
8518 | : "=w"(result) | |
9d37257a | 8519 | : "0"(a), "w"(b), "x"(c) |
df401d54 | 8520 | : /* No clobbers */); |
8521 | return result; | |
8522 | } | |
8523 | ||
49ab9992 | 8524 | __extension__ extern __inline int64x2_t |
8525 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8526 | vmlsl_n_s32 (int64x2_t a, int32x2_t b, int32_t c) |
df401d54 | 8527 | { |
2d67c34c | 8528 | int64x2_t result; |
8529 | __asm__ ("smlsl %0.2d, %2.2s, %3.s[0]" | |
df401d54 | 8530 | : "=w"(result) |
8531 | : "0"(a), "w"(b), "w"(c) | |
8532 | : /* No clobbers */); | |
8533 | return result; | |
8534 | } | |
8535 | ||
49ab9992 | 8536 | __extension__ extern __inline uint32x4_t |
8537 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8538 | vmlsl_n_u16 (uint32x4_t a, uint16x4_t b, uint16_t c) |
df401d54 | 8539 | { |
2d67c34c | 8540 | uint32x4_t result; |
8541 | __asm__ ("umlsl %0.4s, %2.4h, %3.h[0]" | |
df401d54 | 8542 | : "=w"(result) |
9d37257a | 8543 | : "0"(a), "w"(b), "x"(c) |
df401d54 | 8544 | : /* No clobbers */); |
8545 | return result; | |
8546 | } | |
8547 | ||
49ab9992 | 8548 | __extension__ extern __inline uint64x2_t |
8549 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8550 | vmlsl_n_u32 (uint64x2_t a, uint32x2_t b, uint32_t c) |
df401d54 | 8551 | { |
2d67c34c | 8552 | uint64x2_t result; |
8553 | __asm__ ("umlsl %0.2d, %2.2s, %3.s[0]" | |
df401d54 | 8554 | : "=w"(result) |
8555 | : "0"(a), "w"(b), "w"(c) | |
8556 | : /* No clobbers */); | |
8557 | return result; | |
8558 | } | |
8559 | ||
49ab9992 | 8560 | __extension__ extern __inline int16x8_t |
8561 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8562 | vmlsl_s8 (int16x8_t a, int8x8_t b, int8x8_t c) |
df401d54 | 8563 | { |
2d67c34c | 8564 | int16x8_t result; |
8565 | __asm__ ("smlsl %0.8h, %2.8b, %3.8b" | |
df401d54 | 8566 | : "=w"(result) |
8567 | : "0"(a), "w"(b), "w"(c) | |
8568 | : /* No clobbers */); | |
8569 | return result; | |
8570 | } | |
8571 | ||
49ab9992 | 8572 | __extension__ extern __inline int32x4_t |
8573 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8574 | vmlsl_s16 (int32x4_t a, int16x4_t b, int16x4_t c) |
df401d54 | 8575 | { |
2d67c34c | 8576 | int32x4_t result; |
8577 | __asm__ ("smlsl %0.4s, %2.4h, %3.4h" | |
df401d54 | 8578 | : "=w"(result) |
8579 | : "0"(a), "w"(b), "w"(c) | |
8580 | : /* No clobbers */); | |
8581 | return result; | |
8582 | } | |
8583 | ||
49ab9992 | 8584 | __extension__ extern __inline int64x2_t |
8585 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8586 | vmlsl_s32 (int64x2_t a, int32x2_t b, int32x2_t c) |
df401d54 | 8587 | { |
2d67c34c | 8588 | int64x2_t result; |
8589 | __asm__ ("smlsl %0.2d, %2.2s, %3.2s" | |
df401d54 | 8590 | : "=w"(result) |
8591 | : "0"(a), "w"(b), "w"(c) | |
8592 | : /* No clobbers */); | |
8593 | return result; | |
8594 | } | |
8595 | ||
49ab9992 | 8596 | __extension__ extern __inline uint16x8_t |
8597 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8598 | vmlsl_u8 (uint16x8_t a, uint8x8_t b, uint8x8_t c) |
df401d54 | 8599 | { |
2d67c34c | 8600 | uint16x8_t result; |
8601 | __asm__ ("umlsl %0.8h, %2.8b, %3.8b" | |
df401d54 | 8602 | : "=w"(result) |
8603 | : "0"(a), "w"(b), "w"(c) | |
8604 | : /* No clobbers */); | |
8605 | return result; | |
8606 | } | |
8607 | ||
49ab9992 | 8608 | __extension__ extern __inline uint32x4_t |
8609 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8610 | vmlsl_u16 (uint32x4_t a, uint16x4_t b, uint16x4_t c) |
df401d54 | 8611 | { |
2d67c34c | 8612 | uint32x4_t result; |
8613 | __asm__ ("umlsl %0.4s, %2.4h, %3.4h" | |
df401d54 | 8614 | : "=w"(result) |
8615 | : "0"(a), "w"(b), "w"(c) | |
8616 | : /* No clobbers */); | |
8617 | return result; | |
8618 | } | |
8619 | ||
49ab9992 | 8620 | __extension__ extern __inline uint64x2_t |
8621 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8622 | vmlsl_u32 (uint64x2_t a, uint32x2_t b, uint32x2_t c) |
df401d54 | 8623 | { |
2d67c34c | 8624 | uint64x2_t result; |
8625 | __asm__ ("umlsl %0.2d, %2.2s, %3.2s" | |
df401d54 | 8626 | : "=w"(result) |
8627 | : "0"(a), "w"(b), "w"(c) | |
8628 | : /* No clobbers */); | |
8629 | return result; | |
8630 | } | |
8631 | ||
49ab9992 | 8632 | __extension__ extern __inline float32x4_t |
8633 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8634 | vmlsq_n_f32 (float32x4_t a, float32x4_t b, float32_t c) |
df401d54 | 8635 | { |
2d67c34c | 8636 | float32x4_t result; |
8637 | float32x4_t t1; | |
8638 | __asm__ ("fmul %1.4s, %3.4s, %4.s[0]; fsub %0.4s, %0.4s, %1.4s" | |
8639 | : "=w"(result), "=w"(t1) | |
df401d54 | 8640 | : "0"(a), "w"(b), "w"(c) |
8641 | : /* No clobbers */); | |
8642 | return result; | |
8643 | } | |
8644 | ||
49ab9992 | 8645 | __extension__ extern __inline int16x8_t |
8646 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8647 | vmlsq_n_s16 (int16x8_t a, int16x8_t b, int16_t c) |
df401d54 | 8648 | { |
2d67c34c | 8649 | int16x8_t result; |
8650 | __asm__ ("mls %0.8h, %2.8h, %3.h[0]" | |
df401d54 | 8651 | : "=w"(result) |
9d37257a | 8652 | : "0"(a), "w"(b), "x"(c) |
df401d54 | 8653 | : /* No clobbers */); |
8654 | return result; | |
8655 | } | |
8656 | ||
49ab9992 | 8657 | __extension__ extern __inline int32x4_t |
8658 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8659 | vmlsq_n_s32 (int32x4_t a, int32x4_t b, int32_t c) |
df401d54 | 8660 | { |
2d67c34c | 8661 | int32x4_t result; |
8662 | __asm__ ("mls %0.4s, %2.4s, %3.s[0]" | |
df401d54 | 8663 | : "=w"(result) |
8664 | : "0"(a), "w"(b), "w"(c) | |
8665 | : /* No clobbers */); | |
8666 | return result; | |
8667 | } | |
8668 | ||
49ab9992 | 8669 | __extension__ extern __inline uint16x8_t |
8670 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8671 | vmlsq_n_u16 (uint16x8_t a, uint16x8_t b, uint16_t c) |
df401d54 | 8672 | { |
2d67c34c | 8673 | uint16x8_t result; |
8674 | __asm__ ("mls %0.8h, %2.8h, %3.h[0]" | |
df401d54 | 8675 | : "=w"(result) |
9d37257a | 8676 | : "0"(a), "w"(b), "x"(c) |
df401d54 | 8677 | : /* No clobbers */); |
8678 | return result; | |
8679 | } | |
8680 | ||
49ab9992 | 8681 | __extension__ extern __inline uint32x4_t |
8682 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8683 | vmlsq_n_u32 (uint32x4_t a, uint32x4_t b, uint32_t c) |
df401d54 | 8684 | { |
2d67c34c | 8685 | uint32x4_t result; |
8686 | __asm__ ("mls %0.4s, %2.4s, %3.s[0]" | |
df401d54 | 8687 | : "=w"(result) |
8688 | : "0"(a), "w"(b), "w"(c) | |
8689 | : /* No clobbers */); | |
8690 | return result; | |
8691 | } | |
8692 | ||
49ab9992 | 8693 | __extension__ extern __inline int8x16_t |
8694 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8695 | vmlsq_s8 (int8x16_t a, int8x16_t b, int8x16_t c) |
df401d54 | 8696 | { |
2d67c34c | 8697 | int8x16_t result; |
8698 | __asm__ ("mls %0.16b,%2.16b,%3.16b" | |
df401d54 | 8699 | : "=w"(result) |
8700 | : "0"(a), "w"(b), "w"(c) | |
8701 | : /* No clobbers */); | |
8702 | return result; | |
8703 | } | |
8704 | ||
49ab9992 | 8705 | __extension__ extern __inline int16x8_t |
8706 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8707 | vmlsq_s16 (int16x8_t a, int16x8_t b, int16x8_t c) |
df401d54 | 8708 | { |
2d67c34c | 8709 | int16x8_t result; |
8710 | __asm__ ("mls %0.8h,%2.8h,%3.8h" | |
df401d54 | 8711 | : "=w"(result) |
8712 | : "0"(a), "w"(b), "w"(c) | |
8713 | : /* No clobbers */); | |
8714 | return result; | |
8715 | } | |
8716 | ||
49ab9992 | 8717 | __extension__ extern __inline int32x4_t |
8718 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8719 | vmlsq_s32 (int32x4_t a, int32x4_t b, int32x4_t c) |
df401d54 | 8720 | { |
2d67c34c | 8721 | int32x4_t result; |
8722 | __asm__ ("mls %0.4s,%2.4s,%3.4s" | |
df401d54 | 8723 | : "=w"(result) |
8724 | : "0"(a), "w"(b), "w"(c) | |
8725 | : /* No clobbers */); | |
8726 | return result; | |
8727 | } | |
8728 | ||
49ab9992 | 8729 | __extension__ extern __inline uint8x16_t |
8730 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8731 | vmlsq_u8 (uint8x16_t a, uint8x16_t b, uint8x16_t c) |
df401d54 | 8732 | { |
2d67c34c | 8733 | uint8x16_t result; |
8734 | __asm__ ("mls %0.16b,%2.16b,%3.16b" | |
df401d54 | 8735 | : "=w"(result) |
8736 | : "0"(a), "w"(b), "w"(c) | |
8737 | : /* No clobbers */); | |
8738 | return result; | |
8739 | } | |
8740 | ||
49ab9992 | 8741 | __extension__ extern __inline uint16x8_t |
8742 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8743 | vmlsq_u16 (uint16x8_t a, uint16x8_t b, uint16x8_t c) |
df401d54 | 8744 | { |
2d67c34c | 8745 | uint16x8_t result; |
8746 | __asm__ ("mls %0.8h,%2.8h,%3.8h" | |
df401d54 | 8747 | : "=w"(result) |
8748 | : "0"(a), "w"(b), "w"(c) | |
8749 | : /* No clobbers */); | |
8750 | return result; | |
8751 | } | |
8752 | ||
49ab9992 | 8753 | __extension__ extern __inline uint32x4_t |
8754 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8755 | vmlsq_u32 (uint32x4_t a, uint32x4_t b, uint32x4_t c) |
df401d54 | 8756 | { |
8757 | uint32x4_t result; | |
2d67c34c | 8758 | __asm__ ("mls %0.4s,%2.4s,%3.4s" |
df401d54 | 8759 | : "=w"(result) |
8760 | : "0"(a), "w"(b), "w"(c) | |
8761 | : /* No clobbers */); | |
8762 | return result; | |
8763 | } | |
8764 | ||
49ab9992 | 8765 | __extension__ extern __inline int16x8_t |
8766 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8767 | vmovl_high_s8 (int8x16_t a) |
df401d54 | 8768 | { |
8769 | int16x8_t result; | |
2d67c34c | 8770 | __asm__ ("sshll2 %0.8h,%1.16b,#0" |
df401d54 | 8771 | : "=w"(result) |
2d67c34c | 8772 | : "w"(a) |
df401d54 | 8773 | : /* No clobbers */); |
8774 | return result; | |
8775 | } | |
8776 | ||
49ab9992 | 8777 | __extension__ extern __inline int32x4_t |
8778 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8779 | vmovl_high_s16 (int16x8_t a) |
df401d54 | 8780 | { |
8781 | int32x4_t result; | |
2d67c34c | 8782 | __asm__ ("sshll2 %0.4s,%1.8h,#0" |
df401d54 | 8783 | : "=w"(result) |
2d67c34c | 8784 | : "w"(a) |
8785 | : /* No clobbers */); | |
8786 | return result; | |
8787 | } | |
8788 | ||
49ab9992 | 8789 | __extension__ extern __inline int64x2_t |
8790 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8791 | vmovl_high_s32 (int32x4_t a) |
8792 | { | |
8793 | int64x2_t result; | |
8794 | __asm__ ("sshll2 %0.2d,%1.4s,#0" | |
8795 | : "=w"(result) | |
8796 | : "w"(a) | |
df401d54 | 8797 | : /* No clobbers */); |
8798 | return result; | |
8799 | } | |
8800 | ||
49ab9992 | 8801 | __extension__ extern __inline uint16x8_t |
8802 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8803 | vmovl_high_u8 (uint8x16_t a) |
df401d54 | 8804 | { |
8805 | uint16x8_t result; | |
2d67c34c | 8806 | __asm__ ("ushll2 %0.8h,%1.16b,#0" |
df401d54 | 8807 | : "=w"(result) |
2d67c34c | 8808 | : "w"(a) |
df401d54 | 8809 | : /* No clobbers */); |
8810 | return result; | |
8811 | } | |
8812 | ||
49ab9992 | 8813 | __extension__ extern __inline uint32x4_t |
8814 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8815 | vmovl_high_u16 (uint16x8_t a) |
df401d54 | 8816 | { |
8817 | uint32x4_t result; | |
2d67c34c | 8818 | __asm__ ("ushll2 %0.4s,%1.8h,#0" |
df401d54 | 8819 | : "=w"(result) |
2d67c34c | 8820 | : "w"(a) |
df401d54 | 8821 | : /* No clobbers */); |
8822 | return result; | |
8823 | } | |
8824 | ||
49ab9992 | 8825 | __extension__ extern __inline uint64x2_t |
8826 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8827 | vmovl_high_u32 (uint32x4_t a) |
df401d54 | 8828 | { |
2d67c34c | 8829 | uint64x2_t result; |
8830 | __asm__ ("ushll2 %0.2d,%1.4s,#0" | |
df401d54 | 8831 | : "=w"(result) |
2d67c34c | 8832 | : "w"(a) |
df401d54 | 8833 | : /* No clobbers */); |
8834 | return result; | |
8835 | } | |
8836 | ||
49ab9992 | 8837 | __extension__ extern __inline int16x8_t |
8838 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8839 | vmovl_s8 (int8x8_t a) |
df401d54 | 8840 | { |
8841 | int16x8_t result; | |
2d67c34c | 8842 | __asm__ ("sshll %0.8h,%1.8b,#0" |
df401d54 | 8843 | : "=w"(result) |
2d67c34c | 8844 | : "w"(a) |
df401d54 | 8845 | : /* No clobbers */); |
8846 | return result; | |
8847 | } | |
8848 | ||
49ab9992 | 8849 | __extension__ extern __inline int32x4_t |
8850 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8851 | vmovl_s16 (int16x4_t a) |
df401d54 | 8852 | { |
8853 | int32x4_t result; | |
2d67c34c | 8854 | __asm__ ("sshll %0.4s,%1.4h,#0" |
df401d54 | 8855 | : "=w"(result) |
2d67c34c | 8856 | : "w"(a) |
df401d54 | 8857 | : /* No clobbers */); |
8858 | return result; | |
8859 | } | |
8860 | ||
49ab9992 | 8861 | __extension__ extern __inline int64x2_t |
8862 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 8863 | vmovl_s32 (int32x2_t a) |
df401d54 | 8864 | { |
8865 | int64x2_t result; | |
8866 | __asm__ ("sshll %0.2d,%1.2s,#0" | |
8867 | : "=w"(result) | |
8868 | : "w"(a) | |
8869 | : /* No clobbers */); | |
8870 | return result; | |
8871 | } | |
8872 | ||
49ab9992 | 8873 | __extension__ extern __inline uint16x8_t |
8874 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 8875 | vmovl_u8 (uint8x8_t a) |
8876 | { | |
8877 | uint16x8_t result; | |
8878 | __asm__ ("ushll %0.8h,%1.8b,#0" | |
8879 | : "=w"(result) | |
8880 | : "w"(a) | |
8881 | : /* No clobbers */); | |
8882 | return result; | |
8883 | } | |
8884 | ||
49ab9992 | 8885 | __extension__ extern __inline uint32x4_t |
8886 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 8887 | vmovl_u16 (uint16x4_t a) |
8888 | { | |
8889 | uint32x4_t result; | |
8890 | __asm__ ("ushll %0.4s,%1.4h,#0" | |
8891 | : "=w"(result) | |
8892 | : "w"(a) | |
8893 | : /* No clobbers */); | |
8894 | return result; | |
8895 | } | |
8896 | ||
49ab9992 | 8897 | __extension__ extern __inline uint64x2_t |
8898 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 8899 | vmovl_u32 (uint32x2_t a) |
8900 | { | |
8901 | uint64x2_t result; | |
8902 | __asm__ ("ushll %0.2d,%1.2s,#0" | |
8903 | : "=w"(result) | |
8904 | : "w"(a) | |
8905 | : /* No clobbers */); | |
8906 | return result; | |
8907 | } | |
8908 | ||
49ab9992 | 8909 | __extension__ extern __inline int8x16_t |
8910 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 8911 | vmovn_high_s16 (int8x8_t a, int16x8_t b) |
8912 | { | |
d75377fe | 8913 | int8x16_t result = vcombine_s8 (a, vcreate_s8 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 8914 | __asm__ ("xtn2 %0.16b,%1.8h" |
df401d54 | 8915 | : "+w"(result) |
8916 | : "w"(b) | |
8917 | : /* No clobbers */); | |
8918 | return result; | |
8919 | } | |
8920 | ||
49ab9992 | 8921 | __extension__ extern __inline int16x8_t |
8922 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 8923 | vmovn_high_s32 (int16x4_t a, int32x4_t b) |
8924 | { | |
d75377fe | 8925 | int16x8_t result = vcombine_s16 (a, vcreate_s16 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 8926 | __asm__ ("xtn2 %0.8h,%1.4s" |
df401d54 | 8927 | : "+w"(result) |
8928 | : "w"(b) | |
8929 | : /* No clobbers */); | |
8930 | return result; | |
8931 | } | |
8932 | ||
49ab9992 | 8933 | __extension__ extern __inline int32x4_t |
8934 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 8935 | vmovn_high_s64 (int32x2_t a, int64x2_t b) |
8936 | { | |
d75377fe | 8937 | int32x4_t result = vcombine_s32 (a, vcreate_s32 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 8938 | __asm__ ("xtn2 %0.4s,%1.2d" |
df401d54 | 8939 | : "+w"(result) |
8940 | : "w"(b) | |
8941 | : /* No clobbers */); | |
8942 | return result; | |
8943 | } | |
8944 | ||
49ab9992 | 8945 | __extension__ extern __inline uint8x16_t |
8946 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 8947 | vmovn_high_u16 (uint8x8_t a, uint16x8_t b) |
8948 | { | |
d75377fe | 8949 | uint8x16_t result = vcombine_u8 (a, vcreate_u8 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 8950 | __asm__ ("xtn2 %0.16b,%1.8h" |
df401d54 | 8951 | : "+w"(result) |
8952 | : "w"(b) | |
8953 | : /* No clobbers */); | |
8954 | return result; | |
8955 | } | |
8956 | ||
49ab9992 | 8957 | __extension__ extern __inline uint16x8_t |
8958 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 8959 | vmovn_high_u32 (uint16x4_t a, uint32x4_t b) |
8960 | { | |
d75377fe | 8961 | uint16x8_t result = vcombine_u16 (a, vcreate_u16 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 8962 | __asm__ ("xtn2 %0.8h,%1.4s" |
df401d54 | 8963 | : "+w"(result) |
8964 | : "w"(b) | |
8965 | : /* No clobbers */); | |
8966 | return result; | |
8967 | } | |
8968 | ||
49ab9992 | 8969 | __extension__ extern __inline uint32x4_t |
8970 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 8971 | vmovn_high_u64 (uint32x2_t a, uint64x2_t b) |
8972 | { | |
d75377fe | 8973 | uint32x4_t result = vcombine_u32 (a, vcreate_u32 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 8974 | __asm__ ("xtn2 %0.4s,%1.2d" |
df401d54 | 8975 | : "+w"(result) |
8976 | : "w"(b) | |
8977 | : /* No clobbers */); | |
8978 | return result; | |
8979 | } | |
8980 | ||
49ab9992 | 8981 | __extension__ extern __inline int8x8_t |
8982 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 8983 | vmovn_s16 (int16x8_t a) |
8984 | { | |
8985 | int8x8_t result; | |
8986 | __asm__ ("xtn %0.8b,%1.8h" | |
8987 | : "=w"(result) | |
8988 | : "w"(a) | |
8989 | : /* No clobbers */); | |
8990 | return result; | |
8991 | } | |
8992 | ||
49ab9992 | 8993 | __extension__ extern __inline int16x4_t |
8994 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 8995 | vmovn_s32 (int32x4_t a) |
8996 | { | |
8997 | int16x4_t result; | |
8998 | __asm__ ("xtn %0.4h,%1.4s" | |
8999 | : "=w"(result) | |
9000 | : "w"(a) | |
9001 | : /* No clobbers */); | |
9002 | return result; | |
9003 | } | |
9004 | ||
49ab9992 | 9005 | __extension__ extern __inline int32x2_t |
9006 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9007 | vmovn_s64 (int64x2_t a) |
9008 | { | |
9009 | int32x2_t result; | |
9010 | __asm__ ("xtn %0.2s,%1.2d" | |
9011 | : "=w"(result) | |
9012 | : "w"(a) | |
9013 | : /* No clobbers */); | |
9014 | return result; | |
9015 | } | |
9016 | ||
49ab9992 | 9017 | __extension__ extern __inline uint8x8_t |
9018 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9019 | vmovn_u16 (uint16x8_t a) |
9020 | { | |
9021 | uint8x8_t result; | |
9022 | __asm__ ("xtn %0.8b,%1.8h" | |
9023 | : "=w"(result) | |
9024 | : "w"(a) | |
9025 | : /* No clobbers */); | |
9026 | return result; | |
9027 | } | |
9028 | ||
49ab9992 | 9029 | __extension__ extern __inline uint16x4_t |
9030 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9031 | vmovn_u32 (uint32x4_t a) |
9032 | { | |
9033 | uint16x4_t result; | |
9034 | __asm__ ("xtn %0.4h,%1.4s" | |
9035 | : "=w"(result) | |
9036 | : "w"(a) | |
9037 | : /* No clobbers */); | |
9038 | return result; | |
9039 | } | |
9040 | ||
49ab9992 | 9041 | __extension__ extern __inline uint32x2_t |
9042 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9043 | vmovn_u64 (uint64x2_t a) |
9044 | { | |
9045 | uint32x2_t result; | |
9046 | __asm__ ("xtn %0.2s,%1.2d" | |
9047 | : "=w"(result) | |
9048 | : "w"(a) | |
9049 | : /* No clobbers */); | |
9050 | return result; | |
9051 | } | |
9052 | ||
df401d54 | 9053 | #define vmull_high_lane_s16(a, b, c) \ |
9054 | __extension__ \ | |
9055 | ({ \ | |
450ff3fd | 9056 | int16x4_t b_ = (b); \ |
df401d54 | 9057 | int16x8_t a_ = (a); \ |
9058 | int32x4_t result; \ | |
9059 | __asm__ ("smull2 %0.4s, %1.8h, %2.h[%3]" \ | |
9060 | : "=w"(result) \ | |
9d37257a | 9061 | : "w"(a_), "x"(b_), "i"(c) \ |
df401d54 | 9062 | : /* No clobbers */); \ |
9063 | result; \ | |
9064 | }) | |
9065 | ||
9066 | #define vmull_high_lane_s32(a, b, c) \ | |
9067 | __extension__ \ | |
9068 | ({ \ | |
450ff3fd | 9069 | int32x2_t b_ = (b); \ |
df401d54 | 9070 | int32x4_t a_ = (a); \ |
9071 | int64x2_t result; \ | |
9072 | __asm__ ("smull2 %0.2d, %1.4s, %2.s[%3]" \ | |
9073 | : "=w"(result) \ | |
9074 | : "w"(a_), "w"(b_), "i"(c) \ | |
9075 | : /* No clobbers */); \ | |
9076 | result; \ | |
9077 | }) | |
9078 | ||
9079 | #define vmull_high_lane_u16(a, b, c) \ | |
9080 | __extension__ \ | |
9081 | ({ \ | |
450ff3fd | 9082 | uint16x4_t b_ = (b); \ |
df401d54 | 9083 | uint16x8_t a_ = (a); \ |
9084 | uint32x4_t result; \ | |
9085 | __asm__ ("umull2 %0.4s, %1.8h, %2.h[%3]" \ | |
9086 | : "=w"(result) \ | |
9d37257a | 9087 | : "w"(a_), "x"(b_), "i"(c) \ |
df401d54 | 9088 | : /* No clobbers */); \ |
9089 | result; \ | |
9090 | }) | |
9091 | ||
9092 | #define vmull_high_lane_u32(a, b, c) \ | |
9093 | __extension__ \ | |
9094 | ({ \ | |
450ff3fd | 9095 | uint32x2_t b_ = (b); \ |
df401d54 | 9096 | uint32x4_t a_ = (a); \ |
9097 | uint64x2_t result; \ | |
9098 | __asm__ ("umull2 %0.2d, %1.4s, %2.s[%3]" \ | |
9099 | : "=w"(result) \ | |
9100 | : "w"(a_), "w"(b_), "i"(c) \ | |
9101 | : /* No clobbers */); \ | |
9102 | result; \ | |
9103 | }) | |
9104 | ||
9105 | #define vmull_high_laneq_s16(a, b, c) \ | |
9106 | __extension__ \ | |
9107 | ({ \ | |
9108 | int16x8_t b_ = (b); \ | |
9109 | int16x8_t a_ = (a); \ | |
9110 | int32x4_t result; \ | |
9111 | __asm__ ("smull2 %0.4s, %1.8h, %2.h[%3]" \ | |
9112 | : "=w"(result) \ | |
9d37257a | 9113 | : "w"(a_), "x"(b_), "i"(c) \ |
df401d54 | 9114 | : /* No clobbers */); \ |
9115 | result; \ | |
9116 | }) | |
9117 | ||
9118 | #define vmull_high_laneq_s32(a, b, c) \ | |
9119 | __extension__ \ | |
9120 | ({ \ | |
9121 | int32x4_t b_ = (b); \ | |
9122 | int32x4_t a_ = (a); \ | |
9123 | int64x2_t result; \ | |
9124 | __asm__ ("smull2 %0.2d, %1.4s, %2.s[%3]" \ | |
9125 | : "=w"(result) \ | |
9126 | : "w"(a_), "w"(b_), "i"(c) \ | |
9127 | : /* No clobbers */); \ | |
9128 | result; \ | |
9129 | }) | |
9130 | ||
9131 | #define vmull_high_laneq_u16(a, b, c) \ | |
9132 | __extension__ \ | |
9133 | ({ \ | |
9134 | uint16x8_t b_ = (b); \ | |
9135 | uint16x8_t a_ = (a); \ | |
9136 | uint32x4_t result; \ | |
9137 | __asm__ ("umull2 %0.4s, %1.8h, %2.h[%3]" \ | |
9138 | : "=w"(result) \ | |
9d37257a | 9139 | : "w"(a_), "x"(b_), "i"(c) \ |
df401d54 | 9140 | : /* No clobbers */); \ |
9141 | result; \ | |
9142 | }) | |
9143 | ||
9144 | #define vmull_high_laneq_u32(a, b, c) \ | |
9145 | __extension__ \ | |
9146 | ({ \ | |
9147 | uint32x4_t b_ = (b); \ | |
9148 | uint32x4_t a_ = (a); \ | |
9149 | uint64x2_t result; \ | |
9150 | __asm__ ("umull2 %0.2d, %1.4s, %2.s[%3]" \ | |
9151 | : "=w"(result) \ | |
9152 | : "w"(a_), "w"(b_), "i"(c) \ | |
9153 | : /* No clobbers */); \ | |
9154 | result; \ | |
9155 | }) | |
9156 | ||
49ab9992 | 9157 | __extension__ extern __inline int32x4_t |
9158 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9159 | vmull_high_n_s16 (int16x8_t a, int16_t b) |
9160 | { | |
9161 | int32x4_t result; | |
9162 | __asm__ ("smull2 %0.4s,%1.8h,%2.h[0]" | |
9163 | : "=w"(result) | |
9d37257a | 9164 | : "w"(a), "x"(b) |
df401d54 | 9165 | : /* No clobbers */); |
9166 | return result; | |
9167 | } | |
9168 | ||
49ab9992 | 9169 | __extension__ extern __inline int64x2_t |
9170 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9171 | vmull_high_n_s32 (int32x4_t a, int32_t b) |
9172 | { | |
9173 | int64x2_t result; | |
9174 | __asm__ ("smull2 %0.2d,%1.4s,%2.s[0]" | |
9175 | : "=w"(result) | |
9176 | : "w"(a), "w"(b) | |
9177 | : /* No clobbers */); | |
9178 | return result; | |
9179 | } | |
9180 | ||
49ab9992 | 9181 | __extension__ extern __inline uint32x4_t |
9182 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9183 | vmull_high_n_u16 (uint16x8_t a, uint16_t b) |
9184 | { | |
9185 | uint32x4_t result; | |
9186 | __asm__ ("umull2 %0.4s,%1.8h,%2.h[0]" | |
9187 | : "=w"(result) | |
9d37257a | 9188 | : "w"(a), "x"(b) |
df401d54 | 9189 | : /* No clobbers */); |
9190 | return result; | |
9191 | } | |
9192 | ||
49ab9992 | 9193 | __extension__ extern __inline uint64x2_t |
9194 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9195 | vmull_high_n_u32 (uint32x4_t a, uint32_t b) |
9196 | { | |
9197 | uint64x2_t result; | |
9198 | __asm__ ("umull2 %0.2d,%1.4s,%2.s[0]" | |
9199 | : "=w"(result) | |
9200 | : "w"(a), "w"(b) | |
9201 | : /* No clobbers */); | |
9202 | return result; | |
9203 | } | |
9204 | ||
49ab9992 | 9205 | __extension__ extern __inline poly16x8_t |
9206 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9207 | vmull_high_p8 (poly8x16_t a, poly8x16_t b) |
9208 | { | |
9209 | poly16x8_t result; | |
9210 | __asm__ ("pmull2 %0.8h,%1.16b,%2.16b" | |
9211 | : "=w"(result) | |
9212 | : "w"(a), "w"(b) | |
9213 | : /* No clobbers */); | |
9214 | return result; | |
9215 | } | |
9216 | ||
49ab9992 | 9217 | __extension__ extern __inline int16x8_t |
9218 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9219 | vmull_high_s8 (int8x16_t a, int8x16_t b) |
9220 | { | |
9221 | int16x8_t result; | |
9222 | __asm__ ("smull2 %0.8h,%1.16b,%2.16b" | |
9223 | : "=w"(result) | |
9224 | : "w"(a), "w"(b) | |
9225 | : /* No clobbers */); | |
9226 | return result; | |
9227 | } | |
9228 | ||
49ab9992 | 9229 | __extension__ extern __inline int32x4_t |
9230 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9231 | vmull_high_s16 (int16x8_t a, int16x8_t b) |
9232 | { | |
9233 | int32x4_t result; | |
9234 | __asm__ ("smull2 %0.4s,%1.8h,%2.8h" | |
9235 | : "=w"(result) | |
9236 | : "w"(a), "w"(b) | |
9237 | : /* No clobbers */); | |
9238 | return result; | |
9239 | } | |
9240 | ||
49ab9992 | 9241 | __extension__ extern __inline int64x2_t |
9242 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9243 | vmull_high_s32 (int32x4_t a, int32x4_t b) |
9244 | { | |
9245 | int64x2_t result; | |
9246 | __asm__ ("smull2 %0.2d,%1.4s,%2.4s" | |
9247 | : "=w"(result) | |
9248 | : "w"(a), "w"(b) | |
9249 | : /* No clobbers */); | |
9250 | return result; | |
9251 | } | |
9252 | ||
49ab9992 | 9253 | __extension__ extern __inline uint16x8_t |
9254 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9255 | vmull_high_u8 (uint8x16_t a, uint8x16_t b) |
9256 | { | |
9257 | uint16x8_t result; | |
9258 | __asm__ ("umull2 %0.8h,%1.16b,%2.16b" | |
9259 | : "=w"(result) | |
9260 | : "w"(a), "w"(b) | |
9261 | : /* No clobbers */); | |
9262 | return result; | |
9263 | } | |
9264 | ||
49ab9992 | 9265 | __extension__ extern __inline uint32x4_t |
9266 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9267 | vmull_high_u16 (uint16x8_t a, uint16x8_t b) |
9268 | { | |
9269 | uint32x4_t result; | |
9270 | __asm__ ("umull2 %0.4s,%1.8h,%2.8h" | |
9271 | : "=w"(result) | |
9272 | : "w"(a), "w"(b) | |
9273 | : /* No clobbers */); | |
9274 | return result; | |
9275 | } | |
9276 | ||
49ab9992 | 9277 | __extension__ extern __inline uint64x2_t |
9278 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9279 | vmull_high_u32 (uint32x4_t a, uint32x4_t b) |
9280 | { | |
9281 | uint64x2_t result; | |
9282 | __asm__ ("umull2 %0.2d,%1.4s,%2.4s" | |
9283 | : "=w"(result) | |
9284 | : "w"(a), "w"(b) | |
9285 | : /* No clobbers */); | |
9286 | return result; | |
9287 | } | |
9288 | ||
9289 | #define vmull_lane_s16(a, b, c) \ | |
9290 | __extension__ \ | |
9291 | ({ \ | |
9292 | int16x4_t b_ = (b); \ | |
9293 | int16x4_t a_ = (a); \ | |
9294 | int32x4_t result; \ | |
9295 | __asm__ ("smull %0.4s,%1.4h,%2.h[%3]" \ | |
9296 | : "=w"(result) \ | |
9d37257a | 9297 | : "w"(a_), "x"(b_), "i"(c) \ |
df401d54 | 9298 | : /* No clobbers */); \ |
9299 | result; \ | |
9300 | }) | |
9301 | ||
9302 | #define vmull_lane_s32(a, b, c) \ | |
9303 | __extension__ \ | |
9304 | ({ \ | |
9305 | int32x2_t b_ = (b); \ | |
9306 | int32x2_t a_ = (a); \ | |
9307 | int64x2_t result; \ | |
9308 | __asm__ ("smull %0.2d,%1.2s,%2.s[%3]" \ | |
9309 | : "=w"(result) \ | |
9310 | : "w"(a_), "w"(b_), "i"(c) \ | |
9311 | : /* No clobbers */); \ | |
9312 | result; \ | |
9313 | }) | |
9314 | ||
9315 | #define vmull_lane_u16(a, b, c) \ | |
9316 | __extension__ \ | |
9317 | ({ \ | |
9318 | uint16x4_t b_ = (b); \ | |
9319 | uint16x4_t a_ = (a); \ | |
9320 | uint32x4_t result; \ | |
9321 | __asm__ ("umull %0.4s,%1.4h,%2.h[%3]" \ | |
9322 | : "=w"(result) \ | |
9d37257a | 9323 | : "w"(a_), "x"(b_), "i"(c) \ |
df401d54 | 9324 | : /* No clobbers */); \ |
9325 | result; \ | |
9326 | }) | |
9327 | ||
9328 | #define vmull_lane_u32(a, b, c) \ | |
9329 | __extension__ \ | |
9330 | ({ \ | |
9331 | uint32x2_t b_ = (b); \ | |
9332 | uint32x2_t a_ = (a); \ | |
9333 | uint64x2_t result; \ | |
9334 | __asm__ ("umull %0.2d, %1.2s, %2.s[%3]" \ | |
9335 | : "=w"(result) \ | |
9336 | : "w"(a_), "w"(b_), "i"(c) \ | |
9337 | : /* No clobbers */); \ | |
9338 | result; \ | |
9339 | }) | |
9340 | ||
9341 | #define vmull_laneq_s16(a, b, c) \ | |
9342 | __extension__ \ | |
9343 | ({ \ | |
9344 | int16x8_t b_ = (b); \ | |
9345 | int16x4_t a_ = (a); \ | |
9346 | int32x4_t result; \ | |
9347 | __asm__ ("smull %0.4s, %1.4h, %2.h[%3]" \ | |
9348 | : "=w"(result) \ | |
9d37257a | 9349 | : "w"(a_), "x"(b_), "i"(c) \ |
df401d54 | 9350 | : /* No clobbers */); \ |
9351 | result; \ | |
9352 | }) | |
9353 | ||
9354 | #define vmull_laneq_s32(a, b, c) \ | |
9355 | __extension__ \ | |
9356 | ({ \ | |
9357 | int32x4_t b_ = (b); \ | |
9358 | int32x2_t a_ = (a); \ | |
9359 | int64x2_t result; \ | |
9360 | __asm__ ("smull %0.2d, %1.2s, %2.s[%3]" \ | |
9361 | : "=w"(result) \ | |
9362 | : "w"(a_), "w"(b_), "i"(c) \ | |
9363 | : /* No clobbers */); \ | |
9364 | result; \ | |
9365 | }) | |
9366 | ||
9367 | #define vmull_laneq_u16(a, b, c) \ | |
9368 | __extension__ \ | |
9369 | ({ \ | |
9370 | uint16x8_t b_ = (b); \ | |
9371 | uint16x4_t a_ = (a); \ | |
9372 | uint32x4_t result; \ | |
9373 | __asm__ ("umull %0.4s, %1.4h, %2.h[%3]" \ | |
9374 | : "=w"(result) \ | |
9d37257a | 9375 | : "w"(a_), "x"(b_), "i"(c) \ |
df401d54 | 9376 | : /* No clobbers */); \ |
9377 | result; \ | |
9378 | }) | |
9379 | ||
9380 | #define vmull_laneq_u32(a, b, c) \ | |
9381 | __extension__ \ | |
9382 | ({ \ | |
9383 | uint32x4_t b_ = (b); \ | |
9384 | uint32x2_t a_ = (a); \ | |
9385 | uint64x2_t result; \ | |
9386 | __asm__ ("umull %0.2d, %1.2s, %2.s[%3]" \ | |
9387 | : "=w"(result) \ | |
9388 | : "w"(a_), "w"(b_), "i"(c) \ | |
9389 | : /* No clobbers */); \ | |
9390 | result; \ | |
9391 | }) | |
9392 | ||
49ab9992 | 9393 | __extension__ extern __inline int32x4_t |
9394 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9395 | vmull_n_s16 (int16x4_t a, int16_t b) |
9396 | { | |
9397 | int32x4_t result; | |
9398 | __asm__ ("smull %0.4s,%1.4h,%2.h[0]" | |
9399 | : "=w"(result) | |
9d37257a | 9400 | : "w"(a), "x"(b) |
df401d54 | 9401 | : /* No clobbers */); |
9402 | return result; | |
9403 | } | |
9404 | ||
49ab9992 | 9405 | __extension__ extern __inline int64x2_t |
9406 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9407 | vmull_n_s32 (int32x2_t a, int32_t b) |
9408 | { | |
9409 | int64x2_t result; | |
9410 | __asm__ ("smull %0.2d,%1.2s,%2.s[0]" | |
9411 | : "=w"(result) | |
9412 | : "w"(a), "w"(b) | |
9413 | : /* No clobbers */); | |
9414 | return result; | |
9415 | } | |
9416 | ||
49ab9992 | 9417 | __extension__ extern __inline uint32x4_t |
9418 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9419 | vmull_n_u16 (uint16x4_t a, uint16_t b) |
9420 | { | |
9421 | uint32x4_t result; | |
9422 | __asm__ ("umull %0.4s,%1.4h,%2.h[0]" | |
9423 | : "=w"(result) | |
9d37257a | 9424 | : "w"(a), "x"(b) |
df401d54 | 9425 | : /* No clobbers */); |
9426 | return result; | |
9427 | } | |
9428 | ||
49ab9992 | 9429 | __extension__ extern __inline uint64x2_t |
9430 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9431 | vmull_n_u32 (uint32x2_t a, uint32_t b) |
9432 | { | |
9433 | uint64x2_t result; | |
9434 | __asm__ ("umull %0.2d,%1.2s,%2.s[0]" | |
9435 | : "=w"(result) | |
9436 | : "w"(a), "w"(b) | |
9437 | : /* No clobbers */); | |
9438 | return result; | |
9439 | } | |
9440 | ||
49ab9992 | 9441 | __extension__ extern __inline poly16x8_t |
9442 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9443 | vmull_p8 (poly8x8_t a, poly8x8_t b) |
9444 | { | |
9445 | poly16x8_t result; | |
9446 | __asm__ ("pmull %0.8h, %1.8b, %2.8b" | |
9447 | : "=w"(result) | |
9448 | : "w"(a), "w"(b) | |
9449 | : /* No clobbers */); | |
9450 | return result; | |
9451 | } | |
9452 | ||
49ab9992 | 9453 | __extension__ extern __inline int16x8_t |
9454 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9455 | vmull_s8 (int8x8_t a, int8x8_t b) |
9456 | { | |
9457 | int16x8_t result; | |
9458 | __asm__ ("smull %0.8h, %1.8b, %2.8b" | |
9459 | : "=w"(result) | |
9460 | : "w"(a), "w"(b) | |
9461 | : /* No clobbers */); | |
9462 | return result; | |
9463 | } | |
9464 | ||
49ab9992 | 9465 | __extension__ extern __inline int32x4_t |
9466 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9467 | vmull_s16 (int16x4_t a, int16x4_t b) |
9468 | { | |
9469 | int32x4_t result; | |
9470 | __asm__ ("smull %0.4s, %1.4h, %2.4h" | |
9471 | : "=w"(result) | |
9472 | : "w"(a), "w"(b) | |
9473 | : /* No clobbers */); | |
9474 | return result; | |
9475 | } | |
9476 | ||
49ab9992 | 9477 | __extension__ extern __inline int64x2_t |
9478 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9479 | vmull_s32 (int32x2_t a, int32x2_t b) |
9480 | { | |
9481 | int64x2_t result; | |
9482 | __asm__ ("smull %0.2d, %1.2s, %2.2s" | |
9483 | : "=w"(result) | |
9484 | : "w"(a), "w"(b) | |
9485 | : /* No clobbers */); | |
9486 | return result; | |
9487 | } | |
9488 | ||
49ab9992 | 9489 | __extension__ extern __inline uint16x8_t |
9490 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9491 | vmull_u8 (uint8x8_t a, uint8x8_t b) |
9492 | { | |
9493 | uint16x8_t result; | |
9494 | __asm__ ("umull %0.8h, %1.8b, %2.8b" | |
9495 | : "=w"(result) | |
9496 | : "w"(a), "w"(b) | |
9497 | : /* No clobbers */); | |
9498 | return result; | |
9499 | } | |
9500 | ||
49ab9992 | 9501 | __extension__ extern __inline uint32x4_t |
9502 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9503 | vmull_u16 (uint16x4_t a, uint16x4_t b) |
9504 | { | |
9505 | uint32x4_t result; | |
9506 | __asm__ ("umull %0.4s, %1.4h, %2.4h" | |
9507 | : "=w"(result) | |
9508 | : "w"(a), "w"(b) | |
9509 | : /* No clobbers */); | |
9510 | return result; | |
9511 | } | |
9512 | ||
49ab9992 | 9513 | __extension__ extern __inline uint64x2_t |
9514 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9515 | vmull_u32 (uint32x2_t a, uint32x2_t b) |
9516 | { | |
9517 | uint64x2_t result; | |
9518 | __asm__ ("umull %0.2d, %1.2s, %2.2s" | |
9519 | : "=w"(result) | |
9520 | : "w"(a), "w"(b) | |
9521 | : /* No clobbers */); | |
9522 | return result; | |
9523 | } | |
9524 | ||
49ab9992 | 9525 | __extension__ extern __inline int16x4_t |
9526 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9527 | vpadal_s8 (int16x4_t a, int8x8_t b) |
9528 | { | |
9529 | int16x4_t result; | |
9530 | __asm__ ("sadalp %0.4h,%2.8b" | |
9531 | : "=w"(result) | |
9532 | : "0"(a), "w"(b) | |
9533 | : /* No clobbers */); | |
9534 | return result; | |
9535 | } | |
9536 | ||
49ab9992 | 9537 | __extension__ extern __inline int32x2_t |
9538 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9539 | vpadal_s16 (int32x2_t a, int16x4_t b) |
9540 | { | |
9541 | int32x2_t result; | |
9542 | __asm__ ("sadalp %0.2s,%2.4h" | |
9543 | : "=w"(result) | |
9544 | : "0"(a), "w"(b) | |
9545 | : /* No clobbers */); | |
9546 | return result; | |
9547 | } | |
9548 | ||
49ab9992 | 9549 | __extension__ extern __inline int64x1_t |
9550 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9551 | vpadal_s32 (int64x1_t a, int32x2_t b) |
9552 | { | |
9553 | int64x1_t result; | |
9554 | __asm__ ("sadalp %0.1d,%2.2s" | |
9555 | : "=w"(result) | |
9556 | : "0"(a), "w"(b) | |
9557 | : /* No clobbers */); | |
9558 | return result; | |
9559 | } | |
9560 | ||
49ab9992 | 9561 | __extension__ extern __inline uint16x4_t |
9562 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9563 | vpadal_u8 (uint16x4_t a, uint8x8_t b) |
9564 | { | |
9565 | uint16x4_t result; | |
9566 | __asm__ ("uadalp %0.4h,%2.8b" | |
9567 | : "=w"(result) | |
9568 | : "0"(a), "w"(b) | |
9569 | : /* No clobbers */); | |
9570 | return result; | |
9571 | } | |
9572 | ||
49ab9992 | 9573 | __extension__ extern __inline uint32x2_t |
9574 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9575 | vpadal_u16 (uint32x2_t a, uint16x4_t b) |
9576 | { | |
9577 | uint32x2_t result; | |
9578 | __asm__ ("uadalp %0.2s,%2.4h" | |
9579 | : "=w"(result) | |
9580 | : "0"(a), "w"(b) | |
9581 | : /* No clobbers */); | |
9582 | return result; | |
9583 | } | |
9584 | ||
49ab9992 | 9585 | __extension__ extern __inline uint64x1_t |
9586 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9587 | vpadal_u32 (uint64x1_t a, uint32x2_t b) |
9588 | { | |
9589 | uint64x1_t result; | |
9590 | __asm__ ("uadalp %0.1d,%2.2s" | |
9591 | : "=w"(result) | |
9592 | : "0"(a), "w"(b) | |
9593 | : /* No clobbers */); | |
9594 | return result; | |
9595 | } | |
9596 | ||
49ab9992 | 9597 | __extension__ extern __inline int16x8_t |
9598 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9599 | vpadalq_s8 (int16x8_t a, int8x16_t b) |
9600 | { | |
9601 | int16x8_t result; | |
9602 | __asm__ ("sadalp %0.8h,%2.16b" | |
9603 | : "=w"(result) | |
9604 | : "0"(a), "w"(b) | |
9605 | : /* No clobbers */); | |
9606 | return result; | |
9607 | } | |
9608 | ||
49ab9992 | 9609 | __extension__ extern __inline int32x4_t |
9610 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9611 | vpadalq_s16 (int32x4_t a, int16x8_t b) |
9612 | { | |
9613 | int32x4_t result; | |
9614 | __asm__ ("sadalp %0.4s,%2.8h" | |
9615 | : "=w"(result) | |
9616 | : "0"(a), "w"(b) | |
9617 | : /* No clobbers */); | |
9618 | return result; | |
9619 | } | |
9620 | ||
49ab9992 | 9621 | __extension__ extern __inline int64x2_t |
9622 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9623 | vpadalq_s32 (int64x2_t a, int32x4_t b) |
9624 | { | |
9625 | int64x2_t result; | |
9626 | __asm__ ("sadalp %0.2d,%2.4s" | |
9627 | : "=w"(result) | |
9628 | : "0"(a), "w"(b) | |
9629 | : /* No clobbers */); | |
9630 | return result; | |
9631 | } | |
9632 | ||
49ab9992 | 9633 | __extension__ extern __inline uint16x8_t |
9634 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9635 | vpadalq_u8 (uint16x8_t a, uint8x16_t b) |
9636 | { | |
9637 | uint16x8_t result; | |
9638 | __asm__ ("uadalp %0.8h,%2.16b" | |
9639 | : "=w"(result) | |
9640 | : "0"(a), "w"(b) | |
9641 | : /* No clobbers */); | |
9642 | return result; | |
9643 | } | |
9644 | ||
49ab9992 | 9645 | __extension__ extern __inline uint32x4_t |
9646 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9647 | vpadalq_u16 (uint32x4_t a, uint16x8_t b) |
9648 | { | |
9649 | uint32x4_t result; | |
9650 | __asm__ ("uadalp %0.4s,%2.8h" | |
9651 | : "=w"(result) | |
9652 | : "0"(a), "w"(b) | |
9653 | : /* No clobbers */); | |
9654 | return result; | |
9655 | } | |
9656 | ||
49ab9992 | 9657 | __extension__ extern __inline uint64x2_t |
9658 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9659 | vpadalq_u32 (uint64x2_t a, uint32x4_t b) |
9660 | { | |
9661 | uint64x2_t result; | |
9662 | __asm__ ("uadalp %0.2d,%2.4s" | |
9663 | : "=w"(result) | |
9664 | : "0"(a), "w"(b) | |
9665 | : /* No clobbers */); | |
9666 | return result; | |
9667 | } | |
9668 | ||
49ab9992 | 9669 | __extension__ extern __inline int16x4_t |
9670 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9671 | vpaddl_s8 (int8x8_t a) |
9672 | { | |
9673 | int16x4_t result; | |
9674 | __asm__ ("saddlp %0.4h,%1.8b" | |
9675 | : "=w"(result) | |
9676 | : "w"(a) | |
9677 | : /* No clobbers */); | |
9678 | return result; | |
9679 | } | |
9680 | ||
49ab9992 | 9681 | __extension__ extern __inline int32x2_t |
9682 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9683 | vpaddl_s16 (int16x4_t a) |
9684 | { | |
9685 | int32x2_t result; | |
9686 | __asm__ ("saddlp %0.2s,%1.4h" | |
9687 | : "=w"(result) | |
9688 | : "w"(a) | |
9689 | : /* No clobbers */); | |
9690 | return result; | |
9691 | } | |
9692 | ||
49ab9992 | 9693 | __extension__ extern __inline int64x1_t |
9694 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9695 | vpaddl_s32 (int32x2_t a) |
9696 | { | |
9697 | int64x1_t result; | |
9698 | __asm__ ("saddlp %0.1d,%1.2s" | |
9699 | : "=w"(result) | |
9700 | : "w"(a) | |
9701 | : /* No clobbers */); | |
9702 | return result; | |
9703 | } | |
9704 | ||
49ab9992 | 9705 | __extension__ extern __inline uint16x4_t |
9706 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9707 | vpaddl_u8 (uint8x8_t a) |
9708 | { | |
9709 | uint16x4_t result; | |
9710 | __asm__ ("uaddlp %0.4h,%1.8b" | |
9711 | : "=w"(result) | |
9712 | : "w"(a) | |
9713 | : /* No clobbers */); | |
9714 | return result; | |
9715 | } | |
9716 | ||
49ab9992 | 9717 | __extension__ extern __inline uint32x2_t |
9718 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9719 | vpaddl_u16 (uint16x4_t a) |
9720 | { | |
9721 | uint32x2_t result; | |
9722 | __asm__ ("uaddlp %0.2s,%1.4h" | |
9723 | : "=w"(result) | |
9724 | : "w"(a) | |
9725 | : /* No clobbers */); | |
9726 | return result; | |
9727 | } | |
9728 | ||
49ab9992 | 9729 | __extension__ extern __inline uint64x1_t |
9730 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9731 | vpaddl_u32 (uint32x2_t a) |
9732 | { | |
9733 | uint64x1_t result; | |
9734 | __asm__ ("uaddlp %0.1d,%1.2s" | |
9735 | : "=w"(result) | |
9736 | : "w"(a) | |
9737 | : /* No clobbers */); | |
9738 | return result; | |
9739 | } | |
9740 | ||
49ab9992 | 9741 | __extension__ extern __inline int16x8_t |
9742 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9743 | vpaddlq_s8 (int8x16_t a) |
9744 | { | |
9745 | int16x8_t result; | |
9746 | __asm__ ("saddlp %0.8h,%1.16b" | |
9747 | : "=w"(result) | |
9748 | : "w"(a) | |
9749 | : /* No clobbers */); | |
9750 | return result; | |
9751 | } | |
9752 | ||
49ab9992 | 9753 | __extension__ extern __inline int32x4_t |
9754 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9755 | vpaddlq_s16 (int16x8_t a) |
9756 | { | |
9757 | int32x4_t result; | |
9758 | __asm__ ("saddlp %0.4s,%1.8h" | |
9759 | : "=w"(result) | |
9760 | : "w"(a) | |
9761 | : /* No clobbers */); | |
9762 | return result; | |
9763 | } | |
9764 | ||
49ab9992 | 9765 | __extension__ extern __inline int64x2_t |
9766 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9767 | vpaddlq_s32 (int32x4_t a) |
9768 | { | |
9769 | int64x2_t result; | |
9770 | __asm__ ("saddlp %0.2d,%1.4s" | |
9771 | : "=w"(result) | |
9772 | : "w"(a) | |
9773 | : /* No clobbers */); | |
9774 | return result; | |
9775 | } | |
9776 | ||
49ab9992 | 9777 | __extension__ extern __inline uint16x8_t |
9778 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9779 | vpaddlq_u8 (uint8x16_t a) |
9780 | { | |
9781 | uint16x8_t result; | |
9782 | __asm__ ("uaddlp %0.8h,%1.16b" | |
9783 | : "=w"(result) | |
9784 | : "w"(a) | |
9785 | : /* No clobbers */); | |
9786 | return result; | |
9787 | } | |
9788 | ||
49ab9992 | 9789 | __extension__ extern __inline uint32x4_t |
9790 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9791 | vpaddlq_u16 (uint16x8_t a) |
9792 | { | |
9793 | uint32x4_t result; | |
9794 | __asm__ ("uaddlp %0.4s,%1.8h" | |
9795 | : "=w"(result) | |
9796 | : "w"(a) | |
9797 | : /* No clobbers */); | |
9798 | return result; | |
9799 | } | |
9800 | ||
49ab9992 | 9801 | __extension__ extern __inline uint64x2_t |
9802 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9803 | vpaddlq_u32 (uint32x4_t a) |
9804 | { | |
9805 | uint64x2_t result; | |
9806 | __asm__ ("uaddlp %0.2d,%1.4s" | |
9807 | : "=w"(result) | |
9808 | : "w"(a) | |
9809 | : /* No clobbers */); | |
9810 | return result; | |
9811 | } | |
9812 | ||
49ab9992 | 9813 | __extension__ extern __inline int8x16_t |
9814 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9815 | vpaddq_s8 (int8x16_t a, int8x16_t b) |
9816 | { | |
9817 | int8x16_t result; | |
9818 | __asm__ ("addp %0.16b,%1.16b,%2.16b" | |
9819 | : "=w"(result) | |
9820 | : "w"(a), "w"(b) | |
9821 | : /* No clobbers */); | |
9822 | return result; | |
9823 | } | |
9824 | ||
49ab9992 | 9825 | __extension__ extern __inline int16x8_t |
9826 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9827 | vpaddq_s16 (int16x8_t a, int16x8_t b) |
9828 | { | |
9829 | int16x8_t result; | |
9830 | __asm__ ("addp %0.8h,%1.8h,%2.8h" | |
9831 | : "=w"(result) | |
9832 | : "w"(a), "w"(b) | |
9833 | : /* No clobbers */); | |
9834 | return result; | |
9835 | } | |
9836 | ||
49ab9992 | 9837 | __extension__ extern __inline int32x4_t |
9838 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9839 | vpaddq_s32 (int32x4_t a, int32x4_t b) |
9840 | { | |
9841 | int32x4_t result; | |
9842 | __asm__ ("addp %0.4s,%1.4s,%2.4s" | |
9843 | : "=w"(result) | |
9844 | : "w"(a), "w"(b) | |
9845 | : /* No clobbers */); | |
9846 | return result; | |
9847 | } | |
9848 | ||
49ab9992 | 9849 | __extension__ extern __inline int64x2_t |
9850 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9851 | vpaddq_s64 (int64x2_t a, int64x2_t b) |
9852 | { | |
9853 | int64x2_t result; | |
9854 | __asm__ ("addp %0.2d,%1.2d,%2.2d" | |
9855 | : "=w"(result) | |
9856 | : "w"(a), "w"(b) | |
9857 | : /* No clobbers */); | |
9858 | return result; | |
9859 | } | |
9860 | ||
49ab9992 | 9861 | __extension__ extern __inline uint8x16_t |
9862 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9863 | vpaddq_u8 (uint8x16_t a, uint8x16_t b) |
9864 | { | |
9865 | uint8x16_t result; | |
9866 | __asm__ ("addp %0.16b,%1.16b,%2.16b" | |
9867 | : "=w"(result) | |
9868 | : "w"(a), "w"(b) | |
9869 | : /* No clobbers */); | |
9870 | return result; | |
9871 | } | |
9872 | ||
49ab9992 | 9873 | __extension__ extern __inline uint16x8_t |
9874 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9875 | vpaddq_u16 (uint16x8_t a, uint16x8_t b) |
9876 | { | |
9877 | uint16x8_t result; | |
9878 | __asm__ ("addp %0.8h,%1.8h,%2.8h" | |
9879 | : "=w"(result) | |
9880 | : "w"(a), "w"(b) | |
9881 | : /* No clobbers */); | |
9882 | return result; | |
9883 | } | |
9884 | ||
49ab9992 | 9885 | __extension__ extern __inline uint32x4_t |
9886 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9887 | vpaddq_u32 (uint32x4_t a, uint32x4_t b) |
9888 | { | |
9889 | uint32x4_t result; | |
9890 | __asm__ ("addp %0.4s,%1.4s,%2.4s" | |
9891 | : "=w"(result) | |
9892 | : "w"(a), "w"(b) | |
9893 | : /* No clobbers */); | |
9894 | return result; | |
9895 | } | |
9896 | ||
49ab9992 | 9897 | __extension__ extern __inline uint64x2_t |
9898 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9899 | vpaddq_u64 (uint64x2_t a, uint64x2_t b) |
9900 | { | |
9901 | uint64x2_t result; | |
9902 | __asm__ ("addp %0.2d,%1.2d,%2.2d" | |
9903 | : "=w"(result) | |
9904 | : "w"(a), "w"(b) | |
9905 | : /* No clobbers */); | |
9906 | return result; | |
9907 | } | |
9908 | ||
49ab9992 | 9909 | __extension__ extern __inline int16x4_t |
9910 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9911 | vqdmulh_n_s16 (int16x4_t a, int16_t b) |
9912 | { | |
9913 | int16x4_t result; | |
9914 | __asm__ ("sqdmulh %0.4h,%1.4h,%2.h[0]" | |
9915 | : "=w"(result) | |
d8bb54e9 | 9916 | : "w"(a), "x"(b) |
df401d54 | 9917 | : /* No clobbers */); |
9918 | return result; | |
9919 | } | |
9920 | ||
49ab9992 | 9921 | __extension__ extern __inline int32x2_t |
9922 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9923 | vqdmulh_n_s32 (int32x2_t a, int32_t b) |
9924 | { | |
9925 | int32x2_t result; | |
9926 | __asm__ ("sqdmulh %0.2s,%1.2s,%2.s[0]" | |
9927 | : "=w"(result) | |
9928 | : "w"(a), "w"(b) | |
9929 | : /* No clobbers */); | |
9930 | return result; | |
9931 | } | |
9932 | ||
49ab9992 | 9933 | __extension__ extern __inline int16x8_t |
9934 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9935 | vqdmulhq_n_s16 (int16x8_t a, int16_t b) |
9936 | { | |
9937 | int16x8_t result; | |
9938 | __asm__ ("sqdmulh %0.8h,%1.8h,%2.h[0]" | |
9939 | : "=w"(result) | |
d8bb54e9 | 9940 | : "w"(a), "x"(b) |
df401d54 | 9941 | : /* No clobbers */); |
9942 | return result; | |
9943 | } | |
9944 | ||
49ab9992 | 9945 | __extension__ extern __inline int32x4_t |
9946 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9947 | vqdmulhq_n_s32 (int32x4_t a, int32_t b) |
9948 | { | |
9949 | int32x4_t result; | |
9950 | __asm__ ("sqdmulh %0.4s,%1.4s,%2.s[0]" | |
9951 | : "=w"(result) | |
9952 | : "w"(a), "w"(b) | |
9953 | : /* No clobbers */); | |
9954 | return result; | |
9955 | } | |
9956 | ||
49ab9992 | 9957 | __extension__ extern __inline int8x16_t |
9958 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9959 | vqmovn_high_s16 (int8x8_t a, int16x8_t b) |
9960 | { | |
d75377fe | 9961 | int8x16_t result = vcombine_s8 (a, vcreate_s8 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 9962 | __asm__ ("sqxtn2 %0.16b, %1.8h" |
df401d54 | 9963 | : "+w"(result) |
9964 | : "w"(b) | |
9965 | : /* No clobbers */); | |
9966 | return result; | |
9967 | } | |
9968 | ||
49ab9992 | 9969 | __extension__ extern __inline int16x8_t |
9970 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9971 | vqmovn_high_s32 (int16x4_t a, int32x4_t b) |
9972 | { | |
d75377fe | 9973 | int16x8_t result = vcombine_s16 (a, vcreate_s16 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 9974 | __asm__ ("sqxtn2 %0.8h, %1.4s" |
df401d54 | 9975 | : "+w"(result) |
9976 | : "w"(b) | |
9977 | : /* No clobbers */); | |
9978 | return result; | |
9979 | } | |
9980 | ||
49ab9992 | 9981 | __extension__ extern __inline int32x4_t |
9982 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9983 | vqmovn_high_s64 (int32x2_t a, int64x2_t b) |
9984 | { | |
d75377fe | 9985 | int32x4_t result = vcombine_s32 (a, vcreate_s32 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 9986 | __asm__ ("sqxtn2 %0.4s, %1.2d" |
df401d54 | 9987 | : "+w"(result) |
9988 | : "w"(b) | |
9989 | : /* No clobbers */); | |
9990 | return result; | |
9991 | } | |
9992 | ||
49ab9992 | 9993 | __extension__ extern __inline uint8x16_t |
9994 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 9995 | vqmovn_high_u16 (uint8x8_t a, uint16x8_t b) |
9996 | { | |
d75377fe | 9997 | uint8x16_t result = vcombine_u8 (a, vcreate_u8 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 9998 | __asm__ ("uqxtn2 %0.16b, %1.8h" |
df401d54 | 9999 | : "+w"(result) |
10000 | : "w"(b) | |
10001 | : /* No clobbers */); | |
10002 | return result; | |
10003 | } | |
10004 | ||
49ab9992 | 10005 | __extension__ extern __inline uint16x8_t |
10006 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10007 | vqmovn_high_u32 (uint16x4_t a, uint32x4_t b) |
10008 | { | |
d75377fe | 10009 | uint16x8_t result = vcombine_u16 (a, vcreate_u16 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 10010 | __asm__ ("uqxtn2 %0.8h, %1.4s" |
df401d54 | 10011 | : "+w"(result) |
10012 | : "w"(b) | |
10013 | : /* No clobbers */); | |
10014 | return result; | |
10015 | } | |
10016 | ||
49ab9992 | 10017 | __extension__ extern __inline uint32x4_t |
10018 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10019 | vqmovn_high_u64 (uint32x2_t a, uint64x2_t b) |
10020 | { | |
d75377fe | 10021 | uint32x4_t result = vcombine_u32 (a, vcreate_u32 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 10022 | __asm__ ("uqxtn2 %0.4s, %1.2d" |
df401d54 | 10023 | : "+w"(result) |
10024 | : "w"(b) | |
10025 | : /* No clobbers */); | |
10026 | return result; | |
10027 | } | |
10028 | ||
49ab9992 | 10029 | __extension__ extern __inline uint8x16_t |
10030 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10031 | vqmovun_high_s16 (uint8x8_t a, int16x8_t b) |
10032 | { | |
d75377fe | 10033 | uint8x16_t result = vcombine_u8 (a, vcreate_u8 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 10034 | __asm__ ("sqxtun2 %0.16b, %1.8h" |
df401d54 | 10035 | : "+w"(result) |
10036 | : "w"(b) | |
10037 | : /* No clobbers */); | |
10038 | return result; | |
10039 | } | |
10040 | ||
49ab9992 | 10041 | __extension__ extern __inline uint16x8_t |
10042 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10043 | vqmovun_high_s32 (uint16x4_t a, int32x4_t b) |
10044 | { | |
d75377fe | 10045 | uint16x8_t result = vcombine_u16 (a, vcreate_u16 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 10046 | __asm__ ("sqxtun2 %0.8h, %1.4s" |
df401d54 | 10047 | : "+w"(result) |
10048 | : "w"(b) | |
10049 | : /* No clobbers */); | |
10050 | return result; | |
10051 | } | |
10052 | ||
49ab9992 | 10053 | __extension__ extern __inline uint32x4_t |
10054 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10055 | vqmovun_high_s64 (uint32x2_t a, int64x2_t b) |
10056 | { | |
d75377fe | 10057 | uint32x4_t result = vcombine_u32 (a, vcreate_u32 (__AARCH64_UINT64_C (0x0))); |
9de19dd2 | 10058 | __asm__ ("sqxtun2 %0.4s, %1.2d" |
df401d54 | 10059 | : "+w"(result) |
10060 | : "w"(b) | |
10061 | : /* No clobbers */); | |
10062 | return result; | |
10063 | } | |
10064 | ||
49ab9992 | 10065 | __extension__ extern __inline int16x4_t |
10066 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10067 | vqrdmulh_n_s16 (int16x4_t a, int16_t b) |
10068 | { | |
10069 | int16x4_t result; | |
10070 | __asm__ ("sqrdmulh %0.4h,%1.4h,%2.h[0]" | |
10071 | : "=w"(result) | |
9d37257a | 10072 | : "w"(a), "x"(b) |
df401d54 | 10073 | : /* No clobbers */); |
10074 | return result; | |
10075 | } | |
10076 | ||
49ab9992 | 10077 | __extension__ extern __inline int32x2_t |
10078 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10079 | vqrdmulh_n_s32 (int32x2_t a, int32_t b) |
10080 | { | |
10081 | int32x2_t result; | |
10082 | __asm__ ("sqrdmulh %0.2s,%1.2s,%2.s[0]" | |
10083 | : "=w"(result) | |
10084 | : "w"(a), "w"(b) | |
10085 | : /* No clobbers */); | |
10086 | return result; | |
10087 | } | |
10088 | ||
49ab9992 | 10089 | __extension__ extern __inline int16x8_t |
10090 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10091 | vqrdmulhq_n_s16 (int16x8_t a, int16_t b) |
10092 | { | |
10093 | int16x8_t result; | |
10094 | __asm__ ("sqrdmulh %0.8h,%1.8h,%2.h[0]" | |
10095 | : "=w"(result) | |
9d37257a | 10096 | : "w"(a), "x"(b) |
df401d54 | 10097 | : /* No clobbers */); |
10098 | return result; | |
10099 | } | |
10100 | ||
49ab9992 | 10101 | __extension__ extern __inline int32x4_t |
10102 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10103 | vqrdmulhq_n_s32 (int32x4_t a, int32_t b) |
10104 | { | |
10105 | int32x4_t result; | |
10106 | __asm__ ("sqrdmulh %0.4s,%1.4s,%2.s[0]" | |
10107 | : "=w"(result) | |
10108 | : "w"(a), "w"(b) | |
10109 | : /* No clobbers */); | |
10110 | return result; | |
10111 | } | |
10112 | ||
10113 | #define vqrshrn_high_n_s16(a, b, c) \ | |
10114 | __extension__ \ | |
10115 | ({ \ | |
10116 | int16x8_t b_ = (b); \ | |
10117 | int8x8_t a_ = (a); \ | |
10118 | int8x16_t result = vcombine_s8 \ | |
d75377fe | 10119 | (a_, vcreate_s8 \ |
10120 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10121 | __asm__ ("sqrshrn2 %0.16b, %1.8h, #%2" \ |
10122 | : "+w"(result) \ | |
10123 | : "w"(b_), "i"(c) \ | |
10124 | : /* No clobbers */); \ | |
10125 | result; \ | |
10126 | }) | |
10127 | ||
10128 | #define vqrshrn_high_n_s32(a, b, c) \ | |
10129 | __extension__ \ | |
10130 | ({ \ | |
10131 | int32x4_t b_ = (b); \ | |
10132 | int16x4_t a_ = (a); \ | |
10133 | int16x8_t result = vcombine_s16 \ | |
d75377fe | 10134 | (a_, vcreate_s16 \ |
10135 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10136 | __asm__ ("sqrshrn2 %0.8h, %1.4s, #%2" \ |
10137 | : "+w"(result) \ | |
10138 | : "w"(b_), "i"(c) \ | |
10139 | : /* No clobbers */); \ | |
10140 | result; \ | |
10141 | }) | |
10142 | ||
10143 | #define vqrshrn_high_n_s64(a, b, c) \ | |
10144 | __extension__ \ | |
10145 | ({ \ | |
10146 | int64x2_t b_ = (b); \ | |
10147 | int32x2_t a_ = (a); \ | |
10148 | int32x4_t result = vcombine_s32 \ | |
d75377fe | 10149 | (a_, vcreate_s32 \ |
10150 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10151 | __asm__ ("sqrshrn2 %0.4s, %1.2d, #%2" \ |
10152 | : "+w"(result) \ | |
10153 | : "w"(b_), "i"(c) \ | |
10154 | : /* No clobbers */); \ | |
10155 | result; \ | |
10156 | }) | |
10157 | ||
10158 | #define vqrshrn_high_n_u16(a, b, c) \ | |
10159 | __extension__ \ | |
10160 | ({ \ | |
10161 | uint16x8_t b_ = (b); \ | |
10162 | uint8x8_t a_ = (a); \ | |
10163 | uint8x16_t result = vcombine_u8 \ | |
d75377fe | 10164 | (a_, vcreate_u8 \ |
10165 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10166 | __asm__ ("uqrshrn2 %0.16b, %1.8h, #%2" \ |
10167 | : "+w"(result) \ | |
10168 | : "w"(b_), "i"(c) \ | |
10169 | : /* No clobbers */); \ | |
10170 | result; \ | |
10171 | }) | |
10172 | ||
10173 | #define vqrshrn_high_n_u32(a, b, c) \ | |
10174 | __extension__ \ | |
10175 | ({ \ | |
10176 | uint32x4_t b_ = (b); \ | |
10177 | uint16x4_t a_ = (a); \ | |
10178 | uint16x8_t result = vcombine_u16 \ | |
d75377fe | 10179 | (a_, vcreate_u16 \ |
10180 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10181 | __asm__ ("uqrshrn2 %0.8h, %1.4s, #%2" \ |
10182 | : "+w"(result) \ | |
10183 | : "w"(b_), "i"(c) \ | |
10184 | : /* No clobbers */); \ | |
10185 | result; \ | |
10186 | }) | |
10187 | ||
10188 | #define vqrshrn_high_n_u64(a, b, c) \ | |
10189 | __extension__ \ | |
10190 | ({ \ | |
10191 | uint64x2_t b_ = (b); \ | |
10192 | uint32x2_t a_ = (a); \ | |
10193 | uint32x4_t result = vcombine_u32 \ | |
d75377fe | 10194 | (a_, vcreate_u32 \ |
10195 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10196 | __asm__ ("uqrshrn2 %0.4s, %1.2d, #%2" \ |
10197 | : "+w"(result) \ | |
10198 | : "w"(b_), "i"(c) \ | |
10199 | : /* No clobbers */); \ | |
10200 | result; \ | |
10201 | }) | |
10202 | ||
10203 | #define vqrshrun_high_n_s16(a, b, c) \ | |
10204 | __extension__ \ | |
10205 | ({ \ | |
10206 | int16x8_t b_ = (b); \ | |
10207 | uint8x8_t a_ = (a); \ | |
10208 | uint8x16_t result = vcombine_u8 \ | |
d75377fe | 10209 | (a_, vcreate_u8 \ |
10210 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10211 | __asm__ ("sqrshrun2 %0.16b, %1.8h, #%2" \ |
10212 | : "+w"(result) \ | |
10213 | : "w"(b_), "i"(c) \ | |
10214 | : /* No clobbers */); \ | |
10215 | result; \ | |
10216 | }) | |
10217 | ||
10218 | #define vqrshrun_high_n_s32(a, b, c) \ | |
10219 | __extension__ \ | |
10220 | ({ \ | |
10221 | int32x4_t b_ = (b); \ | |
10222 | uint16x4_t a_ = (a); \ | |
10223 | uint16x8_t result = vcombine_u16 \ | |
d75377fe | 10224 | (a_, vcreate_u16 \ |
10225 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10226 | __asm__ ("sqrshrun2 %0.8h, %1.4s, #%2" \ |
10227 | : "+w"(result) \ | |
10228 | : "w"(b_), "i"(c) \ | |
10229 | : /* No clobbers */); \ | |
10230 | result; \ | |
10231 | }) | |
10232 | ||
10233 | #define vqrshrun_high_n_s64(a, b, c) \ | |
10234 | __extension__ \ | |
10235 | ({ \ | |
10236 | int64x2_t b_ = (b); \ | |
10237 | uint32x2_t a_ = (a); \ | |
10238 | uint32x4_t result = vcombine_u32 \ | |
d75377fe | 10239 | (a_, vcreate_u32 \ |
10240 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10241 | __asm__ ("sqrshrun2 %0.4s, %1.2d, #%2" \ |
10242 | : "+w"(result) \ | |
10243 | : "w"(b_), "i"(c) \ | |
10244 | : /* No clobbers */); \ | |
10245 | result; \ | |
10246 | }) | |
10247 | ||
10248 | #define vqshrn_high_n_s16(a, b, c) \ | |
10249 | __extension__ \ | |
10250 | ({ \ | |
10251 | int16x8_t b_ = (b); \ | |
10252 | int8x8_t a_ = (a); \ | |
10253 | int8x16_t result = vcombine_s8 \ | |
d75377fe | 10254 | (a_, vcreate_s8 \ |
10255 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10256 | __asm__ ("sqshrn2 %0.16b, %1.8h, #%2" \ |
10257 | : "+w"(result) \ | |
10258 | : "w"(b_), "i"(c) \ | |
10259 | : /* No clobbers */); \ | |
10260 | result; \ | |
10261 | }) | |
10262 | ||
10263 | #define vqshrn_high_n_s32(a, b, c) \ | |
10264 | __extension__ \ | |
10265 | ({ \ | |
10266 | int32x4_t b_ = (b); \ | |
10267 | int16x4_t a_ = (a); \ | |
10268 | int16x8_t result = vcombine_s16 \ | |
d75377fe | 10269 | (a_, vcreate_s16 \ |
10270 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10271 | __asm__ ("sqshrn2 %0.8h, %1.4s, #%2" \ |
10272 | : "+w"(result) \ | |
10273 | : "w"(b_), "i"(c) \ | |
10274 | : /* No clobbers */); \ | |
10275 | result; \ | |
10276 | }) | |
10277 | ||
10278 | #define vqshrn_high_n_s64(a, b, c) \ | |
10279 | __extension__ \ | |
10280 | ({ \ | |
10281 | int64x2_t b_ = (b); \ | |
10282 | int32x2_t a_ = (a); \ | |
10283 | int32x4_t result = vcombine_s32 \ | |
d75377fe | 10284 | (a_, vcreate_s32 \ |
10285 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10286 | __asm__ ("sqshrn2 %0.4s, %1.2d, #%2" \ |
10287 | : "+w"(result) \ | |
10288 | : "w"(b_), "i"(c) \ | |
10289 | : /* No clobbers */); \ | |
10290 | result; \ | |
10291 | }) | |
10292 | ||
10293 | #define vqshrn_high_n_u16(a, b, c) \ | |
10294 | __extension__ \ | |
10295 | ({ \ | |
10296 | uint16x8_t b_ = (b); \ | |
10297 | uint8x8_t a_ = (a); \ | |
10298 | uint8x16_t result = vcombine_u8 \ | |
d75377fe | 10299 | (a_, vcreate_u8 \ |
10300 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10301 | __asm__ ("uqshrn2 %0.16b, %1.8h, #%2" \ |
10302 | : "+w"(result) \ | |
10303 | : "w"(b_), "i"(c) \ | |
10304 | : /* No clobbers */); \ | |
10305 | result; \ | |
10306 | }) | |
10307 | ||
10308 | #define vqshrn_high_n_u32(a, b, c) \ | |
10309 | __extension__ \ | |
10310 | ({ \ | |
10311 | uint32x4_t b_ = (b); \ | |
10312 | uint16x4_t a_ = (a); \ | |
10313 | uint16x8_t result = vcombine_u16 \ | |
d75377fe | 10314 | (a_, vcreate_u16 \ |
10315 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10316 | __asm__ ("uqshrn2 %0.8h, %1.4s, #%2" \ |
10317 | : "+w"(result) \ | |
10318 | : "w"(b_), "i"(c) \ | |
10319 | : /* No clobbers */); \ | |
10320 | result; \ | |
10321 | }) | |
10322 | ||
10323 | #define vqshrn_high_n_u64(a, b, c) \ | |
10324 | __extension__ \ | |
10325 | ({ \ | |
10326 | uint64x2_t b_ = (b); \ | |
10327 | uint32x2_t a_ = (a); \ | |
10328 | uint32x4_t result = vcombine_u32 \ | |
d75377fe | 10329 | (a_, vcreate_u32 \ |
10330 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10331 | __asm__ ("uqshrn2 %0.4s, %1.2d, #%2" \ |
10332 | : "+w"(result) \ | |
10333 | : "w"(b_), "i"(c) \ | |
10334 | : /* No clobbers */); \ | |
10335 | result; \ | |
10336 | }) | |
10337 | ||
10338 | #define vqshrun_high_n_s16(a, b, c) \ | |
10339 | __extension__ \ | |
10340 | ({ \ | |
10341 | int16x8_t b_ = (b); \ | |
10342 | uint8x8_t a_ = (a); \ | |
10343 | uint8x16_t result = vcombine_u8 \ | |
d75377fe | 10344 | (a_, vcreate_u8 \ |
10345 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10346 | __asm__ ("sqshrun2 %0.16b, %1.8h, #%2" \ |
10347 | : "+w"(result) \ | |
10348 | : "w"(b_), "i"(c) \ | |
10349 | : /* No clobbers */); \ | |
10350 | result; \ | |
10351 | }) | |
10352 | ||
10353 | #define vqshrun_high_n_s32(a, b, c) \ | |
10354 | __extension__ \ | |
10355 | ({ \ | |
10356 | int32x4_t b_ = (b); \ | |
10357 | uint16x4_t a_ = (a); \ | |
10358 | uint16x8_t result = vcombine_u16 \ | |
d75377fe | 10359 | (a_, vcreate_u16 \ |
10360 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10361 | __asm__ ("sqshrun2 %0.8h, %1.4s, #%2" \ |
10362 | : "+w"(result) \ | |
10363 | : "w"(b_), "i"(c) \ | |
10364 | : /* No clobbers */); \ | |
10365 | result; \ | |
10366 | }) | |
10367 | ||
10368 | #define vqshrun_high_n_s64(a, b, c) \ | |
10369 | __extension__ \ | |
10370 | ({ \ | |
10371 | int64x2_t b_ = (b); \ | |
10372 | uint32x2_t a_ = (a); \ | |
6fa49e69 | 10373 | uint32x4_t result = vcombine_u32 \ |
10374 | (a_, vcreate_u32 \ | |
10375 | (__AARCH64_UINT64_C (0x0))); \ | |
10376 | __asm__ ("sqshrun2 %0.4s, %1.2d, #%2" \ | |
10377 | : "+w"(result) \ | |
10378 | : "w"(b_), "i"(c) \ | |
10379 | : /* No clobbers */); \ | |
10380 | result; \ | |
10381 | }) | |
df401d54 | 10382 | |
df401d54 | 10383 | #define vrshrn_high_n_s16(a, b, c) \ |
10384 | __extension__ \ | |
10385 | ({ \ | |
10386 | int16x8_t b_ = (b); \ | |
10387 | int8x8_t a_ = (a); \ | |
10388 | int8x16_t result = vcombine_s8 \ | |
d75377fe | 10389 | (a_, vcreate_s8 \ |
10390 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10391 | __asm__ ("rshrn2 %0.16b,%1.8h,#%2" \ |
10392 | : "+w"(result) \ | |
10393 | : "w"(b_), "i"(c) \ | |
10394 | : /* No clobbers */); \ | |
10395 | result; \ | |
10396 | }) | |
10397 | ||
10398 | #define vrshrn_high_n_s32(a, b, c) \ | |
10399 | __extension__ \ | |
10400 | ({ \ | |
10401 | int32x4_t b_ = (b); \ | |
10402 | int16x4_t a_ = (a); \ | |
10403 | int16x8_t result = vcombine_s16 \ | |
d75377fe | 10404 | (a_, vcreate_s16 \ |
10405 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10406 | __asm__ ("rshrn2 %0.8h,%1.4s,#%2" \ |
10407 | : "+w"(result) \ | |
10408 | : "w"(b_), "i"(c) \ | |
10409 | : /* No clobbers */); \ | |
10410 | result; \ | |
10411 | }) | |
10412 | ||
10413 | #define vrshrn_high_n_s64(a, b, c) \ | |
10414 | __extension__ \ | |
10415 | ({ \ | |
10416 | int64x2_t b_ = (b); \ | |
10417 | int32x2_t a_ = (a); \ | |
10418 | int32x4_t result = vcombine_s32 \ | |
d75377fe | 10419 | (a_, vcreate_s32 \ |
10420 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10421 | __asm__ ("rshrn2 %0.4s,%1.2d,#%2" \ |
10422 | : "+w"(result) \ | |
10423 | : "w"(b_), "i"(c) \ | |
10424 | : /* No clobbers */); \ | |
10425 | result; \ | |
10426 | }) | |
10427 | ||
10428 | #define vrshrn_high_n_u16(a, b, c) \ | |
10429 | __extension__ \ | |
10430 | ({ \ | |
10431 | uint16x8_t b_ = (b); \ | |
10432 | uint8x8_t a_ = (a); \ | |
10433 | uint8x16_t result = vcombine_u8 \ | |
d75377fe | 10434 | (a_, vcreate_u8 \ |
10435 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10436 | __asm__ ("rshrn2 %0.16b,%1.8h,#%2" \ |
10437 | : "+w"(result) \ | |
10438 | : "w"(b_), "i"(c) \ | |
10439 | : /* No clobbers */); \ | |
10440 | result; \ | |
10441 | }) | |
10442 | ||
10443 | #define vrshrn_high_n_u32(a, b, c) \ | |
10444 | __extension__ \ | |
10445 | ({ \ | |
10446 | uint32x4_t b_ = (b); \ | |
10447 | uint16x4_t a_ = (a); \ | |
10448 | uint16x8_t result = vcombine_u16 \ | |
d75377fe | 10449 | (a_, vcreate_u16 \ |
10450 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10451 | __asm__ ("rshrn2 %0.8h,%1.4s,#%2" \ |
10452 | : "+w"(result) \ | |
10453 | : "w"(b_), "i"(c) \ | |
10454 | : /* No clobbers */); \ | |
10455 | result; \ | |
10456 | }) | |
10457 | ||
10458 | #define vrshrn_high_n_u64(a, b, c) \ | |
10459 | __extension__ \ | |
10460 | ({ \ | |
10461 | uint64x2_t b_ = (b); \ | |
10462 | uint32x2_t a_ = (a); \ | |
10463 | uint32x4_t result = vcombine_u32 \ | |
d75377fe | 10464 | (a_, vcreate_u32 \ |
10465 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10466 | __asm__ ("rshrn2 %0.4s,%1.2d,#%2" \ |
10467 | : "+w"(result) \ | |
10468 | : "w"(b_), "i"(c) \ | |
10469 | : /* No clobbers */); \ | |
10470 | result; \ | |
10471 | }) | |
10472 | ||
10473 | #define vrshrn_n_s16(a, b) \ | |
10474 | __extension__ \ | |
10475 | ({ \ | |
10476 | int16x8_t a_ = (a); \ | |
10477 | int8x8_t result; \ | |
10478 | __asm__ ("rshrn %0.8b,%1.8h,%2" \ | |
10479 | : "=w"(result) \ | |
10480 | : "w"(a_), "i"(b) \ | |
10481 | : /* No clobbers */); \ | |
10482 | result; \ | |
10483 | }) | |
10484 | ||
10485 | #define vrshrn_n_s32(a, b) \ | |
10486 | __extension__ \ | |
10487 | ({ \ | |
10488 | int32x4_t a_ = (a); \ | |
10489 | int16x4_t result; \ | |
10490 | __asm__ ("rshrn %0.4h,%1.4s,%2" \ | |
10491 | : "=w"(result) \ | |
10492 | : "w"(a_), "i"(b) \ | |
10493 | : /* No clobbers */); \ | |
10494 | result; \ | |
10495 | }) | |
10496 | ||
10497 | #define vrshrn_n_s64(a, b) \ | |
10498 | __extension__ \ | |
10499 | ({ \ | |
10500 | int64x2_t a_ = (a); \ | |
10501 | int32x2_t result; \ | |
10502 | __asm__ ("rshrn %0.2s,%1.2d,%2" \ | |
10503 | : "=w"(result) \ | |
10504 | : "w"(a_), "i"(b) \ | |
10505 | : /* No clobbers */); \ | |
10506 | result; \ | |
10507 | }) | |
10508 | ||
10509 | #define vrshrn_n_u16(a, b) \ | |
10510 | __extension__ \ | |
10511 | ({ \ | |
10512 | uint16x8_t a_ = (a); \ | |
10513 | uint8x8_t result; \ | |
10514 | __asm__ ("rshrn %0.8b,%1.8h,%2" \ | |
10515 | : "=w"(result) \ | |
10516 | : "w"(a_), "i"(b) \ | |
10517 | : /* No clobbers */); \ | |
10518 | result; \ | |
10519 | }) | |
10520 | ||
10521 | #define vrshrn_n_u32(a, b) \ | |
10522 | __extension__ \ | |
10523 | ({ \ | |
10524 | uint32x4_t a_ = (a); \ | |
10525 | uint16x4_t result; \ | |
10526 | __asm__ ("rshrn %0.4h,%1.4s,%2" \ | |
10527 | : "=w"(result) \ | |
10528 | : "w"(a_), "i"(b) \ | |
10529 | : /* No clobbers */); \ | |
10530 | result; \ | |
10531 | }) | |
10532 | ||
10533 | #define vrshrn_n_u64(a, b) \ | |
10534 | __extension__ \ | |
10535 | ({ \ | |
10536 | uint64x2_t a_ = (a); \ | |
10537 | uint32x2_t result; \ | |
10538 | __asm__ ("rshrn %0.2s,%1.2d,%2" \ | |
10539 | : "=w"(result) \ | |
10540 | : "w"(a_), "i"(b) \ | |
10541 | : /* No clobbers */); \ | |
10542 | result; \ | |
10543 | }) | |
10544 | ||
49ab9992 | 10545 | __extension__ extern __inline uint32x2_t |
10546 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10547 | vrsqrte_u32 (uint32x2_t a) |
10548 | { | |
10549 | uint32x2_t result; | |
10550 | __asm__ ("ursqrte %0.2s,%1.2s" | |
10551 | : "=w"(result) | |
10552 | : "w"(a) | |
10553 | : /* No clobbers */); | |
10554 | return result; | |
10555 | } | |
10556 | ||
49ab9992 | 10557 | __extension__ extern __inline uint32x4_t |
10558 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10559 | vrsqrteq_u32 (uint32x4_t a) |
10560 | { | |
10561 | uint32x4_t result; | |
10562 | __asm__ ("ursqrte %0.4s,%1.4s" | |
10563 | : "=w"(result) | |
10564 | : "w"(a) | |
10565 | : /* No clobbers */); | |
10566 | return result; | |
10567 | } | |
10568 | ||
df401d54 | 10569 | #define vshrn_high_n_s16(a, b, c) \ |
10570 | __extension__ \ | |
10571 | ({ \ | |
10572 | int16x8_t b_ = (b); \ | |
10573 | int8x8_t a_ = (a); \ | |
10574 | int8x16_t result = vcombine_s8 \ | |
d75377fe | 10575 | (a_, vcreate_s8 \ |
10576 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10577 | __asm__ ("shrn2 %0.16b,%1.8h,#%2" \ |
10578 | : "+w"(result) \ | |
10579 | : "w"(b_), "i"(c) \ | |
10580 | : /* No clobbers */); \ | |
10581 | result; \ | |
10582 | }) | |
10583 | ||
10584 | #define vshrn_high_n_s32(a, b, c) \ | |
10585 | __extension__ \ | |
10586 | ({ \ | |
10587 | int32x4_t b_ = (b); \ | |
10588 | int16x4_t a_ = (a); \ | |
10589 | int16x8_t result = vcombine_s16 \ | |
d75377fe | 10590 | (a_, vcreate_s16 \ |
10591 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10592 | __asm__ ("shrn2 %0.8h,%1.4s,#%2" \ |
10593 | : "+w"(result) \ | |
10594 | : "w"(b_), "i"(c) \ | |
10595 | : /* No clobbers */); \ | |
10596 | result; \ | |
10597 | }) | |
10598 | ||
10599 | #define vshrn_high_n_s64(a, b, c) \ | |
10600 | __extension__ \ | |
10601 | ({ \ | |
10602 | int64x2_t b_ = (b); \ | |
10603 | int32x2_t a_ = (a); \ | |
10604 | int32x4_t result = vcombine_s32 \ | |
d75377fe | 10605 | (a_, vcreate_s32 \ |
10606 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10607 | __asm__ ("shrn2 %0.4s,%1.2d,#%2" \ |
10608 | : "+w"(result) \ | |
10609 | : "w"(b_), "i"(c) \ | |
10610 | : /* No clobbers */); \ | |
10611 | result; \ | |
10612 | }) | |
10613 | ||
10614 | #define vshrn_high_n_u16(a, b, c) \ | |
10615 | __extension__ \ | |
10616 | ({ \ | |
10617 | uint16x8_t b_ = (b); \ | |
10618 | uint8x8_t a_ = (a); \ | |
10619 | uint8x16_t result = vcombine_u8 \ | |
d75377fe | 10620 | (a_, vcreate_u8 \ |
10621 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10622 | __asm__ ("shrn2 %0.16b,%1.8h,#%2" \ |
10623 | : "+w"(result) \ | |
10624 | : "w"(b_), "i"(c) \ | |
10625 | : /* No clobbers */); \ | |
10626 | result; \ | |
10627 | }) | |
10628 | ||
10629 | #define vshrn_high_n_u32(a, b, c) \ | |
10630 | __extension__ \ | |
10631 | ({ \ | |
10632 | uint32x4_t b_ = (b); \ | |
10633 | uint16x4_t a_ = (a); \ | |
10634 | uint16x8_t result = vcombine_u16 \ | |
d75377fe | 10635 | (a_, vcreate_u16 \ |
10636 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10637 | __asm__ ("shrn2 %0.8h,%1.4s,#%2" \ |
10638 | : "+w"(result) \ | |
10639 | : "w"(b_), "i"(c) \ | |
10640 | : /* No clobbers */); \ | |
10641 | result; \ | |
10642 | }) | |
10643 | ||
10644 | #define vshrn_high_n_u64(a, b, c) \ | |
10645 | __extension__ \ | |
10646 | ({ \ | |
10647 | uint64x2_t b_ = (b); \ | |
10648 | uint32x2_t a_ = (a); \ | |
10649 | uint32x4_t result = vcombine_u32 \ | |
d75377fe | 10650 | (a_, vcreate_u32 \ |
10651 | (__AARCH64_UINT64_C (0x0))); \ | |
df401d54 | 10652 | __asm__ ("shrn2 %0.4s,%1.2d,#%2" \ |
10653 | : "+w"(result) \ | |
10654 | : "w"(b_), "i"(c) \ | |
10655 | : /* No clobbers */); \ | |
10656 | result; \ | |
10657 | }) | |
10658 | ||
10659 | #define vshrn_n_s16(a, b) \ | |
10660 | __extension__ \ | |
10661 | ({ \ | |
10662 | int16x8_t a_ = (a); \ | |
10663 | int8x8_t result; \ | |
10664 | __asm__ ("shrn %0.8b,%1.8h,%2" \ | |
10665 | : "=w"(result) \ | |
10666 | : "w"(a_), "i"(b) \ | |
10667 | : /* No clobbers */); \ | |
10668 | result; \ | |
10669 | }) | |
10670 | ||
10671 | #define vshrn_n_s32(a, b) \ | |
10672 | __extension__ \ | |
10673 | ({ \ | |
10674 | int32x4_t a_ = (a); \ | |
10675 | int16x4_t result; \ | |
10676 | __asm__ ("shrn %0.4h,%1.4s,%2" \ | |
10677 | : "=w"(result) \ | |
10678 | : "w"(a_), "i"(b) \ | |
10679 | : /* No clobbers */); \ | |
10680 | result; \ | |
10681 | }) | |
10682 | ||
10683 | #define vshrn_n_s64(a, b) \ | |
10684 | __extension__ \ | |
10685 | ({ \ | |
10686 | int64x2_t a_ = (a); \ | |
10687 | int32x2_t result; \ | |
10688 | __asm__ ("shrn %0.2s,%1.2d,%2" \ | |
10689 | : "=w"(result) \ | |
10690 | : "w"(a_), "i"(b) \ | |
10691 | : /* No clobbers */); \ | |
10692 | result; \ | |
10693 | }) | |
10694 | ||
10695 | #define vshrn_n_u16(a, b) \ | |
10696 | __extension__ \ | |
10697 | ({ \ | |
10698 | uint16x8_t a_ = (a); \ | |
10699 | uint8x8_t result; \ | |
10700 | __asm__ ("shrn %0.8b,%1.8h,%2" \ | |
10701 | : "=w"(result) \ | |
10702 | : "w"(a_), "i"(b) \ | |
10703 | : /* No clobbers */); \ | |
10704 | result; \ | |
10705 | }) | |
10706 | ||
10707 | #define vshrn_n_u32(a, b) \ | |
10708 | __extension__ \ | |
10709 | ({ \ | |
10710 | uint32x4_t a_ = (a); \ | |
10711 | uint16x4_t result; \ | |
10712 | __asm__ ("shrn %0.4h,%1.4s,%2" \ | |
10713 | : "=w"(result) \ | |
10714 | : "w"(a_), "i"(b) \ | |
10715 | : /* No clobbers */); \ | |
10716 | result; \ | |
10717 | }) | |
10718 | ||
10719 | #define vshrn_n_u64(a, b) \ | |
10720 | __extension__ \ | |
10721 | ({ \ | |
10722 | uint64x2_t a_ = (a); \ | |
10723 | uint32x2_t result; \ | |
10724 | __asm__ ("shrn %0.2s,%1.2d,%2" \ | |
10725 | : "=w"(result) \ | |
10726 | : "w"(a_), "i"(b) \ | |
10727 | : /* No clobbers */); \ | |
10728 | result; \ | |
10729 | }) | |
10730 | ||
10731 | #define vsli_n_p8(a, b, c) \ | |
10732 | __extension__ \ | |
10733 | ({ \ | |
10734 | poly8x8_t b_ = (b); \ | |
10735 | poly8x8_t a_ = (a); \ | |
10736 | poly8x8_t result; \ | |
10737 | __asm__ ("sli %0.8b,%2.8b,%3" \ | |
10738 | : "=w"(result) \ | |
10739 | : "0"(a_), "w"(b_), "i"(c) \ | |
10740 | : /* No clobbers */); \ | |
10741 | result; \ | |
10742 | }) | |
10743 | ||
10744 | #define vsli_n_p16(a, b, c) \ | |
10745 | __extension__ \ | |
10746 | ({ \ | |
10747 | poly16x4_t b_ = (b); \ | |
10748 | poly16x4_t a_ = (a); \ | |
10749 | poly16x4_t result; \ | |
10750 | __asm__ ("sli %0.4h,%2.4h,%3" \ | |
10751 | : "=w"(result) \ | |
10752 | : "0"(a_), "w"(b_), "i"(c) \ | |
10753 | : /* No clobbers */); \ | |
10754 | result; \ | |
10755 | }) | |
10756 | ||
10757 | #define vsliq_n_p8(a, b, c) \ | |
10758 | __extension__ \ | |
10759 | ({ \ | |
10760 | poly8x16_t b_ = (b); \ | |
10761 | poly8x16_t a_ = (a); \ | |
10762 | poly8x16_t result; \ | |
10763 | __asm__ ("sli %0.16b,%2.16b,%3" \ | |
10764 | : "=w"(result) \ | |
10765 | : "0"(a_), "w"(b_), "i"(c) \ | |
10766 | : /* No clobbers */); \ | |
10767 | result; \ | |
10768 | }) | |
10769 | ||
10770 | #define vsliq_n_p16(a, b, c) \ | |
10771 | __extension__ \ | |
10772 | ({ \ | |
10773 | poly16x8_t b_ = (b); \ | |
10774 | poly16x8_t a_ = (a); \ | |
10775 | poly16x8_t result; \ | |
10776 | __asm__ ("sli %0.8h,%2.8h,%3" \ | |
10777 | : "=w"(result) \ | |
10778 | : "0"(a_), "w"(b_), "i"(c) \ | |
10779 | : /* No clobbers */); \ | |
10780 | result; \ | |
10781 | }) | |
10782 | ||
10783 | #define vsri_n_p8(a, b, c) \ | |
10784 | __extension__ \ | |
10785 | ({ \ | |
10786 | poly8x8_t b_ = (b); \ | |
10787 | poly8x8_t a_ = (a); \ | |
10788 | poly8x8_t result; \ | |
10789 | __asm__ ("sri %0.8b,%2.8b,%3" \ | |
10790 | : "=w"(result) \ | |
10791 | : "0"(a_), "w"(b_), "i"(c) \ | |
10792 | : /* No clobbers */); \ | |
10793 | result; \ | |
10794 | }) | |
10795 | ||
10796 | #define vsri_n_p16(a, b, c) \ | |
10797 | __extension__ \ | |
10798 | ({ \ | |
10799 | poly16x4_t b_ = (b); \ | |
10800 | poly16x4_t a_ = (a); \ | |
10801 | poly16x4_t result; \ | |
10802 | __asm__ ("sri %0.4h,%2.4h,%3" \ | |
10803 | : "=w"(result) \ | |
10804 | : "0"(a_), "w"(b_), "i"(c) \ | |
10805 | : /* No clobbers */); \ | |
10806 | result; \ | |
10807 | }) | |
10808 | ||
34d20d5f | 10809 | #define vsri_n_p64(a, b, c) \ |
10810 | __extension__ \ | |
10811 | ({ \ | |
10812 | poly64x1_t b_ = (b); \ | |
10813 | poly64x1_t a_ = (a); \ | |
10814 | poly64x1_t result; \ | |
10815 | __asm__ ("sri %d0,%d2,%3" \ | |
10816 | : "=w"(result) \ | |
10817 | : "0"(a_), "w"(b_), "i"(c) \ | |
10818 | : /* No clobbers. */); \ | |
10819 | result; \ | |
10820 | }) | |
10821 | ||
df401d54 | 10822 | #define vsriq_n_p8(a, b, c) \ |
10823 | __extension__ \ | |
10824 | ({ \ | |
10825 | poly8x16_t b_ = (b); \ | |
10826 | poly8x16_t a_ = (a); \ | |
10827 | poly8x16_t result; \ | |
10828 | __asm__ ("sri %0.16b,%2.16b,%3" \ | |
10829 | : "=w"(result) \ | |
10830 | : "0"(a_), "w"(b_), "i"(c) \ | |
10831 | : /* No clobbers */); \ | |
10832 | result; \ | |
10833 | }) | |
10834 | ||
10835 | #define vsriq_n_p16(a, b, c) \ | |
10836 | __extension__ \ | |
10837 | ({ \ | |
10838 | poly16x8_t b_ = (b); \ | |
10839 | poly16x8_t a_ = (a); \ | |
10840 | poly16x8_t result; \ | |
10841 | __asm__ ("sri %0.8h,%2.8h,%3" \ | |
10842 | : "=w"(result) \ | |
10843 | : "0"(a_), "w"(b_), "i"(c) \ | |
10844 | : /* No clobbers */); \ | |
10845 | result; \ | |
10846 | }) | |
10847 | ||
34d20d5f | 10848 | #define vsriq_n_p64(a, b, c) \ |
10849 | __extension__ \ | |
10850 | ({ \ | |
10851 | poly64x2_t b_ = (b); \ | |
10852 | poly64x2_t a_ = (a); \ | |
10853 | poly64x2_t result; \ | |
10854 | __asm__ ("sri %0.2d,%2.2d,%3" \ | |
10855 | : "=w"(result) \ | |
10856 | : "0"(a_), "w"(b_), "i"(c) \ | |
10857 | : /* No clobbers. */); \ | |
10858 | result; \ | |
10859 | }) | |
10860 | ||
49ab9992 | 10861 | __extension__ extern __inline uint8x8_t |
10862 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10863 | vtst_p8 (poly8x8_t a, poly8x8_t b) |
10864 | { | |
ad812c9a | 10865 | return (uint8x8_t) ((((uint8x8_t) a) & ((uint8x8_t) b)) |
10866 | != 0); | |
df401d54 | 10867 | } |
10868 | ||
49ab9992 | 10869 | __extension__ extern __inline uint16x4_t |
10870 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10871 | vtst_p16 (poly16x4_t a, poly16x4_t b) |
10872 | { | |
ad812c9a | 10873 | return (uint16x4_t) ((((uint16x4_t) a) & ((uint16x4_t) b)) |
10874 | != 0); | |
10875 | } | |
10876 | ||
10877 | __extension__ extern __inline uint64x1_t | |
10878 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
10879 | vtst_p64 (poly64x1_t a, poly64x1_t b) | |
10880 | { | |
10881 | return (uint64x1_t) ((a & b) != __AARCH64_INT64_C (0)); | |
df401d54 | 10882 | } |
10883 | ||
49ab9992 | 10884 | __extension__ extern __inline uint8x16_t |
10885 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10886 | vtstq_p8 (poly8x16_t a, poly8x16_t b) |
10887 | { | |
ad812c9a | 10888 | return (uint8x16_t) ((((uint8x16_t) a) & ((uint8x16_t) b)) |
10889 | != 0); | |
df401d54 | 10890 | } |
10891 | ||
49ab9992 | 10892 | __extension__ extern __inline uint16x8_t |
10893 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 10894 | vtstq_p16 (poly16x8_t a, poly16x8_t b) |
10895 | { | |
ad812c9a | 10896 | return (uint16x8_t) ((((uint16x8_t) a) & ((uint16x8_t) b)) |
10897 | != 0); | |
10898 | } | |
10899 | ||
10900 | __extension__ extern __inline uint64x2_t | |
10901 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
10902 | vtstq_p64 (poly64x2_t a, poly64x2_t b) | |
10903 | { | |
10904 | return (uint64x2_t) ((((uint64x2_t) a) & ((uint64x2_t) b)) | |
10905 | != __AARCH64_INT64_C (0)); | |
df401d54 | 10906 | } |
df401d54 | 10907 | |
df401d54 | 10908 | /* End of temporary inline asm implementations. */ |
10909 | ||
10910 | /* Start of temporary inline asm for vldn, vstn and friends. */ | |
10911 | ||
10912 | /* Create struct element types for duplicating loads. | |
10913 | ||
10914 | Create 2 element structures of: | |
10915 | ||
10916 | +------+----+----+----+----+ | |
10917 | | | 8 | 16 | 32 | 64 | | |
10918 | +------+----+----+----+----+ | |
10919 | |int | Y | Y | N | N | | |
10920 | +------+----+----+----+----+ | |
10921 | |uint | Y | Y | N | N | | |
10922 | +------+----+----+----+----+ | |
07c40439 | 10923 | |float | - | Y | N | N | |
df401d54 | 10924 | +------+----+----+----+----+ |
10925 | |poly | Y | Y | - | - | | |
10926 | +------+----+----+----+----+ | |
10927 | ||
10928 | Create 3 element structures of: | |
10929 | ||
10930 | +------+----+----+----+----+ | |
10931 | | | 8 | 16 | 32 | 64 | | |
10932 | +------+----+----+----+----+ | |
10933 | |int | Y | Y | Y | Y | | |
10934 | +------+----+----+----+----+ | |
10935 | |uint | Y | Y | Y | Y | | |
10936 | +------+----+----+----+----+ | |
07c40439 | 10937 | |float | - | Y | Y | Y | |
df401d54 | 10938 | +------+----+----+----+----+ |
10939 | |poly | Y | Y | - | - | | |
10940 | +------+----+----+----+----+ | |
10941 | ||
10942 | Create 4 element structures of: | |
10943 | ||
10944 | +------+----+----+----+----+ | |
10945 | | | 8 | 16 | 32 | 64 | | |
10946 | +------+----+----+----+----+ | |
10947 | |int | Y | N | N | Y | | |
10948 | +------+----+----+----+----+ | |
10949 | |uint | Y | N | N | Y | | |
10950 | +------+----+----+----+----+ | |
07c40439 | 10951 | |float | - | N | N | Y | |
df401d54 | 10952 | +------+----+----+----+----+ |
10953 | |poly | Y | N | - | - | | |
10954 | +------+----+----+----+----+ | |
10955 | ||
10956 | This is required for casting memory reference. */ | |
10957 | #define __STRUCTN(t, sz, nelem) \ | |
10958 | typedef struct t ## sz ## x ## nelem ## _t { \ | |
10959 | t ## sz ## _t val[nelem]; \ | |
10960 | } t ## sz ## x ## nelem ## _t; | |
10961 | ||
10962 | /* 2-element structs. */ | |
10963 | __STRUCTN (int, 8, 2) | |
10964 | __STRUCTN (int, 16, 2) | |
10965 | __STRUCTN (uint, 8, 2) | |
10966 | __STRUCTN (uint, 16, 2) | |
07c40439 | 10967 | __STRUCTN (float, 16, 2) |
df401d54 | 10968 | __STRUCTN (poly, 8, 2) |
10969 | __STRUCTN (poly, 16, 2) | |
10970 | /* 3-element structs. */ | |
10971 | __STRUCTN (int, 8, 3) | |
10972 | __STRUCTN (int, 16, 3) | |
10973 | __STRUCTN (int, 32, 3) | |
10974 | __STRUCTN (int, 64, 3) | |
10975 | __STRUCTN (uint, 8, 3) | |
10976 | __STRUCTN (uint, 16, 3) | |
10977 | __STRUCTN (uint, 32, 3) | |
10978 | __STRUCTN (uint, 64, 3) | |
07c40439 | 10979 | __STRUCTN (float, 16, 3) |
df401d54 | 10980 | __STRUCTN (float, 32, 3) |
10981 | __STRUCTN (float, 64, 3) | |
10982 | __STRUCTN (poly, 8, 3) | |
10983 | __STRUCTN (poly, 16, 3) | |
10984 | /* 4-element structs. */ | |
10985 | __STRUCTN (int, 8, 4) | |
10986 | __STRUCTN (int, 64, 4) | |
10987 | __STRUCTN (uint, 8, 4) | |
10988 | __STRUCTN (uint, 64, 4) | |
10989 | __STRUCTN (poly, 8, 4) | |
10990 | __STRUCTN (float, 64, 4) | |
10991 | #undef __STRUCTN | |
10992 | ||
2d67c34c | 10993 | |
0146686c | 10994 | #define __ST2_LANE_FUNC(intype, largetype, ptrtype, mode, \ |
10995 | qmode, ptr_mode, funcsuffix, signedtype) \ | |
49ab9992 | 10996 | __extension__ extern __inline void \ |
10997 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \ | |
657d877a | 10998 | vst2_lane_ ## funcsuffix (ptrtype *__ptr, \ |
10999 | intype __b, const int __c) \ | |
11000 | { \ | |
11001 | __builtin_aarch64_simd_oi __o; \ | |
11002 | largetype __temp; \ | |
11003 | __temp.val[0] \ | |
11004 | = vcombine_##funcsuffix (__b.val[0], \ | |
11005 | vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ | |
11006 | __temp.val[1] \ | |
11007 | = vcombine_##funcsuffix (__b.val[1], \ | |
11008 | vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ | |
0146686c | 11009 | __o = __builtin_aarch64_set_qregoi##qmode (__o, \ |
11010 | (signedtype) __temp.val[0], 0); \ | |
11011 | __o = __builtin_aarch64_set_qregoi##qmode (__o, \ | |
11012 | (signedtype) __temp.val[1], 1); \ | |
657d877a | 11013 | __builtin_aarch64_st2_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \ |
11014 | __ptr, __o, __c); \ | |
11015 | } | |
11016 | ||
07c40439 | 11017 | __ST2_LANE_FUNC (float16x4x2_t, float16x8x2_t, float16_t, v4hf, v8hf, hf, f16, |
11018 | float16x8_t) | |
0146686c | 11019 | __ST2_LANE_FUNC (float32x2x2_t, float32x4x2_t, float32_t, v2sf, v4sf, sf, f32, |
657d877a | 11020 | float32x4_t) |
0146686c | 11021 | __ST2_LANE_FUNC (float64x1x2_t, float64x2x2_t, float64_t, df, v2df, df, f64, |
657d877a | 11022 | float64x2_t) |
0146686c | 11023 | __ST2_LANE_FUNC (poly8x8x2_t, poly8x16x2_t, poly8_t, v8qi, v16qi, qi, p8, |
11024 | int8x16_t) | |
11025 | __ST2_LANE_FUNC (poly16x4x2_t, poly16x8x2_t, poly16_t, v4hi, v8hi, hi, p16, | |
657d877a | 11026 | int16x8_t) |
d4f47414 | 11027 | __ST2_LANE_FUNC (poly64x1x2_t, poly64x2x2_t, poly64_t, di, v2di_ssps, di, p64, |
11028 | poly64x2_t) | |
0146686c | 11029 | __ST2_LANE_FUNC (int8x8x2_t, int8x16x2_t, int8_t, v8qi, v16qi, qi, s8, |
11030 | int8x16_t) | |
11031 | __ST2_LANE_FUNC (int16x4x2_t, int16x8x2_t, int16_t, v4hi, v8hi, hi, s16, | |
657d877a | 11032 | int16x8_t) |
0146686c | 11033 | __ST2_LANE_FUNC (int32x2x2_t, int32x4x2_t, int32_t, v2si, v4si, si, s32, |
657d877a | 11034 | int32x4_t) |
0146686c | 11035 | __ST2_LANE_FUNC (int64x1x2_t, int64x2x2_t, int64_t, di, v2di, di, s64, |
11036 | int64x2_t) | |
11037 | __ST2_LANE_FUNC (uint8x8x2_t, uint8x16x2_t, uint8_t, v8qi, v16qi, qi, u8, | |
11038 | int8x16_t) | |
11039 | __ST2_LANE_FUNC (uint16x4x2_t, uint16x8x2_t, uint16_t, v4hi, v8hi, hi, u16, | |
11040 | int16x8_t) | |
11041 | __ST2_LANE_FUNC (uint32x2x2_t, uint32x4x2_t, uint32_t, v2si, v4si, si, u32, | |
11042 | int32x4_t) | |
11043 | __ST2_LANE_FUNC (uint64x1x2_t, uint64x2x2_t, uint64_t, di, v2di, di, u64, | |
657d877a | 11044 | int64x2_t) |
11045 | ||
11046 | #undef __ST2_LANE_FUNC | |
11047 | #define __ST2_LANE_FUNC(intype, ptrtype, mode, ptr_mode, funcsuffix) \ | |
49ab9992 | 11048 | __extension__ extern __inline void \ |
11049 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \ | |
657d877a | 11050 | vst2q_lane_ ## funcsuffix (ptrtype *__ptr, \ |
11051 | intype __b, const int __c) \ | |
11052 | { \ | |
11053 | union { intype __i; \ | |
11054 | __builtin_aarch64_simd_oi __o; } __temp = { __b }; \ | |
11055 | __builtin_aarch64_st2_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \ | |
11056 | __ptr, __temp.__o, __c); \ | |
11057 | } | |
11058 | ||
07c40439 | 11059 | __ST2_LANE_FUNC (float16x8x2_t, float16_t, v8hf, hf, f16) |
657d877a | 11060 | __ST2_LANE_FUNC (float32x4x2_t, float32_t, v4sf, sf, f32) |
11061 | __ST2_LANE_FUNC (float64x2x2_t, float64_t, v2df, df, f64) | |
11062 | __ST2_LANE_FUNC (poly8x16x2_t, poly8_t, v16qi, qi, p8) | |
11063 | __ST2_LANE_FUNC (poly16x8x2_t, poly16_t, v8hi, hi, p16) | |
d4f47414 | 11064 | __ST2_LANE_FUNC (poly64x2x2_t, poly64_t, v2di, di, p64) |
657d877a | 11065 | __ST2_LANE_FUNC (int8x16x2_t, int8_t, v16qi, qi, s8) |
11066 | __ST2_LANE_FUNC (int16x8x2_t, int16_t, v8hi, hi, s16) | |
11067 | __ST2_LANE_FUNC (int32x4x2_t, int32_t, v4si, si, s32) | |
11068 | __ST2_LANE_FUNC (int64x2x2_t, int64_t, v2di, di, s64) | |
11069 | __ST2_LANE_FUNC (uint8x16x2_t, uint8_t, v16qi, qi, u8) | |
11070 | __ST2_LANE_FUNC (uint16x8x2_t, uint16_t, v8hi, hi, u16) | |
11071 | __ST2_LANE_FUNC (uint32x4x2_t, uint32_t, v4si, si, u32) | |
11072 | __ST2_LANE_FUNC (uint64x2x2_t, uint64_t, v2di, di, u64) | |
11073 | ||
0146686c | 11074 | #define __ST3_LANE_FUNC(intype, largetype, ptrtype, mode, \ |
11075 | qmode, ptr_mode, funcsuffix, signedtype) \ | |
49ab9992 | 11076 | __extension__ extern __inline void \ |
11077 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \ | |
657d877a | 11078 | vst3_lane_ ## funcsuffix (ptrtype *__ptr, \ |
11079 | intype __b, const int __c) \ | |
11080 | { \ | |
11081 | __builtin_aarch64_simd_ci __o; \ | |
11082 | largetype __temp; \ | |
11083 | __temp.val[0] \ | |
11084 | = vcombine_##funcsuffix (__b.val[0], \ | |
11085 | vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ | |
11086 | __temp.val[1] \ | |
11087 | = vcombine_##funcsuffix (__b.val[1], \ | |
11088 | vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ | |
11089 | __temp.val[2] \ | |
11090 | = vcombine_##funcsuffix (__b.val[2], \ | |
11091 | vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ | |
0146686c | 11092 | __o = __builtin_aarch64_set_qregci##qmode (__o, \ |
11093 | (signedtype) __temp.val[0], 0); \ | |
11094 | __o = __builtin_aarch64_set_qregci##qmode (__o, \ | |
11095 | (signedtype) __temp.val[1], 1); \ | |
11096 | __o = __builtin_aarch64_set_qregci##qmode (__o, \ | |
11097 | (signedtype) __temp.val[2], 2); \ | |
657d877a | 11098 | __builtin_aarch64_st3_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \ |
11099 | __ptr, __o, __c); \ | |
11100 | } | |
11101 | ||
07c40439 | 11102 | __ST3_LANE_FUNC (float16x4x3_t, float16x8x3_t, float16_t, v4hf, v8hf, hf, f16, |
11103 | float16x8_t) | |
0146686c | 11104 | __ST3_LANE_FUNC (float32x2x3_t, float32x4x3_t, float32_t, v2sf, v4sf, sf, f32, |
657d877a | 11105 | float32x4_t) |
0146686c | 11106 | __ST3_LANE_FUNC (float64x1x3_t, float64x2x3_t, float64_t, df, v2df, df, f64, |
657d877a | 11107 | float64x2_t) |
0146686c | 11108 | __ST3_LANE_FUNC (poly8x8x3_t, poly8x16x3_t, poly8_t, v8qi, v16qi, qi, p8, |
11109 | int8x16_t) | |
11110 | __ST3_LANE_FUNC (poly16x4x3_t, poly16x8x3_t, poly16_t, v4hi, v8hi, hi, p16, | |
11111 | int16x8_t) | |
d4f47414 | 11112 | __ST3_LANE_FUNC (poly64x1x3_t, poly64x2x3_t, poly64_t, di, v2di_ssps, di, p64, |
11113 | poly64x2_t) | |
0146686c | 11114 | __ST3_LANE_FUNC (int8x8x3_t, int8x16x3_t, int8_t, v8qi, v16qi, qi, s8, |
11115 | int8x16_t) | |
11116 | __ST3_LANE_FUNC (int16x4x3_t, int16x8x3_t, int16_t, v4hi, v8hi, hi, s16, | |
657d877a | 11117 | int16x8_t) |
0146686c | 11118 | __ST3_LANE_FUNC (int32x2x3_t, int32x4x3_t, int32_t, v2si, v4si, si, s32, |
11119 | int32x4_t) | |
11120 | __ST3_LANE_FUNC (int64x1x3_t, int64x2x3_t, int64_t, di, v2di, di, s64, | |
11121 | int64x2_t) | |
11122 | __ST3_LANE_FUNC (uint8x8x3_t, uint8x16x3_t, uint8_t, v8qi, v16qi, qi, u8, | |
11123 | int8x16_t) | |
11124 | __ST3_LANE_FUNC (uint16x4x3_t, uint16x8x3_t, uint16_t, v4hi, v8hi, hi, u16, | |
657d877a | 11125 | int16x8_t) |
0146686c | 11126 | __ST3_LANE_FUNC (uint32x2x3_t, uint32x4x3_t, uint32_t, v2si, v4si, si, u32, |
657d877a | 11127 | int32x4_t) |
0146686c | 11128 | __ST3_LANE_FUNC (uint64x1x3_t, uint64x2x3_t, uint64_t, di, v2di, di, u64, |
657d877a | 11129 | int64x2_t) |
11130 | ||
11131 | #undef __ST3_LANE_FUNC | |
11132 | #define __ST3_LANE_FUNC(intype, ptrtype, mode, ptr_mode, funcsuffix) \ | |
49ab9992 | 11133 | __extension__ extern __inline void \ |
11134 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \ | |
657d877a | 11135 | vst3q_lane_ ## funcsuffix (ptrtype *__ptr, \ |
11136 | intype __b, const int __c) \ | |
11137 | { \ | |
11138 | union { intype __i; \ | |
11139 | __builtin_aarch64_simd_ci __o; } __temp = { __b }; \ | |
11140 | __builtin_aarch64_st3_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \ | |
11141 | __ptr, __temp.__o, __c); \ | |
11142 | } | |
11143 | ||
07c40439 | 11144 | __ST3_LANE_FUNC (float16x8x3_t, float16_t, v8hf, hf, f16) |
657d877a | 11145 | __ST3_LANE_FUNC (float32x4x3_t, float32_t, v4sf, sf, f32) |
11146 | __ST3_LANE_FUNC (float64x2x3_t, float64_t, v2df, df, f64) | |
11147 | __ST3_LANE_FUNC (poly8x16x3_t, poly8_t, v16qi, qi, p8) | |
11148 | __ST3_LANE_FUNC (poly16x8x3_t, poly16_t, v8hi, hi, p16) | |
d4f47414 | 11149 | __ST3_LANE_FUNC (poly64x2x3_t, poly64_t, v2di, di, p64) |
657d877a | 11150 | __ST3_LANE_FUNC (int8x16x3_t, int8_t, v16qi, qi, s8) |
11151 | __ST3_LANE_FUNC (int16x8x3_t, int16_t, v8hi, hi, s16) | |
11152 | __ST3_LANE_FUNC (int32x4x3_t, int32_t, v4si, si, s32) | |
11153 | __ST3_LANE_FUNC (int64x2x3_t, int64_t, v2di, di, s64) | |
11154 | __ST3_LANE_FUNC (uint8x16x3_t, uint8_t, v16qi, qi, u8) | |
11155 | __ST3_LANE_FUNC (uint16x8x3_t, uint16_t, v8hi, hi, u16) | |
11156 | __ST3_LANE_FUNC (uint32x4x3_t, uint32_t, v4si, si, u32) | |
11157 | __ST3_LANE_FUNC (uint64x2x3_t, uint64_t, v2di, di, u64) | |
11158 | ||
0146686c | 11159 | #define __ST4_LANE_FUNC(intype, largetype, ptrtype, mode, \ |
11160 | qmode, ptr_mode, funcsuffix, signedtype) \ | |
49ab9992 | 11161 | __extension__ extern __inline void \ |
11162 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \ | |
657d877a | 11163 | vst4_lane_ ## funcsuffix (ptrtype *__ptr, \ |
11164 | intype __b, const int __c) \ | |
11165 | { \ | |
11166 | __builtin_aarch64_simd_xi __o; \ | |
11167 | largetype __temp; \ | |
11168 | __temp.val[0] \ | |
11169 | = vcombine_##funcsuffix (__b.val[0], \ | |
11170 | vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ | |
11171 | __temp.val[1] \ | |
11172 | = vcombine_##funcsuffix (__b.val[1], \ | |
11173 | vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ | |
11174 | __temp.val[2] \ | |
11175 | = vcombine_##funcsuffix (__b.val[2], \ | |
11176 | vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ | |
11177 | __temp.val[3] \ | |
11178 | = vcombine_##funcsuffix (__b.val[3], \ | |
11179 | vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ | |
0146686c | 11180 | __o = __builtin_aarch64_set_qregxi##qmode (__o, \ |
11181 | (signedtype) __temp.val[0], 0); \ | |
11182 | __o = __builtin_aarch64_set_qregxi##qmode (__o, \ | |
11183 | (signedtype) __temp.val[1], 1); \ | |
11184 | __o = __builtin_aarch64_set_qregxi##qmode (__o, \ | |
11185 | (signedtype) __temp.val[2], 2); \ | |
11186 | __o = __builtin_aarch64_set_qregxi##qmode (__o, \ | |
11187 | (signedtype) __temp.val[3], 3); \ | |
657d877a | 11188 | __builtin_aarch64_st4_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \ |
11189 | __ptr, __o, __c); \ | |
11190 | } | |
11191 | ||
07c40439 | 11192 | __ST4_LANE_FUNC (float16x4x4_t, float16x8x4_t, float16_t, v4hf, v8hf, hf, f16, |
11193 | float16x8_t) | |
0146686c | 11194 | __ST4_LANE_FUNC (float32x2x4_t, float32x4x4_t, float32_t, v2sf, v4sf, sf, f32, |
657d877a | 11195 | float32x4_t) |
0146686c | 11196 | __ST4_LANE_FUNC (float64x1x4_t, float64x2x4_t, float64_t, df, v2df, df, f64, |
657d877a | 11197 | float64x2_t) |
0146686c | 11198 | __ST4_LANE_FUNC (poly8x8x4_t, poly8x16x4_t, poly8_t, v8qi, v16qi, qi, p8, |
11199 | int8x16_t) | |
11200 | __ST4_LANE_FUNC (poly16x4x4_t, poly16x8x4_t, poly16_t, v4hi, v8hi, hi, p16, | |
657d877a | 11201 | int16x8_t) |
d4f47414 | 11202 | __ST4_LANE_FUNC (poly64x1x4_t, poly64x2x4_t, poly64_t, di, v2di_ssps, di, p64, |
11203 | poly64x2_t) | |
0146686c | 11204 | __ST4_LANE_FUNC (int8x8x4_t, int8x16x4_t, int8_t, v8qi, v16qi, qi, s8, |
11205 | int8x16_t) | |
11206 | __ST4_LANE_FUNC (int16x4x4_t, int16x8x4_t, int16_t, v4hi, v8hi, hi, s16, | |
11207 | int16x8_t) | |
11208 | __ST4_LANE_FUNC (int32x2x4_t, int32x4x4_t, int32_t, v2si, v4si, si, s32, | |
11209 | int32x4_t) | |
11210 | __ST4_LANE_FUNC (int64x1x4_t, int64x2x4_t, int64_t, di, v2di, di, s64, | |
11211 | int64x2_t) | |
11212 | __ST4_LANE_FUNC (uint8x8x4_t, uint8x16x4_t, uint8_t, v8qi, v16qi, qi, u8, | |
11213 | int8x16_t) | |
11214 | __ST4_LANE_FUNC (uint16x4x4_t, uint16x8x4_t, uint16_t, v4hi, v8hi, hi, u16, | |
657d877a | 11215 | int16x8_t) |
0146686c | 11216 | __ST4_LANE_FUNC (uint32x2x4_t, uint32x4x4_t, uint32_t, v2si, v4si, si, u32, |
657d877a | 11217 | int32x4_t) |
0146686c | 11218 | __ST4_LANE_FUNC (uint64x1x4_t, uint64x2x4_t, uint64_t, di, v2di, di, u64, |
657d877a | 11219 | int64x2_t) |
11220 | ||
11221 | #undef __ST4_LANE_FUNC | |
11222 | #define __ST4_LANE_FUNC(intype, ptrtype, mode, ptr_mode, funcsuffix) \ | |
49ab9992 | 11223 | __extension__ extern __inline void \ |
11224 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \ | |
657d877a | 11225 | vst4q_lane_ ## funcsuffix (ptrtype *__ptr, \ |
11226 | intype __b, const int __c) \ | |
11227 | { \ | |
11228 | union { intype __i; \ | |
11229 | __builtin_aarch64_simd_xi __o; } __temp = { __b }; \ | |
11230 | __builtin_aarch64_st4_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \ | |
11231 | __ptr, __temp.__o, __c); \ | |
11232 | } | |
11233 | ||
07c40439 | 11234 | __ST4_LANE_FUNC (float16x8x4_t, float16_t, v8hf, hf, f16) |
657d877a | 11235 | __ST4_LANE_FUNC (float32x4x4_t, float32_t, v4sf, sf, f32) |
11236 | __ST4_LANE_FUNC (float64x2x4_t, float64_t, v2df, df, f64) | |
11237 | __ST4_LANE_FUNC (poly8x16x4_t, poly8_t, v16qi, qi, p8) | |
11238 | __ST4_LANE_FUNC (poly16x8x4_t, poly16_t, v8hi, hi, p16) | |
d4f47414 | 11239 | __ST4_LANE_FUNC (poly64x2x4_t, poly64_t, v2di, di, p64) |
657d877a | 11240 | __ST4_LANE_FUNC (int8x16x4_t, int8_t, v16qi, qi, s8) |
11241 | __ST4_LANE_FUNC (int16x8x4_t, int16_t, v8hi, hi, s16) | |
11242 | __ST4_LANE_FUNC (int32x4x4_t, int32_t, v4si, si, s32) | |
11243 | __ST4_LANE_FUNC (int64x2x4_t, int64_t, v2di, di, s64) | |
11244 | __ST4_LANE_FUNC (uint8x16x4_t, uint8_t, v16qi, qi, u8) | |
11245 | __ST4_LANE_FUNC (uint16x8x4_t, uint16_t, v8hi, hi, u16) | |
11246 | __ST4_LANE_FUNC (uint32x4x4_t, uint32_t, v4si, si, u32) | |
11247 | __ST4_LANE_FUNC (uint64x2x4_t, uint64_t, v2di, di, u64) | |
2d67c34c | 11248 | |
49ab9992 | 11249 | __extension__ extern __inline int64_t |
11250 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11251 | vaddlv_s32 (int32x2_t a) |
11252 | { | |
11253 | int64_t result; | |
11254 | __asm__ ("saddlp %0.1d, %1.2s" : "=w"(result) : "w"(a) : ); | |
11255 | return result; | |
11256 | } | |
11257 | ||
49ab9992 | 11258 | __extension__ extern __inline uint64_t |
11259 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11260 | vaddlv_u32 (uint32x2_t a) |
11261 | { | |
11262 | uint64_t result; | |
11263 | __asm__ ("uaddlp %0.1d, %1.2s" : "=w"(result) : "w"(a) : ); | |
11264 | return result; | |
11265 | } | |
11266 | ||
49ab9992 | 11267 | __extension__ extern __inline int16x4_t |
11268 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11269 | vqdmulh_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __c) |
11270 | { | |
11271 | return __builtin_aarch64_sqdmulh_laneqv4hi (__a, __b, __c); | |
11272 | } | |
11273 | ||
49ab9992 | 11274 | __extension__ extern __inline int32x2_t |
11275 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11276 | vqdmulh_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __c) |
11277 | { | |
11278 | return __builtin_aarch64_sqdmulh_laneqv2si (__a, __b, __c); | |
11279 | } | |
11280 | ||
49ab9992 | 11281 | __extension__ extern __inline int16x8_t |
11282 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11283 | vqdmulhq_laneq_s16 (int16x8_t __a, int16x8_t __b, const int __c) |
11284 | { | |
11285 | return __builtin_aarch64_sqdmulh_laneqv8hi (__a, __b, __c); | |
11286 | } | |
11287 | ||
49ab9992 | 11288 | __extension__ extern __inline int32x4_t |
11289 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11290 | vqdmulhq_laneq_s32 (int32x4_t __a, int32x4_t __b, const int __c) |
11291 | { | |
11292 | return __builtin_aarch64_sqdmulh_laneqv4si (__a, __b, __c); | |
11293 | } | |
11294 | ||
49ab9992 | 11295 | __extension__ extern __inline int16x4_t |
11296 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11297 | vqrdmulh_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __c) |
11298 | { | |
11299 | return __builtin_aarch64_sqrdmulh_laneqv4hi (__a, __b, __c); | |
11300 | } | |
11301 | ||
49ab9992 | 11302 | __extension__ extern __inline int32x2_t |
11303 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11304 | vqrdmulh_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __c) |
11305 | { | |
11306 | return __builtin_aarch64_sqrdmulh_laneqv2si (__a, __b, __c); | |
11307 | } | |
11308 | ||
49ab9992 | 11309 | __extension__ extern __inline int16x8_t |
11310 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11311 | vqrdmulhq_laneq_s16 (int16x8_t __a, int16x8_t __b, const int __c) |
11312 | { | |
11313 | return __builtin_aarch64_sqrdmulh_laneqv8hi (__a, __b, __c); | |
11314 | } | |
11315 | ||
49ab9992 | 11316 | __extension__ extern __inline int32x4_t |
11317 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11318 | vqrdmulhq_laneq_s32 (int32x4_t __a, int32x4_t __b, const int __c) |
11319 | { | |
11320 | return __builtin_aarch64_sqrdmulh_laneqv4si (__a, __b, __c); | |
11321 | } | |
11322 | ||
11323 | /* Table intrinsics. */ | |
11324 | ||
49ab9992 | 11325 | __extension__ extern __inline poly8x8_t |
11326 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11327 | vqtbl1_p8 (poly8x16_t a, uint8x8_t b) |
11328 | { | |
11329 | poly8x8_t result; | |
11330 | __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" | |
11331 | : "=w"(result) | |
11332 | : "w"(a), "w"(b) | |
11333 | : /* No clobbers */); | |
11334 | return result; | |
11335 | } | |
11336 | ||
49ab9992 | 11337 | __extension__ extern __inline int8x8_t |
11338 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b672bcb8 | 11339 | vqtbl1_s8 (int8x16_t a, uint8x8_t b) |
2d67c34c | 11340 | { |
11341 | int8x8_t result; | |
11342 | __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" | |
11343 | : "=w"(result) | |
11344 | : "w"(a), "w"(b) | |
11345 | : /* No clobbers */); | |
11346 | return result; | |
11347 | } | |
11348 | ||
49ab9992 | 11349 | __extension__ extern __inline uint8x8_t |
11350 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11351 | vqtbl1_u8 (uint8x16_t a, uint8x8_t b) |
11352 | { | |
11353 | uint8x8_t result; | |
11354 | __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" | |
11355 | : "=w"(result) | |
11356 | : "w"(a), "w"(b) | |
11357 | : /* No clobbers */); | |
11358 | return result; | |
11359 | } | |
11360 | ||
49ab9992 | 11361 | __extension__ extern __inline poly8x16_t |
11362 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11363 | vqtbl1q_p8 (poly8x16_t a, uint8x16_t b) |
11364 | { | |
11365 | poly8x16_t result; | |
11366 | __asm__ ("tbl %0.16b, {%1.16b}, %2.16b" | |
11367 | : "=w"(result) | |
11368 | : "w"(a), "w"(b) | |
11369 | : /* No clobbers */); | |
11370 | return result; | |
11371 | } | |
11372 | ||
49ab9992 | 11373 | __extension__ extern __inline int8x16_t |
11374 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b672bcb8 | 11375 | vqtbl1q_s8 (int8x16_t a, uint8x16_t b) |
2d67c34c | 11376 | { |
11377 | int8x16_t result; | |
11378 | __asm__ ("tbl %0.16b, {%1.16b}, %2.16b" | |
11379 | : "=w"(result) | |
11380 | : "w"(a), "w"(b) | |
11381 | : /* No clobbers */); | |
11382 | return result; | |
11383 | } | |
11384 | ||
49ab9992 | 11385 | __extension__ extern __inline uint8x16_t |
11386 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11387 | vqtbl1q_u8 (uint8x16_t a, uint8x16_t b) |
11388 | { | |
11389 | uint8x16_t result; | |
11390 | __asm__ ("tbl %0.16b, {%1.16b}, %2.16b" | |
11391 | : "=w"(result) | |
11392 | : "w"(a), "w"(b) | |
11393 | : /* No clobbers */); | |
11394 | return result; | |
11395 | } | |
11396 | ||
49ab9992 | 11397 | __extension__ extern __inline int8x8_t |
11398 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b672bcb8 | 11399 | vqtbx1_s8 (int8x8_t r, int8x16_t tab, uint8x8_t idx) |
2d67c34c | 11400 | { |
11401 | int8x8_t result = r; | |
11402 | __asm__ ("tbx %0.8b,{%1.16b},%2.8b" | |
11403 | : "+w"(result) | |
11404 | : "w"(tab), "w"(idx) | |
11405 | : /* No clobbers */); | |
11406 | return result; | |
11407 | } | |
11408 | ||
49ab9992 | 11409 | __extension__ extern __inline uint8x8_t |
11410 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11411 | vqtbx1_u8 (uint8x8_t r, uint8x16_t tab, uint8x8_t idx) |
11412 | { | |
11413 | uint8x8_t result = r; | |
11414 | __asm__ ("tbx %0.8b,{%1.16b},%2.8b" | |
11415 | : "+w"(result) | |
11416 | : "w"(tab), "w"(idx) | |
11417 | : /* No clobbers */); | |
11418 | return result; | |
11419 | } | |
11420 | ||
49ab9992 | 11421 | __extension__ extern __inline poly8x8_t |
11422 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11423 | vqtbx1_p8 (poly8x8_t r, poly8x16_t tab, uint8x8_t idx) |
11424 | { | |
11425 | poly8x8_t result = r; | |
11426 | __asm__ ("tbx %0.8b,{%1.16b},%2.8b" | |
11427 | : "+w"(result) | |
11428 | : "w"(tab), "w"(idx) | |
11429 | : /* No clobbers */); | |
11430 | return result; | |
11431 | } | |
11432 | ||
49ab9992 | 11433 | __extension__ extern __inline int8x16_t |
11434 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b672bcb8 | 11435 | vqtbx1q_s8 (int8x16_t r, int8x16_t tab, uint8x16_t idx) |
2d67c34c | 11436 | { |
11437 | int8x16_t result = r; | |
11438 | __asm__ ("tbx %0.16b,{%1.16b},%2.16b" | |
11439 | : "+w"(result) | |
11440 | : "w"(tab), "w"(idx) | |
11441 | : /* No clobbers */); | |
11442 | return result; | |
11443 | } | |
11444 | ||
49ab9992 | 11445 | __extension__ extern __inline uint8x16_t |
11446 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11447 | vqtbx1q_u8 (uint8x16_t r, uint8x16_t tab, uint8x16_t idx) |
11448 | { | |
11449 | uint8x16_t result = r; | |
11450 | __asm__ ("tbx %0.16b,{%1.16b},%2.16b" | |
11451 | : "+w"(result) | |
11452 | : "w"(tab), "w"(idx) | |
11453 | : /* No clobbers */); | |
11454 | return result; | |
11455 | } | |
11456 | ||
49ab9992 | 11457 | __extension__ extern __inline poly8x16_t |
11458 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11459 | vqtbx1q_p8 (poly8x16_t r, poly8x16_t tab, uint8x16_t idx) |
11460 | { | |
11461 | poly8x16_t result = r; | |
11462 | __asm__ ("tbx %0.16b,{%1.16b},%2.16b" | |
11463 | : "+w"(result) | |
11464 | : "w"(tab), "w"(idx) | |
11465 | : /* No clobbers */); | |
11466 | return result; | |
11467 | } | |
11468 | ||
2d67c34c | 11469 | /* V7 legacy table intrinsics. */ |
11470 | ||
49ab9992 | 11471 | __extension__ extern __inline int8x8_t |
11472 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11473 | vtbl1_s8 (int8x8_t tab, int8x8_t idx) |
11474 | { | |
11475 | int8x8_t result; | |
11476 | int8x16_t temp = vcombine_s8 (tab, vcreate_s8 (__AARCH64_UINT64_C (0x0))); | |
11477 | __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" | |
11478 | : "=w"(result) | |
11479 | : "w"(temp), "w"(idx) | |
11480 | : /* No clobbers */); | |
11481 | return result; | |
11482 | } | |
11483 | ||
49ab9992 | 11484 | __extension__ extern __inline uint8x8_t |
11485 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11486 | vtbl1_u8 (uint8x8_t tab, uint8x8_t idx) |
11487 | { | |
11488 | uint8x8_t result; | |
11489 | uint8x16_t temp = vcombine_u8 (tab, vcreate_u8 (__AARCH64_UINT64_C (0x0))); | |
11490 | __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" | |
11491 | : "=w"(result) | |
11492 | : "w"(temp), "w"(idx) | |
11493 | : /* No clobbers */); | |
11494 | return result; | |
11495 | } | |
11496 | ||
49ab9992 | 11497 | __extension__ extern __inline poly8x8_t |
11498 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11499 | vtbl1_p8 (poly8x8_t tab, uint8x8_t idx) |
11500 | { | |
11501 | poly8x8_t result; | |
11502 | poly8x16_t temp = vcombine_p8 (tab, vcreate_p8 (__AARCH64_UINT64_C (0x0))); | |
11503 | __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" | |
11504 | : "=w"(result) | |
11505 | : "w"(temp), "w"(idx) | |
11506 | : /* No clobbers */); | |
11507 | return result; | |
11508 | } | |
11509 | ||
49ab9992 | 11510 | __extension__ extern __inline int8x8_t |
11511 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11512 | vtbl2_s8 (int8x8x2_t tab, int8x8_t idx) |
11513 | { | |
11514 | int8x8_t result; | |
11515 | int8x16_t temp = vcombine_s8 (tab.val[0], tab.val[1]); | |
11516 | __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" | |
11517 | : "=w"(result) | |
11518 | : "w"(temp), "w"(idx) | |
11519 | : /* No clobbers */); | |
11520 | return result; | |
11521 | } | |
11522 | ||
49ab9992 | 11523 | __extension__ extern __inline uint8x8_t |
11524 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11525 | vtbl2_u8 (uint8x8x2_t tab, uint8x8_t idx) |
11526 | { | |
11527 | uint8x8_t result; | |
11528 | uint8x16_t temp = vcombine_u8 (tab.val[0], tab.val[1]); | |
11529 | __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" | |
11530 | : "=w"(result) | |
11531 | : "w"(temp), "w"(idx) | |
11532 | : /* No clobbers */); | |
11533 | return result; | |
11534 | } | |
11535 | ||
49ab9992 | 11536 | __extension__ extern __inline poly8x8_t |
11537 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11538 | vtbl2_p8 (poly8x8x2_t tab, uint8x8_t idx) |
11539 | { | |
11540 | poly8x8_t result; | |
11541 | poly8x16_t temp = vcombine_p8 (tab.val[0], tab.val[1]); | |
11542 | __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" | |
11543 | : "=w"(result) | |
11544 | : "w"(temp), "w"(idx) | |
11545 | : /* No clobbers */); | |
11546 | return result; | |
11547 | } | |
11548 | ||
49ab9992 | 11549 | __extension__ extern __inline int8x8_t |
11550 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11551 | vtbl3_s8 (int8x8x3_t tab, int8x8_t idx) |
11552 | { | |
11553 | int8x8_t result; | |
11554 | int8x16x2_t temp; | |
297c6263 | 11555 | __builtin_aarch64_simd_oi __o; |
2d67c34c | 11556 | temp.val[0] = vcombine_s8 (tab.val[0], tab.val[1]); |
11557 | temp.val[1] = vcombine_s8 (tab.val[2], vcreate_s8 (__AARCH64_UINT64_C (0x0))); | |
297c6263 | 11558 | __o = __builtin_aarch64_set_qregoiv16qi (__o, |
11559 | (int8x16_t) temp.val[0], 0); | |
11560 | __o = __builtin_aarch64_set_qregoiv16qi (__o, | |
11561 | (int8x16_t) temp.val[1], 1); | |
11562 | result = __builtin_aarch64_tbl3v8qi (__o, idx); | |
2d67c34c | 11563 | return result; |
11564 | } | |
11565 | ||
49ab9992 | 11566 | __extension__ extern __inline uint8x8_t |
11567 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11568 | vtbl3_u8 (uint8x8x3_t tab, uint8x8_t idx) |
11569 | { | |
11570 | uint8x8_t result; | |
11571 | uint8x16x2_t temp; | |
297c6263 | 11572 | __builtin_aarch64_simd_oi __o; |
2d67c34c | 11573 | temp.val[0] = vcombine_u8 (tab.val[0], tab.val[1]); |
11574 | temp.val[1] = vcombine_u8 (tab.val[2], vcreate_u8 (__AARCH64_UINT64_C (0x0))); | |
297c6263 | 11575 | __o = __builtin_aarch64_set_qregoiv16qi (__o, |
11576 | (int8x16_t) temp.val[0], 0); | |
11577 | __o = __builtin_aarch64_set_qregoiv16qi (__o, | |
11578 | (int8x16_t) temp.val[1], 1); | |
11579 | result = (uint8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)idx); | |
2d67c34c | 11580 | return result; |
11581 | } | |
11582 | ||
49ab9992 | 11583 | __extension__ extern __inline poly8x8_t |
11584 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11585 | vtbl3_p8 (poly8x8x3_t tab, uint8x8_t idx) |
11586 | { | |
11587 | poly8x8_t result; | |
11588 | poly8x16x2_t temp; | |
297c6263 | 11589 | __builtin_aarch64_simd_oi __o; |
2d67c34c | 11590 | temp.val[0] = vcombine_p8 (tab.val[0], tab.val[1]); |
11591 | temp.val[1] = vcombine_p8 (tab.val[2], vcreate_p8 (__AARCH64_UINT64_C (0x0))); | |
297c6263 | 11592 | __o = __builtin_aarch64_set_qregoiv16qi (__o, |
11593 | (int8x16_t) temp.val[0], 0); | |
11594 | __o = __builtin_aarch64_set_qregoiv16qi (__o, | |
11595 | (int8x16_t) temp.val[1], 1); | |
11596 | result = (poly8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)idx); | |
2d67c34c | 11597 | return result; |
11598 | } | |
11599 | ||
49ab9992 | 11600 | __extension__ extern __inline int8x8_t |
11601 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11602 | vtbl4_s8 (int8x8x4_t tab, int8x8_t idx) |
11603 | { | |
11604 | int8x8_t result; | |
11605 | int8x16x2_t temp; | |
297c6263 | 11606 | __builtin_aarch64_simd_oi __o; |
2d67c34c | 11607 | temp.val[0] = vcombine_s8 (tab.val[0], tab.val[1]); |
11608 | temp.val[1] = vcombine_s8 (tab.val[2], tab.val[3]); | |
297c6263 | 11609 | __o = __builtin_aarch64_set_qregoiv16qi (__o, |
11610 | (int8x16_t) temp.val[0], 0); | |
11611 | __o = __builtin_aarch64_set_qregoiv16qi (__o, | |
11612 | (int8x16_t) temp.val[1], 1); | |
11613 | result = __builtin_aarch64_tbl3v8qi (__o, idx); | |
2d67c34c | 11614 | return result; |
11615 | } | |
11616 | ||
49ab9992 | 11617 | __extension__ extern __inline uint8x8_t |
11618 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11619 | vtbl4_u8 (uint8x8x4_t tab, uint8x8_t idx) |
11620 | { | |
11621 | uint8x8_t result; | |
11622 | uint8x16x2_t temp; | |
297c6263 | 11623 | __builtin_aarch64_simd_oi __o; |
2d67c34c | 11624 | temp.val[0] = vcombine_u8 (tab.val[0], tab.val[1]); |
11625 | temp.val[1] = vcombine_u8 (tab.val[2], tab.val[3]); | |
297c6263 | 11626 | __o = __builtin_aarch64_set_qregoiv16qi (__o, |
11627 | (int8x16_t) temp.val[0], 0); | |
11628 | __o = __builtin_aarch64_set_qregoiv16qi (__o, | |
11629 | (int8x16_t) temp.val[1], 1); | |
11630 | result = (uint8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)idx); | |
2d67c34c | 11631 | return result; |
11632 | } | |
11633 | ||
49ab9992 | 11634 | __extension__ extern __inline poly8x8_t |
11635 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11636 | vtbl4_p8 (poly8x8x4_t tab, uint8x8_t idx) |
11637 | { | |
11638 | poly8x8_t result; | |
11639 | poly8x16x2_t temp; | |
297c6263 | 11640 | __builtin_aarch64_simd_oi __o; |
2d67c34c | 11641 | temp.val[0] = vcombine_p8 (tab.val[0], tab.val[1]); |
11642 | temp.val[1] = vcombine_p8 (tab.val[2], tab.val[3]); | |
297c6263 | 11643 | __o = __builtin_aarch64_set_qregoiv16qi (__o, |
11644 | (int8x16_t) temp.val[0], 0); | |
11645 | __o = __builtin_aarch64_set_qregoiv16qi (__o, | |
11646 | (int8x16_t) temp.val[1], 1); | |
11647 | result = (poly8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)idx); | |
2d67c34c | 11648 | return result; |
11649 | } | |
11650 | ||
49ab9992 | 11651 | __extension__ extern __inline int8x8_t |
11652 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11653 | vtbx2_s8 (int8x8_t r, int8x8x2_t tab, int8x8_t idx) |
11654 | { | |
11655 | int8x8_t result = r; | |
11656 | int8x16_t temp = vcombine_s8 (tab.val[0], tab.val[1]); | |
11657 | __asm__ ("tbx %0.8b, {%1.16b}, %2.8b" | |
11658 | : "+w"(result) | |
11659 | : "w"(temp), "w"(idx) | |
11660 | : /* No clobbers */); | |
11661 | return result; | |
11662 | } | |
11663 | ||
49ab9992 | 11664 | __extension__ extern __inline uint8x8_t |
11665 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11666 | vtbx2_u8 (uint8x8_t r, uint8x8x2_t tab, uint8x8_t idx) |
11667 | { | |
11668 | uint8x8_t result = r; | |
11669 | uint8x16_t temp = vcombine_u8 (tab.val[0], tab.val[1]); | |
11670 | __asm__ ("tbx %0.8b, {%1.16b}, %2.8b" | |
11671 | : "+w"(result) | |
11672 | : "w"(temp), "w"(idx) | |
11673 | : /* No clobbers */); | |
11674 | return result; | |
11675 | } | |
11676 | ||
49ab9992 | 11677 | __extension__ extern __inline poly8x8_t |
11678 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11679 | vtbx2_p8 (poly8x8_t r, poly8x8x2_t tab, uint8x8_t idx) |
11680 | { | |
11681 | poly8x8_t result = r; | |
11682 | poly8x16_t temp = vcombine_p8 (tab.val[0], tab.val[1]); | |
11683 | __asm__ ("tbx %0.8b, {%1.16b}, %2.8b" | |
11684 | : "+w"(result) | |
11685 | : "w"(temp), "w"(idx) | |
11686 | : /* No clobbers */); | |
11687 | return result; | |
11688 | } | |
11689 | ||
2d67c34c | 11690 | /* End of temporary inline asm. */ |
df401d54 | 11691 | |
2d67c34c | 11692 | /* Start of optimal implementations in approved order. */ |
df401d54 | 11693 | |
edd8576c | 11694 | /* vabd. */ |
11695 | ||
49ab9992 | 11696 | __extension__ extern __inline float32_t |
11697 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
edd8576c | 11698 | vabds_f32 (float32_t __a, float32_t __b) |
11699 | { | |
11700 | return __builtin_aarch64_fabdsf (__a, __b); | |
11701 | } | |
11702 | ||
49ab9992 | 11703 | __extension__ extern __inline float64_t |
11704 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
edd8576c | 11705 | vabdd_f64 (float64_t __a, float64_t __b) |
11706 | { | |
11707 | return __builtin_aarch64_fabddf (__a, __b); | |
11708 | } | |
11709 | ||
49ab9992 | 11710 | __extension__ extern __inline float32x2_t |
11711 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
edd8576c | 11712 | vabd_f32 (float32x2_t __a, float32x2_t __b) |
11713 | { | |
11714 | return __builtin_aarch64_fabdv2sf (__a, __b); | |
11715 | } | |
11716 | ||
49ab9992 | 11717 | __extension__ extern __inline float64x1_t |
11718 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
edd8576c | 11719 | vabd_f64 (float64x1_t __a, float64x1_t __b) |
11720 | { | |
11721 | return (float64x1_t) {vabdd_f64 (vget_lane_f64 (__a, 0), | |
11722 | vget_lane_f64 (__b, 0))}; | |
11723 | } | |
11724 | ||
49ab9992 | 11725 | __extension__ extern __inline float32x4_t |
11726 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
edd8576c | 11727 | vabdq_f32 (float32x4_t __a, float32x4_t __b) |
11728 | { | |
11729 | return __builtin_aarch64_fabdv4sf (__a, __b); | |
11730 | } | |
11731 | ||
49ab9992 | 11732 | __extension__ extern __inline float64x2_t |
11733 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
edd8576c | 11734 | vabdq_f64 (float64x2_t __a, float64x2_t __b) |
11735 | { | |
11736 | return __builtin_aarch64_fabdv2df (__a, __b); | |
11737 | } | |
11738 | ||
2d67c34c | 11739 | /* vabs */ |
df401d54 | 11740 | |
49ab9992 | 11741 | __extension__ extern __inline float32x2_t |
11742 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11743 | vabs_f32 (float32x2_t __a) |
11744 | { | |
11745 | return __builtin_aarch64_absv2sf (__a); | |
11746 | } | |
df401d54 | 11747 | |
49ab9992 | 11748 | __extension__ extern __inline float64x1_t |
11749 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11750 | vabs_f64 (float64x1_t __a) |
11751 | { | |
ac292ff5 | 11752 | return (float64x1_t) {__builtin_fabs (__a[0])}; |
2d67c34c | 11753 | } |
8111d37b | 11754 | |
49ab9992 | 11755 | __extension__ extern __inline int8x8_t |
11756 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11757 | vabs_s8 (int8x8_t __a) |
11758 | { | |
11759 | return __builtin_aarch64_absv8qi (__a); | |
11760 | } | |
8111d37b | 11761 | |
49ab9992 | 11762 | __extension__ extern __inline int16x4_t |
11763 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11764 | vabs_s16 (int16x4_t __a) |
11765 | { | |
11766 | return __builtin_aarch64_absv4hi (__a); | |
11767 | } | |
8111d37b | 11768 | |
49ab9992 | 11769 | __extension__ extern __inline int32x2_t |
11770 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11771 | vabs_s32 (int32x2_t __a) |
11772 | { | |
11773 | return __builtin_aarch64_absv2si (__a); | |
11774 | } | |
8111d37b | 11775 | |
49ab9992 | 11776 | __extension__ extern __inline int64x1_t |
11777 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11778 | vabs_s64 (int64x1_t __a) |
8111d37b | 11779 | { |
12fc7207 | 11780 | return (int64x1_t) {__builtin_aarch64_absdi (__a[0])}; |
8111d37b | 11781 | } |
11782 | ||
49ab9992 | 11783 | __extension__ extern __inline float32x4_t |
11784 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11785 | vabsq_f32 (float32x4_t __a) |
8111d37b | 11786 | { |
2d67c34c | 11787 | return __builtin_aarch64_absv4sf (__a); |
11788 | } | |
11789 | ||
49ab9992 | 11790 | __extension__ extern __inline float64x2_t |
11791 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11792 | vabsq_f64 (float64x2_t __a) |
11793 | { | |
11794 | return __builtin_aarch64_absv2df (__a); | |
11795 | } | |
11796 | ||
49ab9992 | 11797 | __extension__ extern __inline int8x16_t |
11798 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11799 | vabsq_s8 (int8x16_t __a) |
11800 | { | |
11801 | return __builtin_aarch64_absv16qi (__a); | |
11802 | } | |
11803 | ||
49ab9992 | 11804 | __extension__ extern __inline int16x8_t |
11805 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11806 | vabsq_s16 (int16x8_t __a) |
11807 | { | |
11808 | return __builtin_aarch64_absv8hi (__a); | |
11809 | } | |
11810 | ||
49ab9992 | 11811 | __extension__ extern __inline int32x4_t |
11812 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11813 | vabsq_s32 (int32x4_t __a) |
11814 | { | |
11815 | return __builtin_aarch64_absv4si (__a); | |
11816 | } | |
11817 | ||
49ab9992 | 11818 | __extension__ extern __inline int64x2_t |
11819 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11820 | vabsq_s64 (int64x2_t __a) |
11821 | { | |
11822 | return __builtin_aarch64_absv2di (__a); | |
8111d37b | 11823 | } |
11824 | ||
0d7050df | 11825 | /* Try to avoid moving between integer and vector registers. |
11826 | For why the cast to unsigned is needed check the vnegd_s64 intrinsic. | |
11827 | There is a testcase related to this issue: | |
11828 | gcc.target/aarch64/vabsd_s64.c. */ | |
11829 | ||
11830 | __extension__ extern __inline int64_t | |
11831 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
11832 | vabsd_s64 (int64_t __a) | |
11833 | { | |
11834 | return __a < 0 ? - (uint64_t) __a : __a; | |
11835 | } | |
11836 | ||
2d67c34c | 11837 | /* vadd */ |
11838 | ||
49ab9992 | 11839 | __extension__ extern __inline int64_t |
11840 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 11841 | vaddd_s64 (int64_t __a, int64_t __b) |
8111d37b | 11842 | { |
2d67c34c | 11843 | return __a + __b; |
8111d37b | 11844 | } |
11845 | ||
49ab9992 | 11846 | __extension__ extern __inline uint64_t |
11847 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 11848 | vaddd_u64 (uint64_t __a, uint64_t __b) |
8111d37b | 11849 | { |
2d67c34c | 11850 | return __a + __b; |
8111d37b | 11851 | } |
11852 | ||
2d67c34c | 11853 | /* vaddv */ |
11854 | ||
49ab9992 | 11855 | __extension__ extern __inline int8_t |
11856 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11857 | vaddv_s8 (int8x8_t __a) |
11858 | { | |
06329b36 | 11859 | return __builtin_aarch64_reduc_plus_scal_v8qi (__a); |
2d67c34c | 11860 | } |
11861 | ||
49ab9992 | 11862 | __extension__ extern __inline int16_t |
11863 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11864 | vaddv_s16 (int16x4_t __a) |
11865 | { | |
06329b36 | 11866 | return __builtin_aarch64_reduc_plus_scal_v4hi (__a); |
2d67c34c | 11867 | } |
11868 | ||
49ab9992 | 11869 | __extension__ extern __inline int32_t |
11870 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11871 | vaddv_s32 (int32x2_t __a) |
8111d37b | 11872 | { |
06329b36 | 11873 | return __builtin_aarch64_reduc_plus_scal_v2si (__a); |
8111d37b | 11874 | } |
11875 | ||
49ab9992 | 11876 | __extension__ extern __inline uint8_t |
11877 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11878 | vaddv_u8 (uint8x8_t __a) |
8111d37b | 11879 | { |
06329b36 | 11880 | return (uint8_t) __builtin_aarch64_reduc_plus_scal_v8qi ((int8x8_t) __a); |
8111d37b | 11881 | } |
11882 | ||
49ab9992 | 11883 | __extension__ extern __inline uint16_t |
11884 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11885 | vaddv_u16 (uint16x4_t __a) |
8111d37b | 11886 | { |
06329b36 | 11887 | return (uint16_t) __builtin_aarch64_reduc_plus_scal_v4hi ((int16x4_t) __a); |
8111d37b | 11888 | } |
11889 | ||
49ab9992 | 11890 | __extension__ extern __inline uint32_t |
11891 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11892 | vaddv_u32 (uint32x2_t __a) |
8111d37b | 11893 | { |
06329b36 | 11894 | return (int32_t) __builtin_aarch64_reduc_plus_scal_v2si ((int32x2_t) __a); |
8111d37b | 11895 | } |
11896 | ||
49ab9992 | 11897 | __extension__ extern __inline int8_t |
11898 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11899 | vaddvq_s8 (int8x16_t __a) |
8111d37b | 11900 | { |
06329b36 | 11901 | return __builtin_aarch64_reduc_plus_scal_v16qi (__a); |
8111d37b | 11902 | } |
11903 | ||
49ab9992 | 11904 | __extension__ extern __inline int16_t |
11905 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11906 | vaddvq_s16 (int16x8_t __a) |
8111d37b | 11907 | { |
06329b36 | 11908 | return __builtin_aarch64_reduc_plus_scal_v8hi (__a); |
8111d37b | 11909 | } |
11910 | ||
49ab9992 | 11911 | __extension__ extern __inline int32_t |
11912 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11913 | vaddvq_s32 (int32x4_t __a) |
8111d37b | 11914 | { |
06329b36 | 11915 | return __builtin_aarch64_reduc_plus_scal_v4si (__a); |
8111d37b | 11916 | } |
11917 | ||
49ab9992 | 11918 | __extension__ extern __inline int64_t |
11919 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11920 | vaddvq_s64 (int64x2_t __a) |
8111d37b | 11921 | { |
06329b36 | 11922 | return __builtin_aarch64_reduc_plus_scal_v2di (__a); |
8111d37b | 11923 | } |
11924 | ||
49ab9992 | 11925 | __extension__ extern __inline uint8_t |
11926 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11927 | vaddvq_u8 (uint8x16_t __a) |
8111d37b | 11928 | { |
06329b36 | 11929 | return (uint8_t) __builtin_aarch64_reduc_plus_scal_v16qi ((int8x16_t) __a); |
8111d37b | 11930 | } |
11931 | ||
49ab9992 | 11932 | __extension__ extern __inline uint16_t |
11933 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11934 | vaddvq_u16 (uint16x8_t __a) |
8111d37b | 11935 | { |
06329b36 | 11936 | return (uint16_t) __builtin_aarch64_reduc_plus_scal_v8hi ((int16x8_t) __a); |
8111d37b | 11937 | } |
11938 | ||
49ab9992 | 11939 | __extension__ extern __inline uint32_t |
11940 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11941 | vaddvq_u32 (uint32x4_t __a) |
8111d37b | 11942 | { |
06329b36 | 11943 | return (uint32_t) __builtin_aarch64_reduc_plus_scal_v4si ((int32x4_t) __a); |
8111d37b | 11944 | } |
11945 | ||
49ab9992 | 11946 | __extension__ extern __inline uint64_t |
11947 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11948 | vaddvq_u64 (uint64x2_t __a) |
8111d37b | 11949 | { |
06329b36 | 11950 | return (uint64_t) __builtin_aarch64_reduc_plus_scal_v2di ((int64x2_t) __a); |
8111d37b | 11951 | } |
11952 | ||
49ab9992 | 11953 | __extension__ extern __inline float32_t |
11954 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11955 | vaddv_f32 (float32x2_t __a) |
8111d37b | 11956 | { |
06329b36 | 11957 | return __builtin_aarch64_reduc_plus_scal_v2sf (__a); |
8111d37b | 11958 | } |
11959 | ||
49ab9992 | 11960 | __extension__ extern __inline float32_t |
11961 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11962 | vaddvq_f32 (float32x4_t __a) |
8111d37b | 11963 | { |
06329b36 | 11964 | return __builtin_aarch64_reduc_plus_scal_v4sf (__a); |
8111d37b | 11965 | } |
11966 | ||
49ab9992 | 11967 | __extension__ extern __inline float64_t |
11968 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 11969 | vaddvq_f64 (float64x2_t __a) |
8111d37b | 11970 | { |
06329b36 | 11971 | return __builtin_aarch64_reduc_plus_scal_v2df (__a); |
8111d37b | 11972 | } |
11973 | ||
408987fb | 11974 | /* vbsl */ |
11975 | ||
49ab9992 | 11976 | __extension__ extern __inline float16x4_t |
11977 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 11978 | vbsl_f16 (uint16x4_t __a, float16x4_t __b, float16x4_t __c) |
11979 | { | |
11980 | return __builtin_aarch64_simd_bslv4hf_suss (__a, __b, __c); | |
11981 | } | |
11982 | ||
49ab9992 | 11983 | __extension__ extern __inline float32x2_t |
11984 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 11985 | vbsl_f32 (uint32x2_t __a, float32x2_t __b, float32x2_t __c) |
11986 | { | |
11987 | return __builtin_aarch64_simd_bslv2sf_suss (__a, __b, __c); | |
11988 | } | |
11989 | ||
49ab9992 | 11990 | __extension__ extern __inline float64x1_t |
11991 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8056dfaa | 11992 | vbsl_f64 (uint64x1_t __a, float64x1_t __b, float64x1_t __c) |
11993 | { | |
11994 | return (float64x1_t) | |
11995 | { __builtin_aarch64_simd_bsldf_suss (__a[0], __b[0], __c[0]) }; | |
11996 | } | |
11997 | ||
49ab9992 | 11998 | __extension__ extern __inline poly8x8_t |
11999 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12000 | vbsl_p8 (uint8x8_t __a, poly8x8_t __b, poly8x8_t __c) |
12001 | { | |
12002 | return __builtin_aarch64_simd_bslv8qi_pupp (__a, __b, __c); | |
12003 | } | |
12004 | ||
49ab9992 | 12005 | __extension__ extern __inline poly16x4_t |
12006 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12007 | vbsl_p16 (uint16x4_t __a, poly16x4_t __b, poly16x4_t __c) |
12008 | { | |
12009 | return __builtin_aarch64_simd_bslv4hi_pupp (__a, __b, __c); | |
12010 | } | |
34d20d5f | 12011 | __extension__ extern __inline poly64x1_t |
12012 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12013 | vbsl_p64 (uint64x1_t __a, poly64x1_t __b, poly64x1_t __c) | |
12014 | { | |
12015 | return (poly64x1_t) | |
12016 | {__builtin_aarch64_simd_bsldi_pupp (__a[0], __b[0], __c[0])}; | |
12017 | } | |
408987fb | 12018 | |
49ab9992 | 12019 | __extension__ extern __inline int8x8_t |
12020 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12021 | vbsl_s8 (uint8x8_t __a, int8x8_t __b, int8x8_t __c) |
12022 | { | |
12023 | return __builtin_aarch64_simd_bslv8qi_suss (__a, __b, __c); | |
12024 | } | |
12025 | ||
49ab9992 | 12026 | __extension__ extern __inline int16x4_t |
12027 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12028 | vbsl_s16 (uint16x4_t __a, int16x4_t __b, int16x4_t __c) |
12029 | { | |
12030 | return __builtin_aarch64_simd_bslv4hi_suss (__a, __b, __c); | |
12031 | } | |
12032 | ||
49ab9992 | 12033 | __extension__ extern __inline int32x2_t |
12034 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12035 | vbsl_s32 (uint32x2_t __a, int32x2_t __b, int32x2_t __c) |
12036 | { | |
12037 | return __builtin_aarch64_simd_bslv2si_suss (__a, __b, __c); | |
12038 | } | |
12039 | ||
49ab9992 | 12040 | __extension__ extern __inline int64x1_t |
12041 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12042 | vbsl_s64 (uint64x1_t __a, int64x1_t __b, int64x1_t __c) |
12043 | { | |
12fc7207 | 12044 | return (int64x1_t) |
12045 | {__builtin_aarch64_simd_bsldi_suss (__a[0], __b[0], __c[0])}; | |
408987fb | 12046 | } |
12047 | ||
49ab9992 | 12048 | __extension__ extern __inline uint8x8_t |
12049 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12050 | vbsl_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c) |
12051 | { | |
12052 | return __builtin_aarch64_simd_bslv8qi_uuuu (__a, __b, __c); | |
12053 | } | |
12054 | ||
49ab9992 | 12055 | __extension__ extern __inline uint16x4_t |
12056 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12057 | vbsl_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c) |
12058 | { | |
12059 | return __builtin_aarch64_simd_bslv4hi_uuuu (__a, __b, __c); | |
12060 | } | |
12061 | ||
49ab9992 | 12062 | __extension__ extern __inline uint32x2_t |
12063 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12064 | vbsl_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c) |
12065 | { | |
12066 | return __builtin_aarch64_simd_bslv2si_uuuu (__a, __b, __c); | |
12067 | } | |
12068 | ||
49ab9992 | 12069 | __extension__ extern __inline uint64x1_t |
12070 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12071 | vbsl_u64 (uint64x1_t __a, uint64x1_t __b, uint64x1_t __c) |
12072 | { | |
12fc7207 | 12073 | return (uint64x1_t) |
12074 | {__builtin_aarch64_simd_bsldi_uuuu (__a[0], __b[0], __c[0])}; | |
408987fb | 12075 | } |
12076 | ||
49ab9992 | 12077 | __extension__ extern __inline float16x8_t |
12078 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 12079 | vbslq_f16 (uint16x8_t __a, float16x8_t __b, float16x8_t __c) |
12080 | { | |
12081 | return __builtin_aarch64_simd_bslv8hf_suss (__a, __b, __c); | |
12082 | } | |
12083 | ||
49ab9992 | 12084 | __extension__ extern __inline float32x4_t |
12085 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12086 | vbslq_f32 (uint32x4_t __a, float32x4_t __b, float32x4_t __c) |
12087 | { | |
12088 | return __builtin_aarch64_simd_bslv4sf_suss (__a, __b, __c); | |
12089 | } | |
12090 | ||
49ab9992 | 12091 | __extension__ extern __inline float64x2_t |
12092 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12093 | vbslq_f64 (uint64x2_t __a, float64x2_t __b, float64x2_t __c) |
12094 | { | |
12095 | return __builtin_aarch64_simd_bslv2df_suss (__a, __b, __c); | |
12096 | } | |
12097 | ||
49ab9992 | 12098 | __extension__ extern __inline poly8x16_t |
12099 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12100 | vbslq_p8 (uint8x16_t __a, poly8x16_t __b, poly8x16_t __c) |
12101 | { | |
12102 | return __builtin_aarch64_simd_bslv16qi_pupp (__a, __b, __c); | |
12103 | } | |
12104 | ||
49ab9992 | 12105 | __extension__ extern __inline poly16x8_t |
12106 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12107 | vbslq_p16 (uint16x8_t __a, poly16x8_t __b, poly16x8_t __c) |
12108 | { | |
12109 | return __builtin_aarch64_simd_bslv8hi_pupp (__a, __b, __c); | |
12110 | } | |
12111 | ||
49ab9992 | 12112 | __extension__ extern __inline int8x16_t |
12113 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12114 | vbslq_s8 (uint8x16_t __a, int8x16_t __b, int8x16_t __c) |
12115 | { | |
12116 | return __builtin_aarch64_simd_bslv16qi_suss (__a, __b, __c); | |
12117 | } | |
12118 | ||
49ab9992 | 12119 | __extension__ extern __inline int16x8_t |
12120 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12121 | vbslq_s16 (uint16x8_t __a, int16x8_t __b, int16x8_t __c) |
12122 | { | |
12123 | return __builtin_aarch64_simd_bslv8hi_suss (__a, __b, __c); | |
12124 | } | |
12125 | ||
34d20d5f | 12126 | __extension__ extern __inline poly64x2_t |
12127 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12128 | vbslq_p64 (uint64x2_t __a, poly64x2_t __b, poly64x2_t __c) | |
12129 | { | |
12130 | return __builtin_aarch64_simd_bslv2di_pupp (__a, __b, __c); | |
12131 | } | |
12132 | ||
49ab9992 | 12133 | __extension__ extern __inline int32x4_t |
12134 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12135 | vbslq_s32 (uint32x4_t __a, int32x4_t __b, int32x4_t __c) |
12136 | { | |
12137 | return __builtin_aarch64_simd_bslv4si_suss (__a, __b, __c); | |
12138 | } | |
12139 | ||
49ab9992 | 12140 | __extension__ extern __inline int64x2_t |
12141 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12142 | vbslq_s64 (uint64x2_t __a, int64x2_t __b, int64x2_t __c) |
12143 | { | |
12144 | return __builtin_aarch64_simd_bslv2di_suss (__a, __b, __c); | |
12145 | } | |
12146 | ||
49ab9992 | 12147 | __extension__ extern __inline uint8x16_t |
12148 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12149 | vbslq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c) |
12150 | { | |
12151 | return __builtin_aarch64_simd_bslv16qi_uuuu (__a, __b, __c); | |
12152 | } | |
12153 | ||
49ab9992 | 12154 | __extension__ extern __inline uint16x8_t |
12155 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12156 | vbslq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) |
12157 | { | |
12158 | return __builtin_aarch64_simd_bslv8hi_uuuu (__a, __b, __c); | |
12159 | } | |
12160 | ||
49ab9992 | 12161 | __extension__ extern __inline uint32x4_t |
12162 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12163 | vbslq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) |
12164 | { | |
12165 | return __builtin_aarch64_simd_bslv4si_uuuu (__a, __b, __c); | |
12166 | } | |
12167 | ||
49ab9992 | 12168 | __extension__ extern __inline uint64x2_t |
12169 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
408987fb | 12170 | vbslq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) |
12171 | { | |
12172 | return __builtin_aarch64_simd_bslv2di_uuuu (__a, __b, __c); | |
12173 | } | |
12174 | ||
5428a1a6 | 12175 | /* ARMv8.1-A instrinsics. */ |
b0f9c5d7 | 12176 | #pragma GCC push_options |
5db6473a | 12177 | #pragma GCC target ("+nothing+rdma") |
b0f9c5d7 | 12178 | |
49ab9992 | 12179 | __extension__ extern __inline int16x4_t |
12180 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b0f9c5d7 | 12181 | vqrdmlah_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c) |
12182 | { | |
12183 | return __builtin_aarch64_sqrdmlahv4hi (__a, __b, __c); | |
12184 | } | |
12185 | ||
49ab9992 | 12186 | __extension__ extern __inline int32x2_t |
12187 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b0f9c5d7 | 12188 | vqrdmlah_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c) |
12189 | { | |
12190 | return __builtin_aarch64_sqrdmlahv2si (__a, __b, __c); | |
12191 | } | |
12192 | ||
49ab9992 | 12193 | __extension__ extern __inline int16x8_t |
12194 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b0f9c5d7 | 12195 | vqrdmlahq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) |
12196 | { | |
12197 | return __builtin_aarch64_sqrdmlahv8hi (__a, __b, __c); | |
12198 | } | |
12199 | ||
49ab9992 | 12200 | __extension__ extern __inline int32x4_t |
12201 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b0f9c5d7 | 12202 | vqrdmlahq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) |
12203 | { | |
12204 | return __builtin_aarch64_sqrdmlahv4si (__a, __b, __c); | |
12205 | } | |
12206 | ||
49ab9992 | 12207 | __extension__ extern __inline int16x4_t |
12208 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b0f9c5d7 | 12209 | vqrdmlsh_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c) |
12210 | { | |
12211 | return __builtin_aarch64_sqrdmlshv4hi (__a, __b, __c); | |
12212 | } | |
12213 | ||
49ab9992 | 12214 | __extension__ extern __inline int32x2_t |
12215 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b0f9c5d7 | 12216 | vqrdmlsh_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c) |
12217 | { | |
12218 | return __builtin_aarch64_sqrdmlshv2si (__a, __b, __c); | |
12219 | } | |
12220 | ||
49ab9992 | 12221 | __extension__ extern __inline int16x8_t |
12222 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b0f9c5d7 | 12223 | vqrdmlshq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) |
12224 | { | |
12225 | return __builtin_aarch64_sqrdmlshv8hi (__a, __b, __c); | |
12226 | } | |
12227 | ||
49ab9992 | 12228 | __extension__ extern __inline int32x4_t |
12229 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b0f9c5d7 | 12230 | vqrdmlshq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) |
12231 | { | |
12232 | return __builtin_aarch64_sqrdmlshv4si (__a, __b, __c); | |
12233 | } | |
c1ae9aa2 | 12234 | |
49ab9992 | 12235 | __extension__ extern __inline int16x4_t |
12236 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12237 | vqrdmlah_laneq_s16 (int16x4_t __a, int16x4_t __b, int16x8_t __c, const int __d) |
12238 | { | |
12239 | return __builtin_aarch64_sqrdmlah_laneqv4hi (__a, __b, __c, __d); | |
12240 | } | |
12241 | ||
49ab9992 | 12242 | __extension__ extern __inline int32x2_t |
12243 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12244 | vqrdmlah_laneq_s32 (int32x2_t __a, int32x2_t __b, int32x4_t __c, const int __d) |
12245 | { | |
12246 | return __builtin_aarch64_sqrdmlah_laneqv2si (__a, __b, __c, __d); | |
12247 | } | |
12248 | ||
49ab9992 | 12249 | __extension__ extern __inline int16x8_t |
12250 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12251 | vqrdmlahq_laneq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c, const int __d) |
12252 | { | |
12253 | return __builtin_aarch64_sqrdmlah_laneqv8hi (__a, __b, __c, __d); | |
12254 | } | |
12255 | ||
49ab9992 | 12256 | __extension__ extern __inline int32x4_t |
12257 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12258 | vqrdmlahq_laneq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c, const int __d) |
12259 | { | |
12260 | return __builtin_aarch64_sqrdmlah_laneqv4si (__a, __b, __c, __d); | |
12261 | } | |
12262 | ||
49ab9992 | 12263 | __extension__ extern __inline int16x4_t |
12264 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12265 | vqrdmlsh_laneq_s16 (int16x4_t __a, int16x4_t __b, int16x8_t __c, const int __d) |
12266 | { | |
12267 | return __builtin_aarch64_sqrdmlsh_laneqv4hi (__a, __b, __c, __d); | |
12268 | } | |
12269 | ||
49ab9992 | 12270 | __extension__ extern __inline int32x2_t |
12271 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12272 | vqrdmlsh_laneq_s32 (int32x2_t __a, int32x2_t __b, int32x4_t __c, const int __d) |
12273 | { | |
12274 | return __builtin_aarch64_sqrdmlsh_laneqv2si (__a, __b, __c, __d); | |
12275 | } | |
12276 | ||
49ab9992 | 12277 | __extension__ extern __inline int16x8_t |
12278 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12279 | vqrdmlshq_laneq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c, const int __d) |
12280 | { | |
12281 | return __builtin_aarch64_sqrdmlsh_laneqv8hi (__a, __b, __c, __d); | |
12282 | } | |
12283 | ||
49ab9992 | 12284 | __extension__ extern __inline int32x4_t |
12285 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12286 | vqrdmlshq_laneq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c, const int __d) |
12287 | { | |
12288 | return __builtin_aarch64_sqrdmlsh_laneqv4si (__a, __b, __c, __d); | |
12289 | } | |
12290 | ||
49ab9992 | 12291 | __extension__ extern __inline int16x4_t |
12292 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12293 | vqrdmlah_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d) |
12294 | { | |
12295 | return __builtin_aarch64_sqrdmlah_lanev4hi (__a, __b, __c, __d); | |
12296 | } | |
12297 | ||
49ab9992 | 12298 | __extension__ extern __inline int32x2_t |
12299 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12300 | vqrdmlah_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d) |
12301 | { | |
12302 | return __builtin_aarch64_sqrdmlah_lanev2si (__a, __b, __c, __d); | |
12303 | } | |
12304 | ||
49ab9992 | 12305 | __extension__ extern __inline int16x8_t |
12306 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12307 | vqrdmlahq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d) |
12308 | { | |
12309 | return __builtin_aarch64_sqrdmlah_lanev8hi (__a, __b, __c, __d); | |
12310 | } | |
12311 | ||
49ab9992 | 12312 | __extension__ extern __inline int32x4_t |
12313 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12314 | vqrdmlahq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d) |
12315 | { | |
12316 | return __builtin_aarch64_sqrdmlah_lanev4si (__a, __b, __c, __d); | |
12317 | } | |
12318 | ||
49ab9992 | 12319 | __extension__ extern __inline int16_t |
12320 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12321 | vqrdmlahh_s16 (int16_t __a, int16_t __b, int16_t __c) |
12322 | { | |
12323 | return (int16_t) __builtin_aarch64_sqrdmlahhi (__a, __b, __c); | |
12324 | } | |
12325 | ||
49ab9992 | 12326 | __extension__ extern __inline int16_t |
12327 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12328 | vqrdmlahh_lane_s16 (int16_t __a, int16_t __b, int16x4_t __c, const int __d) |
12329 | { | |
12330 | return __builtin_aarch64_sqrdmlah_lanehi (__a, __b, __c, __d); | |
12331 | } | |
12332 | ||
49ab9992 | 12333 | __extension__ extern __inline int16_t |
12334 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12335 | vqrdmlahh_laneq_s16 (int16_t __a, int16_t __b, int16x8_t __c, const int __d) |
12336 | { | |
12337 | return __builtin_aarch64_sqrdmlah_laneqhi (__a, __b, __c, __d); | |
12338 | } | |
12339 | ||
49ab9992 | 12340 | __extension__ extern __inline int32_t |
12341 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12342 | vqrdmlahs_s32 (int32_t __a, int32_t __b, int32_t __c) |
12343 | { | |
12344 | return (int32_t) __builtin_aarch64_sqrdmlahsi (__a, __b, __c); | |
12345 | } | |
12346 | ||
49ab9992 | 12347 | __extension__ extern __inline int32_t |
12348 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12349 | vqrdmlahs_lane_s32 (int32_t __a, int32_t __b, int32x2_t __c, const int __d) |
12350 | { | |
12351 | return __builtin_aarch64_sqrdmlah_lanesi (__a, __b, __c, __d); | |
12352 | } | |
12353 | ||
49ab9992 | 12354 | __extension__ extern __inline int32_t |
12355 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12356 | vqrdmlahs_laneq_s32 (int32_t __a, int32_t __b, int32x4_t __c, const int __d) |
12357 | { | |
12358 | return __builtin_aarch64_sqrdmlah_laneqsi (__a, __b, __c, __d); | |
12359 | } | |
12360 | ||
49ab9992 | 12361 | __extension__ extern __inline int16x4_t |
12362 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12363 | vqrdmlsh_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d) |
12364 | { | |
12365 | return __builtin_aarch64_sqrdmlsh_lanev4hi (__a, __b, __c, __d); | |
12366 | } | |
12367 | ||
49ab9992 | 12368 | __extension__ extern __inline int32x2_t |
12369 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12370 | vqrdmlsh_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d) |
12371 | { | |
12372 | return __builtin_aarch64_sqrdmlsh_lanev2si (__a, __b, __c, __d); | |
12373 | } | |
12374 | ||
49ab9992 | 12375 | __extension__ extern __inline int16x8_t |
12376 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12377 | vqrdmlshq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d) |
12378 | { | |
12379 | return __builtin_aarch64_sqrdmlsh_lanev8hi (__a, __b, __c, __d); | |
12380 | } | |
12381 | ||
49ab9992 | 12382 | __extension__ extern __inline int32x4_t |
12383 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12384 | vqrdmlshq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d) |
12385 | { | |
12386 | return __builtin_aarch64_sqrdmlsh_lanev4si (__a, __b, __c, __d); | |
12387 | } | |
12388 | ||
49ab9992 | 12389 | __extension__ extern __inline int16_t |
12390 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12391 | vqrdmlshh_s16 (int16_t __a, int16_t __b, int16_t __c) |
12392 | { | |
12393 | return (int16_t) __builtin_aarch64_sqrdmlshhi (__a, __b, __c); | |
12394 | } | |
12395 | ||
49ab9992 | 12396 | __extension__ extern __inline int16_t |
12397 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12398 | vqrdmlshh_lane_s16 (int16_t __a, int16_t __b, int16x4_t __c, const int __d) |
12399 | { | |
12400 | return __builtin_aarch64_sqrdmlsh_lanehi (__a, __b, __c, __d); | |
12401 | } | |
12402 | ||
49ab9992 | 12403 | __extension__ extern __inline int16_t |
12404 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12405 | vqrdmlshh_laneq_s16 (int16_t __a, int16_t __b, int16x8_t __c, const int __d) |
12406 | { | |
12407 | return __builtin_aarch64_sqrdmlsh_laneqhi (__a, __b, __c, __d); | |
12408 | } | |
12409 | ||
49ab9992 | 12410 | __extension__ extern __inline int32_t |
12411 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12412 | vqrdmlshs_s32 (int32_t __a, int32_t __b, int32_t __c) |
12413 | { | |
12414 | return (int32_t) __builtin_aarch64_sqrdmlshsi (__a, __b, __c); | |
12415 | } | |
12416 | ||
49ab9992 | 12417 | __extension__ extern __inline int32_t |
12418 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12419 | vqrdmlshs_lane_s32 (int32_t __a, int32_t __b, int32x2_t __c, const int __d) |
12420 | { | |
12421 | return __builtin_aarch64_sqrdmlsh_lanesi (__a, __b, __c, __d); | |
12422 | } | |
12423 | ||
49ab9992 | 12424 | __extension__ extern __inline int32_t |
12425 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c1ae9aa2 | 12426 | vqrdmlshs_laneq_s32 (int32_t __a, int32_t __b, int32x4_t __c, const int __d) |
12427 | { | |
12428 | return __builtin_aarch64_sqrdmlsh_laneqsi (__a, __b, __c, __d); | |
12429 | } | |
b0f9c5d7 | 12430 | #pragma GCC pop_options |
12431 | ||
26db5325 | 12432 | #pragma GCC push_options |
12433 | #pragma GCC target ("+nothing+crypto") | |
90513b03 | 12434 | /* vaes */ |
12435 | ||
49ab9992 | 12436 | __extension__ extern __inline uint8x16_t |
12437 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
90513b03 | 12438 | vaeseq_u8 (uint8x16_t data, uint8x16_t key) |
12439 | { | |
12440 | return __builtin_aarch64_crypto_aesev16qi_uuu (data, key); | |
12441 | } | |
12442 | ||
49ab9992 | 12443 | __extension__ extern __inline uint8x16_t |
12444 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
90513b03 | 12445 | vaesdq_u8 (uint8x16_t data, uint8x16_t key) |
12446 | { | |
12447 | return __builtin_aarch64_crypto_aesdv16qi_uuu (data, key); | |
12448 | } | |
12449 | ||
49ab9992 | 12450 | __extension__ extern __inline uint8x16_t |
12451 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
90513b03 | 12452 | vaesmcq_u8 (uint8x16_t data) |
12453 | { | |
12454 | return __builtin_aarch64_crypto_aesmcv16qi_uu (data); | |
12455 | } | |
12456 | ||
49ab9992 | 12457 | __extension__ extern __inline uint8x16_t |
12458 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
90513b03 | 12459 | vaesimcq_u8 (uint8x16_t data) |
12460 | { | |
12461 | return __builtin_aarch64_crypto_aesimcv16qi_uu (data); | |
12462 | } | |
26db5325 | 12463 | #pragma GCC pop_options |
90513b03 | 12464 | |
2d67c34c | 12465 | /* vcage */ |
12466 | ||
49ab9992 | 12467 | __extension__ extern __inline uint64x1_t |
12468 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b08f19aa | 12469 | vcage_f64 (float64x1_t __a, float64x1_t __b) |
12470 | { | |
12471 | return vabs_f64 (__a) >= vabs_f64 (__b); | |
12472 | } | |
12473 | ||
49ab9992 | 12474 | __extension__ extern __inline uint32_t |
12475 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12476 | vcages_f32 (float32_t __a, float32_t __b) |
8111d37b | 12477 | { |
2d67c34c | 12478 | return __builtin_fabsf (__a) >= __builtin_fabsf (__b) ? -1 : 0; |
8111d37b | 12479 | } |
12480 | ||
49ab9992 | 12481 | __extension__ extern __inline uint32x2_t |
12482 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12483 | vcage_f32 (float32x2_t __a, float32x2_t __b) |
8111d37b | 12484 | { |
2d67c34c | 12485 | return vabs_f32 (__a) >= vabs_f32 (__b); |
8111d37b | 12486 | } |
12487 | ||
49ab9992 | 12488 | __extension__ extern __inline uint32x4_t |
12489 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12490 | vcageq_f32 (float32x4_t __a, float32x4_t __b) |
8111d37b | 12491 | { |
2d67c34c | 12492 | return vabsq_f32 (__a) >= vabsq_f32 (__b); |
8111d37b | 12493 | } |
12494 | ||
49ab9992 | 12495 | __extension__ extern __inline uint64_t |
12496 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12497 | vcaged_f64 (float64_t __a, float64_t __b) |
8111d37b | 12498 | { |
2d67c34c | 12499 | return __builtin_fabs (__a) >= __builtin_fabs (__b) ? -1 : 0; |
8111d37b | 12500 | } |
12501 | ||
49ab9992 | 12502 | __extension__ extern __inline uint64x2_t |
12503 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12504 | vcageq_f64 (float64x2_t __a, float64x2_t __b) |
8111d37b | 12505 | { |
2d67c34c | 12506 | return vabsq_f64 (__a) >= vabsq_f64 (__b); |
8111d37b | 12507 | } |
12508 | ||
2d67c34c | 12509 | /* vcagt */ |
12510 | ||
49ab9992 | 12511 | __extension__ extern __inline uint32_t |
12512 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12513 | vcagts_f32 (float32_t __a, float32_t __b) |
8111d37b | 12514 | { |
2d67c34c | 12515 | return __builtin_fabsf (__a) > __builtin_fabsf (__b) ? -1 : 0; |
8111d37b | 12516 | } |
12517 | ||
49ab9992 | 12518 | __extension__ extern __inline uint32x2_t |
12519 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12520 | vcagt_f32 (float32x2_t __a, float32x2_t __b) |
8111d37b | 12521 | { |
2d67c34c | 12522 | return vabs_f32 (__a) > vabs_f32 (__b); |
8111d37b | 12523 | } |
12524 | ||
49ab9992 | 12525 | __extension__ extern __inline uint64x1_t |
12526 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b08f19aa | 12527 | vcagt_f64 (float64x1_t __a, float64x1_t __b) |
12528 | { | |
12529 | return vabs_f64 (__a) > vabs_f64 (__b); | |
12530 | } | |
12531 | ||
49ab9992 | 12532 | __extension__ extern __inline uint32x4_t |
12533 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12534 | vcagtq_f32 (float32x4_t __a, float32x4_t __b) |
8111d37b | 12535 | { |
2d67c34c | 12536 | return vabsq_f32 (__a) > vabsq_f32 (__b); |
8111d37b | 12537 | } |
12538 | ||
49ab9992 | 12539 | __extension__ extern __inline uint64_t |
12540 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12541 | vcagtd_f64 (float64_t __a, float64_t __b) |
8111d37b | 12542 | { |
2d67c34c | 12543 | return __builtin_fabs (__a) > __builtin_fabs (__b) ? -1 : 0; |
8111d37b | 12544 | } |
12545 | ||
49ab9992 | 12546 | __extension__ extern __inline uint64x2_t |
12547 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12548 | vcagtq_f64 (float64x2_t __a, float64x2_t __b) |
8111d37b | 12549 | { |
2d67c34c | 12550 | return vabsq_f64 (__a) > vabsq_f64 (__b); |
8111d37b | 12551 | } |
12552 | ||
2d67c34c | 12553 | /* vcale */ |
12554 | ||
49ab9992 | 12555 | __extension__ extern __inline uint32x2_t |
12556 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12557 | vcale_f32 (float32x2_t __a, float32x2_t __b) |
8111d37b | 12558 | { |
2d67c34c | 12559 | return vabs_f32 (__a) <= vabs_f32 (__b); |
8111d37b | 12560 | } |
12561 | ||
49ab9992 | 12562 | __extension__ extern __inline uint64x1_t |
12563 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b08f19aa | 12564 | vcale_f64 (float64x1_t __a, float64x1_t __b) |
12565 | { | |
12566 | return vabs_f64 (__a) <= vabs_f64 (__b); | |
12567 | } | |
12568 | ||
49ab9992 | 12569 | __extension__ extern __inline uint64_t |
12570 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b08f19aa | 12571 | vcaled_f64 (float64_t __a, float64_t __b) |
12572 | { | |
12573 | return __builtin_fabs (__a) <= __builtin_fabs (__b) ? -1 : 0; | |
12574 | } | |
12575 | ||
49ab9992 | 12576 | __extension__ extern __inline uint32_t |
12577 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b08f19aa | 12578 | vcales_f32 (float32_t __a, float32_t __b) |
12579 | { | |
12580 | return __builtin_fabsf (__a) <= __builtin_fabsf (__b) ? -1 : 0; | |
12581 | } | |
12582 | ||
49ab9992 | 12583 | __extension__ extern __inline uint32x4_t |
12584 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12585 | vcaleq_f32 (float32x4_t __a, float32x4_t __b) |
8111d37b | 12586 | { |
2d67c34c | 12587 | return vabsq_f32 (__a) <= vabsq_f32 (__b); |
8111d37b | 12588 | } |
12589 | ||
49ab9992 | 12590 | __extension__ extern __inline uint64x2_t |
12591 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12592 | vcaleq_f64 (float64x2_t __a, float64x2_t __b) |
8111d37b | 12593 | { |
2d67c34c | 12594 | return vabsq_f64 (__a) <= vabsq_f64 (__b); |
8111d37b | 12595 | } |
12596 | ||
2d67c34c | 12597 | /* vcalt */ |
8111d37b | 12598 | |
49ab9992 | 12599 | __extension__ extern __inline uint32x2_t |
12600 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12601 | vcalt_f32 (float32x2_t __a, float32x2_t __b) |
8111d37b | 12602 | { |
2d67c34c | 12603 | return vabs_f32 (__a) < vabs_f32 (__b); |
8111d37b | 12604 | } |
12605 | ||
49ab9992 | 12606 | __extension__ extern __inline uint64x1_t |
12607 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b08f19aa | 12608 | vcalt_f64 (float64x1_t __a, float64x1_t __b) |
12609 | { | |
12610 | return vabs_f64 (__a) < vabs_f64 (__b); | |
12611 | } | |
12612 | ||
49ab9992 | 12613 | __extension__ extern __inline uint64_t |
12614 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b08f19aa | 12615 | vcaltd_f64 (float64_t __a, float64_t __b) |
12616 | { | |
12617 | return __builtin_fabs (__a) < __builtin_fabs (__b) ? -1 : 0; | |
12618 | } | |
12619 | ||
49ab9992 | 12620 | __extension__ extern __inline uint32x4_t |
12621 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12622 | vcaltq_f32 (float32x4_t __a, float32x4_t __b) |
8111d37b | 12623 | { |
2d67c34c | 12624 | return vabsq_f32 (__a) < vabsq_f32 (__b); |
8111d37b | 12625 | } |
df401d54 | 12626 | |
49ab9992 | 12627 | __extension__ extern __inline uint64x2_t |
12628 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12629 | vcaltq_f64 (float64x2_t __a, float64x2_t __b) |
8111d37b | 12630 | { |
2d67c34c | 12631 | return vabsq_f64 (__a) < vabsq_f64 (__b); |
8111d37b | 12632 | } |
df401d54 | 12633 | |
49ab9992 | 12634 | __extension__ extern __inline uint32_t |
12635 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b08f19aa | 12636 | vcalts_f32 (float32_t __a, float32_t __b) |
12637 | { | |
12638 | return __builtin_fabsf (__a) < __builtin_fabsf (__b) ? -1 : 0; | |
12639 | } | |
12640 | ||
2d67c34c | 12641 | /* vceq - vector. */ |
df401d54 | 12642 | |
49ab9992 | 12643 | __extension__ extern __inline uint32x2_t |
12644 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12645 | vceq_f32 (float32x2_t __a, float32x2_t __b) |
8111d37b | 12646 | { |
e9611d1e | 12647 | return (uint32x2_t) (__a == __b); |
8111d37b | 12648 | } |
df401d54 | 12649 | |
49ab9992 | 12650 | __extension__ extern __inline uint64x1_t |
12651 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12652 | vceq_f64 (float64x1_t __a, float64x1_t __b) |
df401d54 | 12653 | { |
ac292ff5 | 12654 | return (uint64x1_t) (__a == __b); |
df401d54 | 12655 | } |
12656 | ||
49ab9992 | 12657 | __extension__ extern __inline uint8x8_t |
12658 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12659 | vceq_p8 (poly8x8_t __a, poly8x8_t __b) |
df401d54 | 12660 | { |
e9611d1e | 12661 | return (uint8x8_t) (__a == __b); |
df401d54 | 12662 | } |
12663 | ||
34d20d5f | 12664 | __extension__ extern __inline uint64x1_t |
12665 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12666 | vceq_p64 (poly64x1_t __a, poly64x1_t __b) | |
12667 | { | |
12668 | return (uint64x1_t) (__a == __b); | |
12669 | } | |
12670 | ||
49ab9992 | 12671 | __extension__ extern __inline uint8x8_t |
12672 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12673 | vceq_s8 (int8x8_t __a, int8x8_t __b) |
df401d54 | 12674 | { |
e9611d1e | 12675 | return (uint8x8_t) (__a == __b); |
df401d54 | 12676 | } |
12677 | ||
49ab9992 | 12678 | __extension__ extern __inline uint16x4_t |
12679 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12680 | vceq_s16 (int16x4_t __a, int16x4_t __b) |
df401d54 | 12681 | { |
e9611d1e | 12682 | return (uint16x4_t) (__a == __b); |
df401d54 | 12683 | } |
12684 | ||
49ab9992 | 12685 | __extension__ extern __inline uint32x2_t |
12686 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12687 | vceq_s32 (int32x2_t __a, int32x2_t __b) |
df401d54 | 12688 | { |
e9611d1e | 12689 | return (uint32x2_t) (__a == __b); |
df401d54 | 12690 | } |
12691 | ||
49ab9992 | 12692 | __extension__ extern __inline uint64x1_t |
12693 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12694 | vceq_s64 (int64x1_t __a, int64x1_t __b) |
df401d54 | 12695 | { |
dc3738cb | 12696 | return (uint64x1_t) (__a == __b); |
df401d54 | 12697 | } |
12698 | ||
49ab9992 | 12699 | __extension__ extern __inline uint8x8_t |
12700 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12701 | vceq_u8 (uint8x8_t __a, uint8x8_t __b) |
df401d54 | 12702 | { |
e9611d1e | 12703 | return (__a == __b); |
df401d54 | 12704 | } |
12705 | ||
49ab9992 | 12706 | __extension__ extern __inline uint16x4_t |
12707 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12708 | vceq_u16 (uint16x4_t __a, uint16x4_t __b) |
df401d54 | 12709 | { |
e9611d1e | 12710 | return (__a == __b); |
df401d54 | 12711 | } |
12712 | ||
49ab9992 | 12713 | __extension__ extern __inline uint32x2_t |
12714 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12715 | vceq_u32 (uint32x2_t __a, uint32x2_t __b) |
df401d54 | 12716 | { |
e9611d1e | 12717 | return (__a == __b); |
df401d54 | 12718 | } |
12719 | ||
49ab9992 | 12720 | __extension__ extern __inline uint64x1_t |
12721 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12722 | vceq_u64 (uint64x1_t __a, uint64x1_t __b) |
df401d54 | 12723 | { |
dc3738cb | 12724 | return (__a == __b); |
8111d37b | 12725 | } |
12726 | ||
49ab9992 | 12727 | __extension__ extern __inline uint32x4_t |
12728 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12729 | vceqq_f32 (float32x4_t __a, float32x4_t __b) |
8111d37b | 12730 | { |
e9611d1e | 12731 | return (uint32x4_t) (__a == __b); |
8111d37b | 12732 | } |
12733 | ||
49ab9992 | 12734 | __extension__ extern __inline uint64x2_t |
12735 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12736 | vceqq_f64 (float64x2_t __a, float64x2_t __b) |
12737 | { | |
e9611d1e | 12738 | return (uint64x2_t) (__a == __b); |
2d67c34c | 12739 | } |
8111d37b | 12740 | |
49ab9992 | 12741 | __extension__ extern __inline uint8x16_t |
12742 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12743 | vceqq_p8 (poly8x16_t __a, poly8x16_t __b) |
8111d37b | 12744 | { |
e9611d1e | 12745 | return (uint8x16_t) (__a == __b); |
df401d54 | 12746 | } |
12747 | ||
49ab9992 | 12748 | __extension__ extern __inline uint8x16_t |
12749 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12750 | vceqq_s8 (int8x16_t __a, int8x16_t __b) |
df401d54 | 12751 | { |
e9611d1e | 12752 | return (uint8x16_t) (__a == __b); |
df401d54 | 12753 | } |
12754 | ||
49ab9992 | 12755 | __extension__ extern __inline uint16x8_t |
12756 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12757 | vceqq_s16 (int16x8_t __a, int16x8_t __b) |
df401d54 | 12758 | { |
e9611d1e | 12759 | return (uint16x8_t) (__a == __b); |
df401d54 | 12760 | } |
12761 | ||
49ab9992 | 12762 | __extension__ extern __inline uint32x4_t |
12763 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12764 | vceqq_s32 (int32x4_t __a, int32x4_t __b) |
12765 | { | |
e9611d1e | 12766 | return (uint32x4_t) (__a == __b); |
2d67c34c | 12767 | } |
df401d54 | 12768 | |
49ab9992 | 12769 | __extension__ extern __inline uint64x2_t |
12770 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12771 | vceqq_s64 (int64x2_t __a, int64x2_t __b) |
df401d54 | 12772 | { |
e9611d1e | 12773 | return (uint64x2_t) (__a == __b); |
df401d54 | 12774 | } |
12775 | ||
49ab9992 | 12776 | __extension__ extern __inline uint8x16_t |
12777 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12778 | vceqq_u8 (uint8x16_t __a, uint8x16_t __b) |
df401d54 | 12779 | { |
e9611d1e | 12780 | return (__a == __b); |
df401d54 | 12781 | } |
12782 | ||
49ab9992 | 12783 | __extension__ extern __inline uint16x8_t |
12784 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12785 | vceqq_u16 (uint16x8_t __a, uint16x8_t __b) |
df401d54 | 12786 | { |
e9611d1e | 12787 | return (__a == __b); |
df401d54 | 12788 | } |
12789 | ||
49ab9992 | 12790 | __extension__ extern __inline uint32x4_t |
12791 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12792 | vceqq_u32 (uint32x4_t __a, uint32x4_t __b) |
df401d54 | 12793 | { |
e9611d1e | 12794 | return (__a == __b); |
df401d54 | 12795 | } |
12796 | ||
49ab9992 | 12797 | __extension__ extern __inline uint64x2_t |
12798 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12799 | vceqq_u64 (uint64x2_t __a, uint64x2_t __b) |
df401d54 | 12800 | { |
e9611d1e | 12801 | return (__a == __b); |
df401d54 | 12802 | } |
12803 | ||
2d67c34c | 12804 | /* vceq - scalar. */ |
12805 | ||
49ab9992 | 12806 | __extension__ extern __inline uint32_t |
12807 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12808 | vceqs_f32 (float32_t __a, float32_t __b) |
df401d54 | 12809 | { |
2d67c34c | 12810 | return __a == __b ? -1 : 0; |
df401d54 | 12811 | } |
12812 | ||
49ab9992 | 12813 | __extension__ extern __inline uint64_t |
12814 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 12815 | vceqd_s64 (int64_t __a, int64_t __b) |
df401d54 | 12816 | { |
2d67c34c | 12817 | return __a == __b ? -1ll : 0ll; |
df401d54 | 12818 | } |
12819 | ||
49ab9992 | 12820 | __extension__ extern __inline uint64_t |
12821 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 12822 | vceqd_u64 (uint64_t __a, uint64_t __b) |
df401d54 | 12823 | { |
2d67c34c | 12824 | return __a == __b ? -1ll : 0ll; |
df401d54 | 12825 | } |
12826 | ||
49ab9992 | 12827 | __extension__ extern __inline uint64_t |
12828 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12829 | vceqd_f64 (float64_t __a, float64_t __b) |
df401d54 | 12830 | { |
2d67c34c | 12831 | return __a == __b ? -1ll : 0ll; |
df401d54 | 12832 | } |
12833 | ||
2d67c34c | 12834 | /* vceqz - vector. */ |
8111d37b | 12835 | |
49ab9992 | 12836 | __extension__ extern __inline uint32x2_t |
12837 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12838 | vceqz_f32 (float32x2_t __a) |
df401d54 | 12839 | { |
e9611d1e | 12840 | return (uint32x2_t) (__a == 0.0f); |
df401d54 | 12841 | } |
12842 | ||
49ab9992 | 12843 | __extension__ extern __inline uint64x1_t |
12844 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12845 | vceqz_f64 (float64x1_t __a) |
df401d54 | 12846 | { |
ac292ff5 | 12847 | return (uint64x1_t) (__a == (float64x1_t) {0.0}); |
df401d54 | 12848 | } |
12849 | ||
49ab9992 | 12850 | __extension__ extern __inline uint8x8_t |
12851 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12852 | vceqz_p8 (poly8x8_t __a) |
df401d54 | 12853 | { |
e9611d1e | 12854 | return (uint8x8_t) (__a == 0); |
df401d54 | 12855 | } |
12856 | ||
49ab9992 | 12857 | __extension__ extern __inline uint8x8_t |
12858 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12859 | vceqz_s8 (int8x8_t __a) |
df401d54 | 12860 | { |
e9611d1e | 12861 | return (uint8x8_t) (__a == 0); |
df401d54 | 12862 | } |
12863 | ||
49ab9992 | 12864 | __extension__ extern __inline uint16x4_t |
12865 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12866 | vceqz_s16 (int16x4_t __a) |
df401d54 | 12867 | { |
e9611d1e | 12868 | return (uint16x4_t) (__a == 0); |
df401d54 | 12869 | } |
12870 | ||
49ab9992 | 12871 | __extension__ extern __inline uint32x2_t |
12872 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12873 | vceqz_s32 (int32x2_t __a) |
df401d54 | 12874 | { |
e9611d1e | 12875 | return (uint32x2_t) (__a == 0); |
df401d54 | 12876 | } |
12877 | ||
49ab9992 | 12878 | __extension__ extern __inline uint64x1_t |
12879 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12880 | vceqz_s64 (int64x1_t __a) |
df401d54 | 12881 | { |
dc3738cb | 12882 | return (uint64x1_t) (__a == __AARCH64_INT64_C (0)); |
8111d37b | 12883 | } |
12884 | ||
49ab9992 | 12885 | __extension__ extern __inline uint8x8_t |
12886 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12887 | vceqz_u8 (uint8x8_t __a) |
8111d37b | 12888 | { |
e9611d1e | 12889 | return (__a == 0); |
df401d54 | 12890 | } |
12891 | ||
49ab9992 | 12892 | __extension__ extern __inline uint16x4_t |
12893 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12894 | vceqz_u16 (uint16x4_t __a) |
df401d54 | 12895 | { |
e9611d1e | 12896 | return (__a == 0); |
df401d54 | 12897 | } |
12898 | ||
49ab9992 | 12899 | __extension__ extern __inline uint32x2_t |
12900 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12901 | vceqz_u32 (uint32x2_t __a) |
df401d54 | 12902 | { |
e9611d1e | 12903 | return (__a == 0); |
df401d54 | 12904 | } |
12905 | ||
49ab9992 | 12906 | __extension__ extern __inline uint64x1_t |
12907 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12908 | vceqz_u64 (uint64x1_t __a) |
df401d54 | 12909 | { |
dc3738cb | 12910 | return (__a == __AARCH64_UINT64_C (0)); |
df401d54 | 12911 | } |
12912 | ||
49ab9992 | 12913 | __extension__ extern __inline uint32x4_t |
12914 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12915 | vceqzq_f32 (float32x4_t __a) |
df401d54 | 12916 | { |
e9611d1e | 12917 | return (uint32x4_t) (__a == 0.0f); |
df401d54 | 12918 | } |
12919 | ||
49ab9992 | 12920 | __extension__ extern __inline uint64x2_t |
12921 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12922 | vceqzq_f64 (float64x2_t __a) |
df401d54 | 12923 | { |
e9611d1e | 12924 | return (uint64x2_t) (__a == 0.0f); |
df401d54 | 12925 | } |
12926 | ||
49ab9992 | 12927 | __extension__ extern __inline uint8x16_t |
12928 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12929 | vceqzq_p8 (poly8x16_t __a) |
df401d54 | 12930 | { |
e9611d1e | 12931 | return (uint8x16_t) (__a == 0); |
df401d54 | 12932 | } |
12933 | ||
49ab9992 | 12934 | __extension__ extern __inline uint8x16_t |
12935 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12936 | vceqzq_s8 (int8x16_t __a) |
df401d54 | 12937 | { |
e9611d1e | 12938 | return (uint8x16_t) (__a == 0); |
df401d54 | 12939 | } |
12940 | ||
49ab9992 | 12941 | __extension__ extern __inline uint16x8_t |
12942 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12943 | vceqzq_s16 (int16x8_t __a) |
df401d54 | 12944 | { |
e9611d1e | 12945 | return (uint16x8_t) (__a == 0); |
df401d54 | 12946 | } |
12947 | ||
49ab9992 | 12948 | __extension__ extern __inline uint32x4_t |
12949 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12950 | vceqzq_s32 (int32x4_t __a) |
df401d54 | 12951 | { |
e9611d1e | 12952 | return (uint32x4_t) (__a == 0); |
df401d54 | 12953 | } |
12954 | ||
49ab9992 | 12955 | __extension__ extern __inline uint64x2_t |
12956 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12957 | vceqzq_s64 (int64x2_t __a) |
df401d54 | 12958 | { |
e9611d1e | 12959 | return (uint64x2_t) (__a == __AARCH64_INT64_C (0)); |
df401d54 | 12960 | } |
12961 | ||
49ab9992 | 12962 | __extension__ extern __inline uint8x16_t |
12963 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12964 | vceqzq_u8 (uint8x16_t __a) |
df401d54 | 12965 | { |
e9611d1e | 12966 | return (__a == 0); |
df401d54 | 12967 | } |
12968 | ||
49ab9992 | 12969 | __extension__ extern __inline uint16x8_t |
12970 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12971 | vceqzq_u16 (uint16x8_t __a) |
df401d54 | 12972 | { |
e9611d1e | 12973 | return (__a == 0); |
df401d54 | 12974 | } |
12975 | ||
49ab9992 | 12976 | __extension__ extern __inline uint32x4_t |
12977 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12978 | vceqzq_u32 (uint32x4_t __a) |
df401d54 | 12979 | { |
e9611d1e | 12980 | return (__a == 0); |
df401d54 | 12981 | } |
12982 | ||
49ab9992 | 12983 | __extension__ extern __inline uint64x2_t |
12984 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12985 | vceqzq_u64 (uint64x2_t __a) |
df401d54 | 12986 | { |
e9611d1e | 12987 | return (__a == __AARCH64_UINT64_C (0)); |
df401d54 | 12988 | } |
12989 | ||
2d67c34c | 12990 | /* vceqz - scalar. */ |
12991 | ||
49ab9992 | 12992 | __extension__ extern __inline uint32_t |
12993 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 12994 | vceqzs_f32 (float32_t __a) |
df401d54 | 12995 | { |
2d67c34c | 12996 | return __a == 0.0f ? -1 : 0; |
df401d54 | 12997 | } |
12998 | ||
49ab9992 | 12999 | __extension__ extern __inline uint64_t |
13000 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 13001 | vceqzd_s64 (int64_t __a) |
2d67c34c | 13002 | { |
13003 | return __a == 0 ? -1ll : 0ll; | |
df401d54 | 13004 | } |
13005 | ||
49ab9992 | 13006 | __extension__ extern __inline uint64_t |
13007 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 13008 | vceqzd_u64 (uint64_t __a) |
2d67c34c | 13009 | { |
13010 | return __a == 0 ? -1ll : 0ll; | |
13011 | } | |
8111d37b | 13012 | |
49ab9992 | 13013 | __extension__ extern __inline uint64_t |
13014 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13015 | vceqzd_f64 (float64_t __a) |
13016 | { | |
13017 | return __a == 0.0 ? -1ll : 0ll; | |
13018 | } | |
8111d37b | 13019 | |
2d67c34c | 13020 | /* vcge - vector. */ |
8111d37b | 13021 | |
49ab9992 | 13022 | __extension__ extern __inline uint32x2_t |
13023 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13024 | vcge_f32 (float32x2_t __a, float32x2_t __b) |
df401d54 | 13025 | { |
e9611d1e | 13026 | return (uint32x2_t) (__a >= __b); |
df401d54 | 13027 | } |
13028 | ||
49ab9992 | 13029 | __extension__ extern __inline uint64x1_t |
13030 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13031 | vcge_f64 (float64x1_t __a, float64x1_t __b) |
b9a85db4 | 13032 | { |
ac292ff5 | 13033 | return (uint64x1_t) (__a >= __b); |
b9a85db4 | 13034 | } |
13035 | ||
49ab9992 | 13036 | __extension__ extern __inline uint8x8_t |
13037 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13038 | vcge_s8 (int8x8_t __a, int8x8_t __b) |
b9a85db4 | 13039 | { |
e9611d1e | 13040 | return (uint8x8_t) (__a >= __b); |
b9a85db4 | 13041 | } |
13042 | ||
49ab9992 | 13043 | __extension__ extern __inline uint16x4_t |
13044 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13045 | vcge_s16 (int16x4_t __a, int16x4_t __b) |
b9a85db4 | 13046 | { |
e9611d1e | 13047 | return (uint16x4_t) (__a >= __b); |
b9a85db4 | 13048 | } |
13049 | ||
49ab9992 | 13050 | __extension__ extern __inline uint32x2_t |
13051 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13052 | vcge_s32 (int32x2_t __a, int32x2_t __b) |
9bf7136b | 13053 | { |
e9611d1e | 13054 | return (uint32x2_t) (__a >= __b); |
9bf7136b | 13055 | } |
13056 | ||
49ab9992 | 13057 | __extension__ extern __inline uint64x1_t |
13058 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13059 | vcge_s64 (int64x1_t __a, int64x1_t __b) |
df401d54 | 13060 | { |
dc3738cb | 13061 | return (uint64x1_t) (__a >= __b); |
df401d54 | 13062 | } |
13063 | ||
49ab9992 | 13064 | __extension__ extern __inline uint8x8_t |
13065 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13066 | vcge_u8 (uint8x8_t __a, uint8x8_t __b) |
df401d54 | 13067 | { |
e9611d1e | 13068 | return (__a >= __b); |
df401d54 | 13069 | } |
13070 | ||
49ab9992 | 13071 | __extension__ extern __inline uint16x4_t |
13072 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13073 | vcge_u16 (uint16x4_t __a, uint16x4_t __b) |
b9a85db4 | 13074 | { |
e9611d1e | 13075 | return (__a >= __b); |
b9a85db4 | 13076 | } |
13077 | ||
49ab9992 | 13078 | __extension__ extern __inline uint32x2_t |
13079 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13080 | vcge_u32 (uint32x2_t __a, uint32x2_t __b) |
b9a85db4 | 13081 | { |
e9611d1e | 13082 | return (__a >= __b); |
b9a85db4 | 13083 | } |
13084 | ||
49ab9992 | 13085 | __extension__ extern __inline uint64x1_t |
13086 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13087 | vcge_u64 (uint64x1_t __a, uint64x1_t __b) |
b9a85db4 | 13088 | { |
dc3738cb | 13089 | return (__a >= __b); |
b9a85db4 | 13090 | } |
13091 | ||
49ab9992 | 13092 | __extension__ extern __inline uint32x4_t |
13093 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13094 | vcgeq_f32 (float32x4_t __a, float32x4_t __b) |
b9a85db4 | 13095 | { |
e9611d1e | 13096 | return (uint32x4_t) (__a >= __b); |
b9a85db4 | 13097 | } |
13098 | ||
49ab9992 | 13099 | __extension__ extern __inline uint64x2_t |
13100 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13101 | vcgeq_f64 (float64x2_t __a, float64x2_t __b) |
13102 | { | |
e9611d1e | 13103 | return (uint64x2_t) (__a >= __b); |
2d67c34c | 13104 | } |
8111d37b | 13105 | |
49ab9992 | 13106 | __extension__ extern __inline uint8x16_t |
13107 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13108 | vcgeq_s8 (int8x16_t __a, int8x16_t __b) |
df401d54 | 13109 | { |
e9611d1e | 13110 | return (uint8x16_t) (__a >= __b); |
df401d54 | 13111 | } |
13112 | ||
49ab9992 | 13113 | __extension__ extern __inline uint16x8_t |
13114 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13115 | vcgeq_s16 (int16x8_t __a, int16x8_t __b) |
13116 | { | |
e9611d1e | 13117 | return (uint16x8_t) (__a >= __b); |
2d67c34c | 13118 | } |
4491e251 | 13119 | |
49ab9992 | 13120 | __extension__ extern __inline uint32x4_t |
13121 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13122 | vcgeq_s32 (int32x4_t __a, int32x4_t __b) |
4491e251 | 13123 | { |
e9611d1e | 13124 | return (uint32x4_t) (__a >= __b); |
4491e251 | 13125 | } |
13126 | ||
49ab9992 | 13127 | __extension__ extern __inline uint64x2_t |
13128 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13129 | vcgeq_s64 (int64x2_t __a, int64x2_t __b) |
4491e251 | 13130 | { |
e9611d1e | 13131 | return (uint64x2_t) (__a >= __b); |
4491e251 | 13132 | } |
13133 | ||
49ab9992 | 13134 | __extension__ extern __inline uint8x16_t |
13135 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13136 | vcgeq_u8 (uint8x16_t __a, uint8x16_t __b) |
4491e251 | 13137 | { |
e9611d1e | 13138 | return (__a >= __b); |
4491e251 | 13139 | } |
13140 | ||
49ab9992 | 13141 | __extension__ extern __inline uint16x8_t |
13142 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13143 | vcgeq_u16 (uint16x8_t __a, uint16x8_t __b) |
4491e251 | 13144 | { |
e9611d1e | 13145 | return (__a >= __b); |
4491e251 | 13146 | } |
13147 | ||
49ab9992 | 13148 | __extension__ extern __inline uint32x4_t |
13149 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13150 | vcgeq_u32 (uint32x4_t __a, uint32x4_t __b) |
4491e251 | 13151 | { |
e9611d1e | 13152 | return (__a >= __b); |
4491e251 | 13153 | } |
13154 | ||
49ab9992 | 13155 | __extension__ extern __inline uint64x2_t |
13156 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13157 | vcgeq_u64 (uint64x2_t __a, uint64x2_t __b) |
4491e251 | 13158 | { |
e9611d1e | 13159 | return (__a >= __b); |
4491e251 | 13160 | } |
13161 | ||
2d67c34c | 13162 | /* vcge - scalar. */ |
13163 | ||
49ab9992 | 13164 | __extension__ extern __inline uint32_t |
13165 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13166 | vcges_f32 (float32_t __a, float32_t __b) |
4491e251 | 13167 | { |
2d67c34c | 13168 | return __a >= __b ? -1 : 0; |
4491e251 | 13169 | } |
13170 | ||
49ab9992 | 13171 | __extension__ extern __inline uint64_t |
13172 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 13173 | vcged_s64 (int64_t __a, int64_t __b) |
4491e251 | 13174 | { |
2d67c34c | 13175 | return __a >= __b ? -1ll : 0ll; |
4491e251 | 13176 | } |
13177 | ||
49ab9992 | 13178 | __extension__ extern __inline uint64_t |
13179 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 13180 | vcged_u64 (uint64_t __a, uint64_t __b) |
4491e251 | 13181 | { |
2d67c34c | 13182 | return __a >= __b ? -1ll : 0ll; |
4491e251 | 13183 | } |
13184 | ||
49ab9992 | 13185 | __extension__ extern __inline uint64_t |
13186 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13187 | vcged_f64 (float64_t __a, float64_t __b) |
4491e251 | 13188 | { |
2d67c34c | 13189 | return __a >= __b ? -1ll : 0ll; |
4491e251 | 13190 | } |
13191 | ||
2d67c34c | 13192 | /* vcgez - vector. */ |
13193 | ||
49ab9992 | 13194 | __extension__ extern __inline uint32x2_t |
13195 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13196 | vcgez_f32 (float32x2_t __a) |
4491e251 | 13197 | { |
e9611d1e | 13198 | return (uint32x2_t) (__a >= 0.0f); |
4491e251 | 13199 | } |
13200 | ||
49ab9992 | 13201 | __extension__ extern __inline uint64x1_t |
13202 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13203 | vcgez_f64 (float64x1_t __a) |
4491e251 | 13204 | { |
ac292ff5 | 13205 | return (uint64x1_t) (__a[0] >= (float64x1_t) {0.0}); |
4491e251 | 13206 | } |
13207 | ||
49ab9992 | 13208 | __extension__ extern __inline uint8x8_t |
13209 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13210 | vcgez_s8 (int8x8_t __a) |
4491e251 | 13211 | { |
e9611d1e | 13212 | return (uint8x8_t) (__a >= 0); |
4491e251 | 13213 | } |
13214 | ||
49ab9992 | 13215 | __extension__ extern __inline uint16x4_t |
13216 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13217 | vcgez_s16 (int16x4_t __a) |
df401d54 | 13218 | { |
e9611d1e | 13219 | return (uint16x4_t) (__a >= 0); |
df401d54 | 13220 | } |
13221 | ||
49ab9992 | 13222 | __extension__ extern __inline uint32x2_t |
13223 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13224 | vcgez_s32 (int32x2_t __a) |
8111d37b | 13225 | { |
e9611d1e | 13226 | return (uint32x2_t) (__a >= 0); |
8111d37b | 13227 | } |
df401d54 | 13228 | |
49ab9992 | 13229 | __extension__ extern __inline uint64x1_t |
13230 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13231 | vcgez_s64 (int64x1_t __a) |
df401d54 | 13232 | { |
dc3738cb | 13233 | return (uint64x1_t) (__a >= __AARCH64_INT64_C (0)); |
df401d54 | 13234 | } |
13235 | ||
49ab9992 | 13236 | __extension__ extern __inline uint32x4_t |
13237 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13238 | vcgezq_f32 (float32x4_t __a) |
2fe1d3d6 | 13239 | { |
e9611d1e | 13240 | return (uint32x4_t) (__a >= 0.0f); |
2fe1d3d6 | 13241 | } |
13242 | ||
49ab9992 | 13243 | __extension__ extern __inline uint64x2_t |
13244 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13245 | vcgezq_f64 (float64x2_t __a) |
2fe1d3d6 | 13246 | { |
e9611d1e | 13247 | return (uint64x2_t) (__a >= 0.0); |
2fe1d3d6 | 13248 | } |
13249 | ||
49ab9992 | 13250 | __extension__ extern __inline uint8x16_t |
13251 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13252 | vcgezq_s8 (int8x16_t __a) |
2fe1d3d6 | 13253 | { |
e9611d1e | 13254 | return (uint8x16_t) (__a >= 0); |
2fe1d3d6 | 13255 | } |
13256 | ||
49ab9992 | 13257 | __extension__ extern __inline uint16x8_t |
13258 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13259 | vcgezq_s16 (int16x8_t __a) |
2fe1d3d6 | 13260 | { |
e9611d1e | 13261 | return (uint16x8_t) (__a >= 0); |
2fe1d3d6 | 13262 | } |
13263 | ||
49ab9992 | 13264 | __extension__ extern __inline uint32x4_t |
13265 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13266 | vcgezq_s32 (int32x4_t __a) |
2fe1d3d6 | 13267 | { |
e9611d1e | 13268 | return (uint32x4_t) (__a >= 0); |
2fe1d3d6 | 13269 | } |
13270 | ||
49ab9992 | 13271 | __extension__ extern __inline uint64x2_t |
13272 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13273 | vcgezq_s64 (int64x2_t __a) |
2fe1d3d6 | 13274 | { |
e9611d1e | 13275 | return (uint64x2_t) (__a >= __AARCH64_INT64_C (0)); |
2fe1d3d6 | 13276 | } |
13277 | ||
2d67c34c | 13278 | /* vcgez - scalar. */ |
2fe1d3d6 | 13279 | |
49ab9992 | 13280 | __extension__ extern __inline uint32_t |
13281 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13282 | vcgezs_f32 (float32_t __a) |
2fe1d3d6 | 13283 | { |
2d67c34c | 13284 | return __a >= 0.0f ? -1 : 0; |
2fe1d3d6 | 13285 | } |
13286 | ||
49ab9992 | 13287 | __extension__ extern __inline uint64_t |
13288 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 13289 | vcgezd_s64 (int64_t __a) |
2fe1d3d6 | 13290 | { |
2d67c34c | 13291 | return __a >= 0 ? -1ll : 0ll; |
2fe1d3d6 | 13292 | } |
13293 | ||
49ab9992 | 13294 | __extension__ extern __inline uint64_t |
13295 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13296 | vcgezd_f64 (float64_t __a) |
13297 | { | |
13298 | return __a >= 0.0 ? -1ll : 0ll; | |
13299 | } | |
13300 | ||
13301 | /* vcgt - vector. */ | |
c4759747 | 13302 | |
49ab9992 | 13303 | __extension__ extern __inline uint32x2_t |
13304 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13305 | vcgt_f32 (float32x2_t __a, float32x2_t __b) |
c4759747 | 13306 | { |
e9611d1e | 13307 | return (uint32x2_t) (__a > __b); |
c4759747 | 13308 | } |
13309 | ||
49ab9992 | 13310 | __extension__ extern __inline uint64x1_t |
13311 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13312 | vcgt_f64 (float64x1_t __a, float64x1_t __b) |
c4759747 | 13313 | { |
ac292ff5 | 13314 | return (uint64x1_t) (__a > __b); |
c4759747 | 13315 | } |
8111d37b | 13316 | |
49ab9992 | 13317 | __extension__ extern __inline uint8x8_t |
13318 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13319 | vcgt_s8 (int8x8_t __a, int8x8_t __b) |
df401d54 | 13320 | { |
e9611d1e | 13321 | return (uint8x8_t) (__a > __b); |
8111d37b | 13322 | } |
13323 | ||
49ab9992 | 13324 | __extension__ extern __inline uint16x4_t |
13325 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13326 | vcgt_s16 (int16x4_t __a, int16x4_t __b) |
8111d37b | 13327 | { |
e9611d1e | 13328 | return (uint16x4_t) (__a > __b); |
df401d54 | 13329 | } |
13330 | ||
49ab9992 | 13331 | __extension__ extern __inline uint32x2_t |
13332 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13333 | vcgt_s32 (int32x2_t __a, int32x2_t __b) |
8111d37b | 13334 | { |
e9611d1e | 13335 | return (uint32x2_t) (__a > __b); |
8111d37b | 13336 | } |
df401d54 | 13337 | |
49ab9992 | 13338 | __extension__ extern __inline uint64x1_t |
13339 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13340 | vcgt_s64 (int64x1_t __a, int64x1_t __b) |
df401d54 | 13341 | { |
dc3738cb | 13342 | return (uint64x1_t) (__a > __b); |
df401d54 | 13343 | } |
13344 | ||
49ab9992 | 13345 | __extension__ extern __inline uint8x8_t |
13346 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13347 | vcgt_u8 (uint8x8_t __a, uint8x8_t __b) |
df401d54 | 13348 | { |
e9611d1e | 13349 | return (__a > __b); |
df401d54 | 13350 | } |
13351 | ||
49ab9992 | 13352 | __extension__ extern __inline uint16x4_t |
13353 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13354 | vcgt_u16 (uint16x4_t __a, uint16x4_t __b) |
df401d54 | 13355 | { |
e9611d1e | 13356 | return (__a > __b); |
df401d54 | 13357 | } |
13358 | ||
49ab9992 | 13359 | __extension__ extern __inline uint32x2_t |
13360 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13361 | vcgt_u32 (uint32x2_t __a, uint32x2_t __b) |
8111d37b | 13362 | { |
e9611d1e | 13363 | return (__a > __b); |
8111d37b | 13364 | } |
df401d54 | 13365 | |
49ab9992 | 13366 | __extension__ extern __inline uint64x1_t |
13367 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13368 | vcgt_u64 (uint64x1_t __a, uint64x1_t __b) |
df401d54 | 13369 | { |
dc3738cb | 13370 | return (__a > __b); |
c4759747 | 13371 | } |
13372 | ||
49ab9992 | 13373 | __extension__ extern __inline uint32x4_t |
13374 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13375 | vcgtq_f32 (float32x4_t __a, float32x4_t __b) |
c4759747 | 13376 | { |
e9611d1e | 13377 | return (uint32x4_t) (__a > __b); |
c4759747 | 13378 | } |
13379 | ||
49ab9992 | 13380 | __extension__ extern __inline uint64x2_t |
13381 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13382 | vcgtq_f64 (float64x2_t __a, float64x2_t __b) |
c4759747 | 13383 | { |
e9611d1e | 13384 | return (uint64x2_t) (__a > __b); |
df401d54 | 13385 | } |
13386 | ||
49ab9992 | 13387 | __extension__ extern __inline uint8x16_t |
13388 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13389 | vcgtq_s8 (int8x16_t __a, int8x16_t __b) |
df401d54 | 13390 | { |
e9611d1e | 13391 | return (uint8x16_t) (__a > __b); |
8111d37b | 13392 | } |
13393 | ||
49ab9992 | 13394 | __extension__ extern __inline uint16x8_t |
13395 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13396 | vcgtq_s16 (int16x8_t __a, int16x8_t __b) |
8111d37b | 13397 | { |
e9611d1e | 13398 | return (uint16x8_t) (__a > __b); |
8111d37b | 13399 | } |
13400 | ||
49ab9992 | 13401 | __extension__ extern __inline uint32x4_t |
13402 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13403 | vcgtq_s32 (int32x4_t __a, int32x4_t __b) |
8111d37b | 13404 | { |
e9611d1e | 13405 | return (uint32x4_t) (__a > __b); |
df401d54 | 13406 | } |
13407 | ||
49ab9992 | 13408 | __extension__ extern __inline uint64x2_t |
13409 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13410 | vcgtq_s64 (int64x2_t __a, int64x2_t __b) |
8111d37b | 13411 | { |
e9611d1e | 13412 | return (uint64x2_t) (__a > __b); |
8111d37b | 13413 | } |
df401d54 | 13414 | |
49ab9992 | 13415 | __extension__ extern __inline uint8x16_t |
13416 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13417 | vcgtq_u8 (uint8x16_t __a, uint8x16_t __b) |
df401d54 | 13418 | { |
e9611d1e | 13419 | return (__a > __b); |
df401d54 | 13420 | } |
13421 | ||
49ab9992 | 13422 | __extension__ extern __inline uint16x8_t |
13423 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13424 | vcgtq_u16 (uint16x8_t __a, uint16x8_t __b) |
df401d54 | 13425 | { |
e9611d1e | 13426 | return (__a > __b); |
df401d54 | 13427 | } |
13428 | ||
49ab9992 | 13429 | __extension__ extern __inline uint32x4_t |
13430 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13431 | vcgtq_u32 (uint32x4_t __a, uint32x4_t __b) |
df401d54 | 13432 | { |
e9611d1e | 13433 | return (__a > __b); |
df401d54 | 13434 | } |
13435 | ||
49ab9992 | 13436 | __extension__ extern __inline uint64x2_t |
13437 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13438 | vcgtq_u64 (uint64x2_t __a, uint64x2_t __b) |
8111d37b | 13439 | { |
e9611d1e | 13440 | return (__a > __b); |
8111d37b | 13441 | } |
df401d54 | 13442 | |
2d67c34c | 13443 | /* vcgt - scalar. */ |
c4759747 | 13444 | |
49ab9992 | 13445 | __extension__ extern __inline uint32_t |
13446 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13447 | vcgts_f32 (float32_t __a, float32_t __b) |
df401d54 | 13448 | { |
2d67c34c | 13449 | return __a > __b ? -1 : 0; |
df401d54 | 13450 | } |
13451 | ||
49ab9992 | 13452 | __extension__ extern __inline uint64_t |
13453 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 13454 | vcgtd_s64 (int64_t __a, int64_t __b) |
df401d54 | 13455 | { |
2d67c34c | 13456 | return __a > __b ? -1ll : 0ll; |
df401d54 | 13457 | } |
13458 | ||
49ab9992 | 13459 | __extension__ extern __inline uint64_t |
13460 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 13461 | vcgtd_u64 (uint64_t __a, uint64_t __b) |
df401d54 | 13462 | { |
2d67c34c | 13463 | return __a > __b ? -1ll : 0ll; |
df401d54 | 13464 | } |
13465 | ||
49ab9992 | 13466 | __extension__ extern __inline uint64_t |
13467 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13468 | vcgtd_f64 (float64_t __a, float64_t __b) |
df401d54 | 13469 | { |
2d67c34c | 13470 | return __a > __b ? -1ll : 0ll; |
df401d54 | 13471 | } |
13472 | ||
2d67c34c | 13473 | /* vcgtz - vector. */ |
df401d54 | 13474 | |
49ab9992 | 13475 | __extension__ extern __inline uint32x2_t |
13476 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13477 | vcgtz_f32 (float32x2_t __a) |
df401d54 | 13478 | { |
e9611d1e | 13479 | return (uint32x2_t) (__a > 0.0f); |
df401d54 | 13480 | } |
13481 | ||
49ab9992 | 13482 | __extension__ extern __inline uint64x1_t |
13483 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13484 | vcgtz_f64 (float64x1_t __a) |
df401d54 | 13485 | { |
ac292ff5 | 13486 | return (uint64x1_t) (__a > (float64x1_t) {0.0}); |
df401d54 | 13487 | } |
13488 | ||
49ab9992 | 13489 | __extension__ extern __inline uint8x8_t |
13490 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13491 | vcgtz_s8 (int8x8_t __a) |
c4759747 | 13492 | { |
e9611d1e | 13493 | return (uint8x8_t) (__a > 0); |
c4759747 | 13494 | } |
13495 | ||
49ab9992 | 13496 | __extension__ extern __inline uint16x4_t |
13497 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13498 | vcgtz_s16 (int16x4_t __a) |
c4759747 | 13499 | { |
e9611d1e | 13500 | return (uint16x4_t) (__a > 0); |
c4759747 | 13501 | } |
13502 | ||
49ab9992 | 13503 | __extension__ extern __inline uint32x2_t |
13504 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13505 | vcgtz_s32 (int32x2_t __a) |
c4759747 | 13506 | { |
e9611d1e | 13507 | return (uint32x2_t) (__a > 0); |
c4759747 | 13508 | } |
13509 | ||
49ab9992 | 13510 | __extension__ extern __inline uint64x1_t |
13511 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13512 | vcgtz_s64 (int64x1_t __a) |
c4759747 | 13513 | { |
dc3738cb | 13514 | return (uint64x1_t) (__a > __AARCH64_INT64_C (0)); |
c4759747 | 13515 | } |
13516 | ||
49ab9992 | 13517 | __extension__ extern __inline uint32x4_t |
13518 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13519 | vcgtzq_f32 (float32x4_t __a) |
c4759747 | 13520 | { |
e9611d1e | 13521 | return (uint32x4_t) (__a > 0.0f); |
c4759747 | 13522 | } |
13523 | ||
49ab9992 | 13524 | __extension__ extern __inline uint64x2_t |
13525 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13526 | vcgtzq_f64 (float64x2_t __a) |
c4759747 | 13527 | { |
e9611d1e | 13528 | return (uint64x2_t) (__a > 0.0); |
c4759747 | 13529 | } |
13530 | ||
49ab9992 | 13531 | __extension__ extern __inline uint8x16_t |
13532 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13533 | vcgtzq_s8 (int8x16_t __a) |
c4759747 | 13534 | { |
e9611d1e | 13535 | return (uint8x16_t) (__a > 0); |
c4759747 | 13536 | } |
13537 | ||
49ab9992 | 13538 | __extension__ extern __inline uint16x8_t |
13539 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13540 | vcgtzq_s16 (int16x8_t __a) |
c4759747 | 13541 | { |
e9611d1e | 13542 | return (uint16x8_t) (__a > 0); |
c4759747 | 13543 | } |
13544 | ||
49ab9992 | 13545 | __extension__ extern __inline uint32x4_t |
13546 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13547 | vcgtzq_s32 (int32x4_t __a) |
c4759747 | 13548 | { |
e9611d1e | 13549 | return (uint32x4_t) (__a > 0); |
c4759747 | 13550 | } |
13551 | ||
49ab9992 | 13552 | __extension__ extern __inline uint64x2_t |
13553 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13554 | vcgtzq_s64 (int64x2_t __a) |
c4759747 | 13555 | { |
e9611d1e | 13556 | return (uint64x2_t) (__a > __AARCH64_INT64_C (0)); |
c4759747 | 13557 | } |
13558 | ||
2d67c34c | 13559 | /* vcgtz - scalar. */ |
c4759747 | 13560 | |
49ab9992 | 13561 | __extension__ extern __inline uint32_t |
13562 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13563 | vcgtzs_f32 (float32_t __a) |
c4759747 | 13564 | { |
2d67c34c | 13565 | return __a > 0.0f ? -1 : 0; |
c4759747 | 13566 | } |
13567 | ||
49ab9992 | 13568 | __extension__ extern __inline uint64_t |
13569 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 13570 | vcgtzd_s64 (int64_t __a) |
c4759747 | 13571 | { |
2d67c34c | 13572 | return __a > 0 ? -1ll : 0ll; |
c4759747 | 13573 | } |
13574 | ||
49ab9992 | 13575 | __extension__ extern __inline uint64_t |
13576 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13577 | vcgtzd_f64 (float64_t __a) |
c4759747 | 13578 | { |
2d67c34c | 13579 | return __a > 0.0 ? -1ll : 0ll; |
c4759747 | 13580 | } |
13581 | ||
2d67c34c | 13582 | /* vcle - vector. */ |
c4759747 | 13583 | |
49ab9992 | 13584 | __extension__ extern __inline uint32x2_t |
13585 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13586 | vcle_f32 (float32x2_t __a, float32x2_t __b) |
c4759747 | 13587 | { |
e9611d1e | 13588 | return (uint32x2_t) (__a <= __b); |
c4759747 | 13589 | } |
13590 | ||
49ab9992 | 13591 | __extension__ extern __inline uint64x1_t |
13592 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13593 | vcle_f64 (float64x1_t __a, float64x1_t __b) |
c4759747 | 13594 | { |
ac292ff5 | 13595 | return (uint64x1_t) (__a <= __b); |
c4759747 | 13596 | } |
13597 | ||
49ab9992 | 13598 | __extension__ extern __inline uint8x8_t |
13599 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13600 | vcle_s8 (int8x8_t __a, int8x8_t __b) |
c4759747 | 13601 | { |
e9611d1e | 13602 | return (uint8x8_t) (__a <= __b); |
c4759747 | 13603 | } |
13604 | ||
49ab9992 | 13605 | __extension__ extern __inline uint16x4_t |
13606 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13607 | vcle_s16 (int16x4_t __a, int16x4_t __b) |
c4759747 | 13608 | { |
e9611d1e | 13609 | return (uint16x4_t) (__a <= __b); |
c4759747 | 13610 | } |
13611 | ||
49ab9992 | 13612 | __extension__ extern __inline uint32x2_t |
13613 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13614 | vcle_s32 (int32x2_t __a, int32x2_t __b) |
c4759747 | 13615 | { |
e9611d1e | 13616 | return (uint32x2_t) (__a <= __b); |
c4759747 | 13617 | } |
13618 | ||
49ab9992 | 13619 | __extension__ extern __inline uint64x1_t |
13620 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13621 | vcle_s64 (int64x1_t __a, int64x1_t __b) |
c4759747 | 13622 | { |
dc3738cb | 13623 | return (uint64x1_t) (__a <= __b); |
c4759747 | 13624 | } |
13625 | ||
49ab9992 | 13626 | __extension__ extern __inline uint8x8_t |
13627 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13628 | vcle_u8 (uint8x8_t __a, uint8x8_t __b) |
c4759747 | 13629 | { |
e9611d1e | 13630 | return (__a <= __b); |
c4759747 | 13631 | } |
13632 | ||
49ab9992 | 13633 | __extension__ extern __inline uint16x4_t |
13634 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13635 | vcle_u16 (uint16x4_t __a, uint16x4_t __b) |
df401d54 | 13636 | { |
e9611d1e | 13637 | return (__a <= __b); |
df401d54 | 13638 | } |
13639 | ||
49ab9992 | 13640 | __extension__ extern __inline uint32x2_t |
13641 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13642 | vcle_u32 (uint32x2_t __a, uint32x2_t __b) |
df401d54 | 13643 | { |
e9611d1e | 13644 | return (__a <= __b); |
df401d54 | 13645 | } |
13646 | ||
49ab9992 | 13647 | __extension__ extern __inline uint64x1_t |
13648 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13649 | vcle_u64 (uint64x1_t __a, uint64x1_t __b) |
df401d54 | 13650 | { |
dc3738cb | 13651 | return (__a <= __b); |
c4759747 | 13652 | } |
13653 | ||
49ab9992 | 13654 | __extension__ extern __inline uint32x4_t |
13655 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13656 | vcleq_f32 (float32x4_t __a, float32x4_t __b) |
c4759747 | 13657 | { |
e9611d1e | 13658 | return (uint32x4_t) (__a <= __b); |
c4759747 | 13659 | } |
13660 | ||
49ab9992 | 13661 | __extension__ extern __inline uint64x2_t |
13662 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13663 | vcleq_f64 (float64x2_t __a, float64x2_t __b) |
c4759747 | 13664 | { |
e9611d1e | 13665 | return (uint64x2_t) (__a <= __b); |
c4759747 | 13666 | } |
13667 | ||
49ab9992 | 13668 | __extension__ extern __inline uint8x16_t |
13669 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13670 | vcleq_s8 (int8x16_t __a, int8x16_t __b) |
df401d54 | 13671 | { |
e9611d1e | 13672 | return (uint8x16_t) (__a <= __b); |
df401d54 | 13673 | } |
13674 | ||
49ab9992 | 13675 | __extension__ extern __inline uint16x8_t |
13676 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13677 | vcleq_s16 (int16x8_t __a, int16x8_t __b) |
df401d54 | 13678 | { |
e9611d1e | 13679 | return (uint16x8_t) (__a <= __b); |
df401d54 | 13680 | } |
13681 | ||
49ab9992 | 13682 | __extension__ extern __inline uint32x4_t |
13683 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13684 | vcleq_s32 (int32x4_t __a, int32x4_t __b) |
df401d54 | 13685 | { |
e9611d1e | 13686 | return (uint32x4_t) (__a <= __b); |
df401d54 | 13687 | } |
13688 | ||
49ab9992 | 13689 | __extension__ extern __inline uint64x2_t |
13690 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13691 | vcleq_s64 (int64x2_t __a, int64x2_t __b) |
df401d54 | 13692 | { |
e9611d1e | 13693 | return (uint64x2_t) (__a <= __b); |
8111d37b | 13694 | } |
13695 | ||
49ab9992 | 13696 | __extension__ extern __inline uint8x16_t |
13697 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13698 | vcleq_u8 (uint8x16_t __a, uint8x16_t __b) |
8111d37b | 13699 | { |
e9611d1e | 13700 | return (__a <= __b); |
df401d54 | 13701 | } |
13702 | ||
49ab9992 | 13703 | __extension__ extern __inline uint16x8_t |
13704 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13705 | vcleq_u16 (uint16x8_t __a, uint16x8_t __b) |
df401d54 | 13706 | { |
e9611d1e | 13707 | return (__a <= __b); |
df401d54 | 13708 | } |
13709 | ||
49ab9992 | 13710 | __extension__ extern __inline uint32x4_t |
13711 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13712 | vcleq_u32 (uint32x4_t __a, uint32x4_t __b) |
df401d54 | 13713 | { |
e9611d1e | 13714 | return (__a <= __b); |
df401d54 | 13715 | } |
13716 | ||
49ab9992 | 13717 | __extension__ extern __inline uint64x2_t |
13718 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13719 | vcleq_u64 (uint64x2_t __a, uint64x2_t __b) |
df401d54 | 13720 | { |
e9611d1e | 13721 | return (__a <= __b); |
df401d54 | 13722 | } |
13723 | ||
2d67c34c | 13724 | /* vcle - scalar. */ |
c4759747 | 13725 | |
49ab9992 | 13726 | __extension__ extern __inline uint32_t |
13727 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13728 | vcles_f32 (float32_t __a, float32_t __b) |
c4759747 | 13729 | { |
2d67c34c | 13730 | return __a <= __b ? -1 : 0; |
c4759747 | 13731 | } |
13732 | ||
49ab9992 | 13733 | __extension__ extern __inline uint64_t |
13734 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 13735 | vcled_s64 (int64_t __a, int64_t __b) |
df401d54 | 13736 | { |
2d67c34c | 13737 | return __a <= __b ? -1ll : 0ll; |
df401d54 | 13738 | } |
13739 | ||
49ab9992 | 13740 | __extension__ extern __inline uint64_t |
13741 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 13742 | vcled_u64 (uint64_t __a, uint64_t __b) |
df401d54 | 13743 | { |
2d67c34c | 13744 | return __a <= __b ? -1ll : 0ll; |
c4759747 | 13745 | } |
13746 | ||
49ab9992 | 13747 | __extension__ extern __inline uint64_t |
13748 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13749 | vcled_f64 (float64_t __a, float64_t __b) |
c4759747 | 13750 | { |
2d67c34c | 13751 | return __a <= __b ? -1ll : 0ll; |
c4759747 | 13752 | } |
13753 | ||
2d67c34c | 13754 | /* vclez - vector. */ |
c4759747 | 13755 | |
49ab9992 | 13756 | __extension__ extern __inline uint32x2_t |
13757 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13758 | vclez_f32 (float32x2_t __a) |
c4759747 | 13759 | { |
e9611d1e | 13760 | return (uint32x2_t) (__a <= 0.0f); |
c4759747 | 13761 | } |
13762 | ||
49ab9992 | 13763 | __extension__ extern __inline uint64x1_t |
13764 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13765 | vclez_f64 (float64x1_t __a) |
c4759747 | 13766 | { |
ac292ff5 | 13767 | return (uint64x1_t) (__a <= (float64x1_t) {0.0}); |
c4759747 | 13768 | } |
13769 | ||
49ab9992 | 13770 | __extension__ extern __inline uint8x8_t |
13771 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13772 | vclez_s8 (int8x8_t __a) |
c4759747 | 13773 | { |
e9611d1e | 13774 | return (uint8x8_t) (__a <= 0); |
c4759747 | 13775 | } |
13776 | ||
49ab9992 | 13777 | __extension__ extern __inline uint16x4_t |
13778 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13779 | vclez_s16 (int16x4_t __a) |
c4759747 | 13780 | { |
e9611d1e | 13781 | return (uint16x4_t) (__a <= 0); |
c4759747 | 13782 | } |
13783 | ||
49ab9992 | 13784 | __extension__ extern __inline uint32x2_t |
13785 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13786 | vclez_s32 (int32x2_t __a) |
c4759747 | 13787 | { |
e9611d1e | 13788 | return (uint32x2_t) (__a <= 0); |
c4759747 | 13789 | } |
13790 | ||
49ab9992 | 13791 | __extension__ extern __inline uint64x1_t |
13792 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13793 | vclez_s64 (int64x1_t __a) |
c4759747 | 13794 | { |
dc3738cb | 13795 | return (uint64x1_t) (__a <= __AARCH64_INT64_C (0)); |
c4759747 | 13796 | } |
13797 | ||
49ab9992 | 13798 | __extension__ extern __inline uint32x4_t |
13799 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13800 | vclezq_f32 (float32x4_t __a) |
c4759747 | 13801 | { |
e9611d1e | 13802 | return (uint32x4_t) (__a <= 0.0f); |
c4759747 | 13803 | } |
13804 | ||
49ab9992 | 13805 | __extension__ extern __inline uint64x2_t |
13806 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13807 | vclezq_f64 (float64x2_t __a) |
c4759747 | 13808 | { |
e9611d1e | 13809 | return (uint64x2_t) (__a <= 0.0); |
c4759747 | 13810 | } |
13811 | ||
49ab9992 | 13812 | __extension__ extern __inline uint8x16_t |
13813 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13814 | vclezq_s8 (int8x16_t __a) |
c4759747 | 13815 | { |
e9611d1e | 13816 | return (uint8x16_t) (__a <= 0); |
c4759747 | 13817 | } |
13818 | ||
49ab9992 | 13819 | __extension__ extern __inline uint16x8_t |
13820 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13821 | vclezq_s16 (int16x8_t __a) |
c4759747 | 13822 | { |
e9611d1e | 13823 | return (uint16x8_t) (__a <= 0); |
c4759747 | 13824 | } |
13825 | ||
49ab9992 | 13826 | __extension__ extern __inline uint32x4_t |
13827 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13828 | vclezq_s32 (int32x4_t __a) |
c4759747 | 13829 | { |
e9611d1e | 13830 | return (uint32x4_t) (__a <= 0); |
c4759747 | 13831 | } |
13832 | ||
49ab9992 | 13833 | __extension__ extern __inline uint64x2_t |
13834 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13835 | vclezq_s64 (int64x2_t __a) |
c4759747 | 13836 | { |
e9611d1e | 13837 | return (uint64x2_t) (__a <= __AARCH64_INT64_C (0)); |
c4759747 | 13838 | } |
13839 | ||
2d67c34c | 13840 | /* vclez - scalar. */ |
c4759747 | 13841 | |
49ab9992 | 13842 | __extension__ extern __inline uint32_t |
13843 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13844 | vclezs_f32 (float32_t __a) |
c4759747 | 13845 | { |
2d67c34c | 13846 | return __a <= 0.0f ? -1 : 0; |
df401d54 | 13847 | } |
13848 | ||
49ab9992 | 13849 | __extension__ extern __inline uint64_t |
13850 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 13851 | vclezd_s64 (int64_t __a) |
df401d54 | 13852 | { |
2d67c34c | 13853 | return __a <= 0 ? -1ll : 0ll; |
c4759747 | 13854 | } |
13855 | ||
49ab9992 | 13856 | __extension__ extern __inline uint64_t |
13857 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13858 | vclezd_f64 (float64_t __a) |
c4759747 | 13859 | { |
2d67c34c | 13860 | return __a <= 0.0 ? -1ll : 0ll; |
c4759747 | 13861 | } |
13862 | ||
2d67c34c | 13863 | /* vclt - vector. */ |
c4759747 | 13864 | |
49ab9992 | 13865 | __extension__ extern __inline uint32x2_t |
13866 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13867 | vclt_f32 (float32x2_t __a, float32x2_t __b) |
c4759747 | 13868 | { |
e9611d1e | 13869 | return (uint32x2_t) (__a < __b); |
c4759747 | 13870 | } |
13871 | ||
49ab9992 | 13872 | __extension__ extern __inline uint64x1_t |
13873 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13874 | vclt_f64 (float64x1_t __a, float64x1_t __b) |
c4759747 | 13875 | { |
ac292ff5 | 13876 | return (uint64x1_t) (__a < __b); |
c4759747 | 13877 | } |
13878 | ||
49ab9992 | 13879 | __extension__ extern __inline uint8x8_t |
13880 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13881 | vclt_s8 (int8x8_t __a, int8x8_t __b) |
df401d54 | 13882 | { |
e9611d1e | 13883 | return (uint8x8_t) (__a < __b); |
df401d54 | 13884 | } |
13885 | ||
49ab9992 | 13886 | __extension__ extern __inline uint16x4_t |
13887 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13888 | vclt_s16 (int16x4_t __a, int16x4_t __b) |
df401d54 | 13889 | { |
e9611d1e | 13890 | return (uint16x4_t) (__a < __b); |
df401d54 | 13891 | } |
13892 | ||
49ab9992 | 13893 | __extension__ extern __inline uint32x2_t |
13894 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13895 | vclt_s32 (int32x2_t __a, int32x2_t __b) |
df401d54 | 13896 | { |
e9611d1e | 13897 | return (uint32x2_t) (__a < __b); |
df401d54 | 13898 | } |
13899 | ||
49ab9992 | 13900 | __extension__ extern __inline uint64x1_t |
13901 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13902 | vclt_s64 (int64x1_t __a, int64x1_t __b) |
df401d54 | 13903 | { |
dc3738cb | 13904 | return (uint64x1_t) (__a < __b); |
df401d54 | 13905 | } |
13906 | ||
49ab9992 | 13907 | __extension__ extern __inline uint8x8_t |
13908 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13909 | vclt_u8 (uint8x8_t __a, uint8x8_t __b) |
df401d54 | 13910 | { |
e9611d1e | 13911 | return (__a < __b); |
c4759747 | 13912 | } |
13913 | ||
49ab9992 | 13914 | __extension__ extern __inline uint16x4_t |
13915 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13916 | vclt_u16 (uint16x4_t __a, uint16x4_t __b) |
c4759747 | 13917 | { |
e9611d1e | 13918 | return (__a < __b); |
c4759747 | 13919 | } |
13920 | ||
49ab9992 | 13921 | __extension__ extern __inline uint32x2_t |
13922 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13923 | vclt_u32 (uint32x2_t __a, uint32x2_t __b) |
c4759747 | 13924 | { |
e9611d1e | 13925 | return (__a < __b); |
c4759747 | 13926 | } |
13927 | ||
49ab9992 | 13928 | __extension__ extern __inline uint64x1_t |
13929 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13930 | vclt_u64 (uint64x1_t __a, uint64x1_t __b) |
c4759747 | 13931 | { |
dc3738cb | 13932 | return (__a < __b); |
c4759747 | 13933 | } |
13934 | ||
49ab9992 | 13935 | __extension__ extern __inline uint32x4_t |
13936 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13937 | vcltq_f32 (float32x4_t __a, float32x4_t __b) |
c4759747 | 13938 | { |
e9611d1e | 13939 | return (uint32x4_t) (__a < __b); |
c4759747 | 13940 | } |
13941 | ||
49ab9992 | 13942 | __extension__ extern __inline uint64x2_t |
13943 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13944 | vcltq_f64 (float64x2_t __a, float64x2_t __b) |
c4759747 | 13945 | { |
e9611d1e | 13946 | return (uint64x2_t) (__a < __b); |
c4759747 | 13947 | } |
13948 | ||
49ab9992 | 13949 | __extension__ extern __inline uint8x16_t |
13950 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13951 | vcltq_s8 (int8x16_t __a, int8x16_t __b) |
c4759747 | 13952 | { |
e9611d1e | 13953 | return (uint8x16_t) (__a < __b); |
c4759747 | 13954 | } |
13955 | ||
49ab9992 | 13956 | __extension__ extern __inline uint16x8_t |
13957 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13958 | vcltq_s16 (int16x8_t __a, int16x8_t __b) |
c4759747 | 13959 | { |
e9611d1e | 13960 | return (uint16x8_t) (__a < __b); |
c4759747 | 13961 | } |
13962 | ||
49ab9992 | 13963 | __extension__ extern __inline uint32x4_t |
13964 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13965 | vcltq_s32 (int32x4_t __a, int32x4_t __b) |
c4759747 | 13966 | { |
e9611d1e | 13967 | return (uint32x4_t) (__a < __b); |
c4759747 | 13968 | } |
13969 | ||
49ab9992 | 13970 | __extension__ extern __inline uint64x2_t |
13971 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13972 | vcltq_s64 (int64x2_t __a, int64x2_t __b) |
c4759747 | 13973 | { |
e9611d1e | 13974 | return (uint64x2_t) (__a < __b); |
c4759747 | 13975 | } |
13976 | ||
49ab9992 | 13977 | __extension__ extern __inline uint8x16_t |
13978 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13979 | vcltq_u8 (uint8x16_t __a, uint8x16_t __b) |
c4759747 | 13980 | { |
e9611d1e | 13981 | return (__a < __b); |
c4759747 | 13982 | } |
13983 | ||
49ab9992 | 13984 | __extension__ extern __inline uint16x8_t |
13985 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13986 | vcltq_u16 (uint16x8_t __a, uint16x8_t __b) |
c4759747 | 13987 | { |
e9611d1e | 13988 | return (__a < __b); |
c4759747 | 13989 | } |
13990 | ||
49ab9992 | 13991 | __extension__ extern __inline uint32x4_t |
13992 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 13993 | vcltq_u32 (uint32x4_t __a, uint32x4_t __b) |
c4759747 | 13994 | { |
e9611d1e | 13995 | return (__a < __b); |
c4759747 | 13996 | } |
13997 | ||
49ab9992 | 13998 | __extension__ extern __inline uint64x2_t |
13999 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14000 | vcltq_u64 (uint64x2_t __a, uint64x2_t __b) |
c4759747 | 14001 | { |
e9611d1e | 14002 | return (__a < __b); |
c4759747 | 14003 | } |
14004 | ||
2d67c34c | 14005 | /* vclt - scalar. */ |
c4759747 | 14006 | |
49ab9992 | 14007 | __extension__ extern __inline uint32_t |
14008 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14009 | vclts_f32 (float32_t __a, float32_t __b) |
c4759747 | 14010 | { |
2d67c34c | 14011 | return __a < __b ? -1 : 0; |
c4759747 | 14012 | } |
14013 | ||
49ab9992 | 14014 | __extension__ extern __inline uint64_t |
14015 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 14016 | vcltd_s64 (int64_t __a, int64_t __b) |
c4759747 | 14017 | { |
2d67c34c | 14018 | return __a < __b ? -1ll : 0ll; |
c4759747 | 14019 | } |
14020 | ||
49ab9992 | 14021 | __extension__ extern __inline uint64_t |
14022 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 14023 | vcltd_u64 (uint64_t __a, uint64_t __b) |
c4759747 | 14024 | { |
2d67c34c | 14025 | return __a < __b ? -1ll : 0ll; |
c4759747 | 14026 | } |
14027 | ||
49ab9992 | 14028 | __extension__ extern __inline uint64_t |
14029 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14030 | vcltd_f64 (float64_t __a, float64_t __b) |
c4759747 | 14031 | { |
2d67c34c | 14032 | return __a < __b ? -1ll : 0ll; |
c4759747 | 14033 | } |
14034 | ||
2d67c34c | 14035 | /* vcltz - vector. */ |
c4759747 | 14036 | |
49ab9992 | 14037 | __extension__ extern __inline uint32x2_t |
14038 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14039 | vcltz_f32 (float32x2_t __a) |
c4759747 | 14040 | { |
e9611d1e | 14041 | return (uint32x2_t) (__a < 0.0f); |
c4759747 | 14042 | } |
14043 | ||
49ab9992 | 14044 | __extension__ extern __inline uint64x1_t |
14045 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14046 | vcltz_f64 (float64x1_t __a) |
c4759747 | 14047 | { |
ac292ff5 | 14048 | return (uint64x1_t) (__a < (float64x1_t) {0.0}); |
c4759747 | 14049 | } |
14050 | ||
49ab9992 | 14051 | __extension__ extern __inline uint8x8_t |
14052 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14053 | vcltz_s8 (int8x8_t __a) |
14054 | { | |
e9611d1e | 14055 | return (uint8x8_t) (__a < 0); |
2d67c34c | 14056 | } |
14057 | ||
49ab9992 | 14058 | __extension__ extern __inline uint16x4_t |
14059 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14060 | vcltz_s16 (int16x4_t __a) |
c4759747 | 14061 | { |
e9611d1e | 14062 | return (uint16x4_t) (__a < 0); |
c4759747 | 14063 | } |
14064 | ||
49ab9992 | 14065 | __extension__ extern __inline uint32x2_t |
14066 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14067 | vcltz_s32 (int32x2_t __a) |
c4759747 | 14068 | { |
e9611d1e | 14069 | return (uint32x2_t) (__a < 0); |
c4759747 | 14070 | } |
14071 | ||
49ab9992 | 14072 | __extension__ extern __inline uint64x1_t |
14073 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14074 | vcltz_s64 (int64x1_t __a) |
c4759747 | 14075 | { |
dc3738cb | 14076 | return (uint64x1_t) (__a < __AARCH64_INT64_C (0)); |
df401d54 | 14077 | } |
14078 | ||
49ab9992 | 14079 | __extension__ extern __inline uint32x4_t |
14080 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14081 | vcltzq_f32 (float32x4_t __a) |
df401d54 | 14082 | { |
e9611d1e | 14083 | return (uint32x4_t) (__a < 0.0f); |
df401d54 | 14084 | } |
14085 | ||
49ab9992 | 14086 | __extension__ extern __inline uint64x2_t |
14087 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14088 | vcltzq_f64 (float64x2_t __a) |
8111d37b | 14089 | { |
e9611d1e | 14090 | return (uint64x2_t) (__a < 0.0); |
8111d37b | 14091 | } |
df401d54 | 14092 | |
49ab9992 | 14093 | __extension__ extern __inline uint8x16_t |
14094 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14095 | vcltzq_s8 (int8x16_t __a) |
f164e9a5 | 14096 | { |
e9611d1e | 14097 | return (uint8x16_t) (__a < 0); |
f164e9a5 | 14098 | } |
14099 | ||
49ab9992 | 14100 | __extension__ extern __inline uint16x8_t |
14101 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14102 | vcltzq_s16 (int16x8_t __a) |
f164e9a5 | 14103 | { |
e9611d1e | 14104 | return (uint16x8_t) (__a < 0); |
f164e9a5 | 14105 | } |
14106 | ||
49ab9992 | 14107 | __extension__ extern __inline uint32x4_t |
14108 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14109 | vcltzq_s32 (int32x4_t __a) |
f164e9a5 | 14110 | { |
e9611d1e | 14111 | return (uint32x4_t) (__a < 0); |
f164e9a5 | 14112 | } |
14113 | ||
49ab9992 | 14114 | __extension__ extern __inline uint64x2_t |
14115 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14116 | vcltzq_s64 (int64x2_t __a) |
8111d37b | 14117 | { |
e9611d1e | 14118 | return (uint64x2_t) (__a < __AARCH64_INT64_C (0)); |
58aab7ce | 14119 | } |
14120 | ||
2d67c34c | 14121 | /* vcltz - scalar. */ |
c4759747 | 14122 | |
49ab9992 | 14123 | __extension__ extern __inline uint32_t |
14124 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14125 | vcltzs_f32 (float32_t __a) |
c4759747 | 14126 | { |
2d67c34c | 14127 | return __a < 0.0f ? -1 : 0; |
c4759747 | 14128 | } |
14129 | ||
49ab9992 | 14130 | __extension__ extern __inline uint64_t |
14131 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 14132 | vcltzd_s64 (int64_t __a) |
58aab7ce | 14133 | { |
2d67c34c | 14134 | return __a < 0 ? -1ll : 0ll; |
58aab7ce | 14135 | } |
14136 | ||
49ab9992 | 14137 | __extension__ extern __inline uint64_t |
14138 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14139 | vcltzd_f64 (float64_t __a) |
df401d54 | 14140 | { |
2d67c34c | 14141 | return __a < 0.0 ? -1ll : 0ll; |
df401d54 | 14142 | } |
14143 | ||
c10c436e | 14144 | /* vcls. */ |
14145 | ||
49ab9992 | 14146 | __extension__ extern __inline int8x8_t |
14147 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c10c436e | 14148 | vcls_s8 (int8x8_t __a) |
14149 | { | |
14150 | return __builtin_aarch64_clrsbv8qi (__a); | |
14151 | } | |
14152 | ||
49ab9992 | 14153 | __extension__ extern __inline int16x4_t |
14154 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c10c436e | 14155 | vcls_s16 (int16x4_t __a) |
14156 | { | |
14157 | return __builtin_aarch64_clrsbv4hi (__a); | |
14158 | } | |
14159 | ||
49ab9992 | 14160 | __extension__ extern __inline int32x2_t |
14161 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c10c436e | 14162 | vcls_s32 (int32x2_t __a) |
14163 | { | |
14164 | return __builtin_aarch64_clrsbv2si (__a); | |
14165 | } | |
14166 | ||
49ab9992 | 14167 | __extension__ extern __inline int8x16_t |
14168 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c10c436e | 14169 | vclsq_s8 (int8x16_t __a) |
14170 | { | |
14171 | return __builtin_aarch64_clrsbv16qi (__a); | |
14172 | } | |
14173 | ||
49ab9992 | 14174 | __extension__ extern __inline int16x8_t |
14175 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c10c436e | 14176 | vclsq_s16 (int16x8_t __a) |
14177 | { | |
14178 | return __builtin_aarch64_clrsbv8hi (__a); | |
14179 | } | |
14180 | ||
49ab9992 | 14181 | __extension__ extern __inline int32x4_t |
14182 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c10c436e | 14183 | vclsq_s32 (int32x4_t __a) |
14184 | { | |
14185 | return __builtin_aarch64_clrsbv4si (__a); | |
14186 | } | |
14187 | ||
32e69596 | 14188 | /* vclz. */ |
14189 | ||
49ab9992 | 14190 | __extension__ extern __inline int8x8_t |
14191 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
32e69596 | 14192 | vclz_s8 (int8x8_t __a) |
14193 | { | |
14194 | return __builtin_aarch64_clzv8qi (__a); | |
14195 | } | |
14196 | ||
49ab9992 | 14197 | __extension__ extern __inline int16x4_t |
14198 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
32e69596 | 14199 | vclz_s16 (int16x4_t __a) |
14200 | { | |
14201 | return __builtin_aarch64_clzv4hi (__a); | |
14202 | } | |
14203 | ||
49ab9992 | 14204 | __extension__ extern __inline int32x2_t |
14205 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
32e69596 | 14206 | vclz_s32 (int32x2_t __a) |
14207 | { | |
14208 | return __builtin_aarch64_clzv2si (__a); | |
14209 | } | |
14210 | ||
49ab9992 | 14211 | __extension__ extern __inline uint8x8_t |
14212 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
32e69596 | 14213 | vclz_u8 (uint8x8_t __a) |
14214 | { | |
14215 | return (uint8x8_t)__builtin_aarch64_clzv8qi ((int8x8_t)__a); | |
14216 | } | |
14217 | ||
49ab9992 | 14218 | __extension__ extern __inline uint16x4_t |
14219 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
32e69596 | 14220 | vclz_u16 (uint16x4_t __a) |
14221 | { | |
14222 | return (uint16x4_t)__builtin_aarch64_clzv4hi ((int16x4_t)__a); | |
14223 | } | |
14224 | ||
49ab9992 | 14225 | __extension__ extern __inline uint32x2_t |
14226 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
32e69596 | 14227 | vclz_u32 (uint32x2_t __a) |
14228 | { | |
14229 | return (uint32x2_t)__builtin_aarch64_clzv2si ((int32x2_t)__a); | |
14230 | } | |
14231 | ||
49ab9992 | 14232 | __extension__ extern __inline int8x16_t |
14233 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
32e69596 | 14234 | vclzq_s8 (int8x16_t __a) |
14235 | { | |
14236 | return __builtin_aarch64_clzv16qi (__a); | |
14237 | } | |
14238 | ||
49ab9992 | 14239 | __extension__ extern __inline int16x8_t |
14240 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
32e69596 | 14241 | vclzq_s16 (int16x8_t __a) |
14242 | { | |
14243 | return __builtin_aarch64_clzv8hi (__a); | |
14244 | } | |
14245 | ||
49ab9992 | 14246 | __extension__ extern __inline int32x4_t |
14247 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
32e69596 | 14248 | vclzq_s32 (int32x4_t __a) |
14249 | { | |
14250 | return __builtin_aarch64_clzv4si (__a); | |
14251 | } | |
14252 | ||
49ab9992 | 14253 | __extension__ extern __inline uint8x16_t |
14254 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
32e69596 | 14255 | vclzq_u8 (uint8x16_t __a) |
14256 | { | |
14257 | return (uint8x16_t)__builtin_aarch64_clzv16qi ((int8x16_t)__a); | |
14258 | } | |
14259 | ||
49ab9992 | 14260 | __extension__ extern __inline uint16x8_t |
14261 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
32e69596 | 14262 | vclzq_u16 (uint16x8_t __a) |
14263 | { | |
14264 | return (uint16x8_t)__builtin_aarch64_clzv8hi ((int16x8_t)__a); | |
14265 | } | |
14266 | ||
49ab9992 | 14267 | __extension__ extern __inline uint32x4_t |
14268 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
32e69596 | 14269 | vclzq_u32 (uint32x4_t __a) |
14270 | { | |
14271 | return (uint32x4_t)__builtin_aarch64_clzv4si ((int32x4_t)__a); | |
14272 | } | |
14273 | ||
c10c436e | 14274 | /* vcnt. */ |
14275 | ||
49ab9992 | 14276 | __extension__ extern __inline poly8x8_t |
14277 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c10c436e | 14278 | vcnt_p8 (poly8x8_t __a) |
14279 | { | |
14280 | return (poly8x8_t) __builtin_aarch64_popcountv8qi ((int8x8_t) __a); | |
14281 | } | |
14282 | ||
49ab9992 | 14283 | __extension__ extern __inline int8x8_t |
14284 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c10c436e | 14285 | vcnt_s8 (int8x8_t __a) |
14286 | { | |
14287 | return __builtin_aarch64_popcountv8qi (__a); | |
14288 | } | |
14289 | ||
49ab9992 | 14290 | __extension__ extern __inline uint8x8_t |
14291 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c10c436e | 14292 | vcnt_u8 (uint8x8_t __a) |
14293 | { | |
14294 | return (uint8x8_t) __builtin_aarch64_popcountv8qi ((int8x8_t) __a); | |
14295 | } | |
14296 | ||
49ab9992 | 14297 | __extension__ extern __inline poly8x16_t |
14298 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c10c436e | 14299 | vcntq_p8 (poly8x16_t __a) |
14300 | { | |
14301 | return (poly8x16_t) __builtin_aarch64_popcountv16qi ((int8x16_t) __a); | |
14302 | } | |
14303 | ||
49ab9992 | 14304 | __extension__ extern __inline int8x16_t |
14305 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c10c436e | 14306 | vcntq_s8 (int8x16_t __a) |
14307 | { | |
14308 | return __builtin_aarch64_popcountv16qi (__a); | |
14309 | } | |
14310 | ||
49ab9992 | 14311 | __extension__ extern __inline uint8x16_t |
14312 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c10c436e | 14313 | vcntq_u8 (uint8x16_t __a) |
14314 | { | |
14315 | return (uint8x16_t) __builtin_aarch64_popcountv16qi ((int8x16_t) __a); | |
14316 | } | |
14317 | ||
443405c9 | 14318 | /* vcopy_lane. */ |
14319 | ||
49ab9992 | 14320 | __extension__ extern __inline float32x2_t |
14321 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14322 | vcopy_lane_f32 (float32x2_t __a, const int __lane1, |
14323 | float32x2_t __b, const int __lane2) | |
14324 | { | |
14325 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14326 | __a, __lane1); | |
14327 | } | |
14328 | ||
49ab9992 | 14329 | __extension__ extern __inline float64x1_t |
14330 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14331 | vcopy_lane_f64 (float64x1_t __a, const int __lane1, |
14332 | float64x1_t __b, const int __lane2) | |
14333 | { | |
14334 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14335 | __a, __lane1); | |
14336 | } | |
14337 | ||
49ab9992 | 14338 | __extension__ extern __inline poly8x8_t |
14339 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14340 | vcopy_lane_p8 (poly8x8_t __a, const int __lane1, |
14341 | poly8x8_t __b, const int __lane2) | |
14342 | { | |
14343 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14344 | __a, __lane1); | |
14345 | } | |
14346 | ||
49ab9992 | 14347 | __extension__ extern __inline poly16x4_t |
14348 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14349 | vcopy_lane_p16 (poly16x4_t __a, const int __lane1, |
14350 | poly16x4_t __b, const int __lane2) | |
14351 | { | |
14352 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14353 | __a, __lane1); | |
14354 | } | |
14355 | ||
d4f47414 | 14356 | __extension__ extern __inline poly64x1_t |
14357 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
14358 | vcopy_lane_p64 (poly64x1_t __a, const int __lane1, | |
14359 | poly64x1_t __b, const int __lane2) | |
14360 | { | |
14361 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14362 | __a, __lane1); | |
14363 | } | |
14364 | ||
49ab9992 | 14365 | __extension__ extern __inline int8x8_t |
14366 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14367 | vcopy_lane_s8 (int8x8_t __a, const int __lane1, |
14368 | int8x8_t __b, const int __lane2) | |
14369 | { | |
14370 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14371 | __a, __lane1); | |
14372 | } | |
14373 | ||
49ab9992 | 14374 | __extension__ extern __inline int16x4_t |
14375 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14376 | vcopy_lane_s16 (int16x4_t __a, const int __lane1, |
14377 | int16x4_t __b, const int __lane2) | |
14378 | { | |
14379 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14380 | __a, __lane1); | |
14381 | } | |
14382 | ||
49ab9992 | 14383 | __extension__ extern __inline int32x2_t |
14384 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14385 | vcopy_lane_s32 (int32x2_t __a, const int __lane1, |
14386 | int32x2_t __b, const int __lane2) | |
14387 | { | |
14388 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14389 | __a, __lane1); | |
14390 | } | |
14391 | ||
49ab9992 | 14392 | __extension__ extern __inline int64x1_t |
14393 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14394 | vcopy_lane_s64 (int64x1_t __a, const int __lane1, |
14395 | int64x1_t __b, const int __lane2) | |
14396 | { | |
14397 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14398 | __a, __lane1); | |
14399 | } | |
14400 | ||
49ab9992 | 14401 | __extension__ extern __inline uint8x8_t |
14402 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14403 | vcopy_lane_u8 (uint8x8_t __a, const int __lane1, |
14404 | uint8x8_t __b, const int __lane2) | |
14405 | { | |
14406 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14407 | __a, __lane1); | |
14408 | } | |
14409 | ||
49ab9992 | 14410 | __extension__ extern __inline uint16x4_t |
14411 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14412 | vcopy_lane_u16 (uint16x4_t __a, const int __lane1, |
14413 | uint16x4_t __b, const int __lane2) | |
14414 | { | |
14415 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14416 | __a, __lane1); | |
14417 | } | |
14418 | ||
49ab9992 | 14419 | __extension__ extern __inline uint32x2_t |
14420 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14421 | vcopy_lane_u32 (uint32x2_t __a, const int __lane1, |
14422 | uint32x2_t __b, const int __lane2) | |
14423 | { | |
14424 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14425 | __a, __lane1); | |
14426 | } | |
14427 | ||
49ab9992 | 14428 | __extension__ extern __inline uint64x1_t |
14429 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14430 | vcopy_lane_u64 (uint64x1_t __a, const int __lane1, |
14431 | uint64x1_t __b, const int __lane2) | |
14432 | { | |
14433 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14434 | __a, __lane1); | |
14435 | } | |
14436 | ||
14437 | /* vcopy_laneq. */ | |
14438 | ||
49ab9992 | 14439 | __extension__ extern __inline float32x2_t |
14440 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14441 | vcopy_laneq_f32 (float32x2_t __a, const int __lane1, |
14442 | float32x4_t __b, const int __lane2) | |
14443 | { | |
14444 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14445 | __a, __lane1); | |
14446 | } | |
14447 | ||
49ab9992 | 14448 | __extension__ extern __inline float64x1_t |
14449 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14450 | vcopy_laneq_f64 (float64x1_t __a, const int __lane1, |
14451 | float64x2_t __b, const int __lane2) | |
14452 | { | |
14453 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14454 | __a, __lane1); | |
14455 | } | |
14456 | ||
49ab9992 | 14457 | __extension__ extern __inline poly8x8_t |
14458 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14459 | vcopy_laneq_p8 (poly8x8_t __a, const int __lane1, |
14460 | poly8x16_t __b, const int __lane2) | |
14461 | { | |
14462 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14463 | __a, __lane1); | |
14464 | } | |
14465 | ||
49ab9992 | 14466 | __extension__ extern __inline poly16x4_t |
14467 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14468 | vcopy_laneq_p16 (poly16x4_t __a, const int __lane1, |
14469 | poly16x8_t __b, const int __lane2) | |
14470 | { | |
14471 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14472 | __a, __lane1); | |
14473 | } | |
14474 | ||
d4f47414 | 14475 | __extension__ extern __inline poly64x1_t |
14476 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
14477 | vcopy_laneq_p64 (poly64x1_t __a, const int __lane1, | |
14478 | poly64x2_t __b, const int __lane2) | |
14479 | { | |
14480 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14481 | __a, __lane1); | |
14482 | } | |
14483 | ||
49ab9992 | 14484 | __extension__ extern __inline int8x8_t |
14485 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14486 | vcopy_laneq_s8 (int8x8_t __a, const int __lane1, |
14487 | int8x16_t __b, const int __lane2) | |
14488 | { | |
14489 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14490 | __a, __lane1); | |
14491 | } | |
14492 | ||
49ab9992 | 14493 | __extension__ extern __inline int16x4_t |
14494 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14495 | vcopy_laneq_s16 (int16x4_t __a, const int __lane1, |
14496 | int16x8_t __b, const int __lane2) | |
14497 | { | |
14498 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14499 | __a, __lane1); | |
14500 | } | |
14501 | ||
49ab9992 | 14502 | __extension__ extern __inline int32x2_t |
14503 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14504 | vcopy_laneq_s32 (int32x2_t __a, const int __lane1, |
14505 | int32x4_t __b, const int __lane2) | |
14506 | { | |
14507 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14508 | __a, __lane1); | |
14509 | } | |
14510 | ||
49ab9992 | 14511 | __extension__ extern __inline int64x1_t |
14512 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14513 | vcopy_laneq_s64 (int64x1_t __a, const int __lane1, |
14514 | int64x2_t __b, const int __lane2) | |
14515 | { | |
14516 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14517 | __a, __lane1); | |
14518 | } | |
14519 | ||
49ab9992 | 14520 | __extension__ extern __inline uint8x8_t |
14521 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14522 | vcopy_laneq_u8 (uint8x8_t __a, const int __lane1, |
14523 | uint8x16_t __b, const int __lane2) | |
14524 | { | |
14525 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14526 | __a, __lane1); | |
14527 | } | |
14528 | ||
49ab9992 | 14529 | __extension__ extern __inline uint16x4_t |
14530 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14531 | vcopy_laneq_u16 (uint16x4_t __a, const int __lane1, |
14532 | uint16x8_t __b, const int __lane2) | |
14533 | { | |
14534 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14535 | __a, __lane1); | |
14536 | } | |
14537 | ||
49ab9992 | 14538 | __extension__ extern __inline uint32x2_t |
14539 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14540 | vcopy_laneq_u32 (uint32x2_t __a, const int __lane1, |
14541 | uint32x4_t __b, const int __lane2) | |
14542 | { | |
14543 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14544 | __a, __lane1); | |
14545 | } | |
14546 | ||
49ab9992 | 14547 | __extension__ extern __inline uint64x1_t |
14548 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14549 | vcopy_laneq_u64 (uint64x1_t __a, const int __lane1, |
14550 | uint64x2_t __b, const int __lane2) | |
14551 | { | |
14552 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14553 | __a, __lane1); | |
14554 | } | |
14555 | ||
14556 | /* vcopyq_lane. */ | |
14557 | ||
49ab9992 | 14558 | __extension__ extern __inline float32x4_t |
14559 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14560 | vcopyq_lane_f32 (float32x4_t __a, const int __lane1, |
14561 | float32x2_t __b, const int __lane2) | |
14562 | { | |
14563 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14564 | __a, __lane1); | |
14565 | } | |
14566 | ||
49ab9992 | 14567 | __extension__ extern __inline float64x2_t |
14568 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14569 | vcopyq_lane_f64 (float64x2_t __a, const int __lane1, |
14570 | float64x1_t __b, const int __lane2) | |
14571 | { | |
14572 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14573 | __a, __lane1); | |
14574 | } | |
14575 | ||
49ab9992 | 14576 | __extension__ extern __inline poly8x16_t |
14577 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14578 | vcopyq_lane_p8 (poly8x16_t __a, const int __lane1, |
14579 | poly8x8_t __b, const int __lane2) | |
14580 | { | |
14581 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14582 | __a, __lane1); | |
14583 | } | |
14584 | ||
49ab9992 | 14585 | __extension__ extern __inline poly16x8_t |
14586 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14587 | vcopyq_lane_p16 (poly16x8_t __a, const int __lane1, |
14588 | poly16x4_t __b, const int __lane2) | |
14589 | { | |
14590 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14591 | __a, __lane1); | |
14592 | } | |
14593 | ||
d4f47414 | 14594 | __extension__ extern __inline poly64x2_t |
14595 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
14596 | vcopyq_lane_p64 (poly64x2_t __a, const int __lane1, | |
14597 | poly64x1_t __b, const int __lane2) | |
14598 | { | |
14599 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14600 | __a, __lane1); | |
14601 | } | |
14602 | ||
49ab9992 | 14603 | __extension__ extern __inline int8x16_t |
14604 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14605 | vcopyq_lane_s8 (int8x16_t __a, const int __lane1, |
14606 | int8x8_t __b, const int __lane2) | |
14607 | { | |
14608 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14609 | __a, __lane1); | |
14610 | } | |
14611 | ||
49ab9992 | 14612 | __extension__ extern __inline int16x8_t |
14613 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14614 | vcopyq_lane_s16 (int16x8_t __a, const int __lane1, |
14615 | int16x4_t __b, const int __lane2) | |
14616 | { | |
14617 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14618 | __a, __lane1); | |
14619 | } | |
14620 | ||
49ab9992 | 14621 | __extension__ extern __inline int32x4_t |
14622 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14623 | vcopyq_lane_s32 (int32x4_t __a, const int __lane1, |
14624 | int32x2_t __b, const int __lane2) | |
14625 | { | |
14626 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14627 | __a, __lane1); | |
14628 | } | |
14629 | ||
49ab9992 | 14630 | __extension__ extern __inline int64x2_t |
14631 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14632 | vcopyq_lane_s64 (int64x2_t __a, const int __lane1, |
14633 | int64x1_t __b, const int __lane2) | |
14634 | { | |
14635 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14636 | __a, __lane1); | |
14637 | } | |
14638 | ||
49ab9992 | 14639 | __extension__ extern __inline uint8x16_t |
14640 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14641 | vcopyq_lane_u8 (uint8x16_t __a, const int __lane1, |
14642 | uint8x8_t __b, const int __lane2) | |
14643 | { | |
14644 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14645 | __a, __lane1); | |
14646 | } | |
14647 | ||
49ab9992 | 14648 | __extension__ extern __inline uint16x8_t |
14649 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14650 | vcopyq_lane_u16 (uint16x8_t __a, const int __lane1, |
14651 | uint16x4_t __b, const int __lane2) | |
14652 | { | |
14653 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14654 | __a, __lane1); | |
14655 | } | |
14656 | ||
49ab9992 | 14657 | __extension__ extern __inline uint32x4_t |
14658 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14659 | vcopyq_lane_u32 (uint32x4_t __a, const int __lane1, |
14660 | uint32x2_t __b, const int __lane2) | |
14661 | { | |
14662 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14663 | __a, __lane1); | |
14664 | } | |
14665 | ||
49ab9992 | 14666 | __extension__ extern __inline uint64x2_t |
14667 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14668 | vcopyq_lane_u64 (uint64x2_t __a, const int __lane1, |
14669 | uint64x1_t __b, const int __lane2) | |
14670 | { | |
14671 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14672 | __a, __lane1); | |
14673 | } | |
14674 | ||
14675 | /* vcopyq_laneq. */ | |
14676 | ||
49ab9992 | 14677 | __extension__ extern __inline float32x4_t |
14678 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14679 | vcopyq_laneq_f32 (float32x4_t __a, const int __lane1, |
14680 | float32x4_t __b, const int __lane2) | |
14681 | { | |
14682 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14683 | __a, __lane1); | |
14684 | } | |
14685 | ||
49ab9992 | 14686 | __extension__ extern __inline float64x2_t |
14687 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14688 | vcopyq_laneq_f64 (float64x2_t __a, const int __lane1, |
14689 | float64x2_t __b, const int __lane2) | |
14690 | { | |
14691 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14692 | __a, __lane1); | |
14693 | } | |
14694 | ||
49ab9992 | 14695 | __extension__ extern __inline poly8x16_t |
14696 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14697 | vcopyq_laneq_p8 (poly8x16_t __a, const int __lane1, |
14698 | poly8x16_t __b, const int __lane2) | |
14699 | { | |
14700 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14701 | __a, __lane1); | |
14702 | } | |
14703 | ||
49ab9992 | 14704 | __extension__ extern __inline poly16x8_t |
14705 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14706 | vcopyq_laneq_p16 (poly16x8_t __a, const int __lane1, |
14707 | poly16x8_t __b, const int __lane2) | |
14708 | { | |
14709 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14710 | __a, __lane1); | |
14711 | } | |
14712 | ||
d4f47414 | 14713 | __extension__ extern __inline poly64x2_t |
14714 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
14715 | vcopyq_laneq_p64 (poly64x2_t __a, const int __lane1, | |
14716 | poly64x2_t __b, const int __lane2) | |
14717 | { | |
14718 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14719 | __a, __lane1); | |
14720 | } | |
14721 | ||
49ab9992 | 14722 | __extension__ extern __inline int8x16_t |
14723 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14724 | vcopyq_laneq_s8 (int8x16_t __a, const int __lane1, |
14725 | int8x16_t __b, const int __lane2) | |
14726 | { | |
14727 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14728 | __a, __lane1); | |
14729 | } | |
14730 | ||
49ab9992 | 14731 | __extension__ extern __inline int16x8_t |
14732 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14733 | vcopyq_laneq_s16 (int16x8_t __a, const int __lane1, |
14734 | int16x8_t __b, const int __lane2) | |
14735 | { | |
14736 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14737 | __a, __lane1); | |
14738 | } | |
14739 | ||
49ab9992 | 14740 | __extension__ extern __inline int32x4_t |
14741 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14742 | vcopyq_laneq_s32 (int32x4_t __a, const int __lane1, |
14743 | int32x4_t __b, const int __lane2) | |
14744 | { | |
14745 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14746 | __a, __lane1); | |
14747 | } | |
14748 | ||
49ab9992 | 14749 | __extension__ extern __inline int64x2_t |
14750 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14751 | vcopyq_laneq_s64 (int64x2_t __a, const int __lane1, |
14752 | int64x2_t __b, const int __lane2) | |
14753 | { | |
14754 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14755 | __a, __lane1); | |
14756 | } | |
14757 | ||
49ab9992 | 14758 | __extension__ extern __inline uint8x16_t |
14759 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14760 | vcopyq_laneq_u8 (uint8x16_t __a, const int __lane1, |
14761 | uint8x16_t __b, const int __lane2) | |
14762 | { | |
14763 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14764 | __a, __lane1); | |
14765 | } | |
14766 | ||
49ab9992 | 14767 | __extension__ extern __inline uint16x8_t |
14768 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14769 | vcopyq_laneq_u16 (uint16x8_t __a, const int __lane1, |
14770 | uint16x8_t __b, const int __lane2) | |
14771 | { | |
14772 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14773 | __a, __lane1); | |
14774 | } | |
14775 | ||
49ab9992 | 14776 | __extension__ extern __inline uint32x4_t |
14777 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14778 | vcopyq_laneq_u32 (uint32x4_t __a, const int __lane1, |
14779 | uint32x4_t __b, const int __lane2) | |
14780 | { | |
14781 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14782 | __a, __lane1); | |
14783 | } | |
14784 | ||
49ab9992 | 14785 | __extension__ extern __inline uint64x2_t |
14786 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
443405c9 | 14787 | vcopyq_laneq_u64 (uint64x2_t __a, const int __lane1, |
14788 | uint64x2_t __b, const int __lane2) | |
14789 | { | |
14790 | return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2), | |
14791 | __a, __lane1); | |
14792 | } | |
14793 | ||
2d67c34c | 14794 | /* vcvt (double -> float). */ |
8111d37b | 14795 | |
49ab9992 | 14796 | __extension__ extern __inline float16x4_t |
14797 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96bf1c67 | 14798 | vcvt_f16_f32 (float32x4_t __a) |
14799 | { | |
14800 | return __builtin_aarch64_float_truncate_lo_v4hf (__a); | |
14801 | } | |
14802 | ||
49ab9992 | 14803 | __extension__ extern __inline float16x8_t |
14804 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
96bf1c67 | 14805 | vcvt_high_f16_f32 (float16x4_t __a, float32x4_t __b) |
14806 | { | |
14807 | return __builtin_aarch64_float_truncate_hi_v8hf (__a, __b); | |
14808 | } | |
14809 | ||
49ab9992 | 14810 | __extension__ extern __inline float32x2_t |
14811 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14812 | vcvt_f32_f64 (float64x2_t __a) |
df401d54 | 14813 | { |
2d67c34c | 14814 | return __builtin_aarch64_float_truncate_lo_v2sf (__a); |
df401d54 | 14815 | } |
14816 | ||
49ab9992 | 14817 | __extension__ extern __inline float32x4_t |
14818 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14819 | vcvt_high_f32_f64 (float32x2_t __a, float64x2_t __b) |
df401d54 | 14820 | { |
2d67c34c | 14821 | return __builtin_aarch64_float_truncate_hi_v4sf (__a, __b); |
df401d54 | 14822 | } |
14823 | ||
2d67c34c | 14824 | /* vcvt (float -> double). */ |
df401d54 | 14825 | |
49ab9992 | 14826 | __extension__ extern __inline float32x4_t |
14827 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
90d05d2d | 14828 | vcvt_f32_f16 (float16x4_t __a) |
14829 | { | |
14830 | return __builtin_aarch64_float_extend_lo_v4sf (__a); | |
14831 | } | |
14832 | ||
49ab9992 | 14833 | __extension__ extern __inline float64x2_t |
14834 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14835 | vcvt_f64_f32 (float32x2_t __a) |
df401d54 | 14836 | { |
df401d54 | 14837 | |
2d67c34c | 14838 | return __builtin_aarch64_float_extend_lo_v2df (__a); |
df401d54 | 14839 | } |
14840 | ||
49ab9992 | 14841 | __extension__ extern __inline float32x4_t |
14842 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
90d05d2d | 14843 | vcvt_high_f32_f16 (float16x8_t __a) |
14844 | { | |
14845 | return __builtin_aarch64_vec_unpacks_hi_v8hf (__a); | |
14846 | } | |
14847 | ||
49ab9992 | 14848 | __extension__ extern __inline float64x2_t |
14849 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 14850 | vcvt_high_f64_f32 (float32x4_t __a) |
df401d54 | 14851 | { |
2d67c34c | 14852 | return __builtin_aarch64_vec_unpacks_hi_v4sf (__a); |
df401d54 | 14853 | } |
14854 | ||
99fc0e4d | 14855 | /* vcvt (<u>fixed-point -> float). */ |
14856 | ||
49ab9992 | 14857 | __extension__ extern __inline float64_t |
14858 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
99fc0e4d | 14859 | vcvtd_n_f64_s64 (int64_t __a, const int __b) |
14860 | { | |
14861 | return __builtin_aarch64_scvtfdi (__a, __b); | |
14862 | } | |
14863 | ||
49ab9992 | 14864 | __extension__ extern __inline float64_t |
14865 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
99fc0e4d | 14866 | vcvtd_n_f64_u64 (uint64_t __a, const int __b) |
14867 | { | |
14868 | return __builtin_aarch64_ucvtfdi_sus (__a, __b); | |
14869 | } | |
14870 | ||
49ab9992 | 14871 | __extension__ extern __inline float32_t |
14872 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
99fc0e4d | 14873 | vcvts_n_f32_s32 (int32_t __a, const int __b) |
14874 | { | |
14875 | return __builtin_aarch64_scvtfsi (__a, __b); | |
14876 | } | |
14877 | ||
49ab9992 | 14878 | __extension__ extern __inline float32_t |
14879 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
99fc0e4d | 14880 | vcvts_n_f32_u32 (uint32_t __a, const int __b) |
14881 | { | |
14882 | return __builtin_aarch64_ucvtfsi_sus (__a, __b); | |
14883 | } | |
14884 | ||
49ab9992 | 14885 | __extension__ extern __inline float32x2_t |
14886 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fabaa1ee | 14887 | vcvt_n_f32_s32 (int32x2_t __a, const int __b) |
14888 | { | |
14889 | return __builtin_aarch64_scvtfv2si (__a, __b); | |
14890 | } | |
14891 | ||
49ab9992 | 14892 | __extension__ extern __inline float32x2_t |
14893 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fabaa1ee | 14894 | vcvt_n_f32_u32 (uint32x2_t __a, const int __b) |
14895 | { | |
14896 | return __builtin_aarch64_ucvtfv2si_sus (__a, __b); | |
14897 | } | |
14898 | ||
49ab9992 | 14899 | __extension__ extern __inline float64x1_t |
14900 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7ab71cb3 | 14901 | vcvt_n_f64_s64 (int64x1_t __a, const int __b) |
14902 | { | |
14903 | return (float64x1_t) | |
14904 | { __builtin_aarch64_scvtfdi (vget_lane_s64 (__a, 0), __b) }; | |
14905 | } | |
14906 | ||
49ab9992 | 14907 | __extension__ extern __inline float64x1_t |
14908 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7ab71cb3 | 14909 | vcvt_n_f64_u64 (uint64x1_t __a, const int __b) |
14910 | { | |
14911 | return (float64x1_t) | |
14912 | { __builtin_aarch64_ucvtfdi_sus (vget_lane_u64 (__a, 0), __b) }; | |
14913 | } | |
14914 | ||
49ab9992 | 14915 | __extension__ extern __inline float32x4_t |
14916 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fabaa1ee | 14917 | vcvtq_n_f32_s32 (int32x4_t __a, const int __b) |
14918 | { | |
14919 | return __builtin_aarch64_scvtfv4si (__a, __b); | |
14920 | } | |
14921 | ||
49ab9992 | 14922 | __extension__ extern __inline float32x4_t |
14923 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fabaa1ee | 14924 | vcvtq_n_f32_u32 (uint32x4_t __a, const int __b) |
14925 | { | |
14926 | return __builtin_aarch64_ucvtfv4si_sus (__a, __b); | |
14927 | } | |
14928 | ||
49ab9992 | 14929 | __extension__ extern __inline float64x2_t |
14930 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fabaa1ee | 14931 | vcvtq_n_f64_s64 (int64x2_t __a, const int __b) |
14932 | { | |
14933 | return __builtin_aarch64_scvtfv2di (__a, __b); | |
14934 | } | |
14935 | ||
49ab9992 | 14936 | __extension__ extern __inline float64x2_t |
14937 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fabaa1ee | 14938 | vcvtq_n_f64_u64 (uint64x2_t __a, const int __b) |
14939 | { | |
14940 | return __builtin_aarch64_ucvtfv2di_sus (__a, __b); | |
14941 | } | |
14942 | ||
99fc0e4d | 14943 | /* vcvt (float -> <u>fixed-point). */ |
14944 | ||
49ab9992 | 14945 | __extension__ extern __inline int64_t |
14946 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
99fc0e4d | 14947 | vcvtd_n_s64_f64 (float64_t __a, const int __b) |
14948 | { | |
14949 | return __builtin_aarch64_fcvtzsdf (__a, __b); | |
14950 | } | |
14951 | ||
49ab9992 | 14952 | __extension__ extern __inline uint64_t |
14953 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
99fc0e4d | 14954 | vcvtd_n_u64_f64 (float64_t __a, const int __b) |
14955 | { | |
14956 | return __builtin_aarch64_fcvtzudf_uss (__a, __b); | |
14957 | } | |
14958 | ||
49ab9992 | 14959 | __extension__ extern __inline int32_t |
14960 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
99fc0e4d | 14961 | vcvts_n_s32_f32 (float32_t __a, const int __b) |
14962 | { | |
14963 | return __builtin_aarch64_fcvtzssf (__a, __b); | |
14964 | } | |
14965 | ||
49ab9992 | 14966 | __extension__ extern __inline uint32_t |
14967 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
99fc0e4d | 14968 | vcvts_n_u32_f32 (float32_t __a, const int __b) |
14969 | { | |
14970 | return __builtin_aarch64_fcvtzusf_uss (__a, __b); | |
14971 | } | |
14972 | ||
49ab9992 | 14973 | __extension__ extern __inline int32x2_t |
14974 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fabaa1ee | 14975 | vcvt_n_s32_f32 (float32x2_t __a, const int __b) |
14976 | { | |
14977 | return __builtin_aarch64_fcvtzsv2sf (__a, __b); | |
14978 | } | |
14979 | ||
49ab9992 | 14980 | __extension__ extern __inline uint32x2_t |
14981 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fabaa1ee | 14982 | vcvt_n_u32_f32 (float32x2_t __a, const int __b) |
14983 | { | |
14984 | return __builtin_aarch64_fcvtzuv2sf_uss (__a, __b); | |
14985 | } | |
14986 | ||
49ab9992 | 14987 | __extension__ extern __inline int64x1_t |
14988 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7ab71cb3 | 14989 | vcvt_n_s64_f64 (float64x1_t __a, const int __b) |
14990 | { | |
14991 | return (int64x1_t) | |
14992 | { __builtin_aarch64_fcvtzsdf (vget_lane_f64 (__a, 0), __b) }; | |
14993 | } | |
14994 | ||
49ab9992 | 14995 | __extension__ extern __inline uint64x1_t |
14996 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7ab71cb3 | 14997 | vcvt_n_u64_f64 (float64x1_t __a, const int __b) |
14998 | { | |
14999 | return (uint64x1_t) | |
15000 | { __builtin_aarch64_fcvtzudf_uss (vget_lane_f64 (__a, 0), __b) }; | |
15001 | } | |
15002 | ||
49ab9992 | 15003 | __extension__ extern __inline int32x4_t |
15004 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fabaa1ee | 15005 | vcvtq_n_s32_f32 (float32x4_t __a, const int __b) |
15006 | { | |
15007 | return __builtin_aarch64_fcvtzsv4sf (__a, __b); | |
15008 | } | |
15009 | ||
49ab9992 | 15010 | __extension__ extern __inline uint32x4_t |
15011 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fabaa1ee | 15012 | vcvtq_n_u32_f32 (float32x4_t __a, const int __b) |
15013 | { | |
15014 | return __builtin_aarch64_fcvtzuv4sf_uss (__a, __b); | |
15015 | } | |
15016 | ||
49ab9992 | 15017 | __extension__ extern __inline int64x2_t |
15018 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fabaa1ee | 15019 | vcvtq_n_s64_f64 (float64x2_t __a, const int __b) |
15020 | { | |
15021 | return __builtin_aarch64_fcvtzsv2df (__a, __b); | |
15022 | } | |
15023 | ||
49ab9992 | 15024 | __extension__ extern __inline uint64x2_t |
15025 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
fabaa1ee | 15026 | vcvtq_n_u64_f64 (float64x2_t __a, const int __b) |
15027 | { | |
15028 | return __builtin_aarch64_fcvtzuv2df_uss (__a, __b); | |
15029 | } | |
15030 | ||
2d67c34c | 15031 | /* vcvt (<u>int -> float) */ |
df401d54 | 15032 | |
49ab9992 | 15033 | __extension__ extern __inline float64_t |
15034 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15035 | vcvtd_f64_s64 (int64_t __a) |
df401d54 | 15036 | { |
2d67c34c | 15037 | return (float64_t) __a; |
c4759747 | 15038 | } |
15039 | ||
49ab9992 | 15040 | __extension__ extern __inline float64_t |
15041 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15042 | vcvtd_f64_u64 (uint64_t __a) |
c4759747 | 15043 | { |
2d67c34c | 15044 | return (float64_t) __a; |
c4759747 | 15045 | } |
15046 | ||
49ab9992 | 15047 | __extension__ extern __inline float32_t |
15048 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15049 | vcvts_f32_s32 (int32_t __a) |
c4759747 | 15050 | { |
2d67c34c | 15051 | return (float32_t) __a; |
c4759747 | 15052 | } |
15053 | ||
49ab9992 | 15054 | __extension__ extern __inline float32_t |
15055 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15056 | vcvts_f32_u32 (uint32_t __a) |
c4759747 | 15057 | { |
2d67c34c | 15058 | return (float32_t) __a; |
df401d54 | 15059 | } |
15060 | ||
49ab9992 | 15061 | __extension__ extern __inline float32x2_t |
15062 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15063 | vcvt_f32_s32 (int32x2_t __a) |
df401d54 | 15064 | { |
2d67c34c | 15065 | return __builtin_aarch64_floatv2siv2sf (__a); |
df401d54 | 15066 | } |
15067 | ||
49ab9992 | 15068 | __extension__ extern __inline float32x2_t |
15069 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15070 | vcvt_f32_u32 (uint32x2_t __a) |
df401d54 | 15071 | { |
2d67c34c | 15072 | return __builtin_aarch64_floatunsv2siv2sf ((int32x2_t) __a); |
df401d54 | 15073 | } |
15074 | ||
49ab9992 | 15075 | __extension__ extern __inline float64x1_t |
15076 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7ab71cb3 | 15077 | vcvt_f64_s64 (int64x1_t __a) |
15078 | { | |
15079 | return (float64x1_t) { vget_lane_s64 (__a, 0) }; | |
15080 | } | |
15081 | ||
49ab9992 | 15082 | __extension__ extern __inline float64x1_t |
15083 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7ab71cb3 | 15084 | vcvt_f64_u64 (uint64x1_t __a) |
15085 | { | |
15086 | return (float64x1_t) { vget_lane_u64 (__a, 0) }; | |
15087 | } | |
15088 | ||
49ab9992 | 15089 | __extension__ extern __inline float32x4_t |
15090 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15091 | vcvtq_f32_s32 (int32x4_t __a) |
df401d54 | 15092 | { |
2d67c34c | 15093 | return __builtin_aarch64_floatv4siv4sf (__a); |
df401d54 | 15094 | } |
15095 | ||
49ab9992 | 15096 | __extension__ extern __inline float32x4_t |
15097 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15098 | vcvtq_f32_u32 (uint32x4_t __a) |
df401d54 | 15099 | { |
2d67c34c | 15100 | return __builtin_aarch64_floatunsv4siv4sf ((int32x4_t) __a); |
df401d54 | 15101 | } |
15102 | ||
49ab9992 | 15103 | __extension__ extern __inline float64x2_t |
15104 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15105 | vcvtq_f64_s64 (int64x2_t __a) |
df401d54 | 15106 | { |
2d67c34c | 15107 | return __builtin_aarch64_floatv2div2df (__a); |
df401d54 | 15108 | } |
15109 | ||
49ab9992 | 15110 | __extension__ extern __inline float64x2_t |
15111 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15112 | vcvtq_f64_u64 (uint64x2_t __a) |
df401d54 | 15113 | { |
2d67c34c | 15114 | return __builtin_aarch64_floatunsv2div2df ((int64x2_t) __a); |
df401d54 | 15115 | } |
15116 | ||
2d67c34c | 15117 | /* vcvt (float -> <u>int) */ |
df401d54 | 15118 | |
49ab9992 | 15119 | __extension__ extern __inline int64_t |
15120 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15121 | vcvtd_s64_f64 (float64_t __a) |
df401d54 | 15122 | { |
2d67c34c | 15123 | return (int64_t) __a; |
df401d54 | 15124 | } |
15125 | ||
49ab9992 | 15126 | __extension__ extern __inline uint64_t |
15127 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15128 | vcvtd_u64_f64 (float64_t __a) |
c4759747 | 15129 | { |
2d67c34c | 15130 | return (uint64_t) __a; |
c4759747 | 15131 | } |
15132 | ||
49ab9992 | 15133 | __extension__ extern __inline int32_t |
15134 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15135 | vcvts_s32_f32 (float32_t __a) |
df401d54 | 15136 | { |
2d67c34c | 15137 | return (int32_t) __a; |
c4759747 | 15138 | } |
15139 | ||
49ab9992 | 15140 | __extension__ extern __inline uint32_t |
15141 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15142 | vcvts_u32_f32 (float32_t __a) |
c4759747 | 15143 | { |
2d67c34c | 15144 | return (uint32_t) __a; |
c4759747 | 15145 | } |
15146 | ||
49ab9992 | 15147 | __extension__ extern __inline int32x2_t |
15148 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15149 | vcvt_s32_f32 (float32x2_t __a) |
c4759747 | 15150 | { |
2d67c34c | 15151 | return __builtin_aarch64_lbtruncv2sfv2si (__a); |
c4759747 | 15152 | } |
15153 | ||
49ab9992 | 15154 | __extension__ extern __inline uint32x2_t |
15155 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15156 | vcvt_u32_f32 (float32x2_t __a) |
c4759747 | 15157 | { |
61c44790 | 15158 | return __builtin_aarch64_lbtruncuv2sfv2si_us (__a); |
c4759747 | 15159 | } |
15160 | ||
49ab9992 | 15161 | __extension__ extern __inline int32x4_t |
15162 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15163 | vcvtq_s32_f32 (float32x4_t __a) |
c4759747 | 15164 | { |
2d67c34c | 15165 | return __builtin_aarch64_lbtruncv4sfv4si (__a); |
c4759747 | 15166 | } |
15167 | ||
49ab9992 | 15168 | __extension__ extern __inline uint32x4_t |
15169 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15170 | vcvtq_u32_f32 (float32x4_t __a) |
c4759747 | 15171 | { |
61c44790 | 15172 | return __builtin_aarch64_lbtruncuv4sfv4si_us (__a); |
c4759747 | 15173 | } |
15174 | ||
49ab9992 | 15175 | __extension__ extern __inline int64x1_t |
15176 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8eacba94 | 15177 | vcvt_s64_f64 (float64x1_t __a) |
15178 | { | |
15179 | return (int64x1_t) {vcvtd_s64_f64 (__a[0])}; | |
15180 | } | |
15181 | ||
49ab9992 | 15182 | __extension__ extern __inline uint64x1_t |
15183 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8eacba94 | 15184 | vcvt_u64_f64 (float64x1_t __a) |
15185 | { | |
15186 | return (uint64x1_t) {vcvtd_u64_f64 (__a[0])}; | |
15187 | } | |
15188 | ||
49ab9992 | 15189 | __extension__ extern __inline int64x2_t |
15190 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15191 | vcvtq_s64_f64 (float64x2_t __a) |
c4759747 | 15192 | { |
2d67c34c | 15193 | return __builtin_aarch64_lbtruncv2dfv2di (__a); |
c4759747 | 15194 | } |
15195 | ||
49ab9992 | 15196 | __extension__ extern __inline uint64x2_t |
15197 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15198 | vcvtq_u64_f64 (float64x2_t __a) |
c4759747 | 15199 | { |
61c44790 | 15200 | return __builtin_aarch64_lbtruncuv2dfv2di_us (__a); |
c4759747 | 15201 | } |
15202 | ||
2d67c34c | 15203 | /* vcvta */ |
15204 | ||
49ab9992 | 15205 | __extension__ extern __inline int64_t |
15206 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15207 | vcvtad_s64_f64 (float64_t __a) |
c4759747 | 15208 | { |
2d67c34c | 15209 | return __builtin_aarch64_lrounddfdi (__a); |
c4759747 | 15210 | } |
15211 | ||
49ab9992 | 15212 | __extension__ extern __inline uint64_t |
15213 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15214 | vcvtad_u64_f64 (float64_t __a) |
c4759747 | 15215 | { |
61c44790 | 15216 | return __builtin_aarch64_lroundudfdi_us (__a); |
c4759747 | 15217 | } |
15218 | ||
49ab9992 | 15219 | __extension__ extern __inline int32_t |
15220 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15221 | vcvtas_s32_f32 (float32_t __a) |
c4759747 | 15222 | { |
2d67c34c | 15223 | return __builtin_aarch64_lroundsfsi (__a); |
c4759747 | 15224 | } |
15225 | ||
49ab9992 | 15226 | __extension__ extern __inline uint32_t |
15227 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15228 | vcvtas_u32_f32 (float32_t __a) |
c4759747 | 15229 | { |
61c44790 | 15230 | return __builtin_aarch64_lroundusfsi_us (__a); |
c4759747 | 15231 | } |
15232 | ||
49ab9992 | 15233 | __extension__ extern __inline int32x2_t |
15234 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15235 | vcvta_s32_f32 (float32x2_t __a) |
c4759747 | 15236 | { |
2d67c34c | 15237 | return __builtin_aarch64_lroundv2sfv2si (__a); |
c4759747 | 15238 | } |
15239 | ||
49ab9992 | 15240 | __extension__ extern __inline uint32x2_t |
15241 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15242 | vcvta_u32_f32 (float32x2_t __a) |
c4759747 | 15243 | { |
61c44790 | 15244 | return __builtin_aarch64_lrounduv2sfv2si_us (__a); |
c4759747 | 15245 | } |
15246 | ||
49ab9992 | 15247 | __extension__ extern __inline int32x4_t |
15248 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15249 | vcvtaq_s32_f32 (float32x4_t __a) |
c4759747 | 15250 | { |
2d67c34c | 15251 | return __builtin_aarch64_lroundv4sfv4si (__a); |
c4759747 | 15252 | } |
15253 | ||
49ab9992 | 15254 | __extension__ extern __inline uint32x4_t |
15255 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15256 | vcvtaq_u32_f32 (float32x4_t __a) |
c4759747 | 15257 | { |
61c44790 | 15258 | return __builtin_aarch64_lrounduv4sfv4si_us (__a); |
c4759747 | 15259 | } |
15260 | ||
49ab9992 | 15261 | __extension__ extern __inline int64x1_t |
15262 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8eacba94 | 15263 | vcvta_s64_f64 (float64x1_t __a) |
15264 | { | |
15265 | return (int64x1_t) {vcvtad_s64_f64 (__a[0])}; | |
15266 | } | |
15267 | ||
49ab9992 | 15268 | __extension__ extern __inline uint64x1_t |
15269 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8eacba94 | 15270 | vcvta_u64_f64 (float64x1_t __a) |
15271 | { | |
15272 | return (uint64x1_t) {vcvtad_u64_f64 (__a[0])}; | |
15273 | } | |
15274 | ||
49ab9992 | 15275 | __extension__ extern __inline int64x2_t |
15276 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15277 | vcvtaq_s64_f64 (float64x2_t __a) |
c4759747 | 15278 | { |
2d67c34c | 15279 | return __builtin_aarch64_lroundv2dfv2di (__a); |
c4759747 | 15280 | } |
15281 | ||
49ab9992 | 15282 | __extension__ extern __inline uint64x2_t |
15283 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15284 | vcvtaq_u64_f64 (float64x2_t __a) |
c4759747 | 15285 | { |
61c44790 | 15286 | return __builtin_aarch64_lrounduv2dfv2di_us (__a); |
c4759747 | 15287 | } |
15288 | ||
2d67c34c | 15289 | /* vcvtm */ |
c4759747 | 15290 | |
49ab9992 | 15291 | __extension__ extern __inline int64_t |
15292 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15293 | vcvtmd_s64_f64 (float64_t __a) |
c4759747 | 15294 | { |
bbce8ac0 | 15295 | return __builtin_llfloor (__a); |
df401d54 | 15296 | } |
15297 | ||
49ab9992 | 15298 | __extension__ extern __inline uint64_t |
15299 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15300 | vcvtmd_u64_f64 (float64_t __a) |
df401d54 | 15301 | { |
61c44790 | 15302 | return __builtin_aarch64_lfloorudfdi_us (__a); |
c4759747 | 15303 | } |
15304 | ||
49ab9992 | 15305 | __extension__ extern __inline int32_t |
15306 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15307 | vcvtms_s32_f32 (float32_t __a) |
c4759747 | 15308 | { |
2d67c34c | 15309 | return __builtin_ifloorf (__a); |
c4759747 | 15310 | } |
15311 | ||
49ab9992 | 15312 | __extension__ extern __inline uint32_t |
15313 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15314 | vcvtms_u32_f32 (float32_t __a) |
c4759747 | 15315 | { |
61c44790 | 15316 | return __builtin_aarch64_lfloorusfsi_us (__a); |
c4759747 | 15317 | } |
15318 | ||
49ab9992 | 15319 | __extension__ extern __inline int32x2_t |
15320 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15321 | vcvtm_s32_f32 (float32x2_t __a) |
15322 | { | |
15323 | return __builtin_aarch64_lfloorv2sfv2si (__a); | |
15324 | } | |
c4759747 | 15325 | |
49ab9992 | 15326 | __extension__ extern __inline uint32x2_t |
15327 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15328 | vcvtm_u32_f32 (float32x2_t __a) |
c4759747 | 15329 | { |
61c44790 | 15330 | return __builtin_aarch64_lflooruv2sfv2si_us (__a); |
c4759747 | 15331 | } |
15332 | ||
49ab9992 | 15333 | __extension__ extern __inline int32x4_t |
15334 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15335 | vcvtmq_s32_f32 (float32x4_t __a) |
c4759747 | 15336 | { |
2d67c34c | 15337 | return __builtin_aarch64_lfloorv4sfv4si (__a); |
df401d54 | 15338 | } |
15339 | ||
49ab9992 | 15340 | __extension__ extern __inline uint32x4_t |
15341 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15342 | vcvtmq_u32_f32 (float32x4_t __a) |
c4759747 | 15343 | { |
61c44790 | 15344 | return __builtin_aarch64_lflooruv4sfv4si_us (__a); |
c4759747 | 15345 | } |
df401d54 | 15346 | |
49ab9992 | 15347 | __extension__ extern __inline int64x1_t |
15348 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8eacba94 | 15349 | vcvtm_s64_f64 (float64x1_t __a) |
15350 | { | |
15351 | return (int64x1_t) {vcvtmd_s64_f64 (__a[0])}; | |
15352 | } | |
15353 | ||
49ab9992 | 15354 | __extension__ extern __inline uint64x1_t |
15355 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8eacba94 | 15356 | vcvtm_u64_f64 (float64x1_t __a) |
15357 | { | |
15358 | return (uint64x1_t) {vcvtmd_u64_f64 (__a[0])}; | |
15359 | } | |
15360 | ||
49ab9992 | 15361 | __extension__ extern __inline int64x2_t |
15362 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15363 | vcvtmq_s64_f64 (float64x2_t __a) |
df401d54 | 15364 | { |
2d67c34c | 15365 | return __builtin_aarch64_lfloorv2dfv2di (__a); |
df401d54 | 15366 | } |
15367 | ||
49ab9992 | 15368 | __extension__ extern __inline uint64x2_t |
15369 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15370 | vcvtmq_u64_f64 (float64x2_t __a) |
df401d54 | 15371 | { |
61c44790 | 15372 | return __builtin_aarch64_lflooruv2dfv2di_us (__a); |
df401d54 | 15373 | } |
15374 | ||
2d67c34c | 15375 | /* vcvtn */ |
15376 | ||
49ab9992 | 15377 | __extension__ extern __inline int64_t |
15378 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15379 | vcvtnd_s64_f64 (float64_t __a) |
df401d54 | 15380 | { |
2d67c34c | 15381 | return __builtin_aarch64_lfrintndfdi (__a); |
df401d54 | 15382 | } |
15383 | ||
49ab9992 | 15384 | __extension__ extern __inline uint64_t |
15385 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15386 | vcvtnd_u64_f64 (float64_t __a) |
df401d54 | 15387 | { |
61c44790 | 15388 | return __builtin_aarch64_lfrintnudfdi_us (__a); |
df401d54 | 15389 | } |
15390 | ||
49ab9992 | 15391 | __extension__ extern __inline int32_t |
15392 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15393 | vcvtns_s32_f32 (float32_t __a) |
df401d54 | 15394 | { |
2d67c34c | 15395 | return __builtin_aarch64_lfrintnsfsi (__a); |
df401d54 | 15396 | } |
15397 | ||
49ab9992 | 15398 | __extension__ extern __inline uint32_t |
15399 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15400 | vcvtns_u32_f32 (float32_t __a) |
df401d54 | 15401 | { |
61c44790 | 15402 | return __builtin_aarch64_lfrintnusfsi_us (__a); |
2d67c34c | 15403 | } |
15404 | ||
49ab9992 | 15405 | __extension__ extern __inline int32x2_t |
15406 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15407 | vcvtn_s32_f32 (float32x2_t __a) |
15408 | { | |
15409 | return __builtin_aarch64_lfrintnv2sfv2si (__a); | |
df401d54 | 15410 | } |
15411 | ||
49ab9992 | 15412 | __extension__ extern __inline uint32x2_t |
15413 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15414 | vcvtn_u32_f32 (float32x2_t __a) |
df401d54 | 15415 | { |
61c44790 | 15416 | return __builtin_aarch64_lfrintnuv2sfv2si_us (__a); |
2d67c34c | 15417 | } |
15418 | ||
49ab9992 | 15419 | __extension__ extern __inline int32x4_t |
15420 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15421 | vcvtnq_s32_f32 (float32x4_t __a) |
15422 | { | |
15423 | return __builtin_aarch64_lfrintnv4sfv4si (__a); | |
df401d54 | 15424 | } |
15425 | ||
49ab9992 | 15426 | __extension__ extern __inline uint32x4_t |
15427 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15428 | vcvtnq_u32_f32 (float32x4_t __a) |
df401d54 | 15429 | { |
61c44790 | 15430 | return __builtin_aarch64_lfrintnuv4sfv4si_us (__a); |
c4759747 | 15431 | } |
15432 | ||
49ab9992 | 15433 | __extension__ extern __inline int64x1_t |
15434 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8eacba94 | 15435 | vcvtn_s64_f64 (float64x1_t __a) |
15436 | { | |
15437 | return (int64x1_t) {vcvtnd_s64_f64 (__a[0])}; | |
15438 | } | |
15439 | ||
49ab9992 | 15440 | __extension__ extern __inline uint64x1_t |
15441 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8eacba94 | 15442 | vcvtn_u64_f64 (float64x1_t __a) |
15443 | { | |
15444 | return (uint64x1_t) {vcvtnd_u64_f64 (__a[0])}; | |
15445 | } | |
15446 | ||
49ab9992 | 15447 | __extension__ extern __inline int64x2_t |
15448 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15449 | vcvtnq_s64_f64 (float64x2_t __a) |
c4759747 | 15450 | { |
2d67c34c | 15451 | return __builtin_aarch64_lfrintnv2dfv2di (__a); |
c4759747 | 15452 | } |
15453 | ||
49ab9992 | 15454 | __extension__ extern __inline uint64x2_t |
15455 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15456 | vcvtnq_u64_f64 (float64x2_t __a) |
c4759747 | 15457 | { |
61c44790 | 15458 | return __builtin_aarch64_lfrintnuv2dfv2di_us (__a); |
c4759747 | 15459 | } |
15460 | ||
2d67c34c | 15461 | /* vcvtp */ |
15462 | ||
49ab9992 | 15463 | __extension__ extern __inline int64_t |
15464 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15465 | vcvtpd_s64_f64 (float64_t __a) |
c4759747 | 15466 | { |
bbce8ac0 | 15467 | return __builtin_llceil (__a); |
df401d54 | 15468 | } |
15469 | ||
49ab9992 | 15470 | __extension__ extern __inline uint64_t |
15471 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15472 | vcvtpd_u64_f64 (float64_t __a) |
df401d54 | 15473 | { |
61c44790 | 15474 | return __builtin_aarch64_lceiludfdi_us (__a); |
df401d54 | 15475 | } |
15476 | ||
49ab9992 | 15477 | __extension__ extern __inline int32_t |
15478 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15479 | vcvtps_s32_f32 (float32_t __a) |
df401d54 | 15480 | { |
2d67c34c | 15481 | return __builtin_iceilf (__a); |
df401d54 | 15482 | } |
15483 | ||
49ab9992 | 15484 | __extension__ extern __inline uint32_t |
15485 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15486 | vcvtps_u32_f32 (float32_t __a) |
df401d54 | 15487 | { |
61c44790 | 15488 | return __builtin_aarch64_lceilusfsi_us (__a); |
df401d54 | 15489 | } |
15490 | ||
49ab9992 | 15491 | __extension__ extern __inline int32x2_t |
15492 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15493 | vcvtp_s32_f32 (float32x2_t __a) |
df401d54 | 15494 | { |
2d67c34c | 15495 | return __builtin_aarch64_lceilv2sfv2si (__a); |
df401d54 | 15496 | } |
15497 | ||
49ab9992 | 15498 | __extension__ extern __inline uint32x2_t |
15499 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15500 | vcvtp_u32_f32 (float32x2_t __a) |
df401d54 | 15501 | { |
61c44790 | 15502 | return __builtin_aarch64_lceiluv2sfv2si_us (__a); |
df401d54 | 15503 | } |
15504 | ||
49ab9992 | 15505 | __extension__ extern __inline int32x4_t |
15506 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15507 | vcvtpq_s32_f32 (float32x4_t __a) |
df401d54 | 15508 | { |
2d67c34c | 15509 | return __builtin_aarch64_lceilv4sfv4si (__a); |
df401d54 | 15510 | } |
15511 | ||
49ab9992 | 15512 | __extension__ extern __inline uint32x4_t |
15513 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15514 | vcvtpq_u32_f32 (float32x4_t __a) |
df401d54 | 15515 | { |
61c44790 | 15516 | return __builtin_aarch64_lceiluv4sfv4si_us (__a); |
2d67c34c | 15517 | } |
15518 | ||
49ab9992 | 15519 | __extension__ extern __inline int64x1_t |
15520 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8eacba94 | 15521 | vcvtp_s64_f64 (float64x1_t __a) |
15522 | { | |
15523 | return (int64x1_t) {vcvtpd_s64_f64 (__a[0])}; | |
15524 | } | |
15525 | ||
49ab9992 | 15526 | __extension__ extern __inline uint64x1_t |
15527 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8eacba94 | 15528 | vcvtp_u64_f64 (float64x1_t __a) |
15529 | { | |
15530 | return (uint64x1_t) {vcvtpd_u64_f64 (__a[0])}; | |
15531 | } | |
15532 | ||
49ab9992 | 15533 | __extension__ extern __inline int64x2_t |
15534 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15535 | vcvtpq_s64_f64 (float64x2_t __a) |
15536 | { | |
15537 | return __builtin_aarch64_lceilv2dfv2di (__a); | |
df401d54 | 15538 | } |
15539 | ||
49ab9992 | 15540 | __extension__ extern __inline uint64x2_t |
15541 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15542 | vcvtpq_u64_f64 (float64x2_t __a) |
df401d54 | 15543 | { |
61c44790 | 15544 | return __builtin_aarch64_lceiluv2dfv2di_us (__a); |
df401d54 | 15545 | } |
15546 | ||
2d67c34c | 15547 | /* vdup_n */ |
c4759747 | 15548 | |
49ab9992 | 15549 | __extension__ extern __inline float16x4_t |
15550 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 15551 | vdup_n_f16 (float16_t __a) |
15552 | { | |
15553 | return (float16x4_t) {__a, __a, __a, __a}; | |
15554 | } | |
15555 | ||
49ab9992 | 15556 | __extension__ extern __inline float32x2_t |
15557 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15558 | vdup_n_f32 (float32_t __a) |
c4759747 | 15559 | { |
2d67c34c | 15560 | return (float32x2_t) {__a, __a}; |
c4759747 | 15561 | } |
15562 | ||
49ab9992 | 15563 | __extension__ extern __inline float64x1_t |
15564 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15565 | vdup_n_f64 (float64_t __a) |
df401d54 | 15566 | { |
ac292ff5 | 15567 | return (float64x1_t) {__a}; |
c4759747 | 15568 | } |
15569 | ||
49ab9992 | 15570 | __extension__ extern __inline poly8x8_t |
15571 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15572 | vdup_n_p8 (poly8_t __a) |
c4759747 | 15573 | { |
2d67c34c | 15574 | return (poly8x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; |
c4759747 | 15575 | } |
15576 | ||
49ab9992 | 15577 | __extension__ extern __inline poly16x4_t |
15578 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15579 | vdup_n_p16 (poly16_t __a) |
c4759747 | 15580 | { |
2d67c34c | 15581 | return (poly16x4_t) {__a, __a, __a, __a}; |
c4759747 | 15582 | } |
15583 | ||
d4f47414 | 15584 | __extension__ extern __inline poly64x1_t |
15585 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
15586 | vdup_n_p64 (poly64_t __a) | |
15587 | { | |
15588 | return (poly64x1_t) {__a}; | |
15589 | } | |
15590 | ||
49ab9992 | 15591 | __extension__ extern __inline int8x8_t |
15592 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15593 | vdup_n_s8 (int8_t __a) |
15594 | { | |
15595 | return (int8x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; | |
15596 | } | |
c4759747 | 15597 | |
49ab9992 | 15598 | __extension__ extern __inline int16x4_t |
15599 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15600 | vdup_n_s16 (int16_t __a) |
c4759747 | 15601 | { |
2d67c34c | 15602 | return (int16x4_t) {__a, __a, __a, __a}; |
c4759747 | 15603 | } |
15604 | ||
49ab9992 | 15605 | __extension__ extern __inline int32x2_t |
15606 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15607 | vdup_n_s32 (int32_t __a) |
c4759747 | 15608 | { |
2d67c34c | 15609 | return (int32x2_t) {__a, __a}; |
c4759747 | 15610 | } |
15611 | ||
49ab9992 | 15612 | __extension__ extern __inline int64x1_t |
15613 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15614 | vdup_n_s64 (int64_t __a) |
c4759747 | 15615 | { |
12fc7207 | 15616 | return (int64x1_t) {__a}; |
c4759747 | 15617 | } |
15618 | ||
49ab9992 | 15619 | __extension__ extern __inline uint8x8_t |
15620 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15621 | vdup_n_u8 (uint8_t __a) |
c4759747 | 15622 | { |
2d67c34c | 15623 | return (uint8x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; |
c4759747 | 15624 | } |
15625 | ||
49ab9992 | 15626 | __extension__ extern __inline uint16x4_t |
15627 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15628 | vdup_n_u16 (uint16_t __a) |
c4759747 | 15629 | { |
2d67c34c | 15630 | return (uint16x4_t) {__a, __a, __a, __a}; |
c4759747 | 15631 | } |
15632 | ||
49ab9992 | 15633 | __extension__ extern __inline uint32x2_t |
15634 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15635 | vdup_n_u32 (uint32_t __a) |
c4759747 | 15636 | { |
2d67c34c | 15637 | return (uint32x2_t) {__a, __a}; |
c4759747 | 15638 | } |
15639 | ||
49ab9992 | 15640 | __extension__ extern __inline uint64x1_t |
15641 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15642 | vdup_n_u64 (uint64_t __a) |
c4759747 | 15643 | { |
12fc7207 | 15644 | return (uint64x1_t) {__a}; |
c4759747 | 15645 | } |
15646 | ||
2d67c34c | 15647 | /* vdupq_n */ |
c4759747 | 15648 | |
49ab9992 | 15649 | __extension__ extern __inline float16x8_t |
15650 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 15651 | vdupq_n_f16 (float16_t __a) |
15652 | { | |
15653 | return (float16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; | |
15654 | } | |
15655 | ||
49ab9992 | 15656 | __extension__ extern __inline float32x4_t |
15657 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15658 | vdupq_n_f32 (float32_t __a) |
c4759747 | 15659 | { |
2d67c34c | 15660 | return (float32x4_t) {__a, __a, __a, __a}; |
c4759747 | 15661 | } |
15662 | ||
49ab9992 | 15663 | __extension__ extern __inline float64x2_t |
15664 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15665 | vdupq_n_f64 (float64_t __a) |
c4759747 | 15666 | { |
2d67c34c | 15667 | return (float64x2_t) {__a, __a}; |
c4759747 | 15668 | } |
15669 | ||
49ab9992 | 15670 | __extension__ extern __inline poly8x16_t |
15671 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15672 | vdupq_n_p8 (uint32_t __a) |
c4759747 | 15673 | { |
2d67c34c | 15674 | return (poly8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a, |
15675 | __a, __a, __a, __a, __a, __a, __a, __a}; | |
c4759747 | 15676 | } |
15677 | ||
49ab9992 | 15678 | __extension__ extern __inline poly16x8_t |
15679 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15680 | vdupq_n_p16 (uint32_t __a) |
c4759747 | 15681 | { |
2d67c34c | 15682 | return (poly16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; |
c4759747 | 15683 | } |
15684 | ||
d4f47414 | 15685 | __extension__ extern __inline poly64x2_t |
15686 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
15687 | vdupq_n_p64 (uint64_t __a) | |
15688 | { | |
15689 | return (poly64x2_t) {__a, __a}; | |
15690 | } | |
15691 | ||
49ab9992 | 15692 | __extension__ extern __inline int8x16_t |
15693 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15694 | vdupq_n_s8 (int32_t __a) |
c4759747 | 15695 | { |
2d67c34c | 15696 | return (int8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a, |
15697 | __a, __a, __a, __a, __a, __a, __a, __a}; | |
c4759747 | 15698 | } |
15699 | ||
49ab9992 | 15700 | __extension__ extern __inline int16x8_t |
15701 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15702 | vdupq_n_s16 (int32_t __a) |
c4759747 | 15703 | { |
2d67c34c | 15704 | return (int16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; |
c4759747 | 15705 | } |
15706 | ||
49ab9992 | 15707 | __extension__ extern __inline int32x4_t |
15708 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15709 | vdupq_n_s32 (int32_t __a) |
c4759747 | 15710 | { |
2d67c34c | 15711 | return (int32x4_t) {__a, __a, __a, __a}; |
df401d54 | 15712 | } |
15713 | ||
49ab9992 | 15714 | __extension__ extern __inline int64x2_t |
15715 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15716 | vdupq_n_s64 (int64_t __a) |
df401d54 | 15717 | { |
2d67c34c | 15718 | return (int64x2_t) {__a, __a}; |
c4759747 | 15719 | } |
15720 | ||
49ab9992 | 15721 | __extension__ extern __inline uint8x16_t |
15722 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15723 | vdupq_n_u8 (uint32_t __a) |
c4759747 | 15724 | { |
2d67c34c | 15725 | return (uint8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a, |
15726 | __a, __a, __a, __a, __a, __a, __a, __a}; | |
c4759747 | 15727 | } |
15728 | ||
49ab9992 | 15729 | __extension__ extern __inline uint16x8_t |
15730 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15731 | vdupq_n_u16 (uint32_t __a) |
c4759747 | 15732 | { |
2d67c34c | 15733 | return (uint16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; |
8111d37b | 15734 | } |
15735 | ||
49ab9992 | 15736 | __extension__ extern __inline uint32x4_t |
15737 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15738 | vdupq_n_u32 (uint32_t __a) |
8111d37b | 15739 | { |
2d67c34c | 15740 | return (uint32x4_t) {__a, __a, __a, __a}; |
8111d37b | 15741 | } |
15742 | ||
49ab9992 | 15743 | __extension__ extern __inline uint64x2_t |
15744 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15745 | vdupq_n_u64 (uint64_t __a) |
8111d37b | 15746 | { |
2d67c34c | 15747 | return (uint64x2_t) {__a, __a}; |
8111d37b | 15748 | } |
15749 | ||
2d67c34c | 15750 | /* vdup_lane */ |
8111d37b | 15751 | |
49ab9992 | 15752 | __extension__ extern __inline float16x4_t |
15753 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 15754 | vdup_lane_f16 (float16x4_t __a, const int __b) |
15755 | { | |
15756 | return __aarch64_vdup_lane_f16 (__a, __b); | |
15757 | } | |
15758 | ||
49ab9992 | 15759 | __extension__ extern __inline float32x2_t |
15760 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15761 | vdup_lane_f32 (float32x2_t __a, const int __b) |
8111d37b | 15762 | { |
2d67c34c | 15763 | return __aarch64_vdup_lane_f32 (__a, __b); |
8111d37b | 15764 | } |
15765 | ||
49ab9992 | 15766 | __extension__ extern __inline float64x1_t |
15767 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15768 | vdup_lane_f64 (float64x1_t __a, const int __b) |
8111d37b | 15769 | { |
2d67c34c | 15770 | return __aarch64_vdup_lane_f64 (__a, __b); |
8111d37b | 15771 | } |
15772 | ||
49ab9992 | 15773 | __extension__ extern __inline poly8x8_t |
15774 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15775 | vdup_lane_p8 (poly8x8_t __a, const int __b) |
8111d37b | 15776 | { |
2d67c34c | 15777 | return __aarch64_vdup_lane_p8 (__a, __b); |
8111d37b | 15778 | } |
15779 | ||
49ab9992 | 15780 | __extension__ extern __inline poly16x4_t |
15781 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15782 | vdup_lane_p16 (poly16x4_t __a, const int __b) |
8111d37b | 15783 | { |
2d67c34c | 15784 | return __aarch64_vdup_lane_p16 (__a, __b); |
8111d37b | 15785 | } |
15786 | ||
d4f47414 | 15787 | __extension__ extern __inline poly64x1_t |
15788 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
15789 | vdup_lane_p64 (poly64x1_t __a, const int __b) | |
15790 | { | |
15791 | return __aarch64_vdup_lane_p64 (__a, __b); | |
15792 | } | |
15793 | ||
49ab9992 | 15794 | __extension__ extern __inline int8x8_t |
15795 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15796 | vdup_lane_s8 (int8x8_t __a, const int __b) |
8111d37b | 15797 | { |
2d67c34c | 15798 | return __aarch64_vdup_lane_s8 (__a, __b); |
df401d54 | 15799 | } |
15800 | ||
49ab9992 | 15801 | __extension__ extern __inline int16x4_t |
15802 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15803 | vdup_lane_s16 (int16x4_t __a, const int __b) |
df401d54 | 15804 | { |
2d67c34c | 15805 | return __aarch64_vdup_lane_s16 (__a, __b); |
df401d54 | 15806 | } |
15807 | ||
49ab9992 | 15808 | __extension__ extern __inline int32x2_t |
15809 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15810 | vdup_lane_s32 (int32x2_t __a, const int __b) |
df401d54 | 15811 | { |
2d67c34c | 15812 | return __aarch64_vdup_lane_s32 (__a, __b); |
df401d54 | 15813 | } |
15814 | ||
49ab9992 | 15815 | __extension__ extern __inline int64x1_t |
15816 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15817 | vdup_lane_s64 (int64x1_t __a, const int __b) |
df401d54 | 15818 | { |
2d67c34c | 15819 | return __aarch64_vdup_lane_s64 (__a, __b); |
df401d54 | 15820 | } |
15821 | ||
49ab9992 | 15822 | __extension__ extern __inline uint8x8_t |
15823 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15824 | vdup_lane_u8 (uint8x8_t __a, const int __b) |
df401d54 | 15825 | { |
2d67c34c | 15826 | return __aarch64_vdup_lane_u8 (__a, __b); |
df401d54 | 15827 | } |
15828 | ||
49ab9992 | 15829 | __extension__ extern __inline uint16x4_t |
15830 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15831 | vdup_lane_u16 (uint16x4_t __a, const int __b) |
df401d54 | 15832 | { |
2d67c34c | 15833 | return __aarch64_vdup_lane_u16 (__a, __b); |
df401d54 | 15834 | } |
15835 | ||
49ab9992 | 15836 | __extension__ extern __inline uint32x2_t |
15837 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15838 | vdup_lane_u32 (uint32x2_t __a, const int __b) |
df401d54 | 15839 | { |
2d67c34c | 15840 | return __aarch64_vdup_lane_u32 (__a, __b); |
df401d54 | 15841 | } |
15842 | ||
49ab9992 | 15843 | __extension__ extern __inline uint64x1_t |
15844 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15845 | vdup_lane_u64 (uint64x1_t __a, const int __b) |
df401d54 | 15846 | { |
2d67c34c | 15847 | return __aarch64_vdup_lane_u64 (__a, __b); |
df401d54 | 15848 | } |
15849 | ||
2d67c34c | 15850 | /* vdup_laneq */ |
8111d37b | 15851 | |
49ab9992 | 15852 | __extension__ extern __inline float16x4_t |
15853 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 15854 | vdup_laneq_f16 (float16x8_t __a, const int __b) |
15855 | { | |
15856 | return __aarch64_vdup_laneq_f16 (__a, __b); | |
15857 | } | |
15858 | ||
49ab9992 | 15859 | __extension__ extern __inline float32x2_t |
15860 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15861 | vdup_laneq_f32 (float32x4_t __a, const int __b) |
df401d54 | 15862 | { |
2d67c34c | 15863 | return __aarch64_vdup_laneq_f32 (__a, __b); |
df401d54 | 15864 | } |
15865 | ||
49ab9992 | 15866 | __extension__ extern __inline float64x1_t |
15867 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15868 | vdup_laneq_f64 (float64x2_t __a, const int __b) |
df401d54 | 15869 | { |
2d67c34c | 15870 | return __aarch64_vdup_laneq_f64 (__a, __b); |
df401d54 | 15871 | } |
15872 | ||
49ab9992 | 15873 | __extension__ extern __inline poly8x8_t |
15874 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15875 | vdup_laneq_p8 (poly8x16_t __a, const int __b) |
df401d54 | 15876 | { |
2d67c34c | 15877 | return __aarch64_vdup_laneq_p8 (__a, __b); |
df401d54 | 15878 | } |
15879 | ||
49ab9992 | 15880 | __extension__ extern __inline poly16x4_t |
15881 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15882 | vdup_laneq_p16 (poly16x8_t __a, const int __b) |
df401d54 | 15883 | { |
2d67c34c | 15884 | return __aarch64_vdup_laneq_p16 (__a, __b); |
df401d54 | 15885 | } |
15886 | ||
d4f47414 | 15887 | __extension__ extern __inline poly64x1_t |
15888 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
15889 | vdup_laneq_p64 (poly64x2_t __a, const int __b) | |
15890 | { | |
15891 | return __aarch64_vdup_laneq_p64 (__a, __b); | |
15892 | } | |
15893 | ||
49ab9992 | 15894 | __extension__ extern __inline int8x8_t |
15895 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15896 | vdup_laneq_s8 (int8x16_t __a, const int __b) |
df401d54 | 15897 | { |
2d67c34c | 15898 | return __aarch64_vdup_laneq_s8 (__a, __b); |
df401d54 | 15899 | } |
15900 | ||
49ab9992 | 15901 | __extension__ extern __inline int16x4_t |
15902 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15903 | vdup_laneq_s16 (int16x8_t __a, const int __b) |
df401d54 | 15904 | { |
2d67c34c | 15905 | return __aarch64_vdup_laneq_s16 (__a, __b); |
df401d54 | 15906 | } |
15907 | ||
49ab9992 | 15908 | __extension__ extern __inline int32x2_t |
15909 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15910 | vdup_laneq_s32 (int32x4_t __a, const int __b) |
df401d54 | 15911 | { |
2d67c34c | 15912 | return __aarch64_vdup_laneq_s32 (__a, __b); |
df401d54 | 15913 | } |
15914 | ||
49ab9992 | 15915 | __extension__ extern __inline int64x1_t |
15916 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15917 | vdup_laneq_s64 (int64x2_t __a, const int __b) |
df401d54 | 15918 | { |
2d67c34c | 15919 | return __aarch64_vdup_laneq_s64 (__a, __b); |
df401d54 | 15920 | } |
15921 | ||
49ab9992 | 15922 | __extension__ extern __inline uint8x8_t |
15923 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15924 | vdup_laneq_u8 (uint8x16_t __a, const int __b) |
df401d54 | 15925 | { |
2d67c34c | 15926 | return __aarch64_vdup_laneq_u8 (__a, __b); |
df401d54 | 15927 | } |
15928 | ||
49ab9992 | 15929 | __extension__ extern __inline uint16x4_t |
15930 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15931 | vdup_laneq_u16 (uint16x8_t __a, const int __b) |
df401d54 | 15932 | { |
2d67c34c | 15933 | return __aarch64_vdup_laneq_u16 (__a, __b); |
df401d54 | 15934 | } |
15935 | ||
49ab9992 | 15936 | __extension__ extern __inline uint32x2_t |
15937 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15938 | vdup_laneq_u32 (uint32x4_t __a, const int __b) |
15939 | { | |
15940 | return __aarch64_vdup_laneq_u32 (__a, __b); | |
15941 | } | |
8111d37b | 15942 | |
49ab9992 | 15943 | __extension__ extern __inline uint64x1_t |
15944 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15945 | vdup_laneq_u64 (uint64x2_t __a, const int __b) |
df401d54 | 15946 | { |
2d67c34c | 15947 | return __aarch64_vdup_laneq_u64 (__a, __b); |
df401d54 | 15948 | } |
15949 | ||
2d67c34c | 15950 | /* vdupq_lane */ |
7d8a6c0e | 15951 | |
49ab9992 | 15952 | __extension__ extern __inline float16x8_t |
15953 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 15954 | vdupq_lane_f16 (float16x4_t __a, const int __b) |
15955 | { | |
15956 | return __aarch64_vdupq_lane_f16 (__a, __b); | |
15957 | } | |
15958 | ||
49ab9992 | 15959 | __extension__ extern __inline float32x4_t |
15960 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15961 | vdupq_lane_f32 (float32x2_t __a, const int __b) |
df401d54 | 15962 | { |
2d67c34c | 15963 | return __aarch64_vdupq_lane_f32 (__a, __b); |
df401d54 | 15964 | } |
15965 | ||
49ab9992 | 15966 | __extension__ extern __inline float64x2_t |
15967 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15968 | vdupq_lane_f64 (float64x1_t __a, const int __b) |
df401d54 | 15969 | { |
2d67c34c | 15970 | return __aarch64_vdupq_lane_f64 (__a, __b); |
df401d54 | 15971 | } |
15972 | ||
49ab9992 | 15973 | __extension__ extern __inline poly8x16_t |
15974 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15975 | vdupq_lane_p8 (poly8x8_t __a, const int __b) |
df401d54 | 15976 | { |
2d67c34c | 15977 | return __aarch64_vdupq_lane_p8 (__a, __b); |
df401d54 | 15978 | } |
15979 | ||
49ab9992 | 15980 | __extension__ extern __inline poly16x8_t |
15981 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15982 | vdupq_lane_p16 (poly16x4_t __a, const int __b) |
df401d54 | 15983 | { |
2d67c34c | 15984 | return __aarch64_vdupq_lane_p16 (__a, __b); |
df401d54 | 15985 | } |
15986 | ||
d4f47414 | 15987 | __extension__ extern __inline poly64x2_t |
15988 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
15989 | vdupq_lane_p64 (poly64x1_t __a, const int __b) | |
15990 | { | |
15991 | return __aarch64_vdupq_lane_p64 (__a, __b); | |
15992 | } | |
15993 | ||
49ab9992 | 15994 | __extension__ extern __inline int8x16_t |
15995 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 15996 | vdupq_lane_s8 (int8x8_t __a, const int __b) |
df401d54 | 15997 | { |
2d67c34c | 15998 | return __aarch64_vdupq_lane_s8 (__a, __b); |
df401d54 | 15999 | } |
16000 | ||
49ab9992 | 16001 | __extension__ extern __inline int16x8_t |
16002 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16003 | vdupq_lane_s16 (int16x4_t __a, const int __b) |
df401d54 | 16004 | { |
2d67c34c | 16005 | return __aarch64_vdupq_lane_s16 (__a, __b); |
df401d54 | 16006 | } |
16007 | ||
49ab9992 | 16008 | __extension__ extern __inline int32x4_t |
16009 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16010 | vdupq_lane_s32 (int32x2_t __a, const int __b) |
df401d54 | 16011 | { |
2d67c34c | 16012 | return __aarch64_vdupq_lane_s32 (__a, __b); |
df401d54 | 16013 | } |
16014 | ||
49ab9992 | 16015 | __extension__ extern __inline int64x2_t |
16016 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16017 | vdupq_lane_s64 (int64x1_t __a, const int __b) |
df401d54 | 16018 | { |
2d67c34c | 16019 | return __aarch64_vdupq_lane_s64 (__a, __b); |
df401d54 | 16020 | } |
16021 | ||
49ab9992 | 16022 | __extension__ extern __inline uint8x16_t |
16023 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16024 | vdupq_lane_u8 (uint8x8_t __a, const int __b) |
df401d54 | 16025 | { |
2d67c34c | 16026 | return __aarch64_vdupq_lane_u8 (__a, __b); |
df401d54 | 16027 | } |
16028 | ||
49ab9992 | 16029 | __extension__ extern __inline uint16x8_t |
16030 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16031 | vdupq_lane_u16 (uint16x4_t __a, const int __b) |
df401d54 | 16032 | { |
2d67c34c | 16033 | return __aarch64_vdupq_lane_u16 (__a, __b); |
df401d54 | 16034 | } |
16035 | ||
49ab9992 | 16036 | __extension__ extern __inline uint32x4_t |
16037 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16038 | vdupq_lane_u32 (uint32x2_t __a, const int __b) |
df401d54 | 16039 | { |
2d67c34c | 16040 | return __aarch64_vdupq_lane_u32 (__a, __b); |
df401d54 | 16041 | } |
16042 | ||
49ab9992 | 16043 | __extension__ extern __inline uint64x2_t |
16044 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16045 | vdupq_lane_u64 (uint64x1_t __a, const int __b) |
df401d54 | 16046 | { |
2d67c34c | 16047 | return __aarch64_vdupq_lane_u64 (__a, __b); |
df401d54 | 16048 | } |
16049 | ||
2d67c34c | 16050 | /* vdupq_laneq */ |
7d8a6c0e | 16051 | |
49ab9992 | 16052 | __extension__ extern __inline float16x8_t |
16053 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 16054 | vdupq_laneq_f16 (float16x8_t __a, const int __b) |
16055 | { | |
16056 | return __aarch64_vdupq_laneq_f16 (__a, __b); | |
16057 | } | |
16058 | ||
49ab9992 | 16059 | __extension__ extern __inline float32x4_t |
16060 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16061 | vdupq_laneq_f32 (float32x4_t __a, const int __b) |
df401d54 | 16062 | { |
2d67c34c | 16063 | return __aarch64_vdupq_laneq_f32 (__a, __b); |
df401d54 | 16064 | } |
16065 | ||
49ab9992 | 16066 | __extension__ extern __inline float64x2_t |
16067 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16068 | vdupq_laneq_f64 (float64x2_t __a, const int __b) |
df401d54 | 16069 | { |
2d67c34c | 16070 | return __aarch64_vdupq_laneq_f64 (__a, __b); |
df401d54 | 16071 | } |
16072 | ||
49ab9992 | 16073 | __extension__ extern __inline poly8x16_t |
16074 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16075 | vdupq_laneq_p8 (poly8x16_t __a, const int __b) |
df401d54 | 16076 | { |
2d67c34c | 16077 | return __aarch64_vdupq_laneq_p8 (__a, __b); |
df401d54 | 16078 | } |
16079 | ||
49ab9992 | 16080 | __extension__ extern __inline poly16x8_t |
16081 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16082 | vdupq_laneq_p16 (poly16x8_t __a, const int __b) |
df401d54 | 16083 | { |
2d67c34c | 16084 | return __aarch64_vdupq_laneq_p16 (__a, __b); |
df401d54 | 16085 | } |
16086 | ||
d4f47414 | 16087 | __extension__ extern __inline poly64x2_t |
16088 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
16089 | vdupq_laneq_p64 (poly64x2_t __a, const int __b) | |
16090 | { | |
16091 | return __aarch64_vdupq_laneq_p64 (__a, __b); | |
16092 | } | |
16093 | ||
49ab9992 | 16094 | __extension__ extern __inline int8x16_t |
16095 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16096 | vdupq_laneq_s8 (int8x16_t __a, const int __b) |
df401d54 | 16097 | { |
2d67c34c | 16098 | return __aarch64_vdupq_laneq_s8 (__a, __b); |
df401d54 | 16099 | } |
16100 | ||
49ab9992 | 16101 | __extension__ extern __inline int16x8_t |
16102 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16103 | vdupq_laneq_s16 (int16x8_t __a, const int __b) |
df401d54 | 16104 | { |
2d67c34c | 16105 | return __aarch64_vdupq_laneq_s16 (__a, __b); |
df401d54 | 16106 | } |
16107 | ||
49ab9992 | 16108 | __extension__ extern __inline int32x4_t |
16109 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16110 | vdupq_laneq_s32 (int32x4_t __a, const int __b) |
df401d54 | 16111 | { |
2d67c34c | 16112 | return __aarch64_vdupq_laneq_s32 (__a, __b); |
df401d54 | 16113 | } |
16114 | ||
49ab9992 | 16115 | __extension__ extern __inline int64x2_t |
16116 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16117 | vdupq_laneq_s64 (int64x2_t __a, const int __b) |
df401d54 | 16118 | { |
2d67c34c | 16119 | return __aarch64_vdupq_laneq_s64 (__a, __b); |
df401d54 | 16120 | } |
16121 | ||
49ab9992 | 16122 | __extension__ extern __inline uint8x16_t |
16123 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16124 | vdupq_laneq_u8 (uint8x16_t __a, const int __b) |
8111d37b | 16125 | { |
2d67c34c | 16126 | return __aarch64_vdupq_laneq_u8 (__a, __b); |
8111d37b | 16127 | } |
df401d54 | 16128 | |
49ab9992 | 16129 | __extension__ extern __inline uint16x8_t |
16130 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16131 | vdupq_laneq_u16 (uint16x8_t __a, const int __b) |
df401d54 | 16132 | { |
2d67c34c | 16133 | return __aarch64_vdupq_laneq_u16 (__a, __b); |
df401d54 | 16134 | } |
16135 | ||
49ab9992 | 16136 | __extension__ extern __inline uint32x4_t |
16137 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16138 | vdupq_laneq_u32 (uint32x4_t __a, const int __b) |
df401d54 | 16139 | { |
2d67c34c | 16140 | return __aarch64_vdupq_laneq_u32 (__a, __b); |
df401d54 | 16141 | } |
16142 | ||
49ab9992 | 16143 | __extension__ extern __inline uint64x2_t |
16144 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2d67c34c | 16145 | vdupq_laneq_u64 (uint64x2_t __a, const int __b) |
df401d54 | 16146 | { |
2d67c34c | 16147 | return __aarch64_vdupq_laneq_u64 (__a, __b); |
df401d54 | 16148 | } |
16149 | ||
2d67c34c | 16150 | /* vdupb_lane */ |
49ab9992 | 16151 | __extension__ extern __inline poly8_t |
16152 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b8433293 | 16153 | vdupb_lane_p8 (poly8x8_t __a, const int __b) |
df401d54 | 16154 | { |
12e851f9 | 16155 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 16156 | } |
16157 | ||
49ab9992 | 16158 | __extension__ extern __inline int8_t |
16159 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b8433293 | 16160 | vdupb_lane_s8 (int8x8_t __a, const int __b) |
df401d54 | 16161 | { |
12e851f9 | 16162 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 16163 | } |
16164 | ||
49ab9992 | 16165 | __extension__ extern __inline uint8_t |
16166 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b8433293 | 16167 | vdupb_lane_u8 (uint8x8_t __a, const int __b) |
df401d54 | 16168 | { |
12e851f9 | 16169 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 16170 | } |
16171 | ||
2d67c34c | 16172 | /* vduph_lane */ |
7d8a6c0e | 16173 | |
49ab9992 | 16174 | __extension__ extern __inline float16_t |
16175 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 16176 | vduph_lane_f16 (float16x4_t __a, const int __b) |
16177 | { | |
16178 | return __aarch64_vget_lane_any (__a, __b); | |
16179 | } | |
16180 | ||
49ab9992 | 16181 | __extension__ extern __inline poly16_t |
16182 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b8433293 | 16183 | vduph_lane_p16 (poly16x4_t __a, const int __b) |
df401d54 | 16184 | { |
12e851f9 | 16185 | return __aarch64_vget_lane_any (__a, __b); |
df401d54 | 16186 | } |
16187 | ||
49ab9992 | 16188 | __extension__ extern __inline int16_t |
16189 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16190 | vduph_lane_s16 (int16x4_t __a, const int __b) |
16191 | { | |
12e851f9 | 16192 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16193 | } |
16194 | ||
49ab9992 | 16195 | __extension__ extern __inline uint16_t |
16196 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16197 | vduph_lane_u16 (uint16x4_t __a, const int __b) |
16198 | { | |
12e851f9 | 16199 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16200 | } |
16201 | ||
16202 | /* vdups_lane */ | |
7d8a6c0e | 16203 | |
49ab9992 | 16204 | __extension__ extern __inline float32_t |
16205 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16206 | vdups_lane_f32 (float32x2_t __a, const int __b) |
16207 | { | |
12e851f9 | 16208 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16209 | } |
16210 | ||
49ab9992 | 16211 | __extension__ extern __inline int32_t |
16212 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16213 | vdups_lane_s32 (int32x2_t __a, const int __b) |
16214 | { | |
12e851f9 | 16215 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16216 | } |
16217 | ||
49ab9992 | 16218 | __extension__ extern __inline uint32_t |
16219 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16220 | vdups_lane_u32 (uint32x2_t __a, const int __b) |
16221 | { | |
12e851f9 | 16222 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16223 | } |
16224 | ||
16225 | /* vdupd_lane */ | |
49ab9992 | 16226 | __extension__ extern __inline float64_t |
16227 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ac292ff5 | 16228 | vdupd_lane_f64 (float64x1_t __a, const int __b) |
5b44c420 | 16229 | { |
e5827b9c | 16230 | __AARCH64_LANE_CHECK (__a, __b); |
ac292ff5 | 16231 | return __a[0]; |
5b44c420 | 16232 | } |
16233 | ||
49ab9992 | 16234 | __extension__ extern __inline int64_t |
16235 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 16236 | vdupd_lane_s64 (int64x1_t __a, const int __b) |
5b44c420 | 16237 | { |
e5827b9c | 16238 | __AARCH64_LANE_CHECK (__a, __b); |
12fc7207 | 16239 | return __a[0]; |
5b44c420 | 16240 | } |
16241 | ||
49ab9992 | 16242 | __extension__ extern __inline uint64_t |
16243 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 16244 | vdupd_lane_u64 (uint64x1_t __a, const int __b) |
5b44c420 | 16245 | { |
e5827b9c | 16246 | __AARCH64_LANE_CHECK (__a, __b); |
12fc7207 | 16247 | return __a[0]; |
5b44c420 | 16248 | } |
16249 | ||
16250 | /* vdupb_laneq */ | |
49ab9992 | 16251 | __extension__ extern __inline poly8_t |
16252 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16253 | vdupb_laneq_p8 (poly8x16_t __a, const int __b) |
16254 | { | |
12e851f9 | 16255 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16256 | } |
16257 | ||
49ab9992 | 16258 | __extension__ extern __inline int8_t |
16259 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2ad946d3 | 16260 | vdupb_laneq_s8 (int8x16_t __a, const int __b) |
5b44c420 | 16261 | { |
12e851f9 | 16262 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16263 | } |
16264 | ||
49ab9992 | 16265 | __extension__ extern __inline uint8_t |
16266 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16267 | vdupb_laneq_u8 (uint8x16_t __a, const int __b) |
16268 | { | |
12e851f9 | 16269 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16270 | } |
16271 | ||
16272 | /* vduph_laneq */ | |
7d8a6c0e | 16273 | |
49ab9992 | 16274 | __extension__ extern __inline float16_t |
16275 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 16276 | vduph_laneq_f16 (float16x8_t __a, const int __b) |
16277 | { | |
16278 | return __aarch64_vget_lane_any (__a, __b); | |
16279 | } | |
16280 | ||
49ab9992 | 16281 | __extension__ extern __inline poly16_t |
16282 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16283 | vduph_laneq_p16 (poly16x8_t __a, const int __b) |
16284 | { | |
12e851f9 | 16285 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16286 | } |
16287 | ||
49ab9992 | 16288 | __extension__ extern __inline int16_t |
16289 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16290 | vduph_laneq_s16 (int16x8_t __a, const int __b) |
16291 | { | |
12e851f9 | 16292 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16293 | } |
16294 | ||
49ab9992 | 16295 | __extension__ extern __inline uint16_t |
16296 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16297 | vduph_laneq_u16 (uint16x8_t __a, const int __b) |
16298 | { | |
12e851f9 | 16299 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16300 | } |
16301 | ||
16302 | /* vdups_laneq */ | |
7d8a6c0e | 16303 | |
49ab9992 | 16304 | __extension__ extern __inline float32_t |
16305 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16306 | vdups_laneq_f32 (float32x4_t __a, const int __b) |
16307 | { | |
12e851f9 | 16308 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16309 | } |
16310 | ||
49ab9992 | 16311 | __extension__ extern __inline int32_t |
16312 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16313 | vdups_laneq_s32 (int32x4_t __a, const int __b) |
16314 | { | |
12e851f9 | 16315 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16316 | } |
16317 | ||
49ab9992 | 16318 | __extension__ extern __inline uint32_t |
16319 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16320 | vdups_laneq_u32 (uint32x4_t __a, const int __b) |
16321 | { | |
12e851f9 | 16322 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16323 | } |
16324 | ||
16325 | /* vdupd_laneq */ | |
49ab9992 | 16326 | __extension__ extern __inline float64_t |
16327 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16328 | vdupd_laneq_f64 (float64x2_t __a, const int __b) |
16329 | { | |
12e851f9 | 16330 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16331 | } |
16332 | ||
49ab9992 | 16333 | __extension__ extern __inline int64_t |
16334 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16335 | vdupd_laneq_s64 (int64x2_t __a, const int __b) |
16336 | { | |
12e851f9 | 16337 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16338 | } |
16339 | ||
49ab9992 | 16340 | __extension__ extern __inline uint64_t |
16341 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16342 | vdupd_laneq_u64 (uint64x2_t __a, const int __b) |
16343 | { | |
12e851f9 | 16344 | return __aarch64_vget_lane_any (__a, __b); |
5b44c420 | 16345 | } |
16346 | ||
582dc50a | 16347 | /* vext */ |
16348 | ||
49ab9992 | 16349 | __extension__ extern __inline float16x4_t |
16350 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 16351 | vext_f16 (float16x4_t __a, float16x4_t __b, __const int __c) |
16352 | { | |
16353 | __AARCH64_LANE_CHECK (__a, __c); | |
16354 | #ifdef __AARCH64EB__ | |
16355 | return __builtin_shuffle (__b, __a, | |
16356 | (uint16x4_t) {4 - __c, 5 - __c, 6 - __c, 7 - __c}); | |
16357 | #else | |
16358 | return __builtin_shuffle (__a, __b, | |
16359 | (uint16x4_t) {__c, __c + 1, __c + 2, __c + 3}); | |
16360 | #endif | |
16361 | } | |
16362 | ||
49ab9992 | 16363 | __extension__ extern __inline float32x2_t |
16364 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16365 | vext_f32 (float32x2_t __a, float32x2_t __b, __const int __c) |
16366 | { | |
e5827b9c | 16367 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16368 | #ifdef __AARCH64EB__ |
16369 | return __builtin_shuffle (__b, __a, (uint32x2_t) {2-__c, 3-__c}); | |
16370 | #else | |
16371 | return __builtin_shuffle (__a, __b, (uint32x2_t) {__c, __c+1}); | |
16372 | #endif | |
16373 | } | |
16374 | ||
49ab9992 | 16375 | __extension__ extern __inline float64x1_t |
16376 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16377 | vext_f64 (float64x1_t __a, float64x1_t __b, __const int __c) |
16378 | { | |
e5827b9c | 16379 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16380 | /* The only possible index to the assembler instruction returns element 0. */ |
582dc50a | 16381 | return __a; |
16382 | } | |
49ab9992 | 16383 | __extension__ extern __inline poly8x8_t |
16384 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16385 | vext_p8 (poly8x8_t __a, poly8x8_t __b, __const int __c) |
16386 | { | |
e5827b9c | 16387 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16388 | #ifdef __AARCH64EB__ |
16389 | return __builtin_shuffle (__b, __a, (uint8x8_t) | |
16390 | {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c}); | |
16391 | #else | |
16392 | return __builtin_shuffle (__a, __b, | |
16393 | (uint8x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); | |
16394 | #endif | |
16395 | } | |
16396 | ||
49ab9992 | 16397 | __extension__ extern __inline poly16x4_t |
16398 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16399 | vext_p16 (poly16x4_t __a, poly16x4_t __b, __const int __c) |
16400 | { | |
e5827b9c | 16401 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16402 | #ifdef __AARCH64EB__ |
16403 | return __builtin_shuffle (__b, __a, | |
16404 | (uint16x4_t) {4-__c, 5-__c, 6-__c, 7-__c}); | |
16405 | #else | |
16406 | return __builtin_shuffle (__a, __b, (uint16x4_t) {__c, __c+1, __c+2, __c+3}); | |
16407 | #endif | |
16408 | } | |
16409 | ||
34d20d5f | 16410 | __extension__ extern __inline poly64x1_t |
16411 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
16412 | vext_p64 (poly64x1_t __a, poly64x1_t __b, __const int __c) | |
16413 | { | |
16414 | __AARCH64_LANE_CHECK (__a, __c); | |
16415 | /* The only possible index to the assembler instruction returns element 0. */ | |
16416 | return __a; | |
16417 | } | |
16418 | ||
49ab9992 | 16419 | __extension__ extern __inline int8x8_t |
16420 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16421 | vext_s8 (int8x8_t __a, int8x8_t __b, __const int __c) |
16422 | { | |
e5827b9c | 16423 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16424 | #ifdef __AARCH64EB__ |
16425 | return __builtin_shuffle (__b, __a, (uint8x8_t) | |
16426 | {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c}); | |
16427 | #else | |
16428 | return __builtin_shuffle (__a, __b, | |
16429 | (uint8x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); | |
16430 | #endif | |
16431 | } | |
16432 | ||
49ab9992 | 16433 | __extension__ extern __inline int16x4_t |
16434 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16435 | vext_s16 (int16x4_t __a, int16x4_t __b, __const int __c) |
16436 | { | |
e5827b9c | 16437 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16438 | #ifdef __AARCH64EB__ |
16439 | return __builtin_shuffle (__b, __a, | |
16440 | (uint16x4_t) {4-__c, 5-__c, 6-__c, 7-__c}); | |
16441 | #else | |
16442 | return __builtin_shuffle (__a, __b, (uint16x4_t) {__c, __c+1, __c+2, __c+3}); | |
16443 | #endif | |
16444 | } | |
16445 | ||
49ab9992 | 16446 | __extension__ extern __inline int32x2_t |
16447 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16448 | vext_s32 (int32x2_t __a, int32x2_t __b, __const int __c) |
16449 | { | |
e5827b9c | 16450 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16451 | #ifdef __AARCH64EB__ |
16452 | return __builtin_shuffle (__b, __a, (uint32x2_t) {2-__c, 3-__c}); | |
16453 | #else | |
16454 | return __builtin_shuffle (__a, __b, (uint32x2_t) {__c, __c+1}); | |
16455 | #endif | |
16456 | } | |
16457 | ||
49ab9992 | 16458 | __extension__ extern __inline int64x1_t |
16459 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16460 | vext_s64 (int64x1_t __a, int64x1_t __b, __const int __c) |
16461 | { | |
e5827b9c | 16462 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16463 | /* The only possible index to the assembler instruction returns element 0. */ |
582dc50a | 16464 | return __a; |
16465 | } | |
16466 | ||
49ab9992 | 16467 | __extension__ extern __inline uint8x8_t |
16468 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16469 | vext_u8 (uint8x8_t __a, uint8x8_t __b, __const int __c) |
16470 | { | |
e5827b9c | 16471 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16472 | #ifdef __AARCH64EB__ |
16473 | return __builtin_shuffle (__b, __a, (uint8x8_t) | |
16474 | {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c}); | |
16475 | #else | |
16476 | return __builtin_shuffle (__a, __b, | |
16477 | (uint8x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); | |
16478 | #endif | |
16479 | } | |
16480 | ||
49ab9992 | 16481 | __extension__ extern __inline uint16x4_t |
16482 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16483 | vext_u16 (uint16x4_t __a, uint16x4_t __b, __const int __c) |
16484 | { | |
e5827b9c | 16485 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16486 | #ifdef __AARCH64EB__ |
16487 | return __builtin_shuffle (__b, __a, | |
16488 | (uint16x4_t) {4-__c, 5-__c, 6-__c, 7-__c}); | |
16489 | #else | |
16490 | return __builtin_shuffle (__a, __b, (uint16x4_t) {__c, __c+1, __c+2, __c+3}); | |
16491 | #endif | |
16492 | } | |
16493 | ||
49ab9992 | 16494 | __extension__ extern __inline uint32x2_t |
16495 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16496 | vext_u32 (uint32x2_t __a, uint32x2_t __b, __const int __c) |
16497 | { | |
e5827b9c | 16498 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16499 | #ifdef __AARCH64EB__ |
16500 | return __builtin_shuffle (__b, __a, (uint32x2_t) {2-__c, 3-__c}); | |
16501 | #else | |
16502 | return __builtin_shuffle (__a, __b, (uint32x2_t) {__c, __c+1}); | |
16503 | #endif | |
16504 | } | |
16505 | ||
49ab9992 | 16506 | __extension__ extern __inline uint64x1_t |
16507 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16508 | vext_u64 (uint64x1_t __a, uint64x1_t __b, __const int __c) |
16509 | { | |
e5827b9c | 16510 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16511 | /* The only possible index to the assembler instruction returns element 0. */ |
582dc50a | 16512 | return __a; |
16513 | } | |
16514 | ||
49ab9992 | 16515 | __extension__ extern __inline float16x8_t |
16516 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 16517 | vextq_f16 (float16x8_t __a, float16x8_t __b, __const int __c) |
16518 | { | |
16519 | __AARCH64_LANE_CHECK (__a, __c); | |
16520 | #ifdef __AARCH64EB__ | |
16521 | return __builtin_shuffle (__b, __a, | |
16522 | (uint16x8_t) {8 - __c, 9 - __c, 10 - __c, 11 - __c, | |
16523 | 12 - __c, 13 - __c, 14 - __c, | |
16524 | 15 - __c}); | |
16525 | #else | |
16526 | return __builtin_shuffle (__a, __b, | |
16527 | (uint16x8_t) {__c, __c + 1, __c + 2, __c + 3, | |
16528 | __c + 4, __c + 5, __c + 6, __c + 7}); | |
16529 | #endif | |
16530 | } | |
16531 | ||
49ab9992 | 16532 | __extension__ extern __inline float32x4_t |
16533 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16534 | vextq_f32 (float32x4_t __a, float32x4_t __b, __const int __c) |
16535 | { | |
e5827b9c | 16536 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16537 | #ifdef __AARCH64EB__ |
16538 | return __builtin_shuffle (__b, __a, | |
16539 | (uint32x4_t) {4-__c, 5-__c, 6-__c, 7-__c}); | |
16540 | #else | |
16541 | return __builtin_shuffle (__a, __b, (uint32x4_t) {__c, __c+1, __c+2, __c+3}); | |
16542 | #endif | |
16543 | } | |
16544 | ||
49ab9992 | 16545 | __extension__ extern __inline float64x2_t |
16546 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16547 | vextq_f64 (float64x2_t __a, float64x2_t __b, __const int __c) |
16548 | { | |
e5827b9c | 16549 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16550 | #ifdef __AARCH64EB__ |
16551 | return __builtin_shuffle (__b, __a, (uint64x2_t) {2-__c, 3-__c}); | |
16552 | #else | |
16553 | return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1}); | |
16554 | #endif | |
16555 | } | |
16556 | ||
49ab9992 | 16557 | __extension__ extern __inline poly8x16_t |
16558 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16559 | vextq_p8 (poly8x16_t __a, poly8x16_t __b, __const int __c) |
16560 | { | |
e5827b9c | 16561 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16562 | #ifdef __AARCH64EB__ |
16563 | return __builtin_shuffle (__b, __a, (uint8x16_t) | |
16564 | {16-__c, 17-__c, 18-__c, 19-__c, 20-__c, 21-__c, 22-__c, 23-__c, | |
16565 | 24-__c, 25-__c, 26-__c, 27-__c, 28-__c, 29-__c, 30-__c, 31-__c}); | |
16566 | #else | |
16567 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
16568 | {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, | |
16569 | __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15}); | |
16570 | #endif | |
16571 | } | |
16572 | ||
49ab9992 | 16573 | __extension__ extern __inline poly16x8_t |
16574 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16575 | vextq_p16 (poly16x8_t __a, poly16x8_t __b, __const int __c) |
16576 | { | |
e5827b9c | 16577 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16578 | #ifdef __AARCH64EB__ |
16579 | return __builtin_shuffle (__b, __a, (uint16x8_t) | |
16580 | {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c}); | |
16581 | #else | |
16582 | return __builtin_shuffle (__a, __b, | |
16583 | (uint16x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); | |
16584 | #endif | |
16585 | } | |
16586 | ||
34d20d5f | 16587 | __extension__ extern __inline poly64x2_t |
16588 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
16589 | vextq_p64 (poly64x2_t __a, poly64x2_t __b, __const int __c) | |
16590 | { | |
16591 | __AARCH64_LANE_CHECK (__a, __c); | |
16592 | #ifdef __AARCH64EB__ | |
16593 | return __builtin_shuffle (__b, __a, (uint64x2_t) {2-__c, 3-__c}); | |
16594 | #else | |
16595 | return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1}); | |
16596 | #endif | |
16597 | } | |
16598 | ||
49ab9992 | 16599 | __extension__ extern __inline int8x16_t |
16600 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16601 | vextq_s8 (int8x16_t __a, int8x16_t __b, __const int __c) |
16602 | { | |
e5827b9c | 16603 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16604 | #ifdef __AARCH64EB__ |
16605 | return __builtin_shuffle (__b, __a, (uint8x16_t) | |
16606 | {16-__c, 17-__c, 18-__c, 19-__c, 20-__c, 21-__c, 22-__c, 23-__c, | |
16607 | 24-__c, 25-__c, 26-__c, 27-__c, 28-__c, 29-__c, 30-__c, 31-__c}); | |
16608 | #else | |
16609 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
16610 | {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, | |
16611 | __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15}); | |
16612 | #endif | |
16613 | } | |
16614 | ||
49ab9992 | 16615 | __extension__ extern __inline int16x8_t |
16616 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16617 | vextq_s16 (int16x8_t __a, int16x8_t __b, __const int __c) |
16618 | { | |
e5827b9c | 16619 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16620 | #ifdef __AARCH64EB__ |
16621 | return __builtin_shuffle (__b, __a, (uint16x8_t) | |
16622 | {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c}); | |
16623 | #else | |
16624 | return __builtin_shuffle (__a, __b, | |
16625 | (uint16x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); | |
16626 | #endif | |
16627 | } | |
16628 | ||
49ab9992 | 16629 | __extension__ extern __inline int32x4_t |
16630 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16631 | vextq_s32 (int32x4_t __a, int32x4_t __b, __const int __c) |
16632 | { | |
e5827b9c | 16633 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16634 | #ifdef __AARCH64EB__ |
16635 | return __builtin_shuffle (__b, __a, | |
16636 | (uint32x4_t) {4-__c, 5-__c, 6-__c, 7-__c}); | |
16637 | #else | |
16638 | return __builtin_shuffle (__a, __b, (uint32x4_t) {__c, __c+1, __c+2, __c+3}); | |
16639 | #endif | |
16640 | } | |
16641 | ||
49ab9992 | 16642 | __extension__ extern __inline int64x2_t |
16643 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16644 | vextq_s64 (int64x2_t __a, int64x2_t __b, __const int __c) |
16645 | { | |
e5827b9c | 16646 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16647 | #ifdef __AARCH64EB__ |
16648 | return __builtin_shuffle (__b, __a, (uint64x2_t) {2-__c, 3-__c}); | |
16649 | #else | |
16650 | return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1}); | |
16651 | #endif | |
16652 | } | |
16653 | ||
49ab9992 | 16654 | __extension__ extern __inline uint8x16_t |
16655 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16656 | vextq_u8 (uint8x16_t __a, uint8x16_t __b, __const int __c) |
16657 | { | |
e5827b9c | 16658 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16659 | #ifdef __AARCH64EB__ |
16660 | return __builtin_shuffle (__b, __a, (uint8x16_t) | |
16661 | {16-__c, 17-__c, 18-__c, 19-__c, 20-__c, 21-__c, 22-__c, 23-__c, | |
16662 | 24-__c, 25-__c, 26-__c, 27-__c, 28-__c, 29-__c, 30-__c, 31-__c}); | |
16663 | #else | |
16664 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
16665 | {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, | |
16666 | __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15}); | |
16667 | #endif | |
16668 | } | |
16669 | ||
49ab9992 | 16670 | __extension__ extern __inline uint16x8_t |
16671 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16672 | vextq_u16 (uint16x8_t __a, uint16x8_t __b, __const int __c) |
16673 | { | |
e5827b9c | 16674 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16675 | #ifdef __AARCH64EB__ |
16676 | return __builtin_shuffle (__b, __a, (uint16x8_t) | |
16677 | {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c}); | |
16678 | #else | |
16679 | return __builtin_shuffle (__a, __b, | |
16680 | (uint16x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); | |
16681 | #endif | |
16682 | } | |
16683 | ||
49ab9992 | 16684 | __extension__ extern __inline uint32x4_t |
16685 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16686 | vextq_u32 (uint32x4_t __a, uint32x4_t __b, __const int __c) |
16687 | { | |
e5827b9c | 16688 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16689 | #ifdef __AARCH64EB__ |
16690 | return __builtin_shuffle (__b, __a, | |
16691 | (uint32x4_t) {4-__c, 5-__c, 6-__c, 7-__c}); | |
16692 | #else | |
16693 | return __builtin_shuffle (__a, __b, (uint32x4_t) {__c, __c+1, __c+2, __c+3}); | |
16694 | #endif | |
16695 | } | |
16696 | ||
49ab9992 | 16697 | __extension__ extern __inline uint64x2_t |
16698 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
582dc50a | 16699 | vextq_u64 (uint64x2_t __a, uint64x2_t __b, __const int __c) |
16700 | { | |
e5827b9c | 16701 | __AARCH64_LANE_CHECK (__a, __c); |
582dc50a | 16702 | #ifdef __AARCH64EB__ |
16703 | return __builtin_shuffle (__b, __a, (uint64x2_t) {2-__c, 3-__c}); | |
16704 | #else | |
16705 | return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1}); | |
16706 | #endif | |
16707 | } | |
16708 | ||
73e894ba | 16709 | /* vfma */ |
16710 | ||
49ab9992 | 16711 | __extension__ extern __inline float64x1_t |
16712 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
73e894ba | 16713 | vfma_f64 (float64x1_t __a, float64x1_t __b, float64x1_t __c) |
16714 | { | |
16715 | return (float64x1_t) {__builtin_fma (__b[0], __c[0], __a[0])}; | |
16716 | } | |
16717 | ||
49ab9992 | 16718 | __extension__ extern __inline float32x2_t |
16719 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 16720 | vfma_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c) |
16721 | { | |
16722 | return __builtin_aarch64_fmav2sf (__b, __c, __a); | |
16723 | } | |
16724 | ||
49ab9992 | 16725 | __extension__ extern __inline float32x4_t |
16726 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 16727 | vfmaq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c) |
16728 | { | |
16729 | return __builtin_aarch64_fmav4sf (__b, __c, __a); | |
16730 | } | |
16731 | ||
49ab9992 | 16732 | __extension__ extern __inline float64x2_t |
16733 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 16734 | vfmaq_f64 (float64x2_t __a, float64x2_t __b, float64x2_t __c) |
16735 | { | |
16736 | return __builtin_aarch64_fmav2df (__b, __c, __a); | |
16737 | } | |
16738 | ||
49ab9992 | 16739 | __extension__ extern __inline float32x2_t |
16740 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 16741 | vfma_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c) |
16742 | { | |
16743 | return __builtin_aarch64_fmav2sf (__b, vdup_n_f32 (__c), __a); | |
16744 | } | |
16745 | ||
49ab9992 | 16746 | __extension__ extern __inline float64x1_t |
16747 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
666b9dd3 | 16748 | vfma_n_f64 (float64x1_t __a, float64x1_t __b, float64_t __c) |
16749 | { | |
16750 | return (float64x1_t) {__b[0] * __c + __a[0]}; | |
16751 | } | |
16752 | ||
49ab9992 | 16753 | __extension__ extern __inline float32x4_t |
16754 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 16755 | vfmaq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c) |
16756 | { | |
16757 | return __builtin_aarch64_fmav4sf (__b, vdupq_n_f32 (__c), __a); | |
16758 | } | |
16759 | ||
49ab9992 | 16760 | __extension__ extern __inline float64x2_t |
16761 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 16762 | vfmaq_n_f64 (float64x2_t __a, float64x2_t __b, float64_t __c) |
16763 | { | |
16764 | return __builtin_aarch64_fmav2df (__b, vdupq_n_f64 (__c), __a); | |
16765 | } | |
16766 | ||
5b44c420 | 16767 | /* vfma_lane */ |
16768 | ||
49ab9992 | 16769 | __extension__ extern __inline float32x2_t |
16770 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16771 | vfma_lane_f32 (float32x2_t __a, float32x2_t __b, |
16772 | float32x2_t __c, const int __lane) | |
16773 | { | |
16774 | return __builtin_aarch64_fmav2sf (__b, | |
16775 | __aarch64_vdup_lane_f32 (__c, __lane), | |
16776 | __a); | |
16777 | } | |
16778 | ||
49ab9992 | 16779 | __extension__ extern __inline float64x1_t |
16780 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ac292ff5 | 16781 | vfma_lane_f64 (float64x1_t __a, float64x1_t __b, |
16782 | float64x1_t __c, const int __lane) | |
5b44c420 | 16783 | { |
ac292ff5 | 16784 | return (float64x1_t) {__builtin_fma (__b[0], __c[0], __a[0])}; |
5b44c420 | 16785 | } |
16786 | ||
49ab9992 | 16787 | __extension__ extern __inline float64_t |
16788 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16789 | vfmad_lane_f64 (float64_t __a, float64_t __b, |
ac292ff5 | 16790 | float64x1_t __c, const int __lane) |
5b44c420 | 16791 | { |
ac292ff5 | 16792 | return __builtin_fma (__b, __c[0], __a); |
5b44c420 | 16793 | } |
16794 | ||
49ab9992 | 16795 | __extension__ extern __inline float32_t |
16796 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16797 | vfmas_lane_f32 (float32_t __a, float32_t __b, |
16798 | float32x2_t __c, const int __lane) | |
16799 | { | |
12e851f9 | 16800 | return __builtin_fmaf (__b, __aarch64_vget_lane_any (__c, __lane), __a); |
5b44c420 | 16801 | } |
16802 | ||
16803 | /* vfma_laneq */ | |
16804 | ||
49ab9992 | 16805 | __extension__ extern __inline float32x2_t |
16806 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16807 | vfma_laneq_f32 (float32x2_t __a, float32x2_t __b, |
16808 | float32x4_t __c, const int __lane) | |
16809 | { | |
16810 | return __builtin_aarch64_fmav2sf (__b, | |
16811 | __aarch64_vdup_laneq_f32 (__c, __lane), | |
16812 | __a); | |
16813 | } | |
16814 | ||
49ab9992 | 16815 | __extension__ extern __inline float64x1_t |
16816 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ac292ff5 | 16817 | vfma_laneq_f64 (float64x1_t __a, float64x1_t __b, |
5b44c420 | 16818 | float64x2_t __c, const int __lane) |
df401d54 | 16819 | { |
12e851f9 | 16820 | float64_t __c0 = __aarch64_vget_lane_any (__c, __lane); |
ac292ff5 | 16821 | return (float64x1_t) {__builtin_fma (__b[0], __c0, __a[0])}; |
df401d54 | 16822 | } |
16823 | ||
49ab9992 | 16824 | __extension__ extern __inline float64_t |
16825 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16826 | vfmad_laneq_f64 (float64_t __a, float64_t __b, |
16827 | float64x2_t __c, const int __lane) | |
df401d54 | 16828 | { |
12e851f9 | 16829 | return __builtin_fma (__b, __aarch64_vget_lane_any (__c, __lane), __a); |
df401d54 | 16830 | } |
16831 | ||
49ab9992 | 16832 | __extension__ extern __inline float32_t |
16833 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16834 | vfmas_laneq_f32 (float32_t __a, float32_t __b, |
16835 | float32x4_t __c, const int __lane) | |
df401d54 | 16836 | { |
12e851f9 | 16837 | return __builtin_fmaf (__b, __aarch64_vget_lane_any (__c, __lane), __a); |
df401d54 | 16838 | } |
16839 | ||
5b44c420 | 16840 | /* vfmaq_lane */ |
16841 | ||
49ab9992 | 16842 | __extension__ extern __inline float32x4_t |
16843 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16844 | vfmaq_lane_f32 (float32x4_t __a, float32x4_t __b, |
16845 | float32x2_t __c, const int __lane) | |
df401d54 | 16846 | { |
5b44c420 | 16847 | return __builtin_aarch64_fmav4sf (__b, |
16848 | __aarch64_vdupq_lane_f32 (__c, __lane), | |
16849 | __a); | |
df401d54 | 16850 | } |
16851 | ||
49ab9992 | 16852 | __extension__ extern __inline float64x2_t |
16853 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16854 | vfmaq_lane_f64 (float64x2_t __a, float64x2_t __b, |
ac292ff5 | 16855 | float64x1_t __c, const int __lane) |
df401d54 | 16856 | { |
ac292ff5 | 16857 | return __builtin_aarch64_fmav2df (__b, vdupq_n_f64 (__c[0]), __a); |
df401d54 | 16858 | } |
16859 | ||
5b44c420 | 16860 | /* vfmaq_laneq */ |
16861 | ||
49ab9992 | 16862 | __extension__ extern __inline float32x4_t |
16863 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16864 | vfmaq_laneq_f32 (float32x4_t __a, float32x4_t __b, |
16865 | float32x4_t __c, const int __lane) | |
df401d54 | 16866 | { |
5b44c420 | 16867 | return __builtin_aarch64_fmav4sf (__b, |
16868 | __aarch64_vdupq_laneq_f32 (__c, __lane), | |
16869 | __a); | |
df401d54 | 16870 | } |
16871 | ||
49ab9992 | 16872 | __extension__ extern __inline float64x2_t |
16873 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16874 | vfmaq_laneq_f64 (float64x2_t __a, float64x2_t __b, |
16875 | float64x2_t __c, const int __lane) | |
df401d54 | 16876 | { |
5b44c420 | 16877 | return __builtin_aarch64_fmav2df (__b, |
16878 | __aarch64_vdupq_laneq_f64 (__c, __lane), | |
16879 | __a); | |
df401d54 | 16880 | } |
16881 | ||
73e894ba | 16882 | /* vfms */ |
16883 | ||
49ab9992 | 16884 | __extension__ extern __inline float64x1_t |
16885 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
73e894ba | 16886 | vfms_f64 (float64x1_t __a, float64x1_t __b, float64x1_t __c) |
16887 | { | |
16888 | return (float64x1_t) {__builtin_fma (-__b[0], __c[0], __a[0])}; | |
16889 | } | |
16890 | ||
49ab9992 | 16891 | __extension__ extern __inline float32x2_t |
16892 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 16893 | vfms_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c) |
16894 | { | |
16895 | return __builtin_aarch64_fmav2sf (-__b, __c, __a); | |
16896 | } | |
16897 | ||
49ab9992 | 16898 | __extension__ extern __inline float32x4_t |
16899 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 16900 | vfmsq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c) |
16901 | { | |
16902 | return __builtin_aarch64_fmav4sf (-__b, __c, __a); | |
16903 | } | |
16904 | ||
49ab9992 | 16905 | __extension__ extern __inline float64x2_t |
16906 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 16907 | vfmsq_f64 (float64x2_t __a, float64x2_t __b, float64x2_t __c) |
16908 | { | |
16909 | return __builtin_aarch64_fmav2df (-__b, __c, __a); | |
16910 | } | |
16911 | ||
49ab9992 | 16912 | __extension__ extern __inline float32x2_t |
16913 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
666b9dd3 | 16914 | vfms_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c) |
16915 | { | |
16916 | return __builtin_aarch64_fmav2sf (-__b, vdup_n_f32 (__c), __a); | |
16917 | } | |
16918 | ||
49ab9992 | 16919 | __extension__ extern __inline float64x1_t |
16920 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
666b9dd3 | 16921 | vfms_n_f64 (float64x1_t __a, float64x1_t __b, float64_t __c) |
16922 | { | |
16923 | return (float64x1_t) {-__b[0] * __c + __a[0]}; | |
16924 | } | |
16925 | ||
49ab9992 | 16926 | __extension__ extern __inline float32x4_t |
16927 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
666b9dd3 | 16928 | vfmsq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c) |
16929 | { | |
16930 | return __builtin_aarch64_fmav4sf (-__b, vdupq_n_f32 (__c), __a); | |
16931 | } | |
16932 | ||
49ab9992 | 16933 | __extension__ extern __inline float64x2_t |
16934 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
666b9dd3 | 16935 | vfmsq_n_f64 (float64x2_t __a, float64x2_t __b, float64_t __c) |
16936 | { | |
16937 | return __builtin_aarch64_fmav2df (-__b, vdupq_n_f64 (__c), __a); | |
16938 | } | |
6fa49e69 | 16939 | |
5b44c420 | 16940 | /* vfms_lane */ |
16941 | ||
49ab9992 | 16942 | __extension__ extern __inline float32x2_t |
16943 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16944 | vfms_lane_f32 (float32x2_t __a, float32x2_t __b, |
16945 | float32x2_t __c, const int __lane) | |
df401d54 | 16946 | { |
5b44c420 | 16947 | return __builtin_aarch64_fmav2sf (-__b, |
16948 | __aarch64_vdup_lane_f32 (__c, __lane), | |
16949 | __a); | |
df401d54 | 16950 | } |
16951 | ||
49ab9992 | 16952 | __extension__ extern __inline float64x1_t |
16953 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ac292ff5 | 16954 | vfms_lane_f64 (float64x1_t __a, float64x1_t __b, |
16955 | float64x1_t __c, const int __lane) | |
df401d54 | 16956 | { |
ac292ff5 | 16957 | return (float64x1_t) {__builtin_fma (-__b[0], __c[0], __a[0])}; |
df401d54 | 16958 | } |
16959 | ||
49ab9992 | 16960 | __extension__ extern __inline float64_t |
16961 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16962 | vfmsd_lane_f64 (float64_t __a, float64_t __b, |
ac292ff5 | 16963 | float64x1_t __c, const int __lane) |
df401d54 | 16964 | { |
ac292ff5 | 16965 | return __builtin_fma (-__b, __c[0], __a); |
df401d54 | 16966 | } |
16967 | ||
49ab9992 | 16968 | __extension__ extern __inline float32_t |
16969 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16970 | vfmss_lane_f32 (float32_t __a, float32_t __b, |
16971 | float32x2_t __c, const int __lane) | |
df401d54 | 16972 | { |
12e851f9 | 16973 | return __builtin_fmaf (-__b, __aarch64_vget_lane_any (__c, __lane), __a); |
df401d54 | 16974 | } |
16975 | ||
5b44c420 | 16976 | /* vfms_laneq */ |
16977 | ||
49ab9992 | 16978 | __extension__ extern __inline float32x2_t |
16979 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16980 | vfms_laneq_f32 (float32x2_t __a, float32x2_t __b, |
16981 | float32x4_t __c, const int __lane) | |
2d67c34c | 16982 | { |
5b44c420 | 16983 | return __builtin_aarch64_fmav2sf (-__b, |
16984 | __aarch64_vdup_laneq_f32 (__c, __lane), | |
16985 | __a); | |
2d67c34c | 16986 | } |
df401d54 | 16987 | |
49ab9992 | 16988 | __extension__ extern __inline float64x1_t |
16989 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ac292ff5 | 16990 | vfms_laneq_f64 (float64x1_t __a, float64x1_t __b, |
5b44c420 | 16991 | float64x2_t __c, const int __lane) |
df401d54 | 16992 | { |
12e851f9 | 16993 | float64_t __c0 = __aarch64_vget_lane_any (__c, __lane); |
ac292ff5 | 16994 | return (float64x1_t) {__builtin_fma (-__b[0], __c0, __a[0])}; |
df401d54 | 16995 | } |
16996 | ||
49ab9992 | 16997 | __extension__ extern __inline float64_t |
16998 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 16999 | vfmsd_laneq_f64 (float64_t __a, float64_t __b, |
17000 | float64x2_t __c, const int __lane) | |
df401d54 | 17001 | { |
12e851f9 | 17002 | return __builtin_fma (-__b, __aarch64_vget_lane_any (__c, __lane), __a); |
df401d54 | 17003 | } |
17004 | ||
49ab9992 | 17005 | __extension__ extern __inline float32_t |
17006 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 17007 | vfmss_laneq_f32 (float32_t __a, float32_t __b, |
17008 | float32x4_t __c, const int __lane) | |
df401d54 | 17009 | { |
12e851f9 | 17010 | return __builtin_fmaf (-__b, __aarch64_vget_lane_any (__c, __lane), __a); |
df401d54 | 17011 | } |
17012 | ||
5b44c420 | 17013 | /* vfmsq_lane */ |
df401d54 | 17014 | |
49ab9992 | 17015 | __extension__ extern __inline float32x4_t |
17016 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 17017 | vfmsq_lane_f32 (float32x4_t __a, float32x4_t __b, |
17018 | float32x2_t __c, const int __lane) | |
df401d54 | 17019 | { |
5b44c420 | 17020 | return __builtin_aarch64_fmav4sf (-__b, |
17021 | __aarch64_vdupq_lane_f32 (__c, __lane), | |
17022 | __a); | |
df401d54 | 17023 | } |
17024 | ||
49ab9992 | 17025 | __extension__ extern __inline float64x2_t |
17026 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 17027 | vfmsq_lane_f64 (float64x2_t __a, float64x2_t __b, |
ac292ff5 | 17028 | float64x1_t __c, const int __lane) |
df401d54 | 17029 | { |
ac292ff5 | 17030 | return __builtin_aarch64_fmav2df (-__b, vdupq_n_f64 (__c[0]), __a); |
df401d54 | 17031 | } |
17032 | ||
5b44c420 | 17033 | /* vfmsq_laneq */ |
17034 | ||
49ab9992 | 17035 | __extension__ extern __inline float32x4_t |
17036 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 17037 | vfmsq_laneq_f32 (float32x4_t __a, float32x4_t __b, |
17038 | float32x4_t __c, const int __lane) | |
df401d54 | 17039 | { |
5b44c420 | 17040 | return __builtin_aarch64_fmav4sf (-__b, |
17041 | __aarch64_vdupq_laneq_f32 (__c, __lane), | |
17042 | __a); | |
df401d54 | 17043 | } |
17044 | ||
49ab9992 | 17045 | __extension__ extern __inline float64x2_t |
17046 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 17047 | vfmsq_laneq_f64 (float64x2_t __a, float64x2_t __b, |
17048 | float64x2_t __c, const int __lane) | |
df401d54 | 17049 | { |
5b44c420 | 17050 | return __builtin_aarch64_fmav2df (-__b, |
17051 | __aarch64_vdupq_laneq_f64 (__c, __lane), | |
17052 | __a); | |
df401d54 | 17053 | } |
17054 | ||
88c9a347 | 17055 | /* vld1 */ |
17056 | ||
49ab9992 | 17057 | __extension__ extern __inline float16x4_t |
17058 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
aea31229 | 17059 | vld1_f16 (const float16_t *__a) |
17060 | { | |
17061 | return __builtin_aarch64_ld1v4hf (__a); | |
17062 | } | |
17063 | ||
49ab9992 | 17064 | __extension__ extern __inline float32x2_t |
17065 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17066 | vld1_f32 (const float32_t *a) |
17067 | { | |
17068 | return __builtin_aarch64_ld1v2sf ((const __builtin_aarch64_simd_sf *) a); | |
17069 | } | |
17070 | ||
49ab9992 | 17071 | __extension__ extern __inline float64x1_t |
17072 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17073 | vld1_f64 (const float64_t *a) |
17074 | { | |
ac292ff5 | 17075 | return (float64x1_t) {*a}; |
88c9a347 | 17076 | } |
17077 | ||
49ab9992 | 17078 | __extension__ extern __inline poly8x8_t |
17079 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17080 | vld1_p8 (const poly8_t *a) |
17081 | { | |
17082 | return (poly8x8_t) | |
17083 | __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi *) a); | |
17084 | } | |
17085 | ||
49ab9992 | 17086 | __extension__ extern __inline poly16x4_t |
17087 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17088 | vld1_p16 (const poly16_t *a) |
17089 | { | |
17090 | return (poly16x4_t) | |
17091 | __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi *) a); | |
17092 | } | |
17093 | ||
d4f47414 | 17094 | __extension__ extern __inline poly64x1_t |
17095 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17096 | vld1_p64 (const poly64_t *a) | |
17097 | { | |
17098 | return (poly64x1_t) {*a}; | |
17099 | } | |
17100 | ||
49ab9992 | 17101 | __extension__ extern __inline int8x8_t |
17102 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17103 | vld1_s8 (const int8_t *a) |
17104 | { | |
17105 | return __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi *) a); | |
17106 | } | |
17107 | ||
49ab9992 | 17108 | __extension__ extern __inline int16x4_t |
17109 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17110 | vld1_s16 (const int16_t *a) |
17111 | { | |
17112 | return __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi *) a); | |
17113 | } | |
17114 | ||
49ab9992 | 17115 | __extension__ extern __inline int32x2_t |
17116 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17117 | vld1_s32 (const int32_t *a) |
17118 | { | |
17119 | return __builtin_aarch64_ld1v2si ((const __builtin_aarch64_simd_si *) a); | |
17120 | } | |
17121 | ||
49ab9992 | 17122 | __extension__ extern __inline int64x1_t |
17123 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17124 | vld1_s64 (const int64_t *a) |
17125 | { | |
12fc7207 | 17126 | return (int64x1_t) {*a}; |
88c9a347 | 17127 | } |
17128 | ||
49ab9992 | 17129 | __extension__ extern __inline uint8x8_t |
17130 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17131 | vld1_u8 (const uint8_t *a) |
17132 | { | |
17133 | return (uint8x8_t) | |
17134 | __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi *) a); | |
17135 | } | |
17136 | ||
49ab9992 | 17137 | __extension__ extern __inline uint16x4_t |
17138 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17139 | vld1_u16 (const uint16_t *a) |
17140 | { | |
17141 | return (uint16x4_t) | |
17142 | __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi *) a); | |
17143 | } | |
17144 | ||
49ab9992 | 17145 | __extension__ extern __inline uint32x2_t |
17146 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17147 | vld1_u32 (const uint32_t *a) |
17148 | { | |
17149 | return (uint32x2_t) | |
17150 | __builtin_aarch64_ld1v2si ((const __builtin_aarch64_simd_si *) a); | |
17151 | } | |
17152 | ||
49ab9992 | 17153 | __extension__ extern __inline uint64x1_t |
17154 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17155 | vld1_u64 (const uint64_t *a) |
17156 | { | |
12fc7207 | 17157 | return (uint64x1_t) {*a}; |
88c9a347 | 17158 | } |
17159 | ||
1f52413c | 17160 | /* vld1x3 */ |
17161 | ||
17162 | __extension__ extern __inline uint8x8x3_t | |
17163 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17164 | vld1_u8_x3 (const uint8_t *__a) | |
17165 | { | |
17166 | uint8x8x3_t __i; | |
17167 | __builtin_aarch64_simd_ci __o; | |
17168 | __o = (__builtin_aarch64_simd_ci)__builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
17169 | __i.val[0] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); | |
17170 | __i.val[1] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); | |
17171 | __i.val[2] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); | |
17172 | return __i; | |
17173 | } | |
17174 | ||
17175 | __extension__ extern __inline int8x8x3_t | |
17176 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17177 | vld1_s8_x3 (const uint8_t *__a) | |
17178 | { | |
17179 | int8x8x3_t __i; | |
17180 | __builtin_aarch64_simd_ci __o; | |
17181 | __o = __builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
17182 | __i.val[0] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); | |
17183 | __i.val[1] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); | |
17184 | __i.val[2] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); | |
17185 | return __i; | |
17186 | } | |
17187 | ||
17188 | __extension__ extern __inline uint16x4x3_t | |
17189 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17190 | vld1_u16_x3 (const uint16_t *__a) | |
17191 | { | |
17192 | uint16x4x3_t __i; | |
17193 | __builtin_aarch64_simd_ci __o; | |
17194 | __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
17195 | __i.val[0] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); | |
17196 | __i.val[1] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); | |
17197 | __i.val[2] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); | |
17198 | return __i; | |
17199 | } | |
17200 | ||
17201 | __extension__ extern __inline int16x4x3_t | |
17202 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17203 | vld1_s16_x3 (const int16_t *__a) | |
17204 | { | |
17205 | int16x4x3_t __i; | |
17206 | __builtin_aarch64_simd_ci __o; | |
17207 | __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
17208 | __i.val[0] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); | |
17209 | __i.val[1] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); | |
17210 | __i.val[2] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); | |
17211 | return __i; | |
17212 | } | |
17213 | ||
17214 | __extension__ extern __inline uint32x2x3_t | |
17215 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17216 | vld1_u32_x3 (const uint32_t *__a) | |
17217 | { | |
17218 | uint32x2x3_t __i; | |
17219 | __builtin_aarch64_simd_ci __o; | |
17220 | __o = __builtin_aarch64_ld1x3v2si ((const __builtin_aarch64_simd_si *) __a); | |
17221 | __i.val[0] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); | |
17222 | __i.val[1] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); | |
17223 | __i.val[2] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); | |
17224 | return __i; | |
17225 | } | |
17226 | ||
17227 | __extension__ extern __inline int32x2x3_t | |
17228 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17229 | vld1_s32_x3 (const uint32_t *__a) | |
17230 | { | |
17231 | int32x2x3_t __i; | |
17232 | __builtin_aarch64_simd_ci __o; | |
17233 | __o = __builtin_aarch64_ld1x3v2si ((const __builtin_aarch64_simd_si *) __a); | |
17234 | __i.val[0] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); | |
17235 | __i.val[1] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); | |
17236 | __i.val[2] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); | |
17237 | return __i; | |
17238 | } | |
17239 | ||
17240 | __extension__ extern __inline uint64x1x3_t | |
17241 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17242 | vld1_u64_x3 (const uint64_t *__a) | |
17243 | { | |
17244 | uint64x1x3_t __i; | |
17245 | __builtin_aarch64_simd_ci __o; | |
17246 | __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a); | |
17247 | __i.val[0] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); | |
17248 | __i.val[1] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); | |
17249 | __i.val[2] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); | |
17250 | return __i; | |
17251 | } | |
17252 | ||
17253 | __extension__ extern __inline int64x1x3_t | |
17254 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17255 | vld1_s64_x3 (const int64_t *__a) | |
17256 | { | |
17257 | int64x1x3_t __i; | |
17258 | __builtin_aarch64_simd_ci __o; | |
17259 | __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a); | |
17260 | __i.val[0] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); | |
17261 | __i.val[1] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); | |
17262 | __i.val[2] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); | |
17263 | ||
17264 | return __i; | |
17265 | } | |
17266 | ||
17267 | __extension__ extern __inline float16x4x3_t | |
17268 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17269 | vld1_f16_x3 (const float16_t *__a) | |
17270 | { | |
17271 | float16x4x3_t __i; | |
17272 | __builtin_aarch64_simd_ci __o; | |
17273 | __o = __builtin_aarch64_ld1x3v4hf ((const __builtin_aarch64_simd_hf *) __a); | |
17274 | __i.val[0] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 0); | |
17275 | __i.val[1] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 1); | |
17276 | __i.val[2] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 2); | |
17277 | return __i; | |
17278 | } | |
17279 | ||
17280 | __extension__ extern __inline float32x2x3_t | |
17281 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17282 | vld1_f32_x3 (const float32_t *__a) | |
17283 | { | |
17284 | float32x2x3_t __i; | |
17285 | __builtin_aarch64_simd_ci __o; | |
17286 | __o = __builtin_aarch64_ld1x3v2sf ((const __builtin_aarch64_simd_sf *) __a); | |
17287 | __i.val[0] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 0); | |
17288 | __i.val[1] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 1); | |
17289 | __i.val[2] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 2); | |
17290 | return __i; | |
17291 | } | |
17292 | ||
17293 | __extension__ extern __inline float64x1x3_t | |
17294 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17295 | vld1_f64_x3 (const float64_t *__a) | |
17296 | { | |
17297 | float64x1x3_t __i; | |
17298 | __builtin_aarch64_simd_ci __o; | |
17299 | __o = __builtin_aarch64_ld1x3df ((const __builtin_aarch64_simd_df *) __a); | |
17300 | __i.val[0] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); | |
17301 | __i.val[1] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); | |
17302 | __i.val[2] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); | |
17303 | return __i; | |
17304 | } | |
17305 | ||
17306 | __extension__ extern __inline poly8x8x3_t | |
17307 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17308 | vld1_p8_x3 (const poly8_t *__a) | |
17309 | { | |
17310 | poly8x8x3_t __i; | |
17311 | __builtin_aarch64_simd_ci __o; | |
17312 | __o = __builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
17313 | __i.val[0] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); | |
17314 | __i.val[1] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); | |
17315 | __i.val[2] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); | |
17316 | return __i; | |
17317 | } | |
17318 | ||
17319 | __extension__ extern __inline poly16x4x3_t | |
17320 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17321 | vld1_p16_x3 (const poly16_t *__a) | |
17322 | { | |
17323 | poly16x4x3_t __i; | |
17324 | __builtin_aarch64_simd_ci __o; | |
17325 | __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
17326 | __i.val[0] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); | |
17327 | __i.val[1] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); | |
17328 | __i.val[2] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); | |
17329 | return __i; | |
17330 | } | |
17331 | ||
17332 | __extension__ extern __inline poly64x1x3_t | |
17333 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17334 | vld1_p64_x3 (const poly64_t *__a) | |
17335 | { | |
17336 | poly64x1x3_t __i; | |
17337 | __builtin_aarch64_simd_ci __o; | |
17338 | __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a); | |
17339 | __i.val[0] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); | |
17340 | __i.val[1] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); | |
17341 | __i.val[2] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); | |
17342 | ||
17343 | return __i; | |
17344 | } | |
17345 | ||
17346 | __extension__ extern __inline uint8x16x3_t | |
17347 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17348 | vld1q_u8_x3 (const uint8_t *__a) | |
17349 | { | |
17350 | uint8x16x3_t __i; | |
17351 | __builtin_aarch64_simd_ci __o; | |
17352 | __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
17353 | __i.val[0] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); | |
17354 | __i.val[1] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); | |
17355 | __i.val[2] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); | |
17356 | return __i; | |
17357 | } | |
17358 | ||
17359 | __extension__ extern __inline int8x16x3_t | |
17360 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17361 | vld1q_s8_x3 (const int8_t *__a) | |
17362 | { | |
17363 | int8x16x3_t __i; | |
17364 | __builtin_aarch64_simd_ci __o; | |
17365 | __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
17366 | __i.val[0] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); | |
17367 | __i.val[1] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); | |
17368 | __i.val[2] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); | |
17369 | return __i; | |
17370 | } | |
17371 | ||
17372 | __extension__ extern __inline uint16x8x3_t | |
17373 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17374 | vld1q_u16_x3 (const uint16_t *__a) | |
17375 | { | |
17376 | uint16x8x3_t __i; | |
17377 | __builtin_aarch64_simd_ci __o; | |
17378 | __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
17379 | __i.val[0] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); | |
17380 | __i.val[1] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); | |
17381 | __i.val[2] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); | |
17382 | return __i; | |
17383 | } | |
17384 | ||
17385 | __extension__ extern __inline int16x8x3_t | |
17386 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17387 | vld1q_s16_x3 (const int16_t *__a) | |
17388 | { | |
17389 | int16x8x3_t __i; | |
17390 | __builtin_aarch64_simd_ci __o; | |
17391 | __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
17392 | __i.val[0] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); | |
17393 | __i.val[1] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); | |
17394 | __i.val[2] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); | |
17395 | return __i; | |
17396 | } | |
17397 | ||
17398 | __extension__ extern __inline uint32x4x3_t | |
17399 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17400 | vld1q_u32_x3 (const uint32_t *__a) | |
17401 | { | |
17402 | uint32x4x3_t __i; | |
17403 | __builtin_aarch64_simd_ci __o; | |
17404 | __o = __builtin_aarch64_ld1x3v4si ((const __builtin_aarch64_simd_si *) __a); | |
17405 | __i.val[0] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); | |
17406 | __i.val[1] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); | |
17407 | __i.val[2] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); | |
17408 | return __i; | |
17409 | } | |
17410 | ||
17411 | __extension__ extern __inline int32x4x3_t | |
17412 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17413 | vld1q_s32_x3 (const int32_t *__a) | |
17414 | { | |
17415 | int32x4x3_t __i; | |
17416 | __builtin_aarch64_simd_ci __o; | |
17417 | __o = __builtin_aarch64_ld1x3v4si ((const __builtin_aarch64_simd_si *) __a); | |
17418 | __i.val[0] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); | |
17419 | __i.val[1] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); | |
17420 | __i.val[2] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); | |
17421 | return __i; | |
17422 | } | |
17423 | ||
17424 | __extension__ extern __inline uint64x2x3_t | |
17425 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17426 | vld1q_u64_x3 (const uint64_t *__a) | |
17427 | { | |
17428 | uint64x2x3_t __i; | |
17429 | __builtin_aarch64_simd_ci __o; | |
17430 | __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a); | |
17431 | __i.val[0] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); | |
17432 | __i.val[1] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); | |
17433 | __i.val[2] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); | |
17434 | return __i; | |
17435 | } | |
17436 | ||
17437 | __extension__ extern __inline int64x2x3_t | |
17438 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17439 | vld1q_s64_x3 (const int64_t *__a) | |
17440 | { | |
17441 | int64x2x3_t __i; | |
17442 | __builtin_aarch64_simd_ci __o; | |
17443 | __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a); | |
17444 | __i.val[0] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); | |
17445 | __i.val[1] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); | |
17446 | __i.val[2] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); | |
17447 | return __i; | |
17448 | } | |
17449 | ||
17450 | __extension__ extern __inline float16x8x3_t | |
17451 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17452 | vld1q_f16_x3 (const float16_t *__a) | |
17453 | { | |
17454 | float16x8x3_t __i; | |
17455 | __builtin_aarch64_simd_ci __o; | |
17456 | __o = __builtin_aarch64_ld1x3v8hf ((const __builtin_aarch64_simd_hf *) __a); | |
17457 | __i.val[0] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 0); | |
17458 | __i.val[1] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 1); | |
17459 | __i.val[2] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 2); | |
17460 | return __i; | |
17461 | } | |
17462 | ||
17463 | __extension__ extern __inline float32x4x3_t | |
17464 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17465 | vld1q_f32_x3 (const float32_t *__a) | |
17466 | { | |
17467 | float32x4x3_t __i; | |
17468 | __builtin_aarch64_simd_ci __o; | |
17469 | __o = __builtin_aarch64_ld1x3v4sf ((const __builtin_aarch64_simd_sf *) __a); | |
17470 | __i.val[0] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 0); | |
17471 | __i.val[1] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 1); | |
17472 | __i.val[2] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 2); | |
17473 | return __i; | |
17474 | } | |
17475 | ||
17476 | __extension__ extern __inline float64x2x3_t | |
17477 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17478 | vld1q_f64_x3 (const float64_t *__a) | |
17479 | { | |
17480 | float64x2x3_t __i; | |
17481 | __builtin_aarch64_simd_ci __o; | |
17482 | __o = __builtin_aarch64_ld1x3v2df ((const __builtin_aarch64_simd_df *) __a); | |
17483 | __i.val[0] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 0); | |
17484 | __i.val[1] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 1); | |
17485 | __i.val[2] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 2); | |
17486 | return __i; | |
17487 | } | |
17488 | ||
17489 | __extension__ extern __inline poly8x16x3_t | |
17490 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17491 | vld1q_p8_x3 (const poly8_t *__a) | |
17492 | { | |
17493 | poly8x16x3_t __i; | |
17494 | __builtin_aarch64_simd_ci __o; | |
17495 | __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
17496 | __i.val[0] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); | |
17497 | __i.val[1] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); | |
17498 | __i.val[2] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); | |
17499 | return __i; | |
17500 | } | |
17501 | ||
17502 | __extension__ extern __inline poly16x8x3_t | |
17503 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17504 | vld1q_p16_x3 (const poly16_t *__a) | |
17505 | { | |
17506 | poly16x8x3_t __i; | |
17507 | __builtin_aarch64_simd_ci __o; | |
17508 | __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
17509 | __i.val[0] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); | |
17510 | __i.val[1] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); | |
17511 | __i.val[2] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); | |
17512 | return __i; | |
17513 | } | |
17514 | ||
17515 | __extension__ extern __inline poly64x2x3_t | |
17516 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17517 | vld1q_p64_x3 (const poly64_t *__a) | |
17518 | { | |
17519 | poly64x2x3_t __i; | |
17520 | __builtin_aarch64_simd_ci __o; | |
17521 | __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a); | |
17522 | __i.val[0] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); | |
17523 | __i.val[1] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); | |
17524 | __i.val[2] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); | |
17525 | return __i; | |
17526 | } | |
17527 | ||
88c9a347 | 17528 | /* vld1q */ |
17529 | ||
49ab9992 | 17530 | __extension__ extern __inline float16x8_t |
17531 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
aea31229 | 17532 | vld1q_f16 (const float16_t *__a) |
17533 | { | |
17534 | return __builtin_aarch64_ld1v8hf (__a); | |
17535 | } | |
17536 | ||
49ab9992 | 17537 | __extension__ extern __inline float32x4_t |
17538 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17539 | vld1q_f32 (const float32_t *a) |
17540 | { | |
17541 | return __builtin_aarch64_ld1v4sf ((const __builtin_aarch64_simd_sf *) a); | |
17542 | } | |
17543 | ||
49ab9992 | 17544 | __extension__ extern __inline float64x2_t |
17545 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17546 | vld1q_f64 (const float64_t *a) |
17547 | { | |
17548 | return __builtin_aarch64_ld1v2df ((const __builtin_aarch64_simd_df *) a); | |
17549 | } | |
17550 | ||
49ab9992 | 17551 | __extension__ extern __inline poly8x16_t |
17552 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17553 | vld1q_p8 (const poly8_t *a) |
17554 | { | |
17555 | return (poly8x16_t) | |
17556 | __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi *) a); | |
17557 | } | |
17558 | ||
49ab9992 | 17559 | __extension__ extern __inline poly16x8_t |
17560 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17561 | vld1q_p16 (const poly16_t *a) |
17562 | { | |
17563 | return (poly16x8_t) | |
17564 | __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi *) a); | |
17565 | } | |
17566 | ||
d4f47414 | 17567 | __extension__ extern __inline poly64x2_t |
17568 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17569 | vld1q_p64 (const poly64_t *a) | |
17570 | { | |
17571 | return (poly64x2_t) | |
17572 | __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di *) a); | |
17573 | } | |
17574 | ||
49ab9992 | 17575 | __extension__ extern __inline int8x16_t |
17576 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17577 | vld1q_s8 (const int8_t *a) |
17578 | { | |
17579 | return __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi *) a); | |
17580 | } | |
17581 | ||
49ab9992 | 17582 | __extension__ extern __inline int16x8_t |
17583 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17584 | vld1q_s16 (const int16_t *a) |
17585 | { | |
17586 | return __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi *) a); | |
17587 | } | |
17588 | ||
49ab9992 | 17589 | __extension__ extern __inline int32x4_t |
17590 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17591 | vld1q_s32 (const int32_t *a) |
17592 | { | |
17593 | return __builtin_aarch64_ld1v4si ((const __builtin_aarch64_simd_si *) a); | |
17594 | } | |
17595 | ||
49ab9992 | 17596 | __extension__ extern __inline int64x2_t |
17597 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17598 | vld1q_s64 (const int64_t *a) |
17599 | { | |
17600 | return __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di *) a); | |
17601 | } | |
17602 | ||
49ab9992 | 17603 | __extension__ extern __inline uint8x16_t |
17604 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17605 | vld1q_u8 (const uint8_t *a) |
17606 | { | |
17607 | return (uint8x16_t) | |
17608 | __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi *) a); | |
17609 | } | |
17610 | ||
fc15e6c1 | 17611 | __extension__ extern __inline uint8x8x2_t |
17612 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17613 | vld1_u8_x2 (const uint8_t *__a) | |
17614 | { | |
17615 | uint8x8x2_t ret; | |
17616 | __builtin_aarch64_simd_oi __o; | |
17617 | __o = __builtin_aarch64_ld1x2v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
17618 | ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); | |
17619 | ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); | |
17620 | return ret; | |
17621 | } | |
17622 | ||
17623 | __extension__ extern __inline int8x8x2_t | |
17624 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17625 | vld1_s8_x2 (const int8_t *__a) | |
17626 | { | |
17627 | int8x8x2_t ret; | |
17628 | __builtin_aarch64_simd_oi __o; | |
17629 | __o = __builtin_aarch64_ld1x2v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
17630 | ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); | |
17631 | ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); | |
17632 | return ret; | |
17633 | } | |
17634 | ||
17635 | __extension__ extern __inline uint16x4x2_t | |
17636 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17637 | vld1_u16_x2 (const uint16_t *__a) | |
17638 | { | |
17639 | uint16x4x2_t ret; | |
17640 | __builtin_aarch64_simd_oi __o; | |
17641 | __o = __builtin_aarch64_ld1x2v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
17642 | ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); | |
17643 | ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); | |
17644 | return ret; | |
17645 | } | |
17646 | ||
17647 | __extension__ extern __inline int16x4x2_t | |
17648 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17649 | vld1_s16_x2 (const int16_t *__a) | |
17650 | { | |
17651 | int16x4x2_t ret; | |
17652 | __builtin_aarch64_simd_oi __o; | |
17653 | __o = __builtin_aarch64_ld1x2v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
17654 | ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); | |
17655 | ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); | |
17656 | return ret; | |
17657 | } | |
17658 | ||
17659 | __extension__ extern __inline uint32x2x2_t | |
17660 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17661 | vld1_u32_x2 (const uint32_t *__a) | |
17662 | { | |
17663 | uint32x2x2_t ret; | |
17664 | __builtin_aarch64_simd_oi __o; | |
17665 | __o = __builtin_aarch64_ld1x2v2si ((const __builtin_aarch64_simd_si *) __a); | |
17666 | ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); | |
17667 | ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); | |
17668 | return ret; | |
17669 | } | |
17670 | ||
17671 | __extension__ extern __inline int32x2x2_t | |
17672 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17673 | vld1_s32_x2 (const int32_t *__a) | |
17674 | { | |
17675 | int32x2x2_t ret; | |
17676 | __builtin_aarch64_simd_oi __o; | |
17677 | __o = __builtin_aarch64_ld1x2v2si ((const __builtin_aarch64_simd_si *) __a); | |
17678 | ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); | |
17679 | ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); | |
17680 | return ret; | |
17681 | } | |
17682 | ||
17683 | __extension__ extern __inline uint64x1x2_t | |
17684 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17685 | vld1_u64_x2 (const uint64_t *__a) | |
17686 | { | |
17687 | uint64x1x2_t ret; | |
17688 | __builtin_aarch64_simd_oi __o; | |
17689 | __o = __builtin_aarch64_ld1x2di ((const __builtin_aarch64_simd_di *) __a); | |
17690 | ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); | |
17691 | ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); | |
17692 | return ret; | |
17693 | } | |
17694 | ||
17695 | __extension__ extern __inline int64x1x2_t | |
17696 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17697 | vld1_s64_x2 (const int64_t *__a) | |
17698 | { | |
17699 | int64x1x2_t ret; | |
17700 | __builtin_aarch64_simd_oi __o; | |
17701 | __o = __builtin_aarch64_ld1x2di ((const __builtin_aarch64_simd_di *) __a); | |
17702 | ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); | |
17703 | ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); | |
17704 | return ret; | |
17705 | } | |
17706 | ||
17707 | __extension__ extern __inline float16x4x2_t | |
17708 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17709 | vld1_f16_x2 (const float16_t *__a) | |
17710 | { | |
17711 | float16x4x2_t ret; | |
17712 | __builtin_aarch64_simd_oi __o; | |
17713 | __o = __builtin_aarch64_ld1x2v4hf ((const __builtin_aarch64_simd_hf *) __a); | |
17714 | ret.val[0] = (float16x4_t) __builtin_aarch64_get_dregoiv4hf (__o, 0); | |
17715 | ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregoiv4hf (__o, 1); | |
17716 | return ret; | |
17717 | } | |
17718 | ||
17719 | __extension__ extern __inline float32x2x2_t | |
17720 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17721 | vld1_f32_x2 (const float32_t *__a) | |
17722 | { | |
17723 | float32x2x2_t ret; | |
17724 | __builtin_aarch64_simd_oi __o; | |
17725 | __o = __builtin_aarch64_ld1x2v2sf ((const __builtin_aarch64_simd_sf *) __a); | |
17726 | ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 0); | |
17727 | ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 1); | |
17728 | return ret; | |
17729 | } | |
17730 | ||
17731 | __extension__ extern __inline float64x1x2_t | |
17732 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17733 | vld1_f64_x2 (const float64_t *__a) | |
17734 | { | |
17735 | float64x1x2_t ret; | |
17736 | __builtin_aarch64_simd_oi __o; | |
17737 | __o = __builtin_aarch64_ld1x2df ((const __builtin_aarch64_simd_df *) __a); | |
17738 | ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 0)}; | |
17739 | ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 1)}; | |
17740 | return ret; | |
17741 | } | |
17742 | ||
17743 | __extension__ extern __inline poly8x8x2_t | |
17744 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17745 | vld1_p8_x2 (const poly8_t *__a) | |
17746 | { | |
17747 | poly8x8x2_t ret; | |
17748 | __builtin_aarch64_simd_oi __o; | |
17749 | __o = __builtin_aarch64_ld1x2v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
17750 | ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); | |
17751 | ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); | |
17752 | return ret; | |
17753 | } | |
17754 | ||
17755 | __extension__ extern __inline poly16x4x2_t | |
17756 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17757 | vld1_p16_x2 (const poly16_t *__a) | |
17758 | { | |
17759 | poly16x4x2_t ret; | |
17760 | __builtin_aarch64_simd_oi __o; | |
17761 | __o = __builtin_aarch64_ld1x2v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
17762 | ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); | |
17763 | ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); | |
17764 | return ret; | |
17765 | } | |
17766 | ||
17767 | __extension__ extern __inline poly64x1x2_t | |
17768 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17769 | vld1_p64_x2 (const poly64_t *__a) | |
17770 | { | |
17771 | poly64x1x2_t ret; | |
17772 | __builtin_aarch64_simd_oi __o; | |
17773 | __o = __builtin_aarch64_ld1x2di ((const __builtin_aarch64_simd_di *) __a); | |
17774 | ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); | |
17775 | ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); | |
17776 | return ret; | |
17777 | } | |
17778 | ||
17779 | __extension__ extern __inline uint8x16x2_t | |
17780 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17781 | vld1q_u8_x2 (const uint8_t *__a) | |
17782 | { | |
17783 | uint8x16x2_t ret; | |
17784 | __builtin_aarch64_simd_oi __o; | |
17785 | __o = __builtin_aarch64_ld1x2v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
17786 | ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); | |
17787 | ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); | |
17788 | return ret; | |
17789 | } | |
17790 | ||
17791 | __extension__ extern __inline int8x16x2_t | |
17792 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17793 | vld1q_s8_x2 (const int8_t *__a) | |
17794 | { | |
17795 | int8x16x2_t ret; | |
17796 | __builtin_aarch64_simd_oi __o; | |
17797 | __o = __builtin_aarch64_ld1x2v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
17798 | ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); | |
17799 | ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); | |
17800 | return ret; | |
17801 | } | |
17802 | ||
17803 | __extension__ extern __inline uint16x8x2_t | |
17804 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17805 | vld1q_u16_x2 (const uint16_t *__a) | |
17806 | { | |
17807 | uint16x8x2_t ret; | |
17808 | __builtin_aarch64_simd_oi __o; | |
17809 | __o = __builtin_aarch64_ld1x2v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
17810 | ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); | |
17811 | ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); | |
17812 | return ret; | |
17813 | } | |
17814 | ||
17815 | __extension__ extern __inline int16x8x2_t | |
17816 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17817 | vld1q_s16_x2 (const int16_t *__a) | |
17818 | { | |
17819 | int16x8x2_t ret; | |
17820 | __builtin_aarch64_simd_oi __o; | |
17821 | __o = __builtin_aarch64_ld1x2v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
17822 | ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); | |
17823 | ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); | |
17824 | return ret; | |
17825 | } | |
17826 | ||
17827 | __extension__ extern __inline uint32x4x2_t | |
17828 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17829 | vld1q_u32_x2 (const uint32_t *__a) | |
17830 | { | |
17831 | uint32x4x2_t ret; | |
17832 | __builtin_aarch64_simd_oi __o; | |
17833 | __o = __builtin_aarch64_ld1x2v4si ((const __builtin_aarch64_simd_si *) __a); | |
17834 | ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); | |
17835 | ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); | |
17836 | return ret; | |
17837 | } | |
17838 | ||
17839 | __extension__ extern __inline int32x4x2_t | |
17840 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17841 | vld1q_s32_x2 (const int32_t *__a) | |
17842 | { | |
17843 | int32x4x2_t ret; | |
17844 | __builtin_aarch64_simd_oi __o; | |
17845 | __o = __builtin_aarch64_ld1x2v4si ((const __builtin_aarch64_simd_si *) __a); | |
17846 | ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); | |
17847 | ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); | |
17848 | return ret; | |
17849 | } | |
17850 | ||
17851 | __extension__ extern __inline uint64x2x2_t | |
17852 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17853 | vld1q_u64_x2 (const uint64_t *__a) | |
17854 | { | |
17855 | uint64x2x2_t ret; | |
17856 | __builtin_aarch64_simd_oi __o; | |
17857 | __o = __builtin_aarch64_ld1x2v2di ((const __builtin_aarch64_simd_di *) __a); | |
17858 | ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); | |
17859 | ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); | |
17860 | return ret; | |
17861 | } | |
17862 | ||
17863 | __extension__ extern __inline int64x2x2_t | |
17864 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17865 | vld1q_s64_x2 (const int64_t *__a) | |
17866 | { | |
17867 | int64x2x2_t ret; | |
17868 | __builtin_aarch64_simd_oi __o; | |
17869 | __o = __builtin_aarch64_ld1x2v2di ((const __builtin_aarch64_simd_di *) __a); | |
17870 | ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); | |
17871 | ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); | |
17872 | return ret; | |
17873 | } | |
17874 | ||
17875 | __extension__ extern __inline float16x8x2_t | |
17876 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17877 | vld1q_f16_x2 (const float16_t *__a) | |
17878 | { | |
17879 | float16x8x2_t ret; | |
17880 | __builtin_aarch64_simd_oi __o; | |
17881 | __o = __builtin_aarch64_ld1x2v8hf ((const __builtin_aarch64_simd_hf *) __a); | |
17882 | ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregoiv8hf (__o, 0); | |
17883 | ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregoiv8hf (__o, 1); | |
17884 | return ret; | |
17885 | } | |
17886 | ||
17887 | __extension__ extern __inline float32x4x2_t | |
17888 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17889 | vld1q_f32_x2 (const float32_t *__a) | |
17890 | { | |
17891 | float32x4x2_t ret; | |
17892 | __builtin_aarch64_simd_oi __o; | |
17893 | __o = __builtin_aarch64_ld1x2v4sf ((const __builtin_aarch64_simd_sf *) __a); | |
17894 | ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 0); | |
17895 | ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 1); | |
17896 | return ret; | |
17897 | } | |
17898 | ||
17899 | __extension__ extern __inline float64x2x2_t | |
17900 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17901 | vld1q_f64_x2 (const float64_t *__a) | |
17902 | { | |
17903 | float64x2x2_t ret; | |
17904 | __builtin_aarch64_simd_oi __o; | |
17905 | __o = __builtin_aarch64_ld1x2v2df ((const __builtin_aarch64_simd_df *) __a); | |
17906 | ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 0); | |
17907 | ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 1); | |
17908 | return ret; | |
17909 | } | |
17910 | ||
17911 | __extension__ extern __inline poly8x16x2_t | |
17912 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17913 | vld1q_p8_x2 (const poly8_t *__a) | |
17914 | { | |
17915 | poly8x16x2_t ret; | |
17916 | __builtin_aarch64_simd_oi __o; | |
17917 | __o = __builtin_aarch64_ld1x2v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
17918 | ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); | |
17919 | ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); | |
17920 | return ret; | |
17921 | } | |
17922 | ||
17923 | __extension__ extern __inline poly16x8x2_t | |
17924 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17925 | vld1q_p16_x2 (const poly16_t *__a) | |
17926 | { | |
17927 | poly16x8x2_t ret; | |
17928 | __builtin_aarch64_simd_oi __o; | |
17929 | __o = __builtin_aarch64_ld1x2v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
17930 | ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); | |
17931 | ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); | |
17932 | return ret; | |
17933 | } | |
17934 | ||
17935 | __extension__ extern __inline poly64x2x2_t | |
17936 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17937 | vld1q_p64_x2 (const poly64_t *__a) | |
17938 | { | |
17939 | poly64x2x2_t ret; | |
17940 | __builtin_aarch64_simd_oi __o; | |
17941 | __o = __builtin_aarch64_ld1x2v2di ((const __builtin_aarch64_simd_di *) __a); | |
17942 | ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); | |
17943 | ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); | |
17944 | return ret; | |
17945 | } | |
17946 | ||
49ab9992 | 17947 | __extension__ extern __inline uint16x8_t |
17948 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17949 | vld1q_u16 (const uint16_t *a) |
17950 | { | |
17951 | return (uint16x8_t) | |
17952 | __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi *) a); | |
17953 | } | |
17954 | ||
49ab9992 | 17955 | __extension__ extern __inline uint32x4_t |
17956 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17957 | vld1q_u32 (const uint32_t *a) |
17958 | { | |
17959 | return (uint32x4_t) | |
17960 | __builtin_aarch64_ld1v4si ((const __builtin_aarch64_simd_si *) a); | |
17961 | } | |
17962 | ||
49ab9992 | 17963 | __extension__ extern __inline uint64x2_t |
17964 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 17965 | vld1q_u64 (const uint64_t *a) |
17966 | { | |
17967 | return (uint64x2_t) | |
17968 | __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di *) a); | |
17969 | } | |
17970 | ||
8f04ed15 | 17971 | /* vld1_dup */ |
17972 | ||
49ab9992 | 17973 | __extension__ extern __inline float16x4_t |
17974 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 17975 | vld1_dup_f16 (const float16_t* __a) |
17976 | { | |
7d8a6c0e | 17977 | return vdup_n_f16 (*__a); |
5ea22936 | 17978 | } |
17979 | ||
49ab9992 | 17980 | __extension__ extern __inline float32x2_t |
17981 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 17982 | vld1_dup_f32 (const float32_t* __a) |
17983 | { | |
17984 | return vdup_n_f32 (*__a); | |
17985 | } | |
17986 | ||
49ab9992 | 17987 | __extension__ extern __inline float64x1_t |
17988 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 17989 | vld1_dup_f64 (const float64_t* __a) |
17990 | { | |
17991 | return vdup_n_f64 (*__a); | |
17992 | } | |
17993 | ||
49ab9992 | 17994 | __extension__ extern __inline poly8x8_t |
17995 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 17996 | vld1_dup_p8 (const poly8_t* __a) |
17997 | { | |
17998 | return vdup_n_p8 (*__a); | |
17999 | } | |
18000 | ||
49ab9992 | 18001 | __extension__ extern __inline poly16x4_t |
18002 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18003 | vld1_dup_p16 (const poly16_t* __a) |
18004 | { | |
18005 | return vdup_n_p16 (*__a); | |
18006 | } | |
18007 | ||
d4f47414 | 18008 | __extension__ extern __inline poly64x1_t |
18009 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
18010 | vld1_dup_p64 (const poly64_t* __a) | |
18011 | { | |
18012 | return vdup_n_p64 (*__a); | |
18013 | } | |
18014 | ||
49ab9992 | 18015 | __extension__ extern __inline int8x8_t |
18016 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18017 | vld1_dup_s8 (const int8_t* __a) |
18018 | { | |
18019 | return vdup_n_s8 (*__a); | |
18020 | } | |
18021 | ||
49ab9992 | 18022 | __extension__ extern __inline int16x4_t |
18023 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18024 | vld1_dup_s16 (const int16_t* __a) |
18025 | { | |
18026 | return vdup_n_s16 (*__a); | |
18027 | } | |
18028 | ||
49ab9992 | 18029 | __extension__ extern __inline int32x2_t |
18030 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18031 | vld1_dup_s32 (const int32_t* __a) |
18032 | { | |
18033 | return vdup_n_s32 (*__a); | |
18034 | } | |
18035 | ||
49ab9992 | 18036 | __extension__ extern __inline int64x1_t |
18037 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18038 | vld1_dup_s64 (const int64_t* __a) |
18039 | { | |
18040 | return vdup_n_s64 (*__a); | |
18041 | } | |
18042 | ||
49ab9992 | 18043 | __extension__ extern __inline uint8x8_t |
18044 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18045 | vld1_dup_u8 (const uint8_t* __a) |
18046 | { | |
18047 | return vdup_n_u8 (*__a); | |
18048 | } | |
18049 | ||
49ab9992 | 18050 | __extension__ extern __inline uint16x4_t |
18051 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18052 | vld1_dup_u16 (const uint16_t* __a) |
18053 | { | |
18054 | return vdup_n_u16 (*__a); | |
18055 | } | |
18056 | ||
49ab9992 | 18057 | __extension__ extern __inline uint32x2_t |
18058 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18059 | vld1_dup_u32 (const uint32_t* __a) |
18060 | { | |
18061 | return vdup_n_u32 (*__a); | |
18062 | } | |
18063 | ||
49ab9992 | 18064 | __extension__ extern __inline uint64x1_t |
18065 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18066 | vld1_dup_u64 (const uint64_t* __a) |
18067 | { | |
18068 | return vdup_n_u64 (*__a); | |
18069 | } | |
18070 | ||
18071 | /* vld1q_dup */ | |
18072 | ||
49ab9992 | 18073 | __extension__ extern __inline float16x8_t |
18074 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5ea22936 | 18075 | vld1q_dup_f16 (const float16_t* __a) |
18076 | { | |
7d8a6c0e | 18077 | return vdupq_n_f16 (*__a); |
5ea22936 | 18078 | } |
18079 | ||
49ab9992 | 18080 | __extension__ extern __inline float32x4_t |
18081 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18082 | vld1q_dup_f32 (const float32_t* __a) |
18083 | { | |
18084 | return vdupq_n_f32 (*__a); | |
18085 | } | |
18086 | ||
49ab9992 | 18087 | __extension__ extern __inline float64x2_t |
18088 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18089 | vld1q_dup_f64 (const float64_t* __a) |
18090 | { | |
18091 | return vdupq_n_f64 (*__a); | |
18092 | } | |
18093 | ||
49ab9992 | 18094 | __extension__ extern __inline poly8x16_t |
18095 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18096 | vld1q_dup_p8 (const poly8_t* __a) |
18097 | { | |
18098 | return vdupq_n_p8 (*__a); | |
18099 | } | |
18100 | ||
49ab9992 | 18101 | __extension__ extern __inline poly16x8_t |
18102 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18103 | vld1q_dup_p16 (const poly16_t* __a) |
18104 | { | |
18105 | return vdupq_n_p16 (*__a); | |
18106 | } | |
18107 | ||
d4f47414 | 18108 | __extension__ extern __inline poly64x2_t |
18109 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
18110 | vld1q_dup_p64 (const poly64_t* __a) | |
18111 | { | |
18112 | return vdupq_n_p64 (*__a); | |
18113 | } | |
18114 | ||
18115 | __extension__ extern __inline int8x16_t | |
49ab9992 | 18116 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
8f04ed15 | 18117 | vld1q_dup_s8 (const int8_t* __a) |
18118 | { | |
18119 | return vdupq_n_s8 (*__a); | |
18120 | } | |
18121 | ||
49ab9992 | 18122 | __extension__ extern __inline int16x8_t |
18123 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18124 | vld1q_dup_s16 (const int16_t* __a) |
18125 | { | |
18126 | return vdupq_n_s16 (*__a); | |
18127 | } | |
18128 | ||
49ab9992 | 18129 | __extension__ extern __inline int32x4_t |
18130 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18131 | vld1q_dup_s32 (const int32_t* __a) |
18132 | { | |
18133 | return vdupq_n_s32 (*__a); | |
18134 | } | |
18135 | ||
49ab9992 | 18136 | __extension__ extern __inline int64x2_t |
18137 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18138 | vld1q_dup_s64 (const int64_t* __a) |
18139 | { | |
18140 | return vdupq_n_s64 (*__a); | |
18141 | } | |
18142 | ||
49ab9992 | 18143 | __extension__ extern __inline uint8x16_t |
18144 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18145 | vld1q_dup_u8 (const uint8_t* __a) |
18146 | { | |
18147 | return vdupq_n_u8 (*__a); | |
18148 | } | |
18149 | ||
49ab9992 | 18150 | __extension__ extern __inline uint16x8_t |
18151 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18152 | vld1q_dup_u16 (const uint16_t* __a) |
18153 | { | |
18154 | return vdupq_n_u16 (*__a); | |
18155 | } | |
18156 | ||
49ab9992 | 18157 | __extension__ extern __inline uint32x4_t |
18158 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18159 | vld1q_dup_u32 (const uint32_t* __a) |
18160 | { | |
18161 | return vdupq_n_u32 (*__a); | |
18162 | } | |
18163 | ||
49ab9992 | 18164 | __extension__ extern __inline uint64x2_t |
18165 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8f04ed15 | 18166 | vld1q_dup_u64 (const uint64_t* __a) |
18167 | { | |
18168 | return vdupq_n_u64 (*__a); | |
18169 | } | |
18170 | ||
63dfb934 | 18171 | /* vld1_lane */ |
18172 | ||
49ab9992 | 18173 | __extension__ extern __inline float16x4_t |
18174 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
aea31229 | 18175 | vld1_lane_f16 (const float16_t *__src, float16x4_t __vec, const int __lane) |
18176 | { | |
18177 | return __aarch64_vset_lane_any (*__src, __vec, __lane); | |
18178 | } | |
18179 | ||
49ab9992 | 18180 | __extension__ extern __inline float32x2_t |
18181 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18182 | vld1_lane_f32 (const float32_t *__src, float32x2_t __vec, const int __lane) |
18183 | { | |
96ddcbba | 18184 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18185 | } |
18186 | ||
49ab9992 | 18187 | __extension__ extern __inline float64x1_t |
18188 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18189 | vld1_lane_f64 (const float64_t *__src, float64x1_t __vec, const int __lane) |
18190 | { | |
96ddcbba | 18191 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18192 | } |
18193 | ||
49ab9992 | 18194 | __extension__ extern __inline poly8x8_t |
18195 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18196 | vld1_lane_p8 (const poly8_t *__src, poly8x8_t __vec, const int __lane) |
18197 | { | |
96ddcbba | 18198 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18199 | } |
18200 | ||
49ab9992 | 18201 | __extension__ extern __inline poly16x4_t |
18202 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18203 | vld1_lane_p16 (const poly16_t *__src, poly16x4_t __vec, const int __lane) |
18204 | { | |
96ddcbba | 18205 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18206 | } |
18207 | ||
d4f47414 | 18208 | __extension__ extern __inline poly64x1_t |
18209 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
18210 | vld1_lane_p64 (const poly64_t *__src, poly64x1_t __vec, const int __lane) | |
18211 | { | |
18212 | return __aarch64_vset_lane_any (*__src, __vec, __lane); | |
18213 | } | |
18214 | ||
49ab9992 | 18215 | __extension__ extern __inline int8x8_t |
18216 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18217 | vld1_lane_s8 (const int8_t *__src, int8x8_t __vec, const int __lane) |
18218 | { | |
96ddcbba | 18219 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18220 | } |
18221 | ||
49ab9992 | 18222 | __extension__ extern __inline int16x4_t |
18223 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18224 | vld1_lane_s16 (const int16_t *__src, int16x4_t __vec, const int __lane) |
18225 | { | |
96ddcbba | 18226 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18227 | } |
18228 | ||
49ab9992 | 18229 | __extension__ extern __inline int32x2_t |
18230 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18231 | vld1_lane_s32 (const int32_t *__src, int32x2_t __vec, const int __lane) |
18232 | { | |
96ddcbba | 18233 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18234 | } |
18235 | ||
49ab9992 | 18236 | __extension__ extern __inline int64x1_t |
18237 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18238 | vld1_lane_s64 (const int64_t *__src, int64x1_t __vec, const int __lane) |
18239 | { | |
96ddcbba | 18240 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18241 | } |
18242 | ||
49ab9992 | 18243 | __extension__ extern __inline uint8x8_t |
18244 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18245 | vld1_lane_u8 (const uint8_t *__src, uint8x8_t __vec, const int __lane) |
18246 | { | |
96ddcbba | 18247 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18248 | } |
18249 | ||
49ab9992 | 18250 | __extension__ extern __inline uint16x4_t |
18251 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18252 | vld1_lane_u16 (const uint16_t *__src, uint16x4_t __vec, const int __lane) |
18253 | { | |
96ddcbba | 18254 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18255 | } |
18256 | ||
49ab9992 | 18257 | __extension__ extern __inline uint32x2_t |
18258 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18259 | vld1_lane_u32 (const uint32_t *__src, uint32x2_t __vec, const int __lane) |
18260 | { | |
96ddcbba | 18261 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18262 | } |
18263 | ||
49ab9992 | 18264 | __extension__ extern __inline uint64x1_t |
18265 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18266 | vld1_lane_u64 (const uint64_t *__src, uint64x1_t __vec, const int __lane) |
18267 | { | |
96ddcbba | 18268 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18269 | } |
18270 | ||
18271 | /* vld1q_lane */ | |
18272 | ||
49ab9992 | 18273 | __extension__ extern __inline float16x8_t |
18274 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
aea31229 | 18275 | vld1q_lane_f16 (const float16_t *__src, float16x8_t __vec, const int __lane) |
18276 | { | |
18277 | return __aarch64_vset_lane_any (*__src, __vec, __lane); | |
18278 | } | |
18279 | ||
49ab9992 | 18280 | __extension__ extern __inline float32x4_t |
18281 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18282 | vld1q_lane_f32 (const float32_t *__src, float32x4_t __vec, const int __lane) |
18283 | { | |
96ddcbba | 18284 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18285 | } |
18286 | ||
49ab9992 | 18287 | __extension__ extern __inline float64x2_t |
18288 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18289 | vld1q_lane_f64 (const float64_t *__src, float64x2_t __vec, const int __lane) |
18290 | { | |
96ddcbba | 18291 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18292 | } |
18293 | ||
49ab9992 | 18294 | __extension__ extern __inline poly8x16_t |
18295 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18296 | vld1q_lane_p8 (const poly8_t *__src, poly8x16_t __vec, const int __lane) |
18297 | { | |
96ddcbba | 18298 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18299 | } |
18300 | ||
49ab9992 | 18301 | __extension__ extern __inline poly16x8_t |
18302 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18303 | vld1q_lane_p16 (const poly16_t *__src, poly16x8_t __vec, const int __lane) |
18304 | { | |
96ddcbba | 18305 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18306 | } |
18307 | ||
d4f47414 | 18308 | __extension__ extern __inline poly64x2_t |
18309 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
18310 | vld1q_lane_p64 (const poly64_t *__src, poly64x2_t __vec, const int __lane) | |
18311 | { | |
18312 | return __aarch64_vset_lane_any (*__src, __vec, __lane); | |
18313 | } | |
18314 | ||
49ab9992 | 18315 | __extension__ extern __inline int8x16_t |
18316 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18317 | vld1q_lane_s8 (const int8_t *__src, int8x16_t __vec, const int __lane) |
18318 | { | |
96ddcbba | 18319 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18320 | } |
18321 | ||
49ab9992 | 18322 | __extension__ extern __inline int16x8_t |
18323 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18324 | vld1q_lane_s16 (const int16_t *__src, int16x8_t __vec, const int __lane) |
18325 | { | |
96ddcbba | 18326 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18327 | } |
18328 | ||
49ab9992 | 18329 | __extension__ extern __inline int32x4_t |
18330 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18331 | vld1q_lane_s32 (const int32_t *__src, int32x4_t __vec, const int __lane) |
18332 | { | |
96ddcbba | 18333 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18334 | } |
18335 | ||
49ab9992 | 18336 | __extension__ extern __inline int64x2_t |
18337 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18338 | vld1q_lane_s64 (const int64_t *__src, int64x2_t __vec, const int __lane) |
18339 | { | |
96ddcbba | 18340 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18341 | } |
18342 | ||
49ab9992 | 18343 | __extension__ extern __inline uint8x16_t |
18344 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18345 | vld1q_lane_u8 (const uint8_t *__src, uint8x16_t __vec, const int __lane) |
18346 | { | |
96ddcbba | 18347 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18348 | } |
18349 | ||
49ab9992 | 18350 | __extension__ extern __inline uint16x8_t |
18351 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18352 | vld1q_lane_u16 (const uint16_t *__src, uint16x8_t __vec, const int __lane) |
18353 | { | |
96ddcbba | 18354 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18355 | } |
18356 | ||
49ab9992 | 18357 | __extension__ extern __inline uint32x4_t |
18358 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18359 | vld1q_lane_u32 (const uint32_t *__src, uint32x4_t __vec, const int __lane) |
18360 | { | |
96ddcbba | 18361 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18362 | } |
18363 | ||
49ab9992 | 18364 | __extension__ extern __inline uint64x2_t |
18365 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
63dfb934 | 18366 | vld1q_lane_u64 (const uint64_t *__src, uint64x2_t __vec, const int __lane) |
18367 | { | |
96ddcbba | 18368 | return __aarch64_vset_lane_any (*__src, __vec, __lane); |
63dfb934 | 18369 | } |
18370 | ||
df401d54 | 18371 | /* vldn */ |
18372 | ||
49ab9992 | 18373 | __extension__ extern __inline int64x1x2_t |
18374 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18375 | vld2_s64 (const int64_t * __a) |
18376 | { | |
18377 | int64x1x2_t ret; | |
18378 | __builtin_aarch64_simd_oi __o; | |
18379 | __o = __builtin_aarch64_ld2di ((const __builtin_aarch64_simd_di *) __a); | |
18380 | ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); | |
18381 | ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); | |
18382 | return ret; | |
18383 | } | |
18384 | ||
49ab9992 | 18385 | __extension__ extern __inline uint64x1x2_t |
18386 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18387 | vld2_u64 (const uint64_t * __a) |
18388 | { | |
18389 | uint64x1x2_t ret; | |
18390 | __builtin_aarch64_simd_oi __o; | |
18391 | __o = __builtin_aarch64_ld2di ((const __builtin_aarch64_simd_di *) __a); | |
18392 | ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); | |
18393 | ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); | |
18394 | return ret; | |
18395 | } | |
18396 | ||
49ab9992 | 18397 | __extension__ extern __inline float64x1x2_t |
18398 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18399 | vld2_f64 (const float64_t * __a) |
18400 | { | |
18401 | float64x1x2_t ret; | |
18402 | __builtin_aarch64_simd_oi __o; | |
18403 | __o = __builtin_aarch64_ld2df ((const __builtin_aarch64_simd_df *) __a); | |
ac292ff5 | 18404 | ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 0)}; |
18405 | ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 1)}; | |
df401d54 | 18406 | return ret; |
18407 | } | |
18408 | ||
49ab9992 | 18409 | __extension__ extern __inline int8x8x2_t |
18410 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18411 | vld2_s8 (const int8_t * __a) |
18412 | { | |
18413 | int8x8x2_t ret; | |
18414 | __builtin_aarch64_simd_oi __o; | |
18415 | __o = __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
18416 | ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); | |
18417 | ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); | |
18418 | return ret; | |
18419 | } | |
18420 | ||
49ab9992 | 18421 | __extension__ extern __inline poly8x8x2_t |
18422 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18423 | vld2_p8 (const poly8_t * __a) |
18424 | { | |
18425 | poly8x8x2_t ret; | |
18426 | __builtin_aarch64_simd_oi __o; | |
18427 | __o = __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
18428 | ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); | |
18429 | ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); | |
18430 | return ret; | |
18431 | } | |
18432 | ||
d4f47414 | 18433 | __extension__ extern __inline poly64x1x2_t |
18434 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
18435 | vld2_p64 (const poly64_t * __a) | |
18436 | { | |
18437 | poly64x1x2_t ret; | |
18438 | __builtin_aarch64_simd_oi __o; | |
18439 | __o = __builtin_aarch64_ld2di ((const __builtin_aarch64_simd_di *) __a); | |
18440 | ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregoidi_pss (__o, 0); | |
18441 | ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregoidi_pss (__o, 1); | |
18442 | return ret; | |
18443 | } | |
18444 | ||
49ab9992 | 18445 | __extension__ extern __inline int16x4x2_t |
18446 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18447 | vld2_s16 (const int16_t * __a) |
18448 | { | |
18449 | int16x4x2_t ret; | |
18450 | __builtin_aarch64_simd_oi __o; | |
18451 | __o = __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
18452 | ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); | |
18453 | ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); | |
18454 | return ret; | |
18455 | } | |
18456 | ||
49ab9992 | 18457 | __extension__ extern __inline poly16x4x2_t |
18458 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18459 | vld2_p16 (const poly16_t * __a) |
18460 | { | |
18461 | poly16x4x2_t ret; | |
18462 | __builtin_aarch64_simd_oi __o; | |
18463 | __o = __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
18464 | ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); | |
18465 | ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); | |
18466 | return ret; | |
18467 | } | |
18468 | ||
49ab9992 | 18469 | __extension__ extern __inline int32x2x2_t |
18470 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18471 | vld2_s32 (const int32_t * __a) |
18472 | { | |
18473 | int32x2x2_t ret; | |
18474 | __builtin_aarch64_simd_oi __o; | |
18475 | __o = __builtin_aarch64_ld2v2si ((const __builtin_aarch64_simd_si *) __a); | |
18476 | ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); | |
18477 | ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); | |
18478 | return ret; | |
18479 | } | |
18480 | ||
49ab9992 | 18481 | __extension__ extern __inline uint8x8x2_t |
18482 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18483 | vld2_u8 (const uint8_t * __a) |
18484 | { | |
18485 | uint8x8x2_t ret; | |
18486 | __builtin_aarch64_simd_oi __o; | |
18487 | __o = __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
18488 | ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); | |
18489 | ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); | |
18490 | return ret; | |
18491 | } | |
18492 | ||
49ab9992 | 18493 | __extension__ extern __inline uint16x4x2_t |
18494 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18495 | vld2_u16 (const uint16_t * __a) |
18496 | { | |
18497 | uint16x4x2_t ret; | |
18498 | __builtin_aarch64_simd_oi __o; | |
18499 | __o = __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
18500 | ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); | |
18501 | ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); | |
18502 | return ret; | |
18503 | } | |
18504 | ||
49ab9992 | 18505 | __extension__ extern __inline uint32x2x2_t |
18506 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18507 | vld2_u32 (const uint32_t * __a) |
18508 | { | |
18509 | uint32x2x2_t ret; | |
18510 | __builtin_aarch64_simd_oi __o; | |
18511 | __o = __builtin_aarch64_ld2v2si ((const __builtin_aarch64_simd_si *) __a); | |
18512 | ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); | |
18513 | ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); | |
18514 | return ret; | |
18515 | } | |
18516 | ||
49ab9992 | 18517 | __extension__ extern __inline float16x4x2_t |
18518 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 18519 | vld2_f16 (const float16_t * __a) |
18520 | { | |
18521 | float16x4x2_t ret; | |
18522 | __builtin_aarch64_simd_oi __o; | |
18523 | __o = __builtin_aarch64_ld2v4hf (__a); | |
18524 | ret.val[0] = __builtin_aarch64_get_dregoiv4hf (__o, 0); | |
18525 | ret.val[1] = __builtin_aarch64_get_dregoiv4hf (__o, 1); | |
18526 | return ret; | |
18527 | } | |
18528 | ||
49ab9992 | 18529 | __extension__ extern __inline float32x2x2_t |
18530 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18531 | vld2_f32 (const float32_t * __a) |
18532 | { | |
18533 | float32x2x2_t ret; | |
18534 | __builtin_aarch64_simd_oi __o; | |
18535 | __o = __builtin_aarch64_ld2v2sf ((const __builtin_aarch64_simd_sf *) __a); | |
18536 | ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 0); | |
18537 | ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 1); | |
18538 | return ret; | |
18539 | } | |
18540 | ||
49ab9992 | 18541 | __extension__ extern __inline int8x16x2_t |
18542 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18543 | vld2q_s8 (const int8_t * __a) |
18544 | { | |
18545 | int8x16x2_t ret; | |
18546 | __builtin_aarch64_simd_oi __o; | |
18547 | __o = __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
18548 | ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); | |
18549 | ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); | |
18550 | return ret; | |
18551 | } | |
18552 | ||
49ab9992 | 18553 | __extension__ extern __inline poly8x16x2_t |
18554 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18555 | vld2q_p8 (const poly8_t * __a) |
18556 | { | |
18557 | poly8x16x2_t ret; | |
18558 | __builtin_aarch64_simd_oi __o; | |
18559 | __o = __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
18560 | ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); | |
18561 | ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); | |
18562 | return ret; | |
18563 | } | |
18564 | ||
49ab9992 | 18565 | __extension__ extern __inline int16x8x2_t |
18566 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18567 | vld2q_s16 (const int16_t * __a) |
18568 | { | |
18569 | int16x8x2_t ret; | |
18570 | __builtin_aarch64_simd_oi __o; | |
18571 | __o = __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
18572 | ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); | |
18573 | ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); | |
18574 | return ret; | |
18575 | } | |
18576 | ||
49ab9992 | 18577 | __extension__ extern __inline poly16x8x2_t |
18578 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18579 | vld2q_p16 (const poly16_t * __a) |
18580 | { | |
18581 | poly16x8x2_t ret; | |
18582 | __builtin_aarch64_simd_oi __o; | |
18583 | __o = __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
18584 | ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); | |
18585 | ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); | |
18586 | return ret; | |
18587 | } | |
18588 | ||
d4f47414 | 18589 | __extension__ extern __inline poly64x2x2_t |
18590 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
18591 | vld2q_p64 (const poly64_t * __a) | |
18592 | { | |
18593 | poly64x2x2_t ret; | |
18594 | __builtin_aarch64_simd_oi __o; | |
18595 | __o = __builtin_aarch64_ld2v2di ((const __builtin_aarch64_simd_di *) __a); | |
18596 | ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di_pss (__o, 0); | |
18597 | ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di_pss (__o, 1); | |
18598 | return ret; | |
18599 | } | |
18600 | ||
49ab9992 | 18601 | __extension__ extern __inline int32x4x2_t |
18602 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18603 | vld2q_s32 (const int32_t * __a) |
18604 | { | |
18605 | int32x4x2_t ret; | |
18606 | __builtin_aarch64_simd_oi __o; | |
18607 | __o = __builtin_aarch64_ld2v4si ((const __builtin_aarch64_simd_si *) __a); | |
18608 | ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); | |
18609 | ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); | |
18610 | return ret; | |
18611 | } | |
18612 | ||
49ab9992 | 18613 | __extension__ extern __inline int64x2x2_t |
18614 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18615 | vld2q_s64 (const int64_t * __a) |
18616 | { | |
18617 | int64x2x2_t ret; | |
18618 | __builtin_aarch64_simd_oi __o; | |
18619 | __o = __builtin_aarch64_ld2v2di ((const __builtin_aarch64_simd_di *) __a); | |
18620 | ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); | |
18621 | ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); | |
18622 | return ret; | |
18623 | } | |
18624 | ||
49ab9992 | 18625 | __extension__ extern __inline uint8x16x2_t |
18626 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18627 | vld2q_u8 (const uint8_t * __a) |
18628 | { | |
18629 | uint8x16x2_t ret; | |
18630 | __builtin_aarch64_simd_oi __o; | |
18631 | __o = __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
18632 | ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); | |
18633 | ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); | |
18634 | return ret; | |
18635 | } | |
18636 | ||
49ab9992 | 18637 | __extension__ extern __inline uint16x8x2_t |
18638 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18639 | vld2q_u16 (const uint16_t * __a) |
18640 | { | |
18641 | uint16x8x2_t ret; | |
18642 | __builtin_aarch64_simd_oi __o; | |
18643 | __o = __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
18644 | ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); | |
18645 | ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); | |
18646 | return ret; | |
18647 | } | |
18648 | ||
49ab9992 | 18649 | __extension__ extern __inline uint32x4x2_t |
18650 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18651 | vld2q_u32 (const uint32_t * __a) |
18652 | { | |
18653 | uint32x4x2_t ret; | |
18654 | __builtin_aarch64_simd_oi __o; | |
18655 | __o = __builtin_aarch64_ld2v4si ((const __builtin_aarch64_simd_si *) __a); | |
18656 | ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); | |
18657 | ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); | |
18658 | return ret; | |
18659 | } | |
18660 | ||
49ab9992 | 18661 | __extension__ extern __inline uint64x2x2_t |
18662 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18663 | vld2q_u64 (const uint64_t * __a) |
18664 | { | |
18665 | uint64x2x2_t ret; | |
18666 | __builtin_aarch64_simd_oi __o; | |
18667 | __o = __builtin_aarch64_ld2v2di ((const __builtin_aarch64_simd_di *) __a); | |
18668 | ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); | |
18669 | ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); | |
18670 | return ret; | |
18671 | } | |
18672 | ||
49ab9992 | 18673 | __extension__ extern __inline float16x8x2_t |
18674 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 18675 | vld2q_f16 (const float16_t * __a) |
18676 | { | |
18677 | float16x8x2_t ret; | |
18678 | __builtin_aarch64_simd_oi __o; | |
18679 | __o = __builtin_aarch64_ld2v8hf (__a); | |
18680 | ret.val[0] = __builtin_aarch64_get_qregoiv8hf (__o, 0); | |
18681 | ret.val[1] = __builtin_aarch64_get_qregoiv8hf (__o, 1); | |
18682 | return ret; | |
18683 | } | |
18684 | ||
49ab9992 | 18685 | __extension__ extern __inline float32x4x2_t |
18686 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18687 | vld2q_f32 (const float32_t * __a) |
18688 | { | |
18689 | float32x4x2_t ret; | |
18690 | __builtin_aarch64_simd_oi __o; | |
18691 | __o = __builtin_aarch64_ld2v4sf ((const __builtin_aarch64_simd_sf *) __a); | |
18692 | ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 0); | |
18693 | ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 1); | |
18694 | return ret; | |
18695 | } | |
18696 | ||
49ab9992 | 18697 | __extension__ extern __inline float64x2x2_t |
18698 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18699 | vld2q_f64 (const float64_t * __a) |
18700 | { | |
18701 | float64x2x2_t ret; | |
18702 | __builtin_aarch64_simd_oi __o; | |
18703 | __o = __builtin_aarch64_ld2v2df ((const __builtin_aarch64_simd_df *) __a); | |
18704 | ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 0); | |
18705 | ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 1); | |
18706 | return ret; | |
18707 | } | |
18708 | ||
49ab9992 | 18709 | __extension__ extern __inline int64x1x3_t |
18710 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18711 | vld3_s64 (const int64_t * __a) |
18712 | { | |
18713 | int64x1x3_t ret; | |
18714 | __builtin_aarch64_simd_ci __o; | |
18715 | __o = __builtin_aarch64_ld3di ((const __builtin_aarch64_simd_di *) __a); | |
18716 | ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); | |
18717 | ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); | |
18718 | ret.val[2] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); | |
18719 | return ret; | |
18720 | } | |
18721 | ||
49ab9992 | 18722 | __extension__ extern __inline uint64x1x3_t |
18723 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18724 | vld3_u64 (const uint64_t * __a) |
18725 | { | |
18726 | uint64x1x3_t ret; | |
18727 | __builtin_aarch64_simd_ci __o; | |
18728 | __o = __builtin_aarch64_ld3di ((const __builtin_aarch64_simd_di *) __a); | |
18729 | ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); | |
18730 | ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); | |
18731 | ret.val[2] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); | |
18732 | return ret; | |
18733 | } | |
18734 | ||
49ab9992 | 18735 | __extension__ extern __inline float64x1x3_t |
18736 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18737 | vld3_f64 (const float64_t * __a) |
18738 | { | |
18739 | float64x1x3_t ret; | |
18740 | __builtin_aarch64_simd_ci __o; | |
18741 | __o = __builtin_aarch64_ld3df ((const __builtin_aarch64_simd_df *) __a); | |
ac292ff5 | 18742 | ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 0)}; |
18743 | ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 1)}; | |
18744 | ret.val[2] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 2)}; | |
df401d54 | 18745 | return ret; |
18746 | } | |
18747 | ||
49ab9992 | 18748 | __extension__ extern __inline int8x8x3_t |
18749 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18750 | vld3_s8 (const int8_t * __a) |
18751 | { | |
18752 | int8x8x3_t ret; | |
18753 | __builtin_aarch64_simd_ci __o; | |
18754 | __o = __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
18755 | ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); | |
18756 | ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); | |
18757 | ret.val[2] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); | |
18758 | return ret; | |
18759 | } | |
18760 | ||
49ab9992 | 18761 | __extension__ extern __inline poly8x8x3_t |
18762 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18763 | vld3_p8 (const poly8_t * __a) |
18764 | { | |
18765 | poly8x8x3_t ret; | |
18766 | __builtin_aarch64_simd_ci __o; | |
18767 | __o = __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
18768 | ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); | |
18769 | ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); | |
18770 | ret.val[2] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); | |
18771 | return ret; | |
18772 | } | |
18773 | ||
49ab9992 | 18774 | __extension__ extern __inline int16x4x3_t |
18775 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18776 | vld3_s16 (const int16_t * __a) |
18777 | { | |
18778 | int16x4x3_t ret; | |
18779 | __builtin_aarch64_simd_ci __o; | |
18780 | __o = __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
18781 | ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); | |
18782 | ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); | |
18783 | ret.val[2] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); | |
18784 | return ret; | |
18785 | } | |
18786 | ||
49ab9992 | 18787 | __extension__ extern __inline poly16x4x3_t |
18788 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18789 | vld3_p16 (const poly16_t * __a) |
18790 | { | |
18791 | poly16x4x3_t ret; | |
18792 | __builtin_aarch64_simd_ci __o; | |
18793 | __o = __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
18794 | ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); | |
18795 | ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); | |
18796 | ret.val[2] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); | |
18797 | return ret; | |
18798 | } | |
18799 | ||
49ab9992 | 18800 | __extension__ extern __inline int32x2x3_t |
18801 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18802 | vld3_s32 (const int32_t * __a) |
18803 | { | |
18804 | int32x2x3_t ret; | |
18805 | __builtin_aarch64_simd_ci __o; | |
18806 | __o = __builtin_aarch64_ld3v2si ((const __builtin_aarch64_simd_si *) __a); | |
18807 | ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); | |
18808 | ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); | |
18809 | ret.val[2] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); | |
18810 | return ret; | |
18811 | } | |
18812 | ||
49ab9992 | 18813 | __extension__ extern __inline uint8x8x3_t |
18814 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18815 | vld3_u8 (const uint8_t * __a) |
18816 | { | |
18817 | uint8x8x3_t ret; | |
18818 | __builtin_aarch64_simd_ci __o; | |
18819 | __o = __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
18820 | ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); | |
18821 | ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); | |
18822 | ret.val[2] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); | |
18823 | return ret; | |
18824 | } | |
18825 | ||
49ab9992 | 18826 | __extension__ extern __inline uint16x4x3_t |
18827 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18828 | vld3_u16 (const uint16_t * __a) |
18829 | { | |
18830 | uint16x4x3_t ret; | |
18831 | __builtin_aarch64_simd_ci __o; | |
18832 | __o = __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
18833 | ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); | |
18834 | ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); | |
18835 | ret.val[2] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); | |
18836 | return ret; | |
18837 | } | |
18838 | ||
49ab9992 | 18839 | __extension__ extern __inline uint32x2x3_t |
18840 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18841 | vld3_u32 (const uint32_t * __a) |
18842 | { | |
18843 | uint32x2x3_t ret; | |
18844 | __builtin_aarch64_simd_ci __o; | |
18845 | __o = __builtin_aarch64_ld3v2si ((const __builtin_aarch64_simd_si *) __a); | |
18846 | ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); | |
18847 | ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); | |
18848 | ret.val[2] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); | |
18849 | return ret; | |
18850 | } | |
18851 | ||
49ab9992 | 18852 | __extension__ extern __inline float16x4x3_t |
18853 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 18854 | vld3_f16 (const float16_t * __a) |
18855 | { | |
18856 | float16x4x3_t ret; | |
18857 | __builtin_aarch64_simd_ci __o; | |
18858 | __o = __builtin_aarch64_ld3v4hf (__a); | |
18859 | ret.val[0] = __builtin_aarch64_get_dregciv4hf (__o, 0); | |
18860 | ret.val[1] = __builtin_aarch64_get_dregciv4hf (__o, 1); | |
18861 | ret.val[2] = __builtin_aarch64_get_dregciv4hf (__o, 2); | |
18862 | return ret; | |
18863 | } | |
18864 | ||
49ab9992 | 18865 | __extension__ extern __inline float32x2x3_t |
18866 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18867 | vld3_f32 (const float32_t * __a) |
18868 | { | |
18869 | float32x2x3_t ret; | |
18870 | __builtin_aarch64_simd_ci __o; | |
18871 | __o = __builtin_aarch64_ld3v2sf ((const __builtin_aarch64_simd_sf *) __a); | |
18872 | ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 0); | |
18873 | ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 1); | |
18874 | ret.val[2] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 2); | |
18875 | return ret; | |
18876 | } | |
18877 | ||
d4f47414 | 18878 | __extension__ extern __inline poly64x1x3_t |
18879 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
18880 | vld3_p64 (const poly64_t * __a) | |
18881 | { | |
18882 | poly64x1x3_t ret; | |
18883 | __builtin_aarch64_simd_ci __o; | |
18884 | __o = __builtin_aarch64_ld3di ((const __builtin_aarch64_simd_di *) __a); | |
18885 | ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 0); | |
18886 | ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 1); | |
18887 | ret.val[2] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 2); | |
18888 | return ret; | |
18889 | } | |
18890 | ||
49ab9992 | 18891 | __extension__ extern __inline int8x16x3_t |
18892 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18893 | vld3q_s8 (const int8_t * __a) |
18894 | { | |
18895 | int8x16x3_t ret; | |
18896 | __builtin_aarch64_simd_ci __o; | |
18897 | __o = __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
18898 | ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); | |
18899 | ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); | |
18900 | ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); | |
18901 | return ret; | |
18902 | } | |
18903 | ||
49ab9992 | 18904 | __extension__ extern __inline poly8x16x3_t |
18905 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18906 | vld3q_p8 (const poly8_t * __a) |
18907 | { | |
18908 | poly8x16x3_t ret; | |
18909 | __builtin_aarch64_simd_ci __o; | |
18910 | __o = __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
18911 | ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); | |
18912 | ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); | |
18913 | ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); | |
18914 | return ret; | |
18915 | } | |
18916 | ||
49ab9992 | 18917 | __extension__ extern __inline int16x8x3_t |
18918 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18919 | vld3q_s16 (const int16_t * __a) |
18920 | { | |
18921 | int16x8x3_t ret; | |
18922 | __builtin_aarch64_simd_ci __o; | |
18923 | __o = __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
18924 | ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); | |
18925 | ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); | |
18926 | ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); | |
18927 | return ret; | |
18928 | } | |
18929 | ||
49ab9992 | 18930 | __extension__ extern __inline poly16x8x3_t |
18931 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18932 | vld3q_p16 (const poly16_t * __a) |
18933 | { | |
18934 | poly16x8x3_t ret; | |
18935 | __builtin_aarch64_simd_ci __o; | |
18936 | __o = __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
18937 | ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); | |
18938 | ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); | |
18939 | ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); | |
18940 | return ret; | |
18941 | } | |
18942 | ||
49ab9992 | 18943 | __extension__ extern __inline int32x4x3_t |
18944 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18945 | vld3q_s32 (const int32_t * __a) |
18946 | { | |
18947 | int32x4x3_t ret; | |
18948 | __builtin_aarch64_simd_ci __o; | |
18949 | __o = __builtin_aarch64_ld3v4si ((const __builtin_aarch64_simd_si *) __a); | |
18950 | ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); | |
18951 | ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); | |
18952 | ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); | |
18953 | return ret; | |
18954 | } | |
18955 | ||
49ab9992 | 18956 | __extension__ extern __inline int64x2x3_t |
18957 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18958 | vld3q_s64 (const int64_t * __a) |
18959 | { | |
18960 | int64x2x3_t ret; | |
18961 | __builtin_aarch64_simd_ci __o; | |
18962 | __o = __builtin_aarch64_ld3v2di ((const __builtin_aarch64_simd_di *) __a); | |
18963 | ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); | |
18964 | ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); | |
18965 | ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); | |
18966 | return ret; | |
18967 | } | |
18968 | ||
49ab9992 | 18969 | __extension__ extern __inline uint8x16x3_t |
18970 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18971 | vld3q_u8 (const uint8_t * __a) |
18972 | { | |
18973 | uint8x16x3_t ret; | |
18974 | __builtin_aarch64_simd_ci __o; | |
18975 | __o = __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
18976 | ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); | |
18977 | ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); | |
18978 | ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); | |
18979 | return ret; | |
18980 | } | |
18981 | ||
49ab9992 | 18982 | __extension__ extern __inline uint16x8x3_t |
18983 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18984 | vld3q_u16 (const uint16_t * __a) |
18985 | { | |
18986 | uint16x8x3_t ret; | |
18987 | __builtin_aarch64_simd_ci __o; | |
18988 | __o = __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
18989 | ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); | |
18990 | ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); | |
18991 | ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); | |
18992 | return ret; | |
18993 | } | |
18994 | ||
49ab9992 | 18995 | __extension__ extern __inline uint32x4x3_t |
18996 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 18997 | vld3q_u32 (const uint32_t * __a) |
18998 | { | |
18999 | uint32x4x3_t ret; | |
19000 | __builtin_aarch64_simd_ci __o; | |
19001 | __o = __builtin_aarch64_ld3v4si ((const __builtin_aarch64_simd_si *) __a); | |
19002 | ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); | |
19003 | ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); | |
19004 | ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); | |
19005 | return ret; | |
19006 | } | |
19007 | ||
49ab9992 | 19008 | __extension__ extern __inline uint64x2x3_t |
19009 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19010 | vld3q_u64 (const uint64_t * __a) |
19011 | { | |
19012 | uint64x2x3_t ret; | |
19013 | __builtin_aarch64_simd_ci __o; | |
19014 | __o = __builtin_aarch64_ld3v2di ((const __builtin_aarch64_simd_di *) __a); | |
19015 | ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); | |
19016 | ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); | |
19017 | ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); | |
19018 | return ret; | |
19019 | } | |
19020 | ||
49ab9992 | 19021 | __extension__ extern __inline float16x8x3_t |
19022 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 19023 | vld3q_f16 (const float16_t * __a) |
19024 | { | |
19025 | float16x8x3_t ret; | |
19026 | __builtin_aarch64_simd_ci __o; | |
19027 | __o = __builtin_aarch64_ld3v8hf (__a); | |
19028 | ret.val[0] = __builtin_aarch64_get_qregciv8hf (__o, 0); | |
19029 | ret.val[1] = __builtin_aarch64_get_qregciv8hf (__o, 1); | |
19030 | ret.val[2] = __builtin_aarch64_get_qregciv8hf (__o, 2); | |
19031 | return ret; | |
19032 | } | |
19033 | ||
49ab9992 | 19034 | __extension__ extern __inline float32x4x3_t |
19035 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19036 | vld3q_f32 (const float32_t * __a) |
19037 | { | |
19038 | float32x4x3_t ret; | |
19039 | __builtin_aarch64_simd_ci __o; | |
19040 | __o = __builtin_aarch64_ld3v4sf ((const __builtin_aarch64_simd_sf *) __a); | |
19041 | ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 0); | |
19042 | ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 1); | |
19043 | ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 2); | |
19044 | return ret; | |
19045 | } | |
19046 | ||
49ab9992 | 19047 | __extension__ extern __inline float64x2x3_t |
19048 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19049 | vld3q_f64 (const float64_t * __a) |
19050 | { | |
19051 | float64x2x3_t ret; | |
19052 | __builtin_aarch64_simd_ci __o; | |
19053 | __o = __builtin_aarch64_ld3v2df ((const __builtin_aarch64_simd_df *) __a); | |
19054 | ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 0); | |
19055 | ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 1); | |
19056 | ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 2); | |
19057 | return ret; | |
19058 | } | |
19059 | ||
d4f47414 | 19060 | __extension__ extern __inline poly64x2x3_t |
19061 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
19062 | vld3q_p64 (const poly64_t * __a) | |
19063 | { | |
19064 | poly64x2x3_t ret; | |
19065 | __builtin_aarch64_simd_ci __o; | |
19066 | __o = __builtin_aarch64_ld3v2di ((const __builtin_aarch64_simd_di *) __a); | |
19067 | ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 0); | |
19068 | ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 1); | |
19069 | ret.val[2] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 2); | |
19070 | return ret; | |
19071 | } | |
19072 | ||
49ab9992 | 19073 | __extension__ extern __inline int64x1x4_t |
19074 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19075 | vld4_s64 (const int64_t * __a) |
19076 | { | |
19077 | int64x1x4_t ret; | |
19078 | __builtin_aarch64_simd_xi __o; | |
19079 | __o = __builtin_aarch64_ld4di ((const __builtin_aarch64_simd_di *) __a); | |
19080 | ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 0); | |
19081 | ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 1); | |
19082 | ret.val[2] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 2); | |
19083 | ret.val[3] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 3); | |
19084 | return ret; | |
19085 | } | |
19086 | ||
49ab9992 | 19087 | __extension__ extern __inline uint64x1x4_t |
19088 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19089 | vld4_u64 (const uint64_t * __a) |
19090 | { | |
19091 | uint64x1x4_t ret; | |
19092 | __builtin_aarch64_simd_xi __o; | |
19093 | __o = __builtin_aarch64_ld4di ((const __builtin_aarch64_simd_di *) __a); | |
19094 | ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 0); | |
19095 | ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 1); | |
19096 | ret.val[2] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 2); | |
19097 | ret.val[3] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 3); | |
19098 | return ret; | |
19099 | } | |
19100 | ||
49ab9992 | 19101 | __extension__ extern __inline float64x1x4_t |
19102 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19103 | vld4_f64 (const float64_t * __a) |
19104 | { | |
19105 | float64x1x4_t ret; | |
19106 | __builtin_aarch64_simd_xi __o; | |
19107 | __o = __builtin_aarch64_ld4df ((const __builtin_aarch64_simd_df *) __a); | |
ac292ff5 | 19108 | ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 0)}; |
19109 | ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 1)}; | |
19110 | ret.val[2] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 2)}; | |
19111 | ret.val[3] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 3)}; | |
df401d54 | 19112 | return ret; |
19113 | } | |
19114 | ||
49ab9992 | 19115 | __extension__ extern __inline int8x8x4_t |
19116 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19117 | vld4_s8 (const int8_t * __a) |
19118 | { | |
19119 | int8x8x4_t ret; | |
19120 | __builtin_aarch64_simd_xi __o; | |
19121 | __o = __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
19122 | ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); | |
19123 | ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); | |
19124 | ret.val[2] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); | |
19125 | ret.val[3] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); | |
19126 | return ret; | |
19127 | } | |
19128 | ||
49ab9992 | 19129 | __extension__ extern __inline poly8x8x4_t |
19130 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19131 | vld4_p8 (const poly8_t * __a) |
19132 | { | |
19133 | poly8x8x4_t ret; | |
19134 | __builtin_aarch64_simd_xi __o; | |
19135 | __o = __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
19136 | ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); | |
19137 | ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); | |
19138 | ret.val[2] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); | |
19139 | ret.val[3] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); | |
19140 | return ret; | |
19141 | } | |
19142 | ||
49ab9992 | 19143 | __extension__ extern __inline int16x4x4_t |
19144 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19145 | vld4_s16 (const int16_t * __a) |
19146 | { | |
19147 | int16x4x4_t ret; | |
19148 | __builtin_aarch64_simd_xi __o; | |
19149 | __o = __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
19150 | ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); | |
19151 | ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); | |
19152 | ret.val[2] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); | |
19153 | ret.val[3] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); | |
19154 | return ret; | |
19155 | } | |
19156 | ||
49ab9992 | 19157 | __extension__ extern __inline poly16x4x4_t |
19158 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19159 | vld4_p16 (const poly16_t * __a) |
19160 | { | |
19161 | poly16x4x4_t ret; | |
19162 | __builtin_aarch64_simd_xi __o; | |
19163 | __o = __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
19164 | ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); | |
19165 | ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); | |
19166 | ret.val[2] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); | |
19167 | ret.val[3] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); | |
19168 | return ret; | |
19169 | } | |
19170 | ||
49ab9992 | 19171 | __extension__ extern __inline int32x2x4_t |
19172 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19173 | vld4_s32 (const int32_t * __a) |
19174 | { | |
19175 | int32x2x4_t ret; | |
19176 | __builtin_aarch64_simd_xi __o; | |
19177 | __o = __builtin_aarch64_ld4v2si ((const __builtin_aarch64_simd_si *) __a); | |
19178 | ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 0); | |
19179 | ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 1); | |
19180 | ret.val[2] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 2); | |
19181 | ret.val[3] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 3); | |
19182 | return ret; | |
19183 | } | |
19184 | ||
49ab9992 | 19185 | __extension__ extern __inline uint8x8x4_t |
19186 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19187 | vld4_u8 (const uint8_t * __a) |
19188 | { | |
19189 | uint8x8x4_t ret; | |
19190 | __builtin_aarch64_simd_xi __o; | |
19191 | __o = __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
19192 | ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); | |
19193 | ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); | |
19194 | ret.val[2] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); | |
19195 | ret.val[3] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); | |
19196 | return ret; | |
19197 | } | |
19198 | ||
49ab9992 | 19199 | __extension__ extern __inline uint16x4x4_t |
19200 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19201 | vld4_u16 (const uint16_t * __a) |
19202 | { | |
19203 | uint16x4x4_t ret; | |
19204 | __builtin_aarch64_simd_xi __o; | |
19205 | __o = __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
19206 | ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); | |
19207 | ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); | |
19208 | ret.val[2] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); | |
19209 | ret.val[3] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); | |
19210 | return ret; | |
19211 | } | |
19212 | ||
49ab9992 | 19213 | __extension__ extern __inline uint32x2x4_t |
19214 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19215 | vld4_u32 (const uint32_t * __a) |
19216 | { | |
19217 | uint32x2x4_t ret; | |
19218 | __builtin_aarch64_simd_xi __o; | |
19219 | __o = __builtin_aarch64_ld4v2si ((const __builtin_aarch64_simd_si *) __a); | |
19220 | ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 0); | |
19221 | ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 1); | |
19222 | ret.val[2] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 2); | |
19223 | ret.val[3] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 3); | |
19224 | return ret; | |
19225 | } | |
19226 | ||
49ab9992 | 19227 | __extension__ extern __inline float16x4x4_t |
19228 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 19229 | vld4_f16 (const float16_t * __a) |
19230 | { | |
19231 | float16x4x4_t ret; | |
19232 | __builtin_aarch64_simd_xi __o; | |
19233 | __o = __builtin_aarch64_ld4v4hf (__a); | |
19234 | ret.val[0] = __builtin_aarch64_get_dregxiv4hf (__o, 0); | |
19235 | ret.val[1] = __builtin_aarch64_get_dregxiv4hf (__o, 1); | |
19236 | ret.val[2] = __builtin_aarch64_get_dregxiv4hf (__o, 2); | |
19237 | ret.val[3] = __builtin_aarch64_get_dregxiv4hf (__o, 3); | |
19238 | return ret; | |
19239 | } | |
19240 | ||
49ab9992 | 19241 | __extension__ extern __inline float32x2x4_t |
19242 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19243 | vld4_f32 (const float32_t * __a) |
19244 | { | |
19245 | float32x2x4_t ret; | |
19246 | __builtin_aarch64_simd_xi __o; | |
19247 | __o = __builtin_aarch64_ld4v2sf ((const __builtin_aarch64_simd_sf *) __a); | |
19248 | ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 0); | |
19249 | ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 1); | |
19250 | ret.val[2] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 2); | |
19251 | ret.val[3] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 3); | |
19252 | return ret; | |
19253 | } | |
19254 | ||
d4f47414 | 19255 | __extension__ extern __inline poly64x1x4_t |
19256 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
19257 | vld4_p64 (const poly64_t * __a) | |
19258 | { | |
19259 | poly64x1x4_t ret; | |
19260 | __builtin_aarch64_simd_xi __o; | |
19261 | __o = __builtin_aarch64_ld4di ((const __builtin_aarch64_simd_di *) __a); | |
19262 | ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 0); | |
19263 | ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 1); | |
19264 | ret.val[2] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 2); | |
19265 | ret.val[3] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 3); | |
19266 | return ret; | |
19267 | } | |
19268 | ||
49ab9992 | 19269 | __extension__ extern __inline int8x16x4_t |
19270 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19271 | vld4q_s8 (const int8_t * __a) |
19272 | { | |
19273 | int8x16x4_t ret; | |
19274 | __builtin_aarch64_simd_xi __o; | |
19275 | __o = __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
19276 | ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); | |
19277 | ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); | |
19278 | ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); | |
19279 | ret.val[3] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); | |
19280 | return ret; | |
19281 | } | |
19282 | ||
49ab9992 | 19283 | __extension__ extern __inline poly8x16x4_t |
19284 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19285 | vld4q_p8 (const poly8_t * __a) |
19286 | { | |
19287 | poly8x16x4_t ret; | |
19288 | __builtin_aarch64_simd_xi __o; | |
19289 | __o = __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
19290 | ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); | |
19291 | ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); | |
19292 | ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); | |
19293 | ret.val[3] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); | |
19294 | return ret; | |
19295 | } | |
19296 | ||
49ab9992 | 19297 | __extension__ extern __inline int16x8x4_t |
19298 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19299 | vld4q_s16 (const int16_t * __a) |
19300 | { | |
19301 | int16x8x4_t ret; | |
19302 | __builtin_aarch64_simd_xi __o; | |
19303 | __o = __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
19304 | ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); | |
19305 | ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); | |
19306 | ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); | |
19307 | ret.val[3] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); | |
19308 | return ret; | |
19309 | } | |
19310 | ||
49ab9992 | 19311 | __extension__ extern __inline poly16x8x4_t |
19312 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19313 | vld4q_p16 (const poly16_t * __a) |
19314 | { | |
19315 | poly16x8x4_t ret; | |
19316 | __builtin_aarch64_simd_xi __o; | |
19317 | __o = __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
19318 | ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); | |
19319 | ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); | |
19320 | ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); | |
19321 | ret.val[3] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); | |
19322 | return ret; | |
19323 | } | |
19324 | ||
49ab9992 | 19325 | __extension__ extern __inline int32x4x4_t |
19326 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19327 | vld4q_s32 (const int32_t * __a) |
19328 | { | |
19329 | int32x4x4_t ret; | |
19330 | __builtin_aarch64_simd_xi __o; | |
19331 | __o = __builtin_aarch64_ld4v4si ((const __builtin_aarch64_simd_si *) __a); | |
19332 | ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0); | |
19333 | ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1); | |
19334 | ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2); | |
19335 | ret.val[3] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3); | |
19336 | return ret; | |
19337 | } | |
19338 | ||
49ab9992 | 19339 | __extension__ extern __inline int64x2x4_t |
19340 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19341 | vld4q_s64 (const int64_t * __a) |
19342 | { | |
19343 | int64x2x4_t ret; | |
19344 | __builtin_aarch64_simd_xi __o; | |
19345 | __o = __builtin_aarch64_ld4v2di ((const __builtin_aarch64_simd_di *) __a); | |
19346 | ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 0); | |
19347 | ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 1); | |
19348 | ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 2); | |
19349 | ret.val[3] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 3); | |
19350 | return ret; | |
19351 | } | |
19352 | ||
49ab9992 | 19353 | __extension__ extern __inline uint8x16x4_t |
19354 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19355 | vld4q_u8 (const uint8_t * __a) |
19356 | { | |
19357 | uint8x16x4_t ret; | |
19358 | __builtin_aarch64_simd_xi __o; | |
19359 | __o = __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
19360 | ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); | |
19361 | ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); | |
19362 | ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); | |
19363 | ret.val[3] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); | |
19364 | return ret; | |
19365 | } | |
19366 | ||
49ab9992 | 19367 | __extension__ extern __inline uint16x8x4_t |
19368 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19369 | vld4q_u16 (const uint16_t * __a) |
19370 | { | |
19371 | uint16x8x4_t ret; | |
19372 | __builtin_aarch64_simd_xi __o; | |
19373 | __o = __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
19374 | ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); | |
19375 | ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); | |
19376 | ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); | |
19377 | ret.val[3] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); | |
19378 | return ret; | |
19379 | } | |
19380 | ||
49ab9992 | 19381 | __extension__ extern __inline uint32x4x4_t |
19382 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19383 | vld4q_u32 (const uint32_t * __a) |
19384 | { | |
19385 | uint32x4x4_t ret; | |
19386 | __builtin_aarch64_simd_xi __o; | |
19387 | __o = __builtin_aarch64_ld4v4si ((const __builtin_aarch64_simd_si *) __a); | |
19388 | ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0); | |
19389 | ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1); | |
19390 | ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2); | |
19391 | ret.val[3] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3); | |
19392 | return ret; | |
19393 | } | |
19394 | ||
49ab9992 | 19395 | __extension__ extern __inline uint64x2x4_t |
19396 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19397 | vld4q_u64 (const uint64_t * __a) |
19398 | { | |
19399 | uint64x2x4_t ret; | |
19400 | __builtin_aarch64_simd_xi __o; | |
19401 | __o = __builtin_aarch64_ld4v2di ((const __builtin_aarch64_simd_di *) __a); | |
19402 | ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 0); | |
19403 | ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 1); | |
19404 | ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 2); | |
19405 | ret.val[3] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 3); | |
19406 | return ret; | |
19407 | } | |
19408 | ||
49ab9992 | 19409 | __extension__ extern __inline float16x8x4_t |
19410 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 19411 | vld4q_f16 (const float16_t * __a) |
19412 | { | |
19413 | float16x8x4_t ret; | |
19414 | __builtin_aarch64_simd_xi __o; | |
19415 | __o = __builtin_aarch64_ld4v8hf (__a); | |
19416 | ret.val[0] = __builtin_aarch64_get_qregxiv8hf (__o, 0); | |
19417 | ret.val[1] = __builtin_aarch64_get_qregxiv8hf (__o, 1); | |
19418 | ret.val[2] = __builtin_aarch64_get_qregxiv8hf (__o, 2); | |
19419 | ret.val[3] = __builtin_aarch64_get_qregxiv8hf (__o, 3); | |
19420 | return ret; | |
19421 | } | |
19422 | ||
49ab9992 | 19423 | __extension__ extern __inline float32x4x4_t |
19424 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19425 | vld4q_f32 (const float32_t * __a) |
19426 | { | |
19427 | float32x4x4_t ret; | |
19428 | __builtin_aarch64_simd_xi __o; | |
19429 | __o = __builtin_aarch64_ld4v4sf ((const __builtin_aarch64_simd_sf *) __a); | |
19430 | ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 0); | |
19431 | ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 1); | |
19432 | ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 2); | |
19433 | ret.val[3] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 3); | |
19434 | return ret; | |
19435 | } | |
19436 | ||
49ab9992 | 19437 | __extension__ extern __inline float64x2x4_t |
19438 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 19439 | vld4q_f64 (const float64_t * __a) |
19440 | { | |
19441 | float64x2x4_t ret; | |
19442 | __builtin_aarch64_simd_xi __o; | |
19443 | __o = __builtin_aarch64_ld4v2df ((const __builtin_aarch64_simd_df *) __a); | |
20bce7af | 19444 | ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 0); |
19445 | ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 1); | |
19446 | ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 2); | |
19447 | ret.val[3] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 3); | |
19448 | return ret; | |
19449 | } | |
19450 | ||
d4f47414 | 19451 | __extension__ extern __inline poly64x2x4_t |
19452 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
19453 | vld4q_p64 (const poly64_t * __a) | |
19454 | { | |
19455 | poly64x2x4_t ret; | |
19456 | __builtin_aarch64_simd_xi __o; | |
19457 | __o = __builtin_aarch64_ld4v2di ((const __builtin_aarch64_simd_di *) __a); | |
19458 | ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 0); | |
19459 | ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 1); | |
19460 | ret.val[2] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 2); | |
19461 | ret.val[3] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 3); | |
19462 | return ret; | |
19463 | } | |
19464 | ||
20bce7af | 19465 | /* vldn_dup */ |
19466 | ||
49ab9992 | 19467 | __extension__ extern __inline int8x8x2_t |
19468 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19469 | vld2_dup_s8 (const int8_t * __a) |
19470 | { | |
19471 | int8x8x2_t ret; | |
19472 | __builtin_aarch64_simd_oi __o; | |
19473 | __o = __builtin_aarch64_ld2rv8qi ((const __builtin_aarch64_simd_qi *) __a); | |
19474 | ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); | |
19475 | ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); | |
19476 | return ret; | |
19477 | } | |
19478 | ||
49ab9992 | 19479 | __extension__ extern __inline int16x4x2_t |
19480 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19481 | vld2_dup_s16 (const int16_t * __a) |
19482 | { | |
19483 | int16x4x2_t ret; | |
19484 | __builtin_aarch64_simd_oi __o; | |
19485 | __o = __builtin_aarch64_ld2rv4hi ((const __builtin_aarch64_simd_hi *) __a); | |
19486 | ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); | |
19487 | ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); | |
19488 | return ret; | |
19489 | } | |
19490 | ||
49ab9992 | 19491 | __extension__ extern __inline int32x2x2_t |
19492 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19493 | vld2_dup_s32 (const int32_t * __a) |
19494 | { | |
19495 | int32x2x2_t ret; | |
19496 | __builtin_aarch64_simd_oi __o; | |
19497 | __o = __builtin_aarch64_ld2rv2si ((const __builtin_aarch64_simd_si *) __a); | |
19498 | ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); | |
19499 | ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); | |
19500 | return ret; | |
19501 | } | |
19502 | ||
49ab9992 | 19503 | __extension__ extern __inline float16x4x2_t |
19504 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 19505 | vld2_dup_f16 (const float16_t * __a) |
19506 | { | |
19507 | float16x4x2_t ret; | |
19508 | __builtin_aarch64_simd_oi __o; | |
19509 | __o = __builtin_aarch64_ld2rv4hf ((const __builtin_aarch64_simd_hf *) __a); | |
19510 | ret.val[0] = __builtin_aarch64_get_dregoiv4hf (__o, 0); | |
19511 | ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregoiv4hf (__o, 1); | |
19512 | return ret; | |
19513 | } | |
19514 | ||
49ab9992 | 19515 | __extension__ extern __inline float32x2x2_t |
19516 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19517 | vld2_dup_f32 (const float32_t * __a) |
19518 | { | |
19519 | float32x2x2_t ret; | |
19520 | __builtin_aarch64_simd_oi __o; | |
19521 | __o = __builtin_aarch64_ld2rv2sf ((const __builtin_aarch64_simd_sf *) __a); | |
19522 | ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 0); | |
19523 | ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 1); | |
19524 | return ret; | |
19525 | } | |
19526 | ||
49ab9992 | 19527 | __extension__ extern __inline float64x1x2_t |
19528 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19529 | vld2_dup_f64 (const float64_t * __a) |
19530 | { | |
19531 | float64x1x2_t ret; | |
19532 | __builtin_aarch64_simd_oi __o; | |
19533 | __o = __builtin_aarch64_ld2rdf ((const __builtin_aarch64_simd_df *) __a); | |
19534 | ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 0)}; | |
19535 | ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 1)}; | |
19536 | return ret; | |
19537 | } | |
19538 | ||
49ab9992 | 19539 | __extension__ extern __inline uint8x8x2_t |
19540 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19541 | vld2_dup_u8 (const uint8_t * __a) |
19542 | { | |
19543 | uint8x8x2_t ret; | |
19544 | __builtin_aarch64_simd_oi __o; | |
19545 | __o = __builtin_aarch64_ld2rv8qi ((const __builtin_aarch64_simd_qi *) __a); | |
19546 | ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); | |
19547 | ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); | |
19548 | return ret; | |
19549 | } | |
19550 | ||
49ab9992 | 19551 | __extension__ extern __inline uint16x4x2_t |
19552 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19553 | vld2_dup_u16 (const uint16_t * __a) |
19554 | { | |
19555 | uint16x4x2_t ret; | |
19556 | __builtin_aarch64_simd_oi __o; | |
19557 | __o = __builtin_aarch64_ld2rv4hi ((const __builtin_aarch64_simd_hi *) __a); | |
19558 | ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); | |
19559 | ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); | |
19560 | return ret; | |
19561 | } | |
19562 | ||
49ab9992 | 19563 | __extension__ extern __inline uint32x2x2_t |
19564 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19565 | vld2_dup_u32 (const uint32_t * __a) |
19566 | { | |
19567 | uint32x2x2_t ret; | |
19568 | __builtin_aarch64_simd_oi __o; | |
19569 | __o = __builtin_aarch64_ld2rv2si ((const __builtin_aarch64_simd_si *) __a); | |
19570 | ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); | |
19571 | ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); | |
19572 | return ret; | |
19573 | } | |
19574 | ||
49ab9992 | 19575 | __extension__ extern __inline poly8x8x2_t |
19576 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19577 | vld2_dup_p8 (const poly8_t * __a) |
19578 | { | |
19579 | poly8x8x2_t ret; | |
19580 | __builtin_aarch64_simd_oi __o; | |
19581 | __o = __builtin_aarch64_ld2rv8qi ((const __builtin_aarch64_simd_qi *) __a); | |
19582 | ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); | |
19583 | ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); | |
19584 | return ret; | |
19585 | } | |
19586 | ||
49ab9992 | 19587 | __extension__ extern __inline poly16x4x2_t |
19588 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19589 | vld2_dup_p16 (const poly16_t * __a) |
19590 | { | |
19591 | poly16x4x2_t ret; | |
19592 | __builtin_aarch64_simd_oi __o; | |
19593 | __o = __builtin_aarch64_ld2rv4hi ((const __builtin_aarch64_simd_hi *) __a); | |
19594 | ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); | |
19595 | ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); | |
19596 | return ret; | |
19597 | } | |
19598 | ||
d4f47414 | 19599 | __extension__ extern __inline poly64x1x2_t |
19600 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
19601 | vld2_dup_p64 (const poly64_t * __a) | |
19602 | { | |
19603 | poly64x1x2_t ret; | |
19604 | __builtin_aarch64_simd_oi __o; | |
19605 | __o = __builtin_aarch64_ld2rv2di ((const __builtin_aarch64_simd_di *) __a); | |
19606 | ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregoidi_pss (__o, 0); | |
19607 | ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregoidi_pss (__o, 1); | |
19608 | return ret; | |
19609 | } | |
19610 | ||
19611 | ||
49ab9992 | 19612 | __extension__ extern __inline int64x1x2_t |
19613 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19614 | vld2_dup_s64 (const int64_t * __a) |
19615 | { | |
19616 | int64x1x2_t ret; | |
19617 | __builtin_aarch64_simd_oi __o; | |
19618 | __o = __builtin_aarch64_ld2rdi ((const __builtin_aarch64_simd_di *) __a); | |
19619 | ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); | |
19620 | ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); | |
19621 | return ret; | |
19622 | } | |
19623 | ||
49ab9992 | 19624 | __extension__ extern __inline uint64x1x2_t |
19625 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19626 | vld2_dup_u64 (const uint64_t * __a) |
19627 | { | |
19628 | uint64x1x2_t ret; | |
19629 | __builtin_aarch64_simd_oi __o; | |
19630 | __o = __builtin_aarch64_ld2rdi ((const __builtin_aarch64_simd_di *) __a); | |
19631 | ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); | |
19632 | ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); | |
19633 | return ret; | |
19634 | } | |
19635 | ||
49ab9992 | 19636 | __extension__ extern __inline int8x16x2_t |
19637 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19638 | vld2q_dup_s8 (const int8_t * __a) |
19639 | { | |
19640 | int8x16x2_t ret; | |
19641 | __builtin_aarch64_simd_oi __o; | |
19642 | __o = __builtin_aarch64_ld2rv16qi ((const __builtin_aarch64_simd_qi *) __a); | |
19643 | ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); | |
19644 | ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); | |
19645 | return ret; | |
19646 | } | |
19647 | ||
49ab9992 | 19648 | __extension__ extern __inline poly8x16x2_t |
19649 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19650 | vld2q_dup_p8 (const poly8_t * __a) |
19651 | { | |
19652 | poly8x16x2_t ret; | |
19653 | __builtin_aarch64_simd_oi __o; | |
19654 | __o = __builtin_aarch64_ld2rv16qi ((const __builtin_aarch64_simd_qi *) __a); | |
19655 | ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); | |
19656 | ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); | |
19657 | return ret; | |
19658 | } | |
19659 | ||
49ab9992 | 19660 | __extension__ extern __inline int16x8x2_t |
19661 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19662 | vld2q_dup_s16 (const int16_t * __a) |
19663 | { | |
19664 | int16x8x2_t ret; | |
19665 | __builtin_aarch64_simd_oi __o; | |
19666 | __o = __builtin_aarch64_ld2rv8hi ((const __builtin_aarch64_simd_hi *) __a); | |
19667 | ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); | |
19668 | ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); | |
19669 | return ret; | |
19670 | } | |
19671 | ||
49ab9992 | 19672 | __extension__ extern __inline poly16x8x2_t |
19673 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19674 | vld2q_dup_p16 (const poly16_t * __a) |
19675 | { | |
19676 | poly16x8x2_t ret; | |
19677 | __builtin_aarch64_simd_oi __o; | |
19678 | __o = __builtin_aarch64_ld2rv8hi ((const __builtin_aarch64_simd_hi *) __a); | |
19679 | ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); | |
19680 | ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); | |
19681 | return ret; | |
19682 | } | |
19683 | ||
49ab9992 | 19684 | __extension__ extern __inline int32x4x2_t |
19685 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19686 | vld2q_dup_s32 (const int32_t * __a) |
19687 | { | |
19688 | int32x4x2_t ret; | |
19689 | __builtin_aarch64_simd_oi __o; | |
19690 | __o = __builtin_aarch64_ld2rv4si ((const __builtin_aarch64_simd_si *) __a); | |
19691 | ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); | |
19692 | ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); | |
19693 | return ret; | |
19694 | } | |
19695 | ||
49ab9992 | 19696 | __extension__ extern __inline int64x2x2_t |
19697 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19698 | vld2q_dup_s64 (const int64_t * __a) |
19699 | { | |
19700 | int64x2x2_t ret; | |
19701 | __builtin_aarch64_simd_oi __o; | |
19702 | __o = __builtin_aarch64_ld2rv2di ((const __builtin_aarch64_simd_di *) __a); | |
19703 | ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); | |
19704 | ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); | |
19705 | return ret; | |
19706 | } | |
19707 | ||
49ab9992 | 19708 | __extension__ extern __inline uint8x16x2_t |
19709 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19710 | vld2q_dup_u8 (const uint8_t * __a) |
19711 | { | |
19712 | uint8x16x2_t ret; | |
19713 | __builtin_aarch64_simd_oi __o; | |
19714 | __o = __builtin_aarch64_ld2rv16qi ((const __builtin_aarch64_simd_qi *) __a); | |
19715 | ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); | |
19716 | ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); | |
19717 | return ret; | |
19718 | } | |
19719 | ||
49ab9992 | 19720 | __extension__ extern __inline uint16x8x2_t |
19721 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19722 | vld2q_dup_u16 (const uint16_t * __a) |
19723 | { | |
19724 | uint16x8x2_t ret; | |
19725 | __builtin_aarch64_simd_oi __o; | |
19726 | __o = __builtin_aarch64_ld2rv8hi ((const __builtin_aarch64_simd_hi *) __a); | |
19727 | ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); | |
19728 | ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); | |
19729 | return ret; | |
19730 | } | |
19731 | ||
49ab9992 | 19732 | __extension__ extern __inline uint32x4x2_t |
19733 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19734 | vld2q_dup_u32 (const uint32_t * __a) |
19735 | { | |
19736 | uint32x4x2_t ret; | |
19737 | __builtin_aarch64_simd_oi __o; | |
19738 | __o = __builtin_aarch64_ld2rv4si ((const __builtin_aarch64_simd_si *) __a); | |
19739 | ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); | |
19740 | ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); | |
19741 | return ret; | |
19742 | } | |
19743 | ||
49ab9992 | 19744 | __extension__ extern __inline uint64x2x2_t |
19745 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19746 | vld2q_dup_u64 (const uint64_t * __a) |
19747 | { | |
19748 | uint64x2x2_t ret; | |
19749 | __builtin_aarch64_simd_oi __o; | |
19750 | __o = __builtin_aarch64_ld2rv2di ((const __builtin_aarch64_simd_di *) __a); | |
19751 | ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); | |
19752 | ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); | |
19753 | return ret; | |
19754 | } | |
19755 | ||
49ab9992 | 19756 | __extension__ extern __inline float16x8x2_t |
19757 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 19758 | vld2q_dup_f16 (const float16_t * __a) |
19759 | { | |
19760 | float16x8x2_t ret; | |
19761 | __builtin_aarch64_simd_oi __o; | |
19762 | __o = __builtin_aarch64_ld2rv8hf ((const __builtin_aarch64_simd_hf *) __a); | |
19763 | ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregoiv8hf (__o, 0); | |
19764 | ret.val[1] = __builtin_aarch64_get_qregoiv8hf (__o, 1); | |
19765 | return ret; | |
19766 | } | |
19767 | ||
49ab9992 | 19768 | __extension__ extern __inline float32x4x2_t |
19769 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19770 | vld2q_dup_f32 (const float32_t * __a) |
19771 | { | |
19772 | float32x4x2_t ret; | |
19773 | __builtin_aarch64_simd_oi __o; | |
19774 | __o = __builtin_aarch64_ld2rv4sf ((const __builtin_aarch64_simd_sf *) __a); | |
19775 | ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 0); | |
19776 | ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 1); | |
19777 | return ret; | |
19778 | } | |
19779 | ||
49ab9992 | 19780 | __extension__ extern __inline float64x2x2_t |
19781 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19782 | vld2q_dup_f64 (const float64_t * __a) |
19783 | { | |
19784 | float64x2x2_t ret; | |
19785 | __builtin_aarch64_simd_oi __o; | |
19786 | __o = __builtin_aarch64_ld2rv2df ((const __builtin_aarch64_simd_df *) __a); | |
19787 | ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 0); | |
19788 | ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 1); | |
19789 | return ret; | |
19790 | } | |
19791 | ||
d4f47414 | 19792 | __extension__ extern __inline poly64x2x2_t |
19793 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
19794 | vld2q_dup_p64 (const poly64_t * __a) | |
19795 | { | |
19796 | poly64x2x2_t ret; | |
19797 | __builtin_aarch64_simd_oi __o; | |
19798 | __o = __builtin_aarch64_ld2rv2di ((const __builtin_aarch64_simd_di *) __a); | |
19799 | ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di_pss (__o, 0); | |
19800 | ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di_pss (__o, 1); | |
19801 | return ret; | |
19802 | } | |
19803 | ||
49ab9992 | 19804 | __extension__ extern __inline int64x1x3_t |
19805 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19806 | vld3_dup_s64 (const int64_t * __a) |
19807 | { | |
19808 | int64x1x3_t ret; | |
19809 | __builtin_aarch64_simd_ci __o; | |
19810 | __o = __builtin_aarch64_ld3rdi ((const __builtin_aarch64_simd_di *) __a); | |
19811 | ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); | |
19812 | ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); | |
19813 | ret.val[2] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); | |
19814 | return ret; | |
19815 | } | |
19816 | ||
49ab9992 | 19817 | __extension__ extern __inline uint64x1x3_t |
19818 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19819 | vld3_dup_u64 (const uint64_t * __a) |
19820 | { | |
19821 | uint64x1x3_t ret; | |
19822 | __builtin_aarch64_simd_ci __o; | |
19823 | __o = __builtin_aarch64_ld3rdi ((const __builtin_aarch64_simd_di *) __a); | |
19824 | ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); | |
19825 | ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); | |
19826 | ret.val[2] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); | |
19827 | return ret; | |
19828 | } | |
19829 | ||
49ab9992 | 19830 | __extension__ extern __inline float64x1x3_t |
19831 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19832 | vld3_dup_f64 (const float64_t * __a) |
19833 | { | |
19834 | float64x1x3_t ret; | |
19835 | __builtin_aarch64_simd_ci __o; | |
19836 | __o = __builtin_aarch64_ld3rdf ((const __builtin_aarch64_simd_df *) __a); | |
19837 | ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 0)}; | |
19838 | ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 1)}; | |
19839 | ret.val[2] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 2)}; | |
19840 | return ret; | |
19841 | } | |
19842 | ||
49ab9992 | 19843 | __extension__ extern __inline int8x8x3_t |
19844 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19845 | vld3_dup_s8 (const int8_t * __a) |
19846 | { | |
19847 | int8x8x3_t ret; | |
19848 | __builtin_aarch64_simd_ci __o; | |
19849 | __o = __builtin_aarch64_ld3rv8qi ((const __builtin_aarch64_simd_qi *) __a); | |
19850 | ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); | |
19851 | ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); | |
19852 | ret.val[2] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); | |
19853 | return ret; | |
19854 | } | |
19855 | ||
49ab9992 | 19856 | __extension__ extern __inline poly8x8x3_t |
19857 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19858 | vld3_dup_p8 (const poly8_t * __a) |
19859 | { | |
19860 | poly8x8x3_t ret; | |
19861 | __builtin_aarch64_simd_ci __o; | |
19862 | __o = __builtin_aarch64_ld3rv8qi ((const __builtin_aarch64_simd_qi *) __a); | |
19863 | ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); | |
19864 | ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); | |
19865 | ret.val[2] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); | |
19866 | return ret; | |
19867 | } | |
19868 | ||
49ab9992 | 19869 | __extension__ extern __inline int16x4x3_t |
19870 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19871 | vld3_dup_s16 (const int16_t * __a) |
19872 | { | |
19873 | int16x4x3_t ret; | |
19874 | __builtin_aarch64_simd_ci __o; | |
19875 | __o = __builtin_aarch64_ld3rv4hi ((const __builtin_aarch64_simd_hi *) __a); | |
19876 | ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); | |
19877 | ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); | |
19878 | ret.val[2] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); | |
19879 | return ret; | |
19880 | } | |
19881 | ||
49ab9992 | 19882 | __extension__ extern __inline poly16x4x3_t |
19883 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19884 | vld3_dup_p16 (const poly16_t * __a) |
19885 | { | |
19886 | poly16x4x3_t ret; | |
19887 | __builtin_aarch64_simd_ci __o; | |
19888 | __o = __builtin_aarch64_ld3rv4hi ((const __builtin_aarch64_simd_hi *) __a); | |
19889 | ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); | |
19890 | ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); | |
19891 | ret.val[2] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); | |
19892 | return ret; | |
19893 | } | |
19894 | ||
49ab9992 | 19895 | __extension__ extern __inline int32x2x3_t |
19896 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19897 | vld3_dup_s32 (const int32_t * __a) |
19898 | { | |
19899 | int32x2x3_t ret; | |
19900 | __builtin_aarch64_simd_ci __o; | |
19901 | __o = __builtin_aarch64_ld3rv2si ((const __builtin_aarch64_simd_si *) __a); | |
19902 | ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); | |
19903 | ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); | |
19904 | ret.val[2] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); | |
19905 | return ret; | |
19906 | } | |
19907 | ||
49ab9992 | 19908 | __extension__ extern __inline uint8x8x3_t |
19909 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19910 | vld3_dup_u8 (const uint8_t * __a) |
19911 | { | |
19912 | uint8x8x3_t ret; | |
19913 | __builtin_aarch64_simd_ci __o; | |
19914 | __o = __builtin_aarch64_ld3rv8qi ((const __builtin_aarch64_simd_qi *) __a); | |
19915 | ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); | |
19916 | ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); | |
19917 | ret.val[2] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); | |
19918 | return ret; | |
19919 | } | |
19920 | ||
49ab9992 | 19921 | __extension__ extern __inline uint16x4x3_t |
19922 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19923 | vld3_dup_u16 (const uint16_t * __a) |
19924 | { | |
19925 | uint16x4x3_t ret; | |
19926 | __builtin_aarch64_simd_ci __o; | |
19927 | __o = __builtin_aarch64_ld3rv4hi ((const __builtin_aarch64_simd_hi *) __a); | |
19928 | ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); | |
19929 | ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); | |
19930 | ret.val[2] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); | |
19931 | return ret; | |
19932 | } | |
19933 | ||
49ab9992 | 19934 | __extension__ extern __inline uint32x2x3_t |
19935 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19936 | vld3_dup_u32 (const uint32_t * __a) |
19937 | { | |
19938 | uint32x2x3_t ret; | |
19939 | __builtin_aarch64_simd_ci __o; | |
19940 | __o = __builtin_aarch64_ld3rv2si ((const __builtin_aarch64_simd_si *) __a); | |
19941 | ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); | |
19942 | ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); | |
19943 | ret.val[2] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); | |
19944 | return ret; | |
19945 | } | |
19946 | ||
49ab9992 | 19947 | __extension__ extern __inline float16x4x3_t |
19948 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 19949 | vld3_dup_f16 (const float16_t * __a) |
19950 | { | |
19951 | float16x4x3_t ret; | |
19952 | __builtin_aarch64_simd_ci __o; | |
19953 | __o = __builtin_aarch64_ld3rv4hf ((const __builtin_aarch64_simd_hf *) __a); | |
19954 | ret.val[0] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 0); | |
19955 | ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 1); | |
19956 | ret.val[2] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 2); | |
19957 | return ret; | |
19958 | } | |
19959 | ||
49ab9992 | 19960 | __extension__ extern __inline float32x2x3_t |
19961 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19962 | vld3_dup_f32 (const float32_t * __a) |
19963 | { | |
19964 | float32x2x3_t ret; | |
19965 | __builtin_aarch64_simd_ci __o; | |
19966 | __o = __builtin_aarch64_ld3rv2sf ((const __builtin_aarch64_simd_sf *) __a); | |
19967 | ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 0); | |
19968 | ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 1); | |
19969 | ret.val[2] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 2); | |
19970 | return ret; | |
19971 | } | |
19972 | ||
d4f47414 | 19973 | __extension__ extern __inline poly64x1x3_t |
19974 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
19975 | vld3_dup_p64 (const poly64_t * __a) | |
19976 | { | |
19977 | poly64x1x3_t ret; | |
19978 | __builtin_aarch64_simd_ci __o; | |
19979 | __o = __builtin_aarch64_ld3rv2di ((const __builtin_aarch64_simd_di *) __a); | |
19980 | ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 0); | |
19981 | ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 1); | |
19982 | ret.val[2] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 2); | |
19983 | return ret; | |
19984 | } | |
19985 | ||
49ab9992 | 19986 | __extension__ extern __inline int8x16x3_t |
19987 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 19988 | vld3q_dup_s8 (const int8_t * __a) |
19989 | { | |
19990 | int8x16x3_t ret; | |
19991 | __builtin_aarch64_simd_ci __o; | |
19992 | __o = __builtin_aarch64_ld3rv16qi ((const __builtin_aarch64_simd_qi *) __a); | |
19993 | ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); | |
19994 | ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); | |
19995 | ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); | |
19996 | return ret; | |
19997 | } | |
19998 | ||
49ab9992 | 19999 | __extension__ extern __inline poly8x16x3_t |
20000 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20001 | vld3q_dup_p8 (const poly8_t * __a) |
20002 | { | |
20003 | poly8x16x3_t ret; | |
20004 | __builtin_aarch64_simd_ci __o; | |
20005 | __o = __builtin_aarch64_ld3rv16qi ((const __builtin_aarch64_simd_qi *) __a); | |
20006 | ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); | |
20007 | ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); | |
20008 | ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); | |
20009 | return ret; | |
20010 | } | |
20011 | ||
49ab9992 | 20012 | __extension__ extern __inline int16x8x3_t |
20013 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20014 | vld3q_dup_s16 (const int16_t * __a) |
20015 | { | |
20016 | int16x8x3_t ret; | |
20017 | __builtin_aarch64_simd_ci __o; | |
20018 | __o = __builtin_aarch64_ld3rv8hi ((const __builtin_aarch64_simd_hi *) __a); | |
20019 | ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); | |
20020 | ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); | |
20021 | ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); | |
20022 | return ret; | |
20023 | } | |
20024 | ||
49ab9992 | 20025 | __extension__ extern __inline poly16x8x3_t |
20026 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20027 | vld3q_dup_p16 (const poly16_t * __a) |
20028 | { | |
20029 | poly16x8x3_t ret; | |
20030 | __builtin_aarch64_simd_ci __o; | |
20031 | __o = __builtin_aarch64_ld3rv8hi ((const __builtin_aarch64_simd_hi *) __a); | |
20032 | ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); | |
20033 | ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); | |
20034 | ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); | |
20035 | return ret; | |
20036 | } | |
20037 | ||
49ab9992 | 20038 | __extension__ extern __inline int32x4x3_t |
20039 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20040 | vld3q_dup_s32 (const int32_t * __a) |
20041 | { | |
20042 | int32x4x3_t ret; | |
20043 | __builtin_aarch64_simd_ci __o; | |
20044 | __o = __builtin_aarch64_ld3rv4si ((const __builtin_aarch64_simd_si *) __a); | |
20045 | ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); | |
20046 | ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); | |
20047 | ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); | |
20048 | return ret; | |
20049 | } | |
20050 | ||
49ab9992 | 20051 | __extension__ extern __inline int64x2x3_t |
20052 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20053 | vld3q_dup_s64 (const int64_t * __a) |
20054 | { | |
20055 | int64x2x3_t ret; | |
20056 | __builtin_aarch64_simd_ci __o; | |
20057 | __o = __builtin_aarch64_ld3rv2di ((const __builtin_aarch64_simd_di *) __a); | |
20058 | ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); | |
20059 | ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); | |
20060 | ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); | |
20061 | return ret; | |
20062 | } | |
20063 | ||
49ab9992 | 20064 | __extension__ extern __inline uint8x16x3_t |
20065 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20066 | vld3q_dup_u8 (const uint8_t * __a) |
20067 | { | |
20068 | uint8x16x3_t ret; | |
20069 | __builtin_aarch64_simd_ci __o; | |
20070 | __o = __builtin_aarch64_ld3rv16qi ((const __builtin_aarch64_simd_qi *) __a); | |
20071 | ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); | |
20072 | ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); | |
20073 | ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); | |
20074 | return ret; | |
20075 | } | |
20076 | ||
49ab9992 | 20077 | __extension__ extern __inline uint16x8x3_t |
20078 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20079 | vld3q_dup_u16 (const uint16_t * __a) |
20080 | { | |
20081 | uint16x8x3_t ret; | |
20082 | __builtin_aarch64_simd_ci __o; | |
20083 | __o = __builtin_aarch64_ld3rv8hi ((const __builtin_aarch64_simd_hi *) __a); | |
20084 | ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); | |
20085 | ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); | |
20086 | ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); | |
20087 | return ret; | |
20088 | } | |
20089 | ||
49ab9992 | 20090 | __extension__ extern __inline uint32x4x3_t |
20091 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20092 | vld3q_dup_u32 (const uint32_t * __a) |
20093 | { | |
20094 | uint32x4x3_t ret; | |
20095 | __builtin_aarch64_simd_ci __o; | |
20096 | __o = __builtin_aarch64_ld3rv4si ((const __builtin_aarch64_simd_si *) __a); | |
20097 | ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); | |
20098 | ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); | |
20099 | ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); | |
20100 | return ret; | |
20101 | } | |
20102 | ||
49ab9992 | 20103 | __extension__ extern __inline uint64x2x3_t |
20104 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20105 | vld3q_dup_u64 (const uint64_t * __a) |
20106 | { | |
20107 | uint64x2x3_t ret; | |
20108 | __builtin_aarch64_simd_ci __o; | |
20109 | __o = __builtin_aarch64_ld3rv2di ((const __builtin_aarch64_simd_di *) __a); | |
20110 | ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); | |
20111 | ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); | |
20112 | ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); | |
20113 | return ret; | |
20114 | } | |
20115 | ||
49ab9992 | 20116 | __extension__ extern __inline float16x8x3_t |
20117 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 20118 | vld3q_dup_f16 (const float16_t * __a) |
20119 | { | |
20120 | float16x8x3_t ret; | |
20121 | __builtin_aarch64_simd_ci __o; | |
20122 | __o = __builtin_aarch64_ld3rv8hf ((const __builtin_aarch64_simd_hf *) __a); | |
20123 | ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 0); | |
20124 | ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 1); | |
20125 | ret.val[2] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 2); | |
20126 | return ret; | |
20127 | } | |
20128 | ||
49ab9992 | 20129 | __extension__ extern __inline float32x4x3_t |
20130 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20131 | vld3q_dup_f32 (const float32_t * __a) |
20132 | { | |
20133 | float32x4x3_t ret; | |
20134 | __builtin_aarch64_simd_ci __o; | |
20135 | __o = __builtin_aarch64_ld3rv4sf ((const __builtin_aarch64_simd_sf *) __a); | |
20136 | ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 0); | |
20137 | ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 1); | |
20138 | ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 2); | |
20139 | return ret; | |
20140 | } | |
20141 | ||
49ab9992 | 20142 | __extension__ extern __inline float64x2x3_t |
20143 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20144 | vld3q_dup_f64 (const float64_t * __a) |
20145 | { | |
20146 | float64x2x3_t ret; | |
20147 | __builtin_aarch64_simd_ci __o; | |
20148 | __o = __builtin_aarch64_ld3rv2df ((const __builtin_aarch64_simd_df *) __a); | |
20149 | ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 0); | |
20150 | ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 1); | |
20151 | ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 2); | |
20152 | return ret; | |
20153 | } | |
20154 | ||
d4f47414 | 20155 | __extension__ extern __inline poly64x2x3_t |
20156 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20157 | vld3q_dup_p64 (const poly64_t * __a) | |
20158 | { | |
20159 | poly64x2x3_t ret; | |
20160 | __builtin_aarch64_simd_ci __o; | |
20161 | __o = __builtin_aarch64_ld3rv2di ((const __builtin_aarch64_simd_di *) __a); | |
20162 | ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 0); | |
20163 | ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 1); | |
20164 | ret.val[2] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 2); | |
20165 | return ret; | |
20166 | } | |
20167 | ||
49ab9992 | 20168 | __extension__ extern __inline int64x1x4_t |
20169 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20170 | vld4_dup_s64 (const int64_t * __a) |
20171 | { | |
20172 | int64x1x4_t ret; | |
20173 | __builtin_aarch64_simd_xi __o; | |
20174 | __o = __builtin_aarch64_ld4rdi ((const __builtin_aarch64_simd_di *) __a); | |
20175 | ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 0); | |
20176 | ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 1); | |
20177 | ret.val[2] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 2); | |
20178 | ret.val[3] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 3); | |
20179 | return ret; | |
20180 | } | |
20181 | ||
49ab9992 | 20182 | __extension__ extern __inline uint64x1x4_t |
20183 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20184 | vld4_dup_u64 (const uint64_t * __a) |
20185 | { | |
20186 | uint64x1x4_t ret; | |
20187 | __builtin_aarch64_simd_xi __o; | |
20188 | __o = __builtin_aarch64_ld4rdi ((const __builtin_aarch64_simd_di *) __a); | |
20189 | ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 0); | |
20190 | ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 1); | |
20191 | ret.val[2] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 2); | |
20192 | ret.val[3] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 3); | |
20193 | return ret; | |
20194 | } | |
20195 | ||
49ab9992 | 20196 | __extension__ extern __inline float64x1x4_t |
20197 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20198 | vld4_dup_f64 (const float64_t * __a) |
20199 | { | |
20200 | float64x1x4_t ret; | |
20201 | __builtin_aarch64_simd_xi __o; | |
20202 | __o = __builtin_aarch64_ld4rdf ((const __builtin_aarch64_simd_df *) __a); | |
20203 | ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 0)}; | |
20204 | ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 1)}; | |
20205 | ret.val[2] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 2)}; | |
20206 | ret.val[3] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 3)}; | |
20207 | return ret; | |
20208 | } | |
20209 | ||
49ab9992 | 20210 | __extension__ extern __inline int8x8x4_t |
20211 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20212 | vld4_dup_s8 (const int8_t * __a) |
20213 | { | |
20214 | int8x8x4_t ret; | |
20215 | __builtin_aarch64_simd_xi __o; | |
20216 | __o = __builtin_aarch64_ld4rv8qi ((const __builtin_aarch64_simd_qi *) __a); | |
20217 | ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); | |
20218 | ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); | |
20219 | ret.val[2] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); | |
20220 | ret.val[3] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); | |
20221 | return ret; | |
20222 | } | |
20223 | ||
49ab9992 | 20224 | __extension__ extern __inline poly8x8x4_t |
20225 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20226 | vld4_dup_p8 (const poly8_t * __a) |
20227 | { | |
20228 | poly8x8x4_t ret; | |
20229 | __builtin_aarch64_simd_xi __o; | |
20230 | __o = __builtin_aarch64_ld4rv8qi ((const __builtin_aarch64_simd_qi *) __a); | |
20231 | ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); | |
20232 | ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); | |
20233 | ret.val[2] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); | |
20234 | ret.val[3] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); | |
20235 | return ret; | |
20236 | } | |
20237 | ||
49ab9992 | 20238 | __extension__ extern __inline int16x4x4_t |
20239 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20240 | vld4_dup_s16 (const int16_t * __a) |
20241 | { | |
20242 | int16x4x4_t ret; | |
20243 | __builtin_aarch64_simd_xi __o; | |
20244 | __o = __builtin_aarch64_ld4rv4hi ((const __builtin_aarch64_simd_hi *) __a); | |
20245 | ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); | |
20246 | ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); | |
20247 | ret.val[2] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); | |
20248 | ret.val[3] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); | |
20249 | return ret; | |
20250 | } | |
20251 | ||
49ab9992 | 20252 | __extension__ extern __inline poly16x4x4_t |
20253 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20254 | vld4_dup_p16 (const poly16_t * __a) |
20255 | { | |
20256 | poly16x4x4_t ret; | |
20257 | __builtin_aarch64_simd_xi __o; | |
20258 | __o = __builtin_aarch64_ld4rv4hi ((const __builtin_aarch64_simd_hi *) __a); | |
20259 | ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); | |
20260 | ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); | |
20261 | ret.val[2] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); | |
20262 | ret.val[3] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); | |
20263 | return ret; | |
20264 | } | |
20265 | ||
49ab9992 | 20266 | __extension__ extern __inline int32x2x4_t |
20267 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20268 | vld4_dup_s32 (const int32_t * __a) |
20269 | { | |
20270 | int32x2x4_t ret; | |
20271 | __builtin_aarch64_simd_xi __o; | |
20272 | __o = __builtin_aarch64_ld4rv2si ((const __builtin_aarch64_simd_si *) __a); | |
20273 | ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 0); | |
20274 | ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 1); | |
20275 | ret.val[2] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 2); | |
20276 | ret.val[3] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 3); | |
20277 | return ret; | |
20278 | } | |
20279 | ||
49ab9992 | 20280 | __extension__ extern __inline uint8x8x4_t |
20281 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20282 | vld4_dup_u8 (const uint8_t * __a) |
20283 | { | |
20284 | uint8x8x4_t ret; | |
20285 | __builtin_aarch64_simd_xi __o; | |
20286 | __o = __builtin_aarch64_ld4rv8qi ((const __builtin_aarch64_simd_qi *) __a); | |
20287 | ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); | |
20288 | ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); | |
20289 | ret.val[2] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); | |
20290 | ret.val[3] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); | |
20291 | return ret; | |
20292 | } | |
20293 | ||
49ab9992 | 20294 | __extension__ extern __inline uint16x4x4_t |
20295 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20296 | vld4_dup_u16 (const uint16_t * __a) |
20297 | { | |
20298 | uint16x4x4_t ret; | |
20299 | __builtin_aarch64_simd_xi __o; | |
20300 | __o = __builtin_aarch64_ld4rv4hi ((const __builtin_aarch64_simd_hi *) __a); | |
20301 | ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); | |
20302 | ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); | |
20303 | ret.val[2] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); | |
20304 | ret.val[3] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); | |
20305 | return ret; | |
20306 | } | |
20307 | ||
49ab9992 | 20308 | __extension__ extern __inline uint32x2x4_t |
20309 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20310 | vld4_dup_u32 (const uint32_t * __a) |
20311 | { | |
20312 | uint32x2x4_t ret; | |
20313 | __builtin_aarch64_simd_xi __o; | |
20314 | __o = __builtin_aarch64_ld4rv2si ((const __builtin_aarch64_simd_si *) __a); | |
20315 | ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 0); | |
20316 | ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 1); | |
20317 | ret.val[2] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 2); | |
20318 | ret.val[3] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 3); | |
20319 | return ret; | |
20320 | } | |
20321 | ||
49ab9992 | 20322 | __extension__ extern __inline float16x4x4_t |
20323 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 20324 | vld4_dup_f16 (const float16_t * __a) |
20325 | { | |
20326 | float16x4x4_t ret; | |
20327 | __builtin_aarch64_simd_xi __o; | |
20328 | __o = __builtin_aarch64_ld4rv4hf ((const __builtin_aarch64_simd_hf *) __a); | |
20329 | ret.val[0] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 0); | |
20330 | ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 1); | |
20331 | ret.val[2] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 2); | |
20332 | ret.val[3] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 3); | |
20333 | return ret; | |
20334 | } | |
20335 | ||
49ab9992 | 20336 | __extension__ extern __inline float32x2x4_t |
20337 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20338 | vld4_dup_f32 (const float32_t * __a) |
20339 | { | |
20340 | float32x2x4_t ret; | |
20341 | __builtin_aarch64_simd_xi __o; | |
20342 | __o = __builtin_aarch64_ld4rv2sf ((const __builtin_aarch64_simd_sf *) __a); | |
20343 | ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 0); | |
20344 | ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 1); | |
20345 | ret.val[2] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 2); | |
20346 | ret.val[3] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 3); | |
20347 | return ret; | |
20348 | } | |
20349 | ||
d4f47414 | 20350 | __extension__ extern __inline poly64x1x4_t |
20351 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20352 | vld4_dup_p64 (const poly64_t * __a) | |
20353 | { | |
20354 | poly64x1x4_t ret; | |
20355 | __builtin_aarch64_simd_xi __o; | |
20356 | __o = __builtin_aarch64_ld4rv2di ((const __builtin_aarch64_simd_di *) __a); | |
20357 | ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 0); | |
20358 | ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 1); | |
20359 | ret.val[2] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 2); | |
20360 | ret.val[3] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 3); | |
20361 | return ret; | |
20362 | } | |
20363 | ||
49ab9992 | 20364 | __extension__ extern __inline int8x16x4_t |
20365 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20366 | vld4q_dup_s8 (const int8_t * __a) |
20367 | { | |
20368 | int8x16x4_t ret; | |
20369 | __builtin_aarch64_simd_xi __o; | |
20370 | __o = __builtin_aarch64_ld4rv16qi ((const __builtin_aarch64_simd_qi *) __a); | |
20371 | ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); | |
20372 | ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); | |
20373 | ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); | |
20374 | ret.val[3] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); | |
20375 | return ret; | |
20376 | } | |
20377 | ||
49ab9992 | 20378 | __extension__ extern __inline poly8x16x4_t |
20379 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20380 | vld4q_dup_p8 (const poly8_t * __a) |
20381 | { | |
20382 | poly8x16x4_t ret; | |
20383 | __builtin_aarch64_simd_xi __o; | |
20384 | __o = __builtin_aarch64_ld4rv16qi ((const __builtin_aarch64_simd_qi *) __a); | |
20385 | ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); | |
20386 | ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); | |
20387 | ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); | |
20388 | ret.val[3] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); | |
20389 | return ret; | |
20390 | } | |
20391 | ||
49ab9992 | 20392 | __extension__ extern __inline int16x8x4_t |
20393 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20394 | vld4q_dup_s16 (const int16_t * __a) |
20395 | { | |
20396 | int16x8x4_t ret; | |
20397 | __builtin_aarch64_simd_xi __o; | |
20398 | __o = __builtin_aarch64_ld4rv8hi ((const __builtin_aarch64_simd_hi *) __a); | |
20399 | ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); | |
20400 | ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); | |
20401 | ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); | |
20402 | ret.val[3] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); | |
20403 | return ret; | |
20404 | } | |
20405 | ||
49ab9992 | 20406 | __extension__ extern __inline poly16x8x4_t |
20407 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20408 | vld4q_dup_p16 (const poly16_t * __a) |
20409 | { | |
20410 | poly16x8x4_t ret; | |
20411 | __builtin_aarch64_simd_xi __o; | |
20412 | __o = __builtin_aarch64_ld4rv8hi ((const __builtin_aarch64_simd_hi *) __a); | |
20413 | ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); | |
20414 | ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); | |
20415 | ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); | |
20416 | ret.val[3] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); | |
20417 | return ret; | |
20418 | } | |
20419 | ||
49ab9992 | 20420 | __extension__ extern __inline int32x4x4_t |
20421 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20422 | vld4q_dup_s32 (const int32_t * __a) |
20423 | { | |
20424 | int32x4x4_t ret; | |
20425 | __builtin_aarch64_simd_xi __o; | |
20426 | __o = __builtin_aarch64_ld4rv4si ((const __builtin_aarch64_simd_si *) __a); | |
20427 | ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0); | |
20428 | ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1); | |
20429 | ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2); | |
20430 | ret.val[3] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3); | |
20431 | return ret; | |
20432 | } | |
20433 | ||
49ab9992 | 20434 | __extension__ extern __inline int64x2x4_t |
20435 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20436 | vld4q_dup_s64 (const int64_t * __a) |
20437 | { | |
20438 | int64x2x4_t ret; | |
20439 | __builtin_aarch64_simd_xi __o; | |
20440 | __o = __builtin_aarch64_ld4rv2di ((const __builtin_aarch64_simd_di *) __a); | |
20441 | ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 0); | |
20442 | ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 1); | |
20443 | ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 2); | |
20444 | ret.val[3] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 3); | |
20445 | return ret; | |
20446 | } | |
20447 | ||
49ab9992 | 20448 | __extension__ extern __inline uint8x16x4_t |
20449 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20450 | vld4q_dup_u8 (const uint8_t * __a) |
20451 | { | |
20452 | uint8x16x4_t ret; | |
20453 | __builtin_aarch64_simd_xi __o; | |
20454 | __o = __builtin_aarch64_ld4rv16qi ((const __builtin_aarch64_simd_qi *) __a); | |
20455 | ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); | |
20456 | ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); | |
20457 | ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); | |
20458 | ret.val[3] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); | |
20459 | return ret; | |
20460 | } | |
20461 | ||
49ab9992 | 20462 | __extension__ extern __inline uint16x8x4_t |
20463 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20464 | vld4q_dup_u16 (const uint16_t * __a) |
20465 | { | |
20466 | uint16x8x4_t ret; | |
20467 | __builtin_aarch64_simd_xi __o; | |
20468 | __o = __builtin_aarch64_ld4rv8hi ((const __builtin_aarch64_simd_hi *) __a); | |
20469 | ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); | |
20470 | ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); | |
20471 | ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); | |
20472 | ret.val[3] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); | |
20473 | return ret; | |
20474 | } | |
20475 | ||
49ab9992 | 20476 | __extension__ extern __inline uint32x4x4_t |
20477 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20478 | vld4q_dup_u32 (const uint32_t * __a) |
20479 | { | |
20480 | uint32x4x4_t ret; | |
20481 | __builtin_aarch64_simd_xi __o; | |
20482 | __o = __builtin_aarch64_ld4rv4si ((const __builtin_aarch64_simd_si *) __a); | |
20483 | ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0); | |
20484 | ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1); | |
20485 | ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2); | |
20486 | ret.val[3] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3); | |
20487 | return ret; | |
20488 | } | |
20489 | ||
49ab9992 | 20490 | __extension__ extern __inline uint64x2x4_t |
20491 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20492 | vld4q_dup_u64 (const uint64_t * __a) |
20493 | { | |
20494 | uint64x2x4_t ret; | |
20495 | __builtin_aarch64_simd_xi __o; | |
20496 | __o = __builtin_aarch64_ld4rv2di ((const __builtin_aarch64_simd_di *) __a); | |
20497 | ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 0); | |
20498 | ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 1); | |
20499 | ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 2); | |
20500 | ret.val[3] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 3); | |
20501 | return ret; | |
20502 | } | |
20503 | ||
49ab9992 | 20504 | __extension__ extern __inline float16x8x4_t |
20505 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 20506 | vld4q_dup_f16 (const float16_t * __a) |
20507 | { | |
20508 | float16x8x4_t ret; | |
20509 | __builtin_aarch64_simd_xi __o; | |
20510 | __o = __builtin_aarch64_ld4rv8hf ((const __builtin_aarch64_simd_hf *) __a); | |
20511 | ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 0); | |
20512 | ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 1); | |
20513 | ret.val[2] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 2); | |
20514 | ret.val[3] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 3); | |
20515 | return ret; | |
20516 | } | |
20517 | ||
49ab9992 | 20518 | __extension__ extern __inline float32x4x4_t |
20519 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20520 | vld4q_dup_f32 (const float32_t * __a) |
20521 | { | |
20522 | float32x4x4_t ret; | |
20523 | __builtin_aarch64_simd_xi __o; | |
20524 | __o = __builtin_aarch64_ld4rv4sf ((const __builtin_aarch64_simd_sf *) __a); | |
20525 | ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 0); | |
20526 | ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 1); | |
20527 | ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 2); | |
20528 | ret.val[3] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 3); | |
20529 | return ret; | |
20530 | } | |
20531 | ||
49ab9992 | 20532 | __extension__ extern __inline float64x2x4_t |
20533 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20bce7af | 20534 | vld4q_dup_f64 (const float64_t * __a) |
20535 | { | |
20536 | float64x2x4_t ret; | |
20537 | __builtin_aarch64_simd_xi __o; | |
20538 | __o = __builtin_aarch64_ld4rv2df ((const __builtin_aarch64_simd_df *) __a); | |
df401d54 | 20539 | ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 0); |
20540 | ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 1); | |
20541 | ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 2); | |
20542 | ret.val[3] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 3); | |
20543 | return ret; | |
20544 | } | |
20545 | ||
d4f47414 | 20546 | __extension__ extern __inline poly64x2x4_t |
20547 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
20548 | vld4q_dup_p64 (const poly64_t * __a) | |
20549 | { | |
20550 | poly64x2x4_t ret; | |
20551 | __builtin_aarch64_simd_xi __o; | |
20552 | __o = __builtin_aarch64_ld4rv2di ((const __builtin_aarch64_simd_di *) __a); | |
20553 | ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 0); | |
20554 | ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 1); | |
20555 | ret.val[2] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 2); | |
20556 | ret.val[3] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 3); | |
20557 | return ret; | |
20558 | } | |
20559 | ||
933581ce | 20560 | /* vld2_lane */ |
20561 | ||
0146686c | 20562 | #define __LD2_LANE_FUNC(intype, vectype, largetype, ptrtype, mode, \ |
20563 | qmode, ptrmode, funcsuffix, signedtype) \ | |
49ab9992 | 20564 | __extension__ extern __inline intype \ |
20565 | __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) \ | |
933581ce | 20566 | vld2_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \ |
20567 | { \ | |
20568 | __builtin_aarch64_simd_oi __o; \ | |
20569 | largetype __temp; \ | |
20570 | __temp.val[0] = \ | |
20571 | vcombine_##funcsuffix (__b.val[0], vcreate_##funcsuffix (0)); \ | |
20572 | __temp.val[1] = \ | |
20573 | vcombine_##funcsuffix (__b.val[1], vcreate_##funcsuffix (0)); \ | |
0146686c | 20574 | __o = __builtin_aarch64_set_qregoi##qmode (__o, \ |
20575 | (signedtype) __temp.val[0], \ | |
20576 | 0); \ | |
20577 | __o = __builtin_aarch64_set_qregoi##qmode (__o, \ | |
20578 | (signedtype) __temp.val[1], \ | |
20579 | 1); \ | |
933581ce | 20580 | __o = __builtin_aarch64_ld2_lane##mode ( \ |
20581 | (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \ | |
20582 | __b.val[0] = (vectype) __builtin_aarch64_get_dregoidi (__o, 0); \ | |
20583 | __b.val[1] = (vectype) __builtin_aarch64_get_dregoidi (__o, 1); \ | |
20584 | return __b; \ | |
20585 | } | |
20586 | ||
07c40439 | 20587 | __LD2_LANE_FUNC (float16x4x2_t, float16x4_t, float16x8x2_t, float16_t, v4hf, |
20588 | v8hf, hf, f16, float16x8_t) | |
0146686c | 20589 | __LD2_LANE_FUNC (float32x2x2_t, float32x2_t, float32x4x2_t, float32_t, v2sf, v4sf, |
933581ce | 20590 | sf, f32, float32x4_t) |
0146686c | 20591 | __LD2_LANE_FUNC (float64x1x2_t, float64x1_t, float64x2x2_t, float64_t, df, v2df, |
933581ce | 20592 | df, f64, float64x2_t) |
0146686c | 20593 | __LD2_LANE_FUNC (poly8x8x2_t, poly8x8_t, poly8x16x2_t, poly8_t, v8qi, v16qi, qi, p8, |
933581ce | 20594 | int8x16_t) |
0146686c | 20595 | __LD2_LANE_FUNC (poly16x4x2_t, poly16x4_t, poly16x8x2_t, poly16_t, v4hi, v8hi, hi, |
933581ce | 20596 | p16, int16x8_t) |
d4f47414 | 20597 | __LD2_LANE_FUNC (poly64x1x2_t, poly64x1_t, poly64x2x2_t, poly64_t, di, |
20598 | v2di_ssps, di, p64, poly64x2_t) | |
0146686c | 20599 | __LD2_LANE_FUNC (int8x8x2_t, int8x8_t, int8x16x2_t, int8_t, v8qi, v16qi, qi, s8, |
933581ce | 20600 | int8x16_t) |
0146686c | 20601 | __LD2_LANE_FUNC (int16x4x2_t, int16x4_t, int16x8x2_t, int16_t, v4hi, v8hi, hi, s16, |
933581ce | 20602 | int16x8_t) |
0146686c | 20603 | __LD2_LANE_FUNC (int32x2x2_t, int32x2_t, int32x4x2_t, int32_t, v2si, v4si, si, s32, |
933581ce | 20604 | int32x4_t) |
0146686c | 20605 | __LD2_LANE_FUNC (int64x1x2_t, int64x1_t, int64x2x2_t, int64_t, di, v2di, di, s64, |
933581ce | 20606 | int64x2_t) |
0146686c | 20607 | __LD2_LANE_FUNC (uint8x8x2_t, uint8x8_t, uint8x16x2_t, uint8_t, v8qi, v16qi, qi, u8, |
933581ce | 20608 | int8x16_t) |
0146686c | 20609 | __LD2_LANE_FUNC (uint16x4x2_t, uint16x4_t, uint16x8x2_t, uint16_t, v4hi, v8hi, hi, |
933581ce | 20610 | u16, int16x8_t) |
0146686c | 20611 | __LD2_LANE_FUNC (uint32x2x2_t, uint32x2_t, uint32x4x2_t, uint32_t, v2si, v4si, si, |
933581ce | 20612 | u32, int32x4_t) |
0146686c | 20613 | __LD2_LANE_FUNC (uint64x1x2_t, uint64x1_t, uint64x2x2_t, uint64_t, di, v2di, di, |
933581ce | 20614 | u64, int64x2_t) |
20615 | ||
20616 | #undef __LD2_LANE_FUNC | |
20617 | ||
20618 | /* vld2q_lane */ | |
20619 | ||
20620 | #define __LD2_LANE_FUNC(intype, vtype, ptrtype, mode, ptrmode, funcsuffix) \ | |
49ab9992 | 20621 | __extension__ extern __inline intype \ |
20622 | __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) \ | |
933581ce | 20623 | vld2q_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \ |
20624 | { \ | |
20625 | __builtin_aarch64_simd_oi __o; \ | |
20626 | intype ret; \ | |
20627 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); \ | |
20628 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); \ | |
20629 | __o = __builtin_aarch64_ld2_lane##mode ( \ | |
20630 | (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \ | |
20631 | ret.val[0] = (vtype) __builtin_aarch64_get_qregoiv4si (__o, 0); \ | |
20632 | ret.val[1] = (vtype) __builtin_aarch64_get_qregoiv4si (__o, 1); \ | |
20633 | return ret; \ | |
20634 | } | |
20635 | ||
07c40439 | 20636 | __LD2_LANE_FUNC (float16x8x2_t, float16x8_t, float16_t, v8hf, hf, f16) |
933581ce | 20637 | __LD2_LANE_FUNC (float32x4x2_t, float32x4_t, float32_t, v4sf, sf, f32) |
20638 | __LD2_LANE_FUNC (float64x2x2_t, float64x2_t, float64_t, v2df, df, f64) | |
20639 | __LD2_LANE_FUNC (poly8x16x2_t, poly8x16_t, poly8_t, v16qi, qi, p8) | |
20640 | __LD2_LANE_FUNC (poly16x8x2_t, poly16x8_t, poly16_t, v8hi, hi, p16) | |
d4f47414 | 20641 | __LD2_LANE_FUNC (poly64x2x2_t, poly64x2_t, poly64_t, v2di, di, p64) |
933581ce | 20642 | __LD2_LANE_FUNC (int8x16x2_t, int8x16_t, int8_t, v16qi, qi, s8) |
20643 | __LD2_LANE_FUNC (int16x8x2_t, int16x8_t, int16_t, v8hi, hi, s16) | |
20644 | __LD2_LANE_FUNC (int32x4x2_t, int32x4_t, int32_t, v4si, si, s32) | |
20645 | __LD2_LANE_FUNC (int64x2x2_t, int64x2_t, int64_t, v2di, di, s64) | |
20646 | __LD2_LANE_FUNC (uint8x16x2_t, uint8x16_t, uint8_t, v16qi, qi, u8) | |
20647 | __LD2_LANE_FUNC (uint16x8x2_t, uint16x8_t, uint16_t, v8hi, hi, u16) | |
20648 | __LD2_LANE_FUNC (uint32x4x2_t, uint32x4_t, uint32_t, v4si, si, u32) | |
20649 | __LD2_LANE_FUNC (uint64x2x2_t, uint64x2_t, uint64_t, v2di, di, u64) | |
20650 | ||
20651 | #undef __LD2_LANE_FUNC | |
20652 | ||
20653 | /* vld3_lane */ | |
20654 | ||
0146686c | 20655 | #define __LD3_LANE_FUNC(intype, vectype, largetype, ptrtype, mode, \ |
20656 | qmode, ptrmode, funcsuffix, signedtype) \ | |
49ab9992 | 20657 | __extension__ extern __inline intype \ |
20658 | __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) \ | |
933581ce | 20659 | vld3_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \ |
20660 | { \ | |
20661 | __builtin_aarch64_simd_ci __o; \ | |
20662 | largetype __temp; \ | |
20663 | __temp.val[0] = \ | |
20664 | vcombine_##funcsuffix (__b.val[0], vcreate_##funcsuffix (0)); \ | |
20665 | __temp.val[1] = \ | |
20666 | vcombine_##funcsuffix (__b.val[1], vcreate_##funcsuffix (0)); \ | |
20667 | __temp.val[2] = \ | |
20668 | vcombine_##funcsuffix (__b.val[2], vcreate_##funcsuffix (0)); \ | |
0146686c | 20669 | __o = __builtin_aarch64_set_qregci##qmode (__o, \ |
20670 | (signedtype) __temp.val[0], \ | |
20671 | 0); \ | |
20672 | __o = __builtin_aarch64_set_qregci##qmode (__o, \ | |
20673 | (signedtype) __temp.val[1], \ | |
20674 | 1); \ | |
20675 | __o = __builtin_aarch64_set_qregci##qmode (__o, \ | |
20676 | (signedtype) __temp.val[2], \ | |
20677 | 2); \ | |
933581ce | 20678 | __o = __builtin_aarch64_ld3_lane##mode ( \ |
20679 | (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \ | |
20680 | __b.val[0] = (vectype) __builtin_aarch64_get_dregcidi (__o, 0); \ | |
20681 | __b.val[1] = (vectype) __builtin_aarch64_get_dregcidi (__o, 1); \ | |
20682 | __b.val[2] = (vectype) __builtin_aarch64_get_dregcidi (__o, 2); \ | |
20683 | return __b; \ | |
20684 | } | |
20685 | ||
07c40439 | 20686 | __LD3_LANE_FUNC (float16x4x3_t, float16x4_t, float16x8x3_t, float16_t, v4hf, |
20687 | v8hf, hf, f16, float16x8_t) | |
0146686c | 20688 | __LD3_LANE_FUNC (float32x2x3_t, float32x2_t, float32x4x3_t, float32_t, v2sf, v4sf, |
933581ce | 20689 | sf, f32, float32x4_t) |
0146686c | 20690 | __LD3_LANE_FUNC (float64x1x3_t, float64x1_t, float64x2x3_t, float64_t, df, v2df, |
933581ce | 20691 | df, f64, float64x2_t) |
0146686c | 20692 | __LD3_LANE_FUNC (poly8x8x3_t, poly8x8_t, poly8x16x3_t, poly8_t, v8qi, v16qi, qi, p8, |
933581ce | 20693 | int8x16_t) |
0146686c | 20694 | __LD3_LANE_FUNC (poly16x4x3_t, poly16x4_t, poly16x8x3_t, poly16_t, v4hi, v8hi, hi, |
933581ce | 20695 | p16, int16x8_t) |
d4f47414 | 20696 | __LD3_LANE_FUNC (poly64x1x3_t, poly64x1_t, poly64x2x3_t, poly64_t, di, |
20697 | v2di_ssps, di, p64, poly64x2_t) | |
0146686c | 20698 | __LD3_LANE_FUNC (int8x8x3_t, int8x8_t, int8x16x3_t, int8_t, v8qi, v16qi, qi, s8, |
933581ce | 20699 | int8x16_t) |
0146686c | 20700 | __LD3_LANE_FUNC (int16x4x3_t, int16x4_t, int16x8x3_t, int16_t, v4hi, v8hi, hi, s16, |
933581ce | 20701 | int16x8_t) |
0146686c | 20702 | __LD3_LANE_FUNC (int32x2x3_t, int32x2_t, int32x4x3_t, int32_t, v2si, v4si, si, s32, |
933581ce | 20703 | int32x4_t) |
0146686c | 20704 | __LD3_LANE_FUNC (int64x1x3_t, int64x1_t, int64x2x3_t, int64_t, di, v2di, di, s64, |
933581ce | 20705 | int64x2_t) |
0146686c | 20706 | __LD3_LANE_FUNC (uint8x8x3_t, uint8x8_t, uint8x16x3_t, uint8_t, v8qi, v16qi, qi, u8, |
933581ce | 20707 | int8x16_t) |
0146686c | 20708 | __LD3_LANE_FUNC (uint16x4x3_t, uint16x4_t, uint16x8x3_t, uint16_t, v4hi, v8hi, hi, |
933581ce | 20709 | u16, int16x8_t) |
0146686c | 20710 | __LD3_LANE_FUNC (uint32x2x3_t, uint32x2_t, uint32x4x3_t, uint32_t, v2si, v4si, si, |
933581ce | 20711 | u32, int32x4_t) |
0146686c | 20712 | __LD3_LANE_FUNC (uint64x1x3_t, uint64x1_t, uint64x2x3_t, uint64_t, di, v2di, di, |
933581ce | 20713 | u64, int64x2_t) |
20714 | ||
20715 | #undef __LD3_LANE_FUNC | |
20716 | ||
20717 | /* vld3q_lane */ | |
20718 | ||
20719 | #define __LD3_LANE_FUNC(intype, vtype, ptrtype, mode, ptrmode, funcsuffix) \ | |
49ab9992 | 20720 | __extension__ extern __inline intype \ |
20721 | __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) \ | |
933581ce | 20722 | vld3q_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \ |
20723 | { \ | |
20724 | __builtin_aarch64_simd_ci __o; \ | |
20725 | intype ret; \ | |
20726 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); \ | |
20727 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); \ | |
20728 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); \ | |
20729 | __o = __builtin_aarch64_ld3_lane##mode ( \ | |
20730 | (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \ | |
20731 | ret.val[0] = (vtype) __builtin_aarch64_get_qregciv4si (__o, 0); \ | |
20732 | ret.val[1] = (vtype) __builtin_aarch64_get_qregciv4si (__o, 1); \ | |
20733 | ret.val[2] = (vtype) __builtin_aarch64_get_qregciv4si (__o, 2); \ | |
20734 | return ret; \ | |
20735 | } | |
20736 | ||
07c40439 | 20737 | __LD3_LANE_FUNC (float16x8x3_t, float16x8_t, float16_t, v8hf, hf, f16) |
933581ce | 20738 | __LD3_LANE_FUNC (float32x4x3_t, float32x4_t, float32_t, v4sf, sf, f32) |
20739 | __LD3_LANE_FUNC (float64x2x3_t, float64x2_t, float64_t, v2df, df, f64) | |
20740 | __LD3_LANE_FUNC (poly8x16x3_t, poly8x16_t, poly8_t, v16qi, qi, p8) | |
20741 | __LD3_LANE_FUNC (poly16x8x3_t, poly16x8_t, poly16_t, v8hi, hi, p16) | |
d4f47414 | 20742 | __LD3_LANE_FUNC (poly64x2x3_t, poly64x2_t, poly64_t, v2di, di, p64) |
933581ce | 20743 | __LD3_LANE_FUNC (int8x16x3_t, int8x16_t, int8_t, v16qi, qi, s8) |
20744 | __LD3_LANE_FUNC (int16x8x3_t, int16x8_t, int16_t, v8hi, hi, s16) | |
20745 | __LD3_LANE_FUNC (int32x4x3_t, int32x4_t, int32_t, v4si, si, s32) | |
20746 | __LD3_LANE_FUNC (int64x2x3_t, int64x2_t, int64_t, v2di, di, s64) | |
20747 | __LD3_LANE_FUNC (uint8x16x3_t, uint8x16_t, uint8_t, v16qi, qi, u8) | |
20748 | __LD3_LANE_FUNC (uint16x8x3_t, uint16x8_t, uint16_t, v8hi, hi, u16) | |
20749 | __LD3_LANE_FUNC (uint32x4x3_t, uint32x4_t, uint32_t, v4si, si, u32) | |
20750 | __LD3_LANE_FUNC (uint64x2x3_t, uint64x2_t, uint64_t, v2di, di, u64) | |
20751 | ||
20752 | #undef __LD3_LANE_FUNC | |
20753 | ||
20754 | /* vld4_lane */ | |
20755 | ||
0146686c | 20756 | #define __LD4_LANE_FUNC(intype, vectype, largetype, ptrtype, mode, \ |
20757 | qmode, ptrmode, funcsuffix, signedtype) \ | |
49ab9992 | 20758 | __extension__ extern __inline intype \ |
20759 | __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) \ | |
933581ce | 20760 | vld4_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \ |
20761 | { \ | |
20762 | __builtin_aarch64_simd_xi __o; \ | |
20763 | largetype __temp; \ | |
20764 | __temp.val[0] = \ | |
20765 | vcombine_##funcsuffix (__b.val[0], vcreate_##funcsuffix (0)); \ | |
20766 | __temp.val[1] = \ | |
20767 | vcombine_##funcsuffix (__b.val[1], vcreate_##funcsuffix (0)); \ | |
20768 | __temp.val[2] = \ | |
20769 | vcombine_##funcsuffix (__b.val[2], vcreate_##funcsuffix (0)); \ | |
20770 | __temp.val[3] = \ | |
20771 | vcombine_##funcsuffix (__b.val[3], vcreate_##funcsuffix (0)); \ | |
0146686c | 20772 | __o = __builtin_aarch64_set_qregxi##qmode (__o, \ |
20773 | (signedtype) __temp.val[0], \ | |
20774 | 0); \ | |
20775 | __o = __builtin_aarch64_set_qregxi##qmode (__o, \ | |
20776 | (signedtype) __temp.val[1], \ | |
20777 | 1); \ | |
20778 | __o = __builtin_aarch64_set_qregxi##qmode (__o, \ | |
20779 | (signedtype) __temp.val[2], \ | |
20780 | 2); \ | |
20781 | __o = __builtin_aarch64_set_qregxi##qmode (__o, \ | |
20782 | (signedtype) __temp.val[3], \ | |
20783 | 3); \ | |
933581ce | 20784 | __o = __builtin_aarch64_ld4_lane##mode ( \ |
20785 | (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \ | |
20786 | __b.val[0] = (vectype) __builtin_aarch64_get_dregxidi (__o, 0); \ | |
20787 | __b.val[1] = (vectype) __builtin_aarch64_get_dregxidi (__o, 1); \ | |
20788 | __b.val[2] = (vectype) __builtin_aarch64_get_dregxidi (__o, 2); \ | |
20789 | __b.val[3] = (vectype) __builtin_aarch64_get_dregxidi (__o, 3); \ | |
20790 | return __b; \ | |
20791 | } | |
20792 | ||
20793 | /* vld4q_lane */ | |
20794 | ||
07c40439 | 20795 | __LD4_LANE_FUNC (float16x4x4_t, float16x4_t, float16x8x4_t, float16_t, v4hf, |
20796 | v8hf, hf, f16, float16x8_t) | |
0146686c | 20797 | __LD4_LANE_FUNC (float32x2x4_t, float32x2_t, float32x4x4_t, float32_t, v2sf, v4sf, |
933581ce | 20798 | sf, f32, float32x4_t) |
0146686c | 20799 | __LD4_LANE_FUNC (float64x1x4_t, float64x1_t, float64x2x4_t, float64_t, df, v2df, |
933581ce | 20800 | df, f64, float64x2_t) |
0146686c | 20801 | __LD4_LANE_FUNC (poly8x8x4_t, poly8x8_t, poly8x16x4_t, poly8_t, v8qi, v16qi, qi, p8, |
933581ce | 20802 | int8x16_t) |
0146686c | 20803 | __LD4_LANE_FUNC (poly16x4x4_t, poly16x4_t, poly16x8x4_t, poly16_t, v4hi, v8hi, hi, |
933581ce | 20804 | p16, int16x8_t) |
d4f47414 | 20805 | __LD4_LANE_FUNC (poly64x1x4_t, poly64x1_t, poly64x2x4_t, poly64_t, di, |
20806 | v2di_ssps, di, p64, poly64x2_t) | |
0146686c | 20807 | __LD4_LANE_FUNC (int8x8x4_t, int8x8_t, int8x16x4_t, int8_t, v8qi, v16qi, qi, s8, |
933581ce | 20808 | int8x16_t) |
0146686c | 20809 | __LD4_LANE_FUNC (int16x4x4_t, int16x4_t, int16x8x4_t, int16_t, v4hi, v8hi, hi, s16, |
933581ce | 20810 | int16x8_t) |
0146686c | 20811 | __LD4_LANE_FUNC (int32x2x4_t, int32x2_t, int32x4x4_t, int32_t, v2si, v4si, si, s32, |
933581ce | 20812 | int32x4_t) |
0146686c | 20813 | __LD4_LANE_FUNC (int64x1x4_t, int64x1_t, int64x2x4_t, int64_t, di, v2di, di, s64, |
933581ce | 20814 | int64x2_t) |
0146686c | 20815 | __LD4_LANE_FUNC (uint8x8x4_t, uint8x8_t, uint8x16x4_t, uint8_t, v8qi, v16qi, qi, u8, |
933581ce | 20816 | int8x16_t) |
0146686c | 20817 | __LD4_LANE_FUNC (uint16x4x4_t, uint16x4_t, uint16x8x4_t, uint16_t, v4hi, v8hi, hi, |
933581ce | 20818 | u16, int16x8_t) |
0146686c | 20819 | __LD4_LANE_FUNC (uint32x2x4_t, uint32x2_t, uint32x4x4_t, uint32_t, v2si, v4si, si, |
933581ce | 20820 | u32, int32x4_t) |
0146686c | 20821 | __LD4_LANE_FUNC (uint64x1x4_t, uint64x1_t, uint64x2x4_t, uint64_t, di, v2di, di, |
933581ce | 20822 | u64, int64x2_t) |
20823 | ||
20824 | #undef __LD4_LANE_FUNC | |
20825 | ||
20826 | /* vld4q_lane */ | |
20827 | ||
20828 | #define __LD4_LANE_FUNC(intype, vtype, ptrtype, mode, ptrmode, funcsuffix) \ | |
49ab9992 | 20829 | __extension__ extern __inline intype \ |
20830 | __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) \ | |
933581ce | 20831 | vld4q_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \ |
20832 | { \ | |
20833 | __builtin_aarch64_simd_xi __o; \ | |
20834 | intype ret; \ | |
20835 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); \ | |
20836 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); \ | |
20837 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); \ | |
20838 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); \ | |
20839 | __o = __builtin_aarch64_ld4_lane##mode ( \ | |
20840 | (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \ | |
20841 | ret.val[0] = (vtype) __builtin_aarch64_get_qregxiv4si (__o, 0); \ | |
20842 | ret.val[1] = (vtype) __builtin_aarch64_get_qregxiv4si (__o, 1); \ | |
20843 | ret.val[2] = (vtype) __builtin_aarch64_get_qregxiv4si (__o, 2); \ | |
20844 | ret.val[3] = (vtype) __builtin_aarch64_get_qregxiv4si (__o, 3); \ | |
20845 | return ret; \ | |
20846 | } | |
20847 | ||
07c40439 | 20848 | __LD4_LANE_FUNC (float16x8x4_t, float16x8_t, float16_t, v8hf, hf, f16) |
933581ce | 20849 | __LD4_LANE_FUNC (float32x4x4_t, float32x4_t, float32_t, v4sf, sf, f32) |
20850 | __LD4_LANE_FUNC (float64x2x4_t, float64x2_t, float64_t, v2df, df, f64) | |
20851 | __LD4_LANE_FUNC (poly8x16x4_t, poly8x16_t, poly8_t, v16qi, qi, p8) | |
20852 | __LD4_LANE_FUNC (poly16x8x4_t, poly16x8_t, poly16_t, v8hi, hi, p16) | |
d4f47414 | 20853 | __LD4_LANE_FUNC (poly64x2x4_t, poly64x2_t, poly64_t, v2di, di, p64) |
933581ce | 20854 | __LD4_LANE_FUNC (int8x16x4_t, int8x16_t, int8_t, v16qi, qi, s8) |
20855 | __LD4_LANE_FUNC (int16x8x4_t, int16x8_t, int16_t, v8hi, hi, s16) | |
20856 | __LD4_LANE_FUNC (int32x4x4_t, int32x4_t, int32_t, v4si, si, s32) | |
20857 | __LD4_LANE_FUNC (int64x2x4_t, int64x2_t, int64_t, v2di, di, s64) | |
20858 | __LD4_LANE_FUNC (uint8x16x4_t, uint8x16_t, uint8_t, v16qi, qi, u8) | |
20859 | __LD4_LANE_FUNC (uint16x8x4_t, uint16x8_t, uint16_t, v8hi, hi, u16) | |
20860 | __LD4_LANE_FUNC (uint32x4x4_t, uint32x4_t, uint32_t, v4si, si, u32) | |
20861 | __LD4_LANE_FUNC (uint64x2x4_t, uint64x2_t, uint64_t, v2di, di, u64) | |
20862 | ||
20863 | #undef __LD4_LANE_FUNC | |
20864 | ||
df401d54 | 20865 | /* vmax */ |
20866 | ||
49ab9992 | 20867 | __extension__ extern __inline float32x2_t |
20868 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20869 | vmax_f32 (float32x2_t __a, float32x2_t __b) |
20870 | { | |
2520d4b7 | 20871 | return __builtin_aarch64_smax_nanv2sf (__a, __b); |
df401d54 | 20872 | } |
20873 | ||
49ab9992 | 20874 | __extension__ extern __inline float64x1_t |
20875 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
d3aa3636 | 20876 | vmax_f64 (float64x1_t __a, float64x1_t __b) |
20877 | { | |
20878 | return (float64x1_t) | |
20879 | { __builtin_aarch64_smax_nandf (vget_lane_f64 (__a, 0), | |
20880 | vget_lane_f64 (__b, 0)) }; | |
20881 | } | |
20882 | ||
49ab9992 | 20883 | __extension__ extern __inline int8x8_t |
20884 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20885 | vmax_s8 (int8x8_t __a, int8x8_t __b) |
20886 | { | |
20887 | return __builtin_aarch64_smaxv8qi (__a, __b); | |
20888 | } | |
20889 | ||
49ab9992 | 20890 | __extension__ extern __inline int16x4_t |
20891 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20892 | vmax_s16 (int16x4_t __a, int16x4_t __b) |
20893 | { | |
20894 | return __builtin_aarch64_smaxv4hi (__a, __b); | |
20895 | } | |
20896 | ||
49ab9992 | 20897 | __extension__ extern __inline int32x2_t |
20898 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20899 | vmax_s32 (int32x2_t __a, int32x2_t __b) |
20900 | { | |
20901 | return __builtin_aarch64_smaxv2si (__a, __b); | |
20902 | } | |
20903 | ||
49ab9992 | 20904 | __extension__ extern __inline uint8x8_t |
20905 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20906 | vmax_u8 (uint8x8_t __a, uint8x8_t __b) |
20907 | { | |
20908 | return (uint8x8_t) __builtin_aarch64_umaxv8qi ((int8x8_t) __a, | |
20909 | (int8x8_t) __b); | |
20910 | } | |
20911 | ||
49ab9992 | 20912 | __extension__ extern __inline uint16x4_t |
20913 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20914 | vmax_u16 (uint16x4_t __a, uint16x4_t __b) |
20915 | { | |
20916 | return (uint16x4_t) __builtin_aarch64_umaxv4hi ((int16x4_t) __a, | |
20917 | (int16x4_t) __b); | |
20918 | } | |
20919 | ||
49ab9992 | 20920 | __extension__ extern __inline uint32x2_t |
20921 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20922 | vmax_u32 (uint32x2_t __a, uint32x2_t __b) |
20923 | { | |
20924 | return (uint32x2_t) __builtin_aarch64_umaxv2si ((int32x2_t) __a, | |
20925 | (int32x2_t) __b); | |
20926 | } | |
20927 | ||
49ab9992 | 20928 | __extension__ extern __inline float32x4_t |
20929 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20930 | vmaxq_f32 (float32x4_t __a, float32x4_t __b) |
20931 | { | |
2520d4b7 | 20932 | return __builtin_aarch64_smax_nanv4sf (__a, __b); |
df401d54 | 20933 | } |
20934 | ||
49ab9992 | 20935 | __extension__ extern __inline float64x2_t |
20936 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20937 | vmaxq_f64 (float64x2_t __a, float64x2_t __b) |
20938 | { | |
2520d4b7 | 20939 | return __builtin_aarch64_smax_nanv2df (__a, __b); |
df401d54 | 20940 | } |
20941 | ||
49ab9992 | 20942 | __extension__ extern __inline int8x16_t |
20943 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20944 | vmaxq_s8 (int8x16_t __a, int8x16_t __b) |
20945 | { | |
20946 | return __builtin_aarch64_smaxv16qi (__a, __b); | |
20947 | } | |
20948 | ||
49ab9992 | 20949 | __extension__ extern __inline int16x8_t |
20950 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20951 | vmaxq_s16 (int16x8_t __a, int16x8_t __b) |
20952 | { | |
20953 | return __builtin_aarch64_smaxv8hi (__a, __b); | |
20954 | } | |
20955 | ||
49ab9992 | 20956 | __extension__ extern __inline int32x4_t |
20957 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20958 | vmaxq_s32 (int32x4_t __a, int32x4_t __b) |
20959 | { | |
20960 | return __builtin_aarch64_smaxv4si (__a, __b); | |
20961 | } | |
20962 | ||
49ab9992 | 20963 | __extension__ extern __inline uint8x16_t |
20964 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20965 | vmaxq_u8 (uint8x16_t __a, uint8x16_t __b) |
20966 | { | |
20967 | return (uint8x16_t) __builtin_aarch64_umaxv16qi ((int8x16_t) __a, | |
20968 | (int8x16_t) __b); | |
20969 | } | |
20970 | ||
49ab9992 | 20971 | __extension__ extern __inline uint16x8_t |
20972 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20973 | vmaxq_u16 (uint16x8_t __a, uint16x8_t __b) |
20974 | { | |
20975 | return (uint16x8_t) __builtin_aarch64_umaxv8hi ((int16x8_t) __a, | |
20976 | (int16x8_t) __b); | |
20977 | } | |
20978 | ||
49ab9992 | 20979 | __extension__ extern __inline uint32x4_t |
20980 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 20981 | vmaxq_u32 (uint32x4_t __a, uint32x4_t __b) |
20982 | { | |
20983 | return (uint32x4_t) __builtin_aarch64_umaxv4si ((int32x4_t) __a, | |
20984 | (int32x4_t) __b); | |
20985 | } | |
4f03d0e0 | 20986 | /* vmulx */ |
20987 | ||
49ab9992 | 20988 | __extension__ extern __inline float32x2_t |
20989 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4f03d0e0 | 20990 | vmulx_f32 (float32x2_t __a, float32x2_t __b) |
20991 | { | |
20992 | return __builtin_aarch64_fmulxv2sf (__a, __b); | |
20993 | } | |
20994 | ||
49ab9992 | 20995 | __extension__ extern __inline float32x4_t |
20996 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4f03d0e0 | 20997 | vmulxq_f32 (float32x4_t __a, float32x4_t __b) |
20998 | { | |
20999 | return __builtin_aarch64_fmulxv4sf (__a, __b); | |
21000 | } | |
21001 | ||
49ab9992 | 21002 | __extension__ extern __inline float64x1_t |
21003 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4f03d0e0 | 21004 | vmulx_f64 (float64x1_t __a, float64x1_t __b) |
21005 | { | |
21006 | return (float64x1_t) {__builtin_aarch64_fmulxdf (__a[0], __b[0])}; | |
21007 | } | |
21008 | ||
49ab9992 | 21009 | __extension__ extern __inline float64x2_t |
21010 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4f03d0e0 | 21011 | vmulxq_f64 (float64x2_t __a, float64x2_t __b) |
21012 | { | |
21013 | return __builtin_aarch64_fmulxv2df (__a, __b); | |
21014 | } | |
21015 | ||
49ab9992 | 21016 | __extension__ extern __inline float32_t |
21017 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4f03d0e0 | 21018 | vmulxs_f32 (float32_t __a, float32_t __b) |
21019 | { | |
21020 | return __builtin_aarch64_fmulxsf (__a, __b); | |
21021 | } | |
21022 | ||
49ab9992 | 21023 | __extension__ extern __inline float64_t |
21024 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4f03d0e0 | 21025 | vmulxd_f64 (float64_t __a, float64_t __b) |
21026 | { | |
21027 | return __builtin_aarch64_fmulxdf (__a, __b); | |
21028 | } | |
df401d54 | 21029 | |
49ab9992 | 21030 | __extension__ extern __inline float32x2_t |
21031 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2ec3c6ff | 21032 | vmulx_lane_f32 (float32x2_t __a, float32x2_t __v, const int __lane) |
21033 | { | |
21034 | return vmulx_f32 (__a, __aarch64_vdup_lane_f32 (__v, __lane)); | |
21035 | } | |
21036 | ||
49ab9992 | 21037 | __extension__ extern __inline float64x1_t |
21038 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2ec3c6ff | 21039 | vmulx_lane_f64 (float64x1_t __a, float64x1_t __v, const int __lane) |
21040 | { | |
21041 | return vmulx_f64 (__a, __aarch64_vdup_lane_f64 (__v, __lane)); | |
21042 | } | |
21043 | ||
49ab9992 | 21044 | __extension__ extern __inline float32x4_t |
21045 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2ec3c6ff | 21046 | vmulxq_lane_f32 (float32x4_t __a, float32x2_t __v, const int __lane) |
21047 | { | |
21048 | return vmulxq_f32 (__a, __aarch64_vdupq_lane_f32 (__v, __lane)); | |
21049 | } | |
21050 | ||
49ab9992 | 21051 | __extension__ extern __inline float64x2_t |
21052 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2ec3c6ff | 21053 | vmulxq_lane_f64 (float64x2_t __a, float64x1_t __v, const int __lane) |
21054 | { | |
21055 | return vmulxq_f64 (__a, __aarch64_vdupq_lane_f64 (__v, __lane)); | |
21056 | } | |
21057 | ||
49ab9992 | 21058 | __extension__ extern __inline float32x2_t |
21059 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2ec3c6ff | 21060 | vmulx_laneq_f32 (float32x2_t __a, float32x4_t __v, const int __lane) |
21061 | { | |
21062 | return vmulx_f32 (__a, __aarch64_vdup_laneq_f32 (__v, __lane)); | |
21063 | } | |
21064 | ||
49ab9992 | 21065 | __extension__ extern __inline float64x1_t |
21066 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2ec3c6ff | 21067 | vmulx_laneq_f64 (float64x1_t __a, float64x2_t __v, const int __lane) |
21068 | { | |
21069 | return vmulx_f64 (__a, __aarch64_vdup_laneq_f64 (__v, __lane)); | |
21070 | } | |
21071 | ||
49ab9992 | 21072 | __extension__ extern __inline float32x4_t |
21073 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2ec3c6ff | 21074 | vmulxq_laneq_f32 (float32x4_t __a, float32x4_t __v, const int __lane) |
21075 | { | |
21076 | return vmulxq_f32 (__a, __aarch64_vdupq_laneq_f32 (__v, __lane)); | |
21077 | } | |
21078 | ||
49ab9992 | 21079 | __extension__ extern __inline float64x2_t |
21080 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2ec3c6ff | 21081 | vmulxq_laneq_f64 (float64x2_t __a, float64x2_t __v, const int __lane) |
21082 | { | |
21083 | return vmulxq_f64 (__a, __aarch64_vdupq_laneq_f64 (__v, __lane)); | |
21084 | } | |
21085 | ||
49ab9992 | 21086 | __extension__ extern __inline float32_t |
21087 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2ec3c6ff | 21088 | vmulxs_lane_f32 (float32_t __a, float32x2_t __v, const int __lane) |
21089 | { | |
21090 | return vmulxs_f32 (__a, __aarch64_vget_lane_any (__v, __lane)); | |
21091 | } | |
21092 | ||
49ab9992 | 21093 | __extension__ extern __inline float32_t |
21094 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2ec3c6ff | 21095 | vmulxs_laneq_f32 (float32_t __a, float32x4_t __v, const int __lane) |
21096 | { | |
21097 | return vmulxs_f32 (__a, __aarch64_vget_lane_any (__v, __lane)); | |
21098 | } | |
21099 | ||
49ab9992 | 21100 | __extension__ extern __inline float64_t |
21101 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2ec3c6ff | 21102 | vmulxd_lane_f64 (float64_t __a, float64x1_t __v, const int __lane) |
21103 | { | |
21104 | return vmulxd_f64 (__a, __aarch64_vget_lane_any (__v, __lane)); | |
21105 | } | |
21106 | ||
49ab9992 | 21107 | __extension__ extern __inline float64_t |
21108 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
2ec3c6ff | 21109 | vmulxd_laneq_f64 (float64_t __a, float64x2_t __v, const int __lane) |
21110 | { | |
21111 | return vmulxd_f64 (__a, __aarch64_vget_lane_any (__v, __lane)); | |
21112 | } | |
21113 | ||
ef416414 | 21114 | /* vpmax */ |
21115 | ||
49ab9992 | 21116 | __extension__ extern __inline int8x8_t |
21117 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21118 | vpmax_s8 (int8x8_t a, int8x8_t b) |
21119 | { | |
21120 | return __builtin_aarch64_smaxpv8qi (a, b); | |
21121 | } | |
21122 | ||
49ab9992 | 21123 | __extension__ extern __inline int16x4_t |
21124 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21125 | vpmax_s16 (int16x4_t a, int16x4_t b) |
21126 | { | |
21127 | return __builtin_aarch64_smaxpv4hi (a, b); | |
21128 | } | |
21129 | ||
49ab9992 | 21130 | __extension__ extern __inline int32x2_t |
21131 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21132 | vpmax_s32 (int32x2_t a, int32x2_t b) |
21133 | { | |
21134 | return __builtin_aarch64_smaxpv2si (a, b); | |
21135 | } | |
21136 | ||
49ab9992 | 21137 | __extension__ extern __inline uint8x8_t |
21138 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21139 | vpmax_u8 (uint8x8_t a, uint8x8_t b) |
21140 | { | |
21141 | return (uint8x8_t) __builtin_aarch64_umaxpv8qi ((int8x8_t) a, | |
21142 | (int8x8_t) b); | |
21143 | } | |
21144 | ||
49ab9992 | 21145 | __extension__ extern __inline uint16x4_t |
21146 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21147 | vpmax_u16 (uint16x4_t a, uint16x4_t b) |
21148 | { | |
21149 | return (uint16x4_t) __builtin_aarch64_umaxpv4hi ((int16x4_t) a, | |
21150 | (int16x4_t) b); | |
21151 | } | |
21152 | ||
49ab9992 | 21153 | __extension__ extern __inline uint32x2_t |
21154 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21155 | vpmax_u32 (uint32x2_t a, uint32x2_t b) |
21156 | { | |
21157 | return (uint32x2_t) __builtin_aarch64_umaxpv2si ((int32x2_t) a, | |
21158 | (int32x2_t) b); | |
21159 | } | |
21160 | ||
49ab9992 | 21161 | __extension__ extern __inline int8x16_t |
21162 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21163 | vpmaxq_s8 (int8x16_t a, int8x16_t b) |
21164 | { | |
21165 | return __builtin_aarch64_smaxpv16qi (a, b); | |
21166 | } | |
21167 | ||
49ab9992 | 21168 | __extension__ extern __inline int16x8_t |
21169 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21170 | vpmaxq_s16 (int16x8_t a, int16x8_t b) |
21171 | { | |
21172 | return __builtin_aarch64_smaxpv8hi (a, b); | |
21173 | } | |
21174 | ||
49ab9992 | 21175 | __extension__ extern __inline int32x4_t |
21176 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21177 | vpmaxq_s32 (int32x4_t a, int32x4_t b) |
21178 | { | |
21179 | return __builtin_aarch64_smaxpv4si (a, b); | |
21180 | } | |
21181 | ||
49ab9992 | 21182 | __extension__ extern __inline uint8x16_t |
21183 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21184 | vpmaxq_u8 (uint8x16_t a, uint8x16_t b) |
21185 | { | |
21186 | return (uint8x16_t) __builtin_aarch64_umaxpv16qi ((int8x16_t) a, | |
21187 | (int8x16_t) b); | |
21188 | } | |
21189 | ||
49ab9992 | 21190 | __extension__ extern __inline uint16x8_t |
21191 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21192 | vpmaxq_u16 (uint16x8_t a, uint16x8_t b) |
21193 | { | |
21194 | return (uint16x8_t) __builtin_aarch64_umaxpv8hi ((int16x8_t) a, | |
21195 | (int16x8_t) b); | |
21196 | } | |
21197 | ||
49ab9992 | 21198 | __extension__ extern __inline uint32x4_t |
21199 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21200 | vpmaxq_u32 (uint32x4_t a, uint32x4_t b) |
21201 | { | |
21202 | return (uint32x4_t) __builtin_aarch64_umaxpv4si ((int32x4_t) a, | |
21203 | (int32x4_t) b); | |
21204 | } | |
21205 | ||
49ab9992 | 21206 | __extension__ extern __inline float32x2_t |
21207 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21208 | vpmax_f32 (float32x2_t a, float32x2_t b) |
21209 | { | |
21210 | return __builtin_aarch64_smax_nanpv2sf (a, b); | |
21211 | } | |
21212 | ||
49ab9992 | 21213 | __extension__ extern __inline float32x4_t |
21214 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21215 | vpmaxq_f32 (float32x4_t a, float32x4_t b) |
21216 | { | |
21217 | return __builtin_aarch64_smax_nanpv4sf (a, b); | |
21218 | } | |
21219 | ||
49ab9992 | 21220 | __extension__ extern __inline float64x2_t |
21221 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21222 | vpmaxq_f64 (float64x2_t a, float64x2_t b) |
21223 | { | |
21224 | return __builtin_aarch64_smax_nanpv2df (a, b); | |
21225 | } | |
21226 | ||
49ab9992 | 21227 | __extension__ extern __inline float64_t |
21228 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21229 | vpmaxqd_f64 (float64x2_t a) |
21230 | { | |
21231 | return __builtin_aarch64_reduc_smax_nan_scal_v2df (a); | |
21232 | } | |
21233 | ||
49ab9992 | 21234 | __extension__ extern __inline float32_t |
21235 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21236 | vpmaxs_f32 (float32x2_t a) |
21237 | { | |
21238 | return __builtin_aarch64_reduc_smax_nan_scal_v2sf (a); | |
21239 | } | |
21240 | ||
21241 | /* vpmaxnm */ | |
21242 | ||
49ab9992 | 21243 | __extension__ extern __inline float32x2_t |
21244 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21245 | vpmaxnm_f32 (float32x2_t a, float32x2_t b) |
21246 | { | |
21247 | return __builtin_aarch64_smaxpv2sf (a, b); | |
21248 | } | |
21249 | ||
49ab9992 | 21250 | __extension__ extern __inline float32x4_t |
21251 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21252 | vpmaxnmq_f32 (float32x4_t a, float32x4_t b) |
21253 | { | |
21254 | return __builtin_aarch64_smaxpv4sf (a, b); | |
21255 | } | |
21256 | ||
49ab9992 | 21257 | __extension__ extern __inline float64x2_t |
21258 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21259 | vpmaxnmq_f64 (float64x2_t a, float64x2_t b) |
21260 | { | |
21261 | return __builtin_aarch64_smaxpv2df (a, b); | |
21262 | } | |
21263 | ||
49ab9992 | 21264 | __extension__ extern __inline float64_t |
21265 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21266 | vpmaxnmqd_f64 (float64x2_t a) |
21267 | { | |
21268 | return __builtin_aarch64_reduc_smax_scal_v2df (a); | |
21269 | } | |
21270 | ||
49ab9992 | 21271 | __extension__ extern __inline float32_t |
21272 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21273 | vpmaxnms_f32 (float32x2_t a) |
21274 | { | |
21275 | return __builtin_aarch64_reduc_smax_scal_v2sf (a); | |
21276 | } | |
21277 | ||
21278 | /* vpmin */ | |
21279 | ||
49ab9992 | 21280 | __extension__ extern __inline int8x8_t |
21281 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21282 | vpmin_s8 (int8x8_t a, int8x8_t b) |
21283 | { | |
21284 | return __builtin_aarch64_sminpv8qi (a, b); | |
21285 | } | |
21286 | ||
49ab9992 | 21287 | __extension__ extern __inline int16x4_t |
21288 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21289 | vpmin_s16 (int16x4_t a, int16x4_t b) |
21290 | { | |
21291 | return __builtin_aarch64_sminpv4hi (a, b); | |
21292 | } | |
21293 | ||
49ab9992 | 21294 | __extension__ extern __inline int32x2_t |
21295 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21296 | vpmin_s32 (int32x2_t a, int32x2_t b) |
21297 | { | |
21298 | return __builtin_aarch64_sminpv2si (a, b); | |
21299 | } | |
21300 | ||
49ab9992 | 21301 | __extension__ extern __inline uint8x8_t |
21302 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21303 | vpmin_u8 (uint8x8_t a, uint8x8_t b) |
21304 | { | |
21305 | return (uint8x8_t) __builtin_aarch64_uminpv8qi ((int8x8_t) a, | |
21306 | (int8x8_t) b); | |
21307 | } | |
21308 | ||
49ab9992 | 21309 | __extension__ extern __inline uint16x4_t |
21310 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21311 | vpmin_u16 (uint16x4_t a, uint16x4_t b) |
21312 | { | |
21313 | return (uint16x4_t) __builtin_aarch64_uminpv4hi ((int16x4_t) a, | |
21314 | (int16x4_t) b); | |
21315 | } | |
21316 | ||
49ab9992 | 21317 | __extension__ extern __inline uint32x2_t |
21318 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21319 | vpmin_u32 (uint32x2_t a, uint32x2_t b) |
21320 | { | |
21321 | return (uint32x2_t) __builtin_aarch64_uminpv2si ((int32x2_t) a, | |
21322 | (int32x2_t) b); | |
21323 | } | |
21324 | ||
49ab9992 | 21325 | __extension__ extern __inline int8x16_t |
21326 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21327 | vpminq_s8 (int8x16_t a, int8x16_t b) |
21328 | { | |
21329 | return __builtin_aarch64_sminpv16qi (a, b); | |
21330 | } | |
21331 | ||
49ab9992 | 21332 | __extension__ extern __inline int16x8_t |
21333 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21334 | vpminq_s16 (int16x8_t a, int16x8_t b) |
21335 | { | |
21336 | return __builtin_aarch64_sminpv8hi (a, b); | |
21337 | } | |
21338 | ||
49ab9992 | 21339 | __extension__ extern __inline int32x4_t |
21340 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21341 | vpminq_s32 (int32x4_t a, int32x4_t b) |
21342 | { | |
21343 | return __builtin_aarch64_sminpv4si (a, b); | |
21344 | } | |
21345 | ||
49ab9992 | 21346 | __extension__ extern __inline uint8x16_t |
21347 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21348 | vpminq_u8 (uint8x16_t a, uint8x16_t b) |
21349 | { | |
21350 | return (uint8x16_t) __builtin_aarch64_uminpv16qi ((int8x16_t) a, | |
21351 | (int8x16_t) b); | |
21352 | } | |
21353 | ||
49ab9992 | 21354 | __extension__ extern __inline uint16x8_t |
21355 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21356 | vpminq_u16 (uint16x8_t a, uint16x8_t b) |
21357 | { | |
21358 | return (uint16x8_t) __builtin_aarch64_uminpv8hi ((int16x8_t) a, | |
21359 | (int16x8_t) b); | |
21360 | } | |
21361 | ||
49ab9992 | 21362 | __extension__ extern __inline uint32x4_t |
21363 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21364 | vpminq_u32 (uint32x4_t a, uint32x4_t b) |
21365 | { | |
21366 | return (uint32x4_t) __builtin_aarch64_uminpv4si ((int32x4_t) a, | |
21367 | (int32x4_t) b); | |
21368 | } | |
21369 | ||
49ab9992 | 21370 | __extension__ extern __inline float32x2_t |
21371 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21372 | vpmin_f32 (float32x2_t a, float32x2_t b) |
21373 | { | |
21374 | return __builtin_aarch64_smin_nanpv2sf (a, b); | |
21375 | } | |
21376 | ||
49ab9992 | 21377 | __extension__ extern __inline float32x4_t |
21378 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21379 | vpminq_f32 (float32x4_t a, float32x4_t b) |
21380 | { | |
21381 | return __builtin_aarch64_smin_nanpv4sf (a, b); | |
21382 | } | |
21383 | ||
49ab9992 | 21384 | __extension__ extern __inline float64x2_t |
21385 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21386 | vpminq_f64 (float64x2_t a, float64x2_t b) |
21387 | { | |
21388 | return __builtin_aarch64_smin_nanpv2df (a, b); | |
21389 | } | |
21390 | ||
49ab9992 | 21391 | __extension__ extern __inline float64_t |
21392 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21393 | vpminqd_f64 (float64x2_t a) |
21394 | { | |
21395 | return __builtin_aarch64_reduc_smin_nan_scal_v2df (a); | |
21396 | } | |
21397 | ||
49ab9992 | 21398 | __extension__ extern __inline float32_t |
21399 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21400 | vpmins_f32 (float32x2_t a) |
21401 | { | |
21402 | return __builtin_aarch64_reduc_smin_nan_scal_v2sf (a); | |
21403 | } | |
21404 | ||
21405 | /* vpminnm */ | |
21406 | ||
49ab9992 | 21407 | __extension__ extern __inline float32x2_t |
21408 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21409 | vpminnm_f32 (float32x2_t a, float32x2_t b) |
21410 | { | |
21411 | return __builtin_aarch64_sminpv2sf (a, b); | |
21412 | } | |
21413 | ||
49ab9992 | 21414 | __extension__ extern __inline float32x4_t |
21415 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21416 | vpminnmq_f32 (float32x4_t a, float32x4_t b) |
21417 | { | |
21418 | return __builtin_aarch64_sminpv4sf (a, b); | |
21419 | } | |
21420 | ||
49ab9992 | 21421 | __extension__ extern __inline float64x2_t |
21422 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21423 | vpminnmq_f64 (float64x2_t a, float64x2_t b) |
21424 | { | |
21425 | return __builtin_aarch64_sminpv2df (a, b); | |
21426 | } | |
21427 | ||
49ab9992 | 21428 | __extension__ extern __inline float64_t |
21429 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21430 | vpminnmqd_f64 (float64x2_t a) |
21431 | { | |
21432 | return __builtin_aarch64_reduc_smin_scal_v2df (a); | |
21433 | } | |
21434 | ||
49ab9992 | 21435 | __extension__ extern __inline float32_t |
21436 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ef416414 | 21437 | vpminnms_f32 (float32x2_t a) |
21438 | { | |
21439 | return __builtin_aarch64_reduc_smin_scal_v2sf (a); | |
21440 | } | |
21441 | ||
3bbdb270 | 21442 | /* vmaxnm */ |
21443 | ||
49ab9992 | 21444 | __extension__ extern __inline float32x2_t |
21445 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21446 | vmaxnm_f32 (float32x2_t __a, float32x2_t __b) |
21447 | { | |
288161af | 21448 | return __builtin_aarch64_fmaxv2sf (__a, __b); |
3bbdb270 | 21449 | } |
21450 | ||
49ab9992 | 21451 | __extension__ extern __inline float64x1_t |
21452 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
d3aa3636 | 21453 | vmaxnm_f64 (float64x1_t __a, float64x1_t __b) |
21454 | { | |
21455 | return (float64x1_t) | |
21456 | { __builtin_aarch64_fmaxdf (vget_lane_f64 (__a, 0), | |
21457 | vget_lane_f64 (__b, 0)) }; | |
21458 | } | |
21459 | ||
49ab9992 | 21460 | __extension__ extern __inline float32x4_t |
21461 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21462 | vmaxnmq_f32 (float32x4_t __a, float32x4_t __b) |
21463 | { | |
288161af | 21464 | return __builtin_aarch64_fmaxv4sf (__a, __b); |
3bbdb270 | 21465 | } |
21466 | ||
49ab9992 | 21467 | __extension__ extern __inline float64x2_t |
21468 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21469 | vmaxnmq_f64 (float64x2_t __a, float64x2_t __b) |
21470 | { | |
288161af | 21471 | return __builtin_aarch64_fmaxv2df (__a, __b); |
3bbdb270 | 21472 | } |
21473 | ||
21474 | /* vmaxv */ | |
21475 | ||
49ab9992 | 21476 | __extension__ extern __inline float32_t |
21477 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21478 | vmaxv_f32 (float32x2_t __a) |
21479 | { | |
89debc6a | 21480 | return __builtin_aarch64_reduc_smax_nan_scal_v2sf (__a); |
3bbdb270 | 21481 | } |
21482 | ||
49ab9992 | 21483 | __extension__ extern __inline int8_t |
21484 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21485 | vmaxv_s8 (int8x8_t __a) |
21486 | { | |
89debc6a | 21487 | return __builtin_aarch64_reduc_smax_scal_v8qi (__a); |
3bbdb270 | 21488 | } |
21489 | ||
49ab9992 | 21490 | __extension__ extern __inline int16_t |
21491 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21492 | vmaxv_s16 (int16x4_t __a) |
21493 | { | |
89debc6a | 21494 | return __builtin_aarch64_reduc_smax_scal_v4hi (__a); |
3bbdb270 | 21495 | } |
21496 | ||
49ab9992 | 21497 | __extension__ extern __inline int32_t |
21498 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21499 | vmaxv_s32 (int32x2_t __a) |
21500 | { | |
89debc6a | 21501 | return __builtin_aarch64_reduc_smax_scal_v2si (__a); |
3bbdb270 | 21502 | } |
21503 | ||
49ab9992 | 21504 | __extension__ extern __inline uint8_t |
21505 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21506 | vmaxv_u8 (uint8x8_t __a) |
21507 | { | |
89debc6a | 21508 | return __builtin_aarch64_reduc_umax_scal_v8qi_uu (__a); |
3bbdb270 | 21509 | } |
21510 | ||
49ab9992 | 21511 | __extension__ extern __inline uint16_t |
21512 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21513 | vmaxv_u16 (uint16x4_t __a) |
21514 | { | |
89debc6a | 21515 | return __builtin_aarch64_reduc_umax_scal_v4hi_uu (__a); |
3bbdb270 | 21516 | } |
21517 | ||
49ab9992 | 21518 | __extension__ extern __inline uint32_t |
21519 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21520 | vmaxv_u32 (uint32x2_t __a) |
21521 | { | |
89debc6a | 21522 | return __builtin_aarch64_reduc_umax_scal_v2si_uu (__a); |
3bbdb270 | 21523 | } |
21524 | ||
49ab9992 | 21525 | __extension__ extern __inline float32_t |
21526 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21527 | vmaxvq_f32 (float32x4_t __a) |
21528 | { | |
89debc6a | 21529 | return __builtin_aarch64_reduc_smax_nan_scal_v4sf (__a); |
3bbdb270 | 21530 | } |
21531 | ||
49ab9992 | 21532 | __extension__ extern __inline float64_t |
21533 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21534 | vmaxvq_f64 (float64x2_t __a) |
21535 | { | |
89debc6a | 21536 | return __builtin_aarch64_reduc_smax_nan_scal_v2df (__a); |
3bbdb270 | 21537 | } |
21538 | ||
49ab9992 | 21539 | __extension__ extern __inline int8_t |
21540 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21541 | vmaxvq_s8 (int8x16_t __a) |
21542 | { | |
89debc6a | 21543 | return __builtin_aarch64_reduc_smax_scal_v16qi (__a); |
3bbdb270 | 21544 | } |
21545 | ||
49ab9992 | 21546 | __extension__ extern __inline int16_t |
21547 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21548 | vmaxvq_s16 (int16x8_t __a) |
21549 | { | |
89debc6a | 21550 | return __builtin_aarch64_reduc_smax_scal_v8hi (__a); |
3bbdb270 | 21551 | } |
21552 | ||
49ab9992 | 21553 | __extension__ extern __inline int32_t |
21554 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21555 | vmaxvq_s32 (int32x4_t __a) |
21556 | { | |
89debc6a | 21557 | return __builtin_aarch64_reduc_smax_scal_v4si (__a); |
3bbdb270 | 21558 | } |
21559 | ||
49ab9992 | 21560 | __extension__ extern __inline uint8_t |
21561 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21562 | vmaxvq_u8 (uint8x16_t __a) |
21563 | { | |
89debc6a | 21564 | return __builtin_aarch64_reduc_umax_scal_v16qi_uu (__a); |
3bbdb270 | 21565 | } |
21566 | ||
49ab9992 | 21567 | __extension__ extern __inline uint16_t |
21568 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21569 | vmaxvq_u16 (uint16x8_t __a) |
21570 | { | |
89debc6a | 21571 | return __builtin_aarch64_reduc_umax_scal_v8hi_uu (__a); |
3bbdb270 | 21572 | } |
21573 | ||
49ab9992 | 21574 | __extension__ extern __inline uint32_t |
21575 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21576 | vmaxvq_u32 (uint32x4_t __a) |
21577 | { | |
89debc6a | 21578 | return __builtin_aarch64_reduc_umax_scal_v4si_uu (__a); |
3bbdb270 | 21579 | } |
21580 | ||
21581 | /* vmaxnmv */ | |
21582 | ||
49ab9992 | 21583 | __extension__ extern __inline float32_t |
21584 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21585 | vmaxnmv_f32 (float32x2_t __a) |
21586 | { | |
89debc6a | 21587 | return __builtin_aarch64_reduc_smax_scal_v2sf (__a); |
3bbdb270 | 21588 | } |
21589 | ||
49ab9992 | 21590 | __extension__ extern __inline float32_t |
21591 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21592 | vmaxnmvq_f32 (float32x4_t __a) |
21593 | { | |
89debc6a | 21594 | return __builtin_aarch64_reduc_smax_scal_v4sf (__a); |
3bbdb270 | 21595 | } |
21596 | ||
49ab9992 | 21597 | __extension__ extern __inline float64_t |
21598 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21599 | vmaxnmvq_f64 (float64x2_t __a) |
21600 | { | |
89debc6a | 21601 | return __builtin_aarch64_reduc_smax_scal_v2df (__a); |
3bbdb270 | 21602 | } |
21603 | ||
21604 | /* vmin */ | |
df401d54 | 21605 | |
49ab9992 | 21606 | __extension__ extern __inline float32x2_t |
21607 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21608 | vmin_f32 (float32x2_t __a, float32x2_t __b) |
21609 | { | |
2520d4b7 | 21610 | return __builtin_aarch64_smin_nanv2sf (__a, __b); |
df401d54 | 21611 | } |
21612 | ||
49ab9992 | 21613 | __extension__ extern __inline float64x1_t |
21614 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
d3aa3636 | 21615 | vmin_f64 (float64x1_t __a, float64x1_t __b) |
21616 | { | |
21617 | return (float64x1_t) | |
21618 | { __builtin_aarch64_smin_nandf (vget_lane_f64 (__a, 0), | |
21619 | vget_lane_f64 (__b, 0)) }; | |
21620 | } | |
21621 | ||
49ab9992 | 21622 | __extension__ extern __inline int8x8_t |
21623 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21624 | vmin_s8 (int8x8_t __a, int8x8_t __b) |
21625 | { | |
21626 | return __builtin_aarch64_sminv8qi (__a, __b); | |
21627 | } | |
21628 | ||
49ab9992 | 21629 | __extension__ extern __inline int16x4_t |
21630 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21631 | vmin_s16 (int16x4_t __a, int16x4_t __b) |
21632 | { | |
21633 | return __builtin_aarch64_sminv4hi (__a, __b); | |
21634 | } | |
21635 | ||
49ab9992 | 21636 | __extension__ extern __inline int32x2_t |
21637 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21638 | vmin_s32 (int32x2_t __a, int32x2_t __b) |
21639 | { | |
21640 | return __builtin_aarch64_sminv2si (__a, __b); | |
21641 | } | |
21642 | ||
49ab9992 | 21643 | __extension__ extern __inline uint8x8_t |
21644 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21645 | vmin_u8 (uint8x8_t __a, uint8x8_t __b) |
21646 | { | |
21647 | return (uint8x8_t) __builtin_aarch64_uminv8qi ((int8x8_t) __a, | |
21648 | (int8x8_t) __b); | |
21649 | } | |
21650 | ||
49ab9992 | 21651 | __extension__ extern __inline uint16x4_t |
21652 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21653 | vmin_u16 (uint16x4_t __a, uint16x4_t __b) |
21654 | { | |
21655 | return (uint16x4_t) __builtin_aarch64_uminv4hi ((int16x4_t) __a, | |
21656 | (int16x4_t) __b); | |
21657 | } | |
21658 | ||
49ab9992 | 21659 | __extension__ extern __inline uint32x2_t |
21660 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21661 | vmin_u32 (uint32x2_t __a, uint32x2_t __b) |
21662 | { | |
21663 | return (uint32x2_t) __builtin_aarch64_uminv2si ((int32x2_t) __a, | |
21664 | (int32x2_t) __b); | |
21665 | } | |
21666 | ||
49ab9992 | 21667 | __extension__ extern __inline float32x4_t |
21668 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21669 | vminq_f32 (float32x4_t __a, float32x4_t __b) |
21670 | { | |
2520d4b7 | 21671 | return __builtin_aarch64_smin_nanv4sf (__a, __b); |
df401d54 | 21672 | } |
21673 | ||
49ab9992 | 21674 | __extension__ extern __inline float64x2_t |
21675 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21676 | vminq_f64 (float64x2_t __a, float64x2_t __b) |
21677 | { | |
2520d4b7 | 21678 | return __builtin_aarch64_smin_nanv2df (__a, __b); |
df401d54 | 21679 | } |
21680 | ||
49ab9992 | 21681 | __extension__ extern __inline int8x16_t |
21682 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21683 | vminq_s8 (int8x16_t __a, int8x16_t __b) |
21684 | { | |
21685 | return __builtin_aarch64_sminv16qi (__a, __b); | |
21686 | } | |
21687 | ||
49ab9992 | 21688 | __extension__ extern __inline int16x8_t |
21689 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21690 | vminq_s16 (int16x8_t __a, int16x8_t __b) |
21691 | { | |
21692 | return __builtin_aarch64_sminv8hi (__a, __b); | |
21693 | } | |
21694 | ||
49ab9992 | 21695 | __extension__ extern __inline int32x4_t |
21696 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21697 | vminq_s32 (int32x4_t __a, int32x4_t __b) |
21698 | { | |
21699 | return __builtin_aarch64_sminv4si (__a, __b); | |
21700 | } | |
21701 | ||
49ab9992 | 21702 | __extension__ extern __inline uint8x16_t |
21703 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21704 | vminq_u8 (uint8x16_t __a, uint8x16_t __b) |
21705 | { | |
21706 | return (uint8x16_t) __builtin_aarch64_uminv16qi ((int8x16_t) __a, | |
21707 | (int8x16_t) __b); | |
21708 | } | |
21709 | ||
49ab9992 | 21710 | __extension__ extern __inline uint16x8_t |
21711 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21712 | vminq_u16 (uint16x8_t __a, uint16x8_t __b) |
21713 | { | |
21714 | return (uint16x8_t) __builtin_aarch64_uminv8hi ((int16x8_t) __a, | |
21715 | (int16x8_t) __b); | |
21716 | } | |
21717 | ||
49ab9992 | 21718 | __extension__ extern __inline uint32x4_t |
21719 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21720 | vminq_u32 (uint32x4_t __a, uint32x4_t __b) |
21721 | { | |
21722 | return (uint32x4_t) __builtin_aarch64_uminv4si ((int32x4_t) __a, | |
21723 | (int32x4_t) __b); | |
21724 | } | |
21725 | ||
3bbdb270 | 21726 | /* vminnm */ |
21727 | ||
49ab9992 | 21728 | __extension__ extern __inline float32x2_t |
21729 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21730 | vminnm_f32 (float32x2_t __a, float32x2_t __b) |
21731 | { | |
288161af | 21732 | return __builtin_aarch64_fminv2sf (__a, __b); |
3bbdb270 | 21733 | } |
21734 | ||
49ab9992 | 21735 | __extension__ extern __inline float64x1_t |
21736 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
d3aa3636 | 21737 | vminnm_f64 (float64x1_t __a, float64x1_t __b) |
21738 | { | |
21739 | return (float64x1_t) | |
2200fb03 | 21740 | { __builtin_aarch64_fmindf (vget_lane_f64 (__a, 0), |
d3aa3636 | 21741 | vget_lane_f64 (__b, 0)) }; |
21742 | } | |
21743 | ||
49ab9992 | 21744 | __extension__ extern __inline float32x4_t |
21745 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21746 | vminnmq_f32 (float32x4_t __a, float32x4_t __b) |
21747 | { | |
288161af | 21748 | return __builtin_aarch64_fminv4sf (__a, __b); |
3bbdb270 | 21749 | } |
21750 | ||
49ab9992 | 21751 | __extension__ extern __inline float64x2_t |
21752 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21753 | vminnmq_f64 (float64x2_t __a, float64x2_t __b) |
21754 | { | |
288161af | 21755 | return __builtin_aarch64_fminv2df (__a, __b); |
3bbdb270 | 21756 | } |
21757 | ||
21758 | /* vminv */ | |
21759 | ||
49ab9992 | 21760 | __extension__ extern __inline float32_t |
21761 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21762 | vminv_f32 (float32x2_t __a) |
21763 | { | |
89debc6a | 21764 | return __builtin_aarch64_reduc_smin_nan_scal_v2sf (__a); |
3bbdb270 | 21765 | } |
21766 | ||
49ab9992 | 21767 | __extension__ extern __inline int8_t |
21768 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21769 | vminv_s8 (int8x8_t __a) |
21770 | { | |
89debc6a | 21771 | return __builtin_aarch64_reduc_smin_scal_v8qi (__a); |
3bbdb270 | 21772 | } |
21773 | ||
49ab9992 | 21774 | __extension__ extern __inline int16_t |
21775 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21776 | vminv_s16 (int16x4_t __a) |
21777 | { | |
89debc6a | 21778 | return __builtin_aarch64_reduc_smin_scal_v4hi (__a); |
3bbdb270 | 21779 | } |
21780 | ||
49ab9992 | 21781 | __extension__ extern __inline int32_t |
21782 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21783 | vminv_s32 (int32x2_t __a) |
21784 | { | |
89debc6a | 21785 | return __builtin_aarch64_reduc_smin_scal_v2si (__a); |
3bbdb270 | 21786 | } |
21787 | ||
49ab9992 | 21788 | __extension__ extern __inline uint8_t |
21789 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21790 | vminv_u8 (uint8x8_t __a) |
21791 | { | |
89debc6a | 21792 | return __builtin_aarch64_reduc_umin_scal_v8qi_uu (__a); |
3bbdb270 | 21793 | } |
21794 | ||
49ab9992 | 21795 | __extension__ extern __inline uint16_t |
21796 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21797 | vminv_u16 (uint16x4_t __a) |
21798 | { | |
89debc6a | 21799 | return __builtin_aarch64_reduc_umin_scal_v4hi_uu (__a); |
3bbdb270 | 21800 | } |
21801 | ||
49ab9992 | 21802 | __extension__ extern __inline uint32_t |
21803 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21804 | vminv_u32 (uint32x2_t __a) |
21805 | { | |
89debc6a | 21806 | return __builtin_aarch64_reduc_umin_scal_v2si_uu (__a); |
3bbdb270 | 21807 | } |
21808 | ||
49ab9992 | 21809 | __extension__ extern __inline float32_t |
21810 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21811 | vminvq_f32 (float32x4_t __a) |
21812 | { | |
89debc6a | 21813 | return __builtin_aarch64_reduc_smin_nan_scal_v4sf (__a); |
3bbdb270 | 21814 | } |
21815 | ||
49ab9992 | 21816 | __extension__ extern __inline float64_t |
21817 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21818 | vminvq_f64 (float64x2_t __a) |
21819 | { | |
89debc6a | 21820 | return __builtin_aarch64_reduc_smin_nan_scal_v2df (__a); |
3bbdb270 | 21821 | } |
21822 | ||
49ab9992 | 21823 | __extension__ extern __inline int8_t |
21824 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21825 | vminvq_s8 (int8x16_t __a) |
21826 | { | |
89debc6a | 21827 | return __builtin_aarch64_reduc_smin_scal_v16qi (__a); |
3bbdb270 | 21828 | } |
21829 | ||
49ab9992 | 21830 | __extension__ extern __inline int16_t |
21831 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21832 | vminvq_s16 (int16x8_t __a) |
21833 | { | |
89debc6a | 21834 | return __builtin_aarch64_reduc_smin_scal_v8hi (__a); |
3bbdb270 | 21835 | } |
21836 | ||
49ab9992 | 21837 | __extension__ extern __inline int32_t |
21838 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21839 | vminvq_s32 (int32x4_t __a) |
21840 | { | |
89debc6a | 21841 | return __builtin_aarch64_reduc_smin_scal_v4si (__a); |
3bbdb270 | 21842 | } |
21843 | ||
49ab9992 | 21844 | __extension__ extern __inline uint8_t |
21845 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21846 | vminvq_u8 (uint8x16_t __a) |
21847 | { | |
89debc6a | 21848 | return __builtin_aarch64_reduc_umin_scal_v16qi_uu (__a); |
3bbdb270 | 21849 | } |
21850 | ||
49ab9992 | 21851 | __extension__ extern __inline uint16_t |
21852 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21853 | vminvq_u16 (uint16x8_t __a) |
21854 | { | |
89debc6a | 21855 | return __builtin_aarch64_reduc_umin_scal_v8hi_uu (__a); |
3bbdb270 | 21856 | } |
21857 | ||
49ab9992 | 21858 | __extension__ extern __inline uint32_t |
21859 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21860 | vminvq_u32 (uint32x4_t __a) |
21861 | { | |
89debc6a | 21862 | return __builtin_aarch64_reduc_umin_scal_v4si_uu (__a); |
3bbdb270 | 21863 | } |
21864 | ||
21865 | /* vminnmv */ | |
21866 | ||
49ab9992 | 21867 | __extension__ extern __inline float32_t |
21868 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21869 | vminnmv_f32 (float32x2_t __a) |
21870 | { | |
89debc6a | 21871 | return __builtin_aarch64_reduc_smin_scal_v2sf (__a); |
3bbdb270 | 21872 | } |
21873 | ||
49ab9992 | 21874 | __extension__ extern __inline float32_t |
21875 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21876 | vminnmvq_f32 (float32x4_t __a) |
21877 | { | |
89debc6a | 21878 | return __builtin_aarch64_reduc_smin_scal_v4sf (__a); |
3bbdb270 | 21879 | } |
21880 | ||
49ab9992 | 21881 | __extension__ extern __inline float64_t |
21882 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3bbdb270 | 21883 | vminnmvq_f64 (float64x2_t __a) |
21884 | { | |
89debc6a | 21885 | return __builtin_aarch64_reduc_smin_scal_v2df (__a); |
3bbdb270 | 21886 | } |
21887 | ||
df401d54 | 21888 | /* vmla */ |
21889 | ||
49ab9992 | 21890 | __extension__ extern __inline float32x2_t |
21891 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21892 | vmla_f32 (float32x2_t a, float32x2_t b, float32x2_t c) |
21893 | { | |
21894 | return a + b * c; | |
21895 | } | |
21896 | ||
49ab9992 | 21897 | __extension__ extern __inline float64x1_t |
21898 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
73e894ba | 21899 | vmla_f64 (float64x1_t __a, float64x1_t __b, float64x1_t __c) |
21900 | { | |
21901 | return __a + __b * __c; | |
21902 | } | |
21903 | ||
49ab9992 | 21904 | __extension__ extern __inline float32x4_t |
21905 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21906 | vmlaq_f32 (float32x4_t a, float32x4_t b, float32x4_t c) |
21907 | { | |
21908 | return a + b * c; | |
21909 | } | |
21910 | ||
49ab9992 | 21911 | __extension__ extern __inline float64x2_t |
21912 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 21913 | vmlaq_f64 (float64x2_t a, float64x2_t b, float64x2_t c) |
21914 | { | |
21915 | return a + b * c; | |
21916 | } | |
21917 | ||
5b44c420 | 21918 | /* vmla_lane */ |
21919 | ||
49ab9992 | 21920 | __extension__ extern __inline float32x2_t |
21921 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 21922 | vmla_lane_f32 (float32x2_t __a, float32x2_t __b, |
21923 | float32x2_t __c, const int __lane) | |
21924 | { | |
12e851f9 | 21925 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 21926 | } |
21927 | ||
49ab9992 | 21928 | __extension__ extern __inline int16x4_t |
21929 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 21930 | vmla_lane_s16 (int16x4_t __a, int16x4_t __b, |
21931 | int16x4_t __c, const int __lane) | |
21932 | { | |
12e851f9 | 21933 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 21934 | } |
21935 | ||
49ab9992 | 21936 | __extension__ extern __inline int32x2_t |
21937 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 21938 | vmla_lane_s32 (int32x2_t __a, int32x2_t __b, |
21939 | int32x2_t __c, const int __lane) | |
21940 | { | |
12e851f9 | 21941 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 21942 | } |
21943 | ||
49ab9992 | 21944 | __extension__ extern __inline uint16x4_t |
21945 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 21946 | vmla_lane_u16 (uint16x4_t __a, uint16x4_t __b, |
21947 | uint16x4_t __c, const int __lane) | |
21948 | { | |
12e851f9 | 21949 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 21950 | } |
21951 | ||
49ab9992 | 21952 | __extension__ extern __inline uint32x2_t |
21953 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 21954 | vmla_lane_u32 (uint32x2_t __a, uint32x2_t __b, |
21955 | uint32x2_t __c, const int __lane) | |
21956 | { | |
12e851f9 | 21957 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 21958 | } |
21959 | ||
21960 | /* vmla_laneq */ | |
21961 | ||
49ab9992 | 21962 | __extension__ extern __inline float32x2_t |
21963 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 21964 | vmla_laneq_f32 (float32x2_t __a, float32x2_t __b, |
21965 | float32x4_t __c, const int __lane) | |
21966 | { | |
12e851f9 | 21967 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 21968 | } |
21969 | ||
49ab9992 | 21970 | __extension__ extern __inline int16x4_t |
21971 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 21972 | vmla_laneq_s16 (int16x4_t __a, int16x4_t __b, |
21973 | int16x8_t __c, const int __lane) | |
21974 | { | |
12e851f9 | 21975 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 21976 | } |
21977 | ||
49ab9992 | 21978 | __extension__ extern __inline int32x2_t |
21979 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 21980 | vmla_laneq_s32 (int32x2_t __a, int32x2_t __b, |
21981 | int32x4_t __c, const int __lane) | |
21982 | { | |
12e851f9 | 21983 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 21984 | } |
21985 | ||
49ab9992 | 21986 | __extension__ extern __inline uint16x4_t |
21987 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 21988 | vmla_laneq_u16 (uint16x4_t __a, uint16x4_t __b, |
21989 | uint16x8_t __c, const int __lane) | |
21990 | { | |
12e851f9 | 21991 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 21992 | } |
21993 | ||
49ab9992 | 21994 | __extension__ extern __inline uint32x2_t |
21995 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 21996 | vmla_laneq_u32 (uint32x2_t __a, uint32x2_t __b, |
21997 | uint32x4_t __c, const int __lane) | |
21998 | { | |
12e851f9 | 21999 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22000 | } |
22001 | ||
22002 | /* vmlaq_lane */ | |
22003 | ||
49ab9992 | 22004 | __extension__ extern __inline float32x4_t |
22005 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22006 | vmlaq_lane_f32 (float32x4_t __a, float32x4_t __b, |
22007 | float32x2_t __c, const int __lane) | |
22008 | { | |
12e851f9 | 22009 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22010 | } |
22011 | ||
49ab9992 | 22012 | __extension__ extern __inline int16x8_t |
22013 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22014 | vmlaq_lane_s16 (int16x8_t __a, int16x8_t __b, |
22015 | int16x4_t __c, const int __lane) | |
22016 | { | |
12e851f9 | 22017 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22018 | } |
22019 | ||
49ab9992 | 22020 | __extension__ extern __inline int32x4_t |
22021 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22022 | vmlaq_lane_s32 (int32x4_t __a, int32x4_t __b, |
22023 | int32x2_t __c, const int __lane) | |
22024 | { | |
12e851f9 | 22025 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22026 | } |
22027 | ||
49ab9992 | 22028 | __extension__ extern __inline uint16x8_t |
22029 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22030 | vmlaq_lane_u16 (uint16x8_t __a, uint16x8_t __b, |
22031 | uint16x4_t __c, const int __lane) | |
22032 | { | |
12e851f9 | 22033 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22034 | } |
22035 | ||
49ab9992 | 22036 | __extension__ extern __inline uint32x4_t |
22037 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22038 | vmlaq_lane_u32 (uint32x4_t __a, uint32x4_t __b, |
22039 | uint32x2_t __c, const int __lane) | |
22040 | { | |
12e851f9 | 22041 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22042 | } |
22043 | ||
22044 | /* vmlaq_laneq */ | |
22045 | ||
49ab9992 | 22046 | __extension__ extern __inline float32x4_t |
22047 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22048 | vmlaq_laneq_f32 (float32x4_t __a, float32x4_t __b, |
22049 | float32x4_t __c, const int __lane) | |
22050 | { | |
12e851f9 | 22051 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22052 | } |
22053 | ||
49ab9992 | 22054 | __extension__ extern __inline int16x8_t |
22055 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22056 | vmlaq_laneq_s16 (int16x8_t __a, int16x8_t __b, |
22057 | int16x8_t __c, const int __lane) | |
22058 | { | |
12e851f9 | 22059 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22060 | } |
22061 | ||
49ab9992 | 22062 | __extension__ extern __inline int32x4_t |
22063 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22064 | vmlaq_laneq_s32 (int32x4_t __a, int32x4_t __b, |
22065 | int32x4_t __c, const int __lane) | |
22066 | { | |
12e851f9 | 22067 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22068 | } |
22069 | ||
49ab9992 | 22070 | __extension__ extern __inline uint16x8_t |
22071 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22072 | vmlaq_laneq_u16 (uint16x8_t __a, uint16x8_t __b, |
22073 | uint16x8_t __c, const int __lane) | |
22074 | { | |
12e851f9 | 22075 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22076 | } |
22077 | ||
49ab9992 | 22078 | __extension__ extern __inline uint32x4_t |
22079 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22080 | vmlaq_laneq_u32 (uint32x4_t __a, uint32x4_t __b, |
22081 | uint32x4_t __c, const int __lane) | |
22082 | { | |
12e851f9 | 22083 | return (__a + (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22084 | } |
22085 | ||
22086 | /* vmls */ | |
22087 | ||
49ab9992 | 22088 | __extension__ extern __inline float32x2_t |
22089 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 22090 | vmls_f32 (float32x2_t a, float32x2_t b, float32x2_t c) |
22091 | { | |
22092 | return a - b * c; | |
22093 | } | |
22094 | ||
49ab9992 | 22095 | __extension__ extern __inline float64x1_t |
22096 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
73e894ba | 22097 | vmls_f64 (float64x1_t __a, float64x1_t __b, float64x1_t __c) |
22098 | { | |
22099 | return __a - __b * __c; | |
22100 | } | |
22101 | ||
49ab9992 | 22102 | __extension__ extern __inline float32x4_t |
22103 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 22104 | vmlsq_f32 (float32x4_t a, float32x4_t b, float32x4_t c) |
22105 | { | |
22106 | return a - b * c; | |
22107 | } | |
22108 | ||
49ab9992 | 22109 | __extension__ extern __inline float64x2_t |
22110 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 22111 | vmlsq_f64 (float64x2_t a, float64x2_t b, float64x2_t c) |
22112 | { | |
22113 | return a - b * c; | |
22114 | } | |
22115 | ||
5b44c420 | 22116 | /* vmls_lane */ |
22117 | ||
49ab9992 | 22118 | __extension__ extern __inline float32x2_t |
22119 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22120 | vmls_lane_f32 (float32x2_t __a, float32x2_t __b, |
22121 | float32x2_t __c, const int __lane) | |
22122 | { | |
12e851f9 | 22123 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22124 | } |
22125 | ||
49ab9992 | 22126 | __extension__ extern __inline int16x4_t |
22127 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22128 | vmls_lane_s16 (int16x4_t __a, int16x4_t __b, |
22129 | int16x4_t __c, const int __lane) | |
22130 | { | |
12e851f9 | 22131 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22132 | } |
22133 | ||
49ab9992 | 22134 | __extension__ extern __inline int32x2_t |
22135 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22136 | vmls_lane_s32 (int32x2_t __a, int32x2_t __b, |
22137 | int32x2_t __c, const int __lane) | |
22138 | { | |
12e851f9 | 22139 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22140 | } |
22141 | ||
49ab9992 | 22142 | __extension__ extern __inline uint16x4_t |
22143 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22144 | vmls_lane_u16 (uint16x4_t __a, uint16x4_t __b, |
22145 | uint16x4_t __c, const int __lane) | |
22146 | { | |
12e851f9 | 22147 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22148 | } |
22149 | ||
49ab9992 | 22150 | __extension__ extern __inline uint32x2_t |
22151 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22152 | vmls_lane_u32 (uint32x2_t __a, uint32x2_t __b, |
22153 | uint32x2_t __c, const int __lane) | |
22154 | { | |
12e851f9 | 22155 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22156 | } |
22157 | ||
22158 | /* vmls_laneq */ | |
22159 | ||
49ab9992 | 22160 | __extension__ extern __inline float32x2_t |
22161 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22162 | vmls_laneq_f32 (float32x2_t __a, float32x2_t __b, |
22163 | float32x4_t __c, const int __lane) | |
22164 | { | |
12e851f9 | 22165 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22166 | } |
22167 | ||
49ab9992 | 22168 | __extension__ extern __inline int16x4_t |
22169 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22170 | vmls_laneq_s16 (int16x4_t __a, int16x4_t __b, |
22171 | int16x8_t __c, const int __lane) | |
22172 | { | |
12e851f9 | 22173 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22174 | } |
22175 | ||
49ab9992 | 22176 | __extension__ extern __inline int32x2_t |
22177 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22178 | vmls_laneq_s32 (int32x2_t __a, int32x2_t __b, |
22179 | int32x4_t __c, const int __lane) | |
22180 | { | |
12e851f9 | 22181 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22182 | } |
22183 | ||
49ab9992 | 22184 | __extension__ extern __inline uint16x4_t |
22185 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22186 | vmls_laneq_u16 (uint16x4_t __a, uint16x4_t __b, |
22187 | uint16x8_t __c, const int __lane) | |
22188 | { | |
12e851f9 | 22189 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22190 | } |
22191 | ||
49ab9992 | 22192 | __extension__ extern __inline uint32x2_t |
22193 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22194 | vmls_laneq_u32 (uint32x2_t __a, uint32x2_t __b, |
22195 | uint32x4_t __c, const int __lane) | |
22196 | { | |
12e851f9 | 22197 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22198 | } |
22199 | ||
22200 | /* vmlsq_lane */ | |
22201 | ||
49ab9992 | 22202 | __extension__ extern __inline float32x4_t |
22203 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22204 | vmlsq_lane_f32 (float32x4_t __a, float32x4_t __b, |
22205 | float32x2_t __c, const int __lane) | |
22206 | { | |
12e851f9 | 22207 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22208 | } |
22209 | ||
49ab9992 | 22210 | __extension__ extern __inline int16x8_t |
22211 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22212 | vmlsq_lane_s16 (int16x8_t __a, int16x8_t __b, |
22213 | int16x4_t __c, const int __lane) | |
22214 | { | |
12e851f9 | 22215 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22216 | } |
22217 | ||
49ab9992 | 22218 | __extension__ extern __inline int32x4_t |
22219 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22220 | vmlsq_lane_s32 (int32x4_t __a, int32x4_t __b, |
22221 | int32x2_t __c, const int __lane) | |
22222 | { | |
12e851f9 | 22223 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22224 | } |
22225 | ||
49ab9992 | 22226 | __extension__ extern __inline uint16x8_t |
22227 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22228 | vmlsq_lane_u16 (uint16x8_t __a, uint16x8_t __b, |
22229 | uint16x4_t __c, const int __lane) | |
22230 | { | |
12e851f9 | 22231 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22232 | } |
22233 | ||
49ab9992 | 22234 | __extension__ extern __inline uint32x4_t |
22235 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22236 | vmlsq_lane_u32 (uint32x4_t __a, uint32x4_t __b, |
22237 | uint32x2_t __c, const int __lane) | |
22238 | { | |
12e851f9 | 22239 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22240 | } |
22241 | ||
22242 | /* vmlsq_laneq */ | |
22243 | ||
49ab9992 | 22244 | __extension__ extern __inline float32x4_t |
22245 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22246 | vmlsq_laneq_f32 (float32x4_t __a, float32x4_t __b, |
22247 | float32x4_t __c, const int __lane) | |
22248 | { | |
12e851f9 | 22249 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22250 | } |
22251 | ||
49ab9992 | 22252 | __extension__ extern __inline int16x8_t |
22253 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22254 | vmlsq_laneq_s16 (int16x8_t __a, int16x8_t __b, |
22255 | int16x8_t __c, const int __lane) | |
22256 | { | |
12e851f9 | 22257 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22258 | } |
22259 | ||
49ab9992 | 22260 | __extension__ extern __inline int32x4_t |
22261 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22262 | vmlsq_laneq_s32 (int32x4_t __a, int32x4_t __b, |
22263 | int32x4_t __c, const int __lane) | |
22264 | { | |
12e851f9 | 22265 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22266 | } |
49ab9992 | 22267 | __extension__ extern __inline uint16x8_t |
22268 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22269 | vmlsq_laneq_u16 (uint16x8_t __a, uint16x8_t __b, |
22270 | uint16x8_t __c, const int __lane) | |
22271 | { | |
12e851f9 | 22272 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22273 | } |
22274 | ||
49ab9992 | 22275 | __extension__ extern __inline uint32x4_t |
22276 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5b44c420 | 22277 | vmlsq_laneq_u32 (uint32x4_t __a, uint32x4_t __b, |
22278 | uint32x4_t __c, const int __lane) | |
22279 | { | |
12e851f9 | 22280 | return (__a - (__b * __aarch64_vget_lane_any (__c, __lane))); |
5b44c420 | 22281 | } |
22282 | ||
e8e34573 | 22283 | /* vmov_n_ */ |
22284 | ||
49ab9992 | 22285 | __extension__ extern __inline float16x4_t |
22286 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 22287 | vmov_n_f16 (float16_t __a) |
22288 | { | |
22289 | return vdup_n_f16 (__a); | |
22290 | } | |
22291 | ||
49ab9992 | 22292 | __extension__ extern __inline float32x2_t |
22293 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22294 | vmov_n_f32 (float32_t __a) |
22295 | { | |
22296 | return vdup_n_f32 (__a); | |
22297 | } | |
22298 | ||
49ab9992 | 22299 | __extension__ extern __inline float64x1_t |
22300 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22301 | vmov_n_f64 (float64_t __a) |
22302 | { | |
ac292ff5 | 22303 | return (float64x1_t) {__a}; |
e8e34573 | 22304 | } |
22305 | ||
49ab9992 | 22306 | __extension__ extern __inline poly8x8_t |
22307 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22308 | vmov_n_p8 (poly8_t __a) |
22309 | { | |
22310 | return vdup_n_p8 (__a); | |
22311 | } | |
22312 | ||
49ab9992 | 22313 | __extension__ extern __inline poly16x4_t |
22314 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22315 | vmov_n_p16 (poly16_t __a) |
22316 | { | |
22317 | return vdup_n_p16 (__a); | |
22318 | } | |
22319 | ||
d4f47414 | 22320 | __extension__ extern __inline poly64x1_t |
22321 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
22322 | vmov_n_p64 (poly64_t __a) | |
22323 | { | |
22324 | return vdup_n_p64 (__a); | |
22325 | } | |
22326 | ||
49ab9992 | 22327 | __extension__ extern __inline int8x8_t |
22328 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22329 | vmov_n_s8 (int8_t __a) |
22330 | { | |
22331 | return vdup_n_s8 (__a); | |
22332 | } | |
22333 | ||
49ab9992 | 22334 | __extension__ extern __inline int16x4_t |
22335 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22336 | vmov_n_s16 (int16_t __a) |
22337 | { | |
22338 | return vdup_n_s16 (__a); | |
22339 | } | |
22340 | ||
49ab9992 | 22341 | __extension__ extern __inline int32x2_t |
22342 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22343 | vmov_n_s32 (int32_t __a) |
22344 | { | |
22345 | return vdup_n_s32 (__a); | |
22346 | } | |
22347 | ||
49ab9992 | 22348 | __extension__ extern __inline int64x1_t |
22349 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22350 | vmov_n_s64 (int64_t __a) |
22351 | { | |
12fc7207 | 22352 | return (int64x1_t) {__a}; |
e8e34573 | 22353 | } |
22354 | ||
49ab9992 | 22355 | __extension__ extern __inline uint8x8_t |
22356 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22357 | vmov_n_u8 (uint8_t __a) |
22358 | { | |
22359 | return vdup_n_u8 (__a); | |
22360 | } | |
22361 | ||
49ab9992 | 22362 | __extension__ extern __inline uint16x4_t |
22363 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22364 | vmov_n_u16 (uint16_t __a) |
22365 | { | |
22366 | return vdup_n_u16 (__a); | |
22367 | } | |
22368 | ||
49ab9992 | 22369 | __extension__ extern __inline uint32x2_t |
22370 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22371 | vmov_n_u32 (uint32_t __a) |
22372 | { | |
22373 | return vdup_n_u32 (__a); | |
22374 | } | |
22375 | ||
49ab9992 | 22376 | __extension__ extern __inline uint64x1_t |
22377 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22378 | vmov_n_u64 (uint64_t __a) |
22379 | { | |
12fc7207 | 22380 | return (uint64x1_t) {__a}; |
e8e34573 | 22381 | } |
22382 | ||
49ab9992 | 22383 | __extension__ extern __inline float16x8_t |
22384 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 22385 | vmovq_n_f16 (float16_t __a) |
22386 | { | |
22387 | return vdupq_n_f16 (__a); | |
22388 | } | |
22389 | ||
49ab9992 | 22390 | __extension__ extern __inline float32x4_t |
22391 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22392 | vmovq_n_f32 (float32_t __a) |
22393 | { | |
22394 | return vdupq_n_f32 (__a); | |
22395 | } | |
22396 | ||
49ab9992 | 22397 | __extension__ extern __inline float64x2_t |
22398 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22399 | vmovq_n_f64 (float64_t __a) |
22400 | { | |
22401 | return vdupq_n_f64 (__a); | |
22402 | } | |
22403 | ||
49ab9992 | 22404 | __extension__ extern __inline poly8x16_t |
22405 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22406 | vmovq_n_p8 (poly8_t __a) |
22407 | { | |
22408 | return vdupq_n_p8 (__a); | |
22409 | } | |
22410 | ||
49ab9992 | 22411 | __extension__ extern __inline poly16x8_t |
22412 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22413 | vmovq_n_p16 (poly16_t __a) |
22414 | { | |
22415 | return vdupq_n_p16 (__a); | |
22416 | } | |
22417 | ||
d4f47414 | 22418 | __extension__ extern __inline poly64x2_t |
22419 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
22420 | vmovq_n_p64 (poly64_t __a) | |
22421 | { | |
22422 | return vdupq_n_p64 (__a); | |
22423 | } | |
22424 | ||
49ab9992 | 22425 | __extension__ extern __inline int8x16_t |
22426 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22427 | vmovq_n_s8 (int8_t __a) |
22428 | { | |
22429 | return vdupq_n_s8 (__a); | |
22430 | } | |
22431 | ||
49ab9992 | 22432 | __extension__ extern __inline int16x8_t |
22433 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22434 | vmovq_n_s16 (int16_t __a) |
22435 | { | |
22436 | return vdupq_n_s16 (__a); | |
22437 | } | |
22438 | ||
49ab9992 | 22439 | __extension__ extern __inline int32x4_t |
22440 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22441 | vmovq_n_s32 (int32_t __a) |
22442 | { | |
22443 | return vdupq_n_s32 (__a); | |
22444 | } | |
22445 | ||
49ab9992 | 22446 | __extension__ extern __inline int64x2_t |
22447 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22448 | vmovq_n_s64 (int64_t __a) |
22449 | { | |
22450 | return vdupq_n_s64 (__a); | |
22451 | } | |
22452 | ||
49ab9992 | 22453 | __extension__ extern __inline uint8x16_t |
22454 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22455 | vmovq_n_u8 (uint8_t __a) |
22456 | { | |
22457 | return vdupq_n_u8 (__a); | |
22458 | } | |
22459 | ||
49ab9992 | 22460 | __extension__ extern __inline uint16x8_t |
22461 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22462 | vmovq_n_u16 (uint16_t __a) |
22463 | { | |
22464 | return vdupq_n_u16 (__a); | |
22465 | } | |
22466 | ||
49ab9992 | 22467 | __extension__ extern __inline uint32x4_t |
22468 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22469 | vmovq_n_u32 (uint32_t __a) |
22470 | { | |
22471 | return vdupq_n_u32 (__a); | |
22472 | } | |
22473 | ||
49ab9992 | 22474 | __extension__ extern __inline uint64x2_t |
22475 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e8e34573 | 22476 | vmovq_n_u64 (uint64_t __a) |
22477 | { | |
22478 | return vdupq_n_u64 (__a); | |
22479 | } | |
22480 | ||
5839dcd4 | 22481 | /* vmul_lane */ |
22482 | ||
49ab9992 | 22483 | __extension__ extern __inline float32x2_t |
22484 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22485 | vmul_lane_f32 (float32x2_t __a, float32x2_t __b, const int __lane) |
22486 | { | |
12e851f9 | 22487 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22488 | } |
22489 | ||
49ab9992 | 22490 | __extension__ extern __inline float64x1_t |
22491 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22492 | vmul_lane_f64 (float64x1_t __a, float64x1_t __b, const int __lane) |
22493 | { | |
22494 | return __a * __b; | |
22495 | } | |
22496 | ||
49ab9992 | 22497 | __extension__ extern __inline int16x4_t |
22498 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22499 | vmul_lane_s16 (int16x4_t __a, int16x4_t __b, const int __lane) |
22500 | { | |
12e851f9 | 22501 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22502 | } |
22503 | ||
49ab9992 | 22504 | __extension__ extern __inline int32x2_t |
22505 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22506 | vmul_lane_s32 (int32x2_t __a, int32x2_t __b, const int __lane) |
22507 | { | |
12e851f9 | 22508 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22509 | } |
22510 | ||
49ab9992 | 22511 | __extension__ extern __inline uint16x4_t |
22512 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22513 | vmul_lane_u16 (uint16x4_t __a, uint16x4_t __b, const int __lane) |
22514 | { | |
12e851f9 | 22515 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22516 | } |
22517 | ||
49ab9992 | 22518 | __extension__ extern __inline uint32x2_t |
22519 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22520 | vmul_lane_u32 (uint32x2_t __a, uint32x2_t __b, const int __lane) |
22521 | { | |
12e851f9 | 22522 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22523 | } |
22524 | ||
1ef25b15 | 22525 | /* vmuld_lane */ |
22526 | ||
49ab9992 | 22527 | __extension__ extern __inline float64_t |
22528 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
1ef25b15 | 22529 | vmuld_lane_f64 (float64_t __a, float64x1_t __b, const int __lane) |
22530 | { | |
12e851f9 | 22531 | return __a * __aarch64_vget_lane_any (__b, __lane); |
1ef25b15 | 22532 | } |
22533 | ||
49ab9992 | 22534 | __extension__ extern __inline float64_t |
22535 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
1ef25b15 | 22536 | vmuld_laneq_f64 (float64_t __a, float64x2_t __b, const int __lane) |
22537 | { | |
12e851f9 | 22538 | return __a * __aarch64_vget_lane_any (__b, __lane); |
1ef25b15 | 22539 | } |
22540 | ||
22541 | /* vmuls_lane */ | |
22542 | ||
49ab9992 | 22543 | __extension__ extern __inline float32_t |
22544 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
1ef25b15 | 22545 | vmuls_lane_f32 (float32_t __a, float32x2_t __b, const int __lane) |
22546 | { | |
12e851f9 | 22547 | return __a * __aarch64_vget_lane_any (__b, __lane); |
1ef25b15 | 22548 | } |
22549 | ||
49ab9992 | 22550 | __extension__ extern __inline float32_t |
22551 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
1ef25b15 | 22552 | vmuls_laneq_f32 (float32_t __a, float32x4_t __b, const int __lane) |
22553 | { | |
12e851f9 | 22554 | return __a * __aarch64_vget_lane_any (__b, __lane); |
1ef25b15 | 22555 | } |
22556 | ||
5839dcd4 | 22557 | /* vmul_laneq */ |
22558 | ||
49ab9992 | 22559 | __extension__ extern __inline float32x2_t |
22560 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22561 | vmul_laneq_f32 (float32x2_t __a, float32x4_t __b, const int __lane) |
22562 | { | |
12e851f9 | 22563 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22564 | } |
22565 | ||
49ab9992 | 22566 | __extension__ extern __inline float64x1_t |
22567 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22568 | vmul_laneq_f64 (float64x1_t __a, float64x2_t __b, const int __lane) |
22569 | { | |
12e851f9 | 22570 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22571 | } |
22572 | ||
49ab9992 | 22573 | __extension__ extern __inline int16x4_t |
22574 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22575 | vmul_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __lane) |
22576 | { | |
12e851f9 | 22577 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22578 | } |
22579 | ||
49ab9992 | 22580 | __extension__ extern __inline int32x2_t |
22581 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22582 | vmul_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __lane) |
22583 | { | |
12e851f9 | 22584 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22585 | } |
22586 | ||
49ab9992 | 22587 | __extension__ extern __inline uint16x4_t |
22588 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22589 | vmul_laneq_u16 (uint16x4_t __a, uint16x8_t __b, const int __lane) |
22590 | { | |
12e851f9 | 22591 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22592 | } |
22593 | ||
49ab9992 | 22594 | __extension__ extern __inline uint32x2_t |
22595 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22596 | vmul_laneq_u32 (uint32x2_t __a, uint32x4_t __b, const int __lane) |
22597 | { | |
12e851f9 | 22598 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22599 | } |
22600 | ||
1ef25b15 | 22601 | /* vmul_n */ |
22602 | ||
49ab9992 | 22603 | __extension__ extern __inline float64x1_t |
22604 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
1ef25b15 | 22605 | vmul_n_f64 (float64x1_t __a, float64_t __b) |
22606 | { | |
22607 | return (float64x1_t) { vget_lane_f64 (__a, 0) * __b }; | |
22608 | } | |
22609 | ||
5839dcd4 | 22610 | /* vmulq_lane */ |
22611 | ||
49ab9992 | 22612 | __extension__ extern __inline float32x4_t |
22613 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22614 | vmulq_lane_f32 (float32x4_t __a, float32x2_t __b, const int __lane) |
22615 | { | |
12e851f9 | 22616 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22617 | } |
22618 | ||
49ab9992 | 22619 | __extension__ extern __inline float64x2_t |
22620 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22621 | vmulq_lane_f64 (float64x2_t __a, float64x1_t __b, const int __lane) |
22622 | { | |
e5827b9c | 22623 | __AARCH64_LANE_CHECK (__a, __lane); |
ac292ff5 | 22624 | return __a * __b[0]; |
5839dcd4 | 22625 | } |
22626 | ||
49ab9992 | 22627 | __extension__ extern __inline int16x8_t |
22628 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22629 | vmulq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __lane) |
22630 | { | |
12e851f9 | 22631 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22632 | } |
22633 | ||
49ab9992 | 22634 | __extension__ extern __inline int32x4_t |
22635 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22636 | vmulq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __lane) |
22637 | { | |
12e851f9 | 22638 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22639 | } |
22640 | ||
49ab9992 | 22641 | __extension__ extern __inline uint16x8_t |
22642 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22643 | vmulq_lane_u16 (uint16x8_t __a, uint16x4_t __b, const int __lane) |
22644 | { | |
12e851f9 | 22645 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22646 | } |
22647 | ||
49ab9992 | 22648 | __extension__ extern __inline uint32x4_t |
22649 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22650 | vmulq_lane_u32 (uint32x4_t __a, uint32x2_t __b, const int __lane) |
22651 | { | |
12e851f9 | 22652 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22653 | } |
22654 | ||
22655 | /* vmulq_laneq */ | |
22656 | ||
49ab9992 | 22657 | __extension__ extern __inline float32x4_t |
22658 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22659 | vmulq_laneq_f32 (float32x4_t __a, float32x4_t __b, const int __lane) |
22660 | { | |
12e851f9 | 22661 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22662 | } |
22663 | ||
49ab9992 | 22664 | __extension__ extern __inline float64x2_t |
22665 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22666 | vmulq_laneq_f64 (float64x2_t __a, float64x2_t __b, const int __lane) |
22667 | { | |
12e851f9 | 22668 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22669 | } |
22670 | ||
49ab9992 | 22671 | __extension__ extern __inline int16x8_t |
22672 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22673 | vmulq_laneq_s16 (int16x8_t __a, int16x8_t __b, const int __lane) |
22674 | { | |
12e851f9 | 22675 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22676 | } |
22677 | ||
49ab9992 | 22678 | __extension__ extern __inline int32x4_t |
22679 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22680 | vmulq_laneq_s32 (int32x4_t __a, int32x4_t __b, const int __lane) |
22681 | { | |
12e851f9 | 22682 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22683 | } |
22684 | ||
49ab9992 | 22685 | __extension__ extern __inline uint16x8_t |
22686 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22687 | vmulq_laneq_u16 (uint16x8_t __a, uint16x8_t __b, const int __lane) |
22688 | { | |
12e851f9 | 22689 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22690 | } |
22691 | ||
49ab9992 | 22692 | __extension__ extern __inline uint32x4_t |
22693 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5839dcd4 | 22694 | vmulq_laneq_u32 (uint32x4_t __a, uint32x4_t __b, const int __lane) |
22695 | { | |
12e851f9 | 22696 | return __a * __aarch64_vget_lane_any (__b, __lane); |
5839dcd4 | 22697 | } |
22698 | ||
25fe08a8 | 22699 | /* vmul_n. */ |
22700 | ||
49ab9992 | 22701 | __extension__ extern __inline float32x2_t |
22702 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
25fe08a8 | 22703 | vmul_n_f32 (float32x2_t __a, float32_t __b) |
22704 | { | |
22705 | return __a * __b; | |
22706 | } | |
22707 | ||
49ab9992 | 22708 | __extension__ extern __inline float32x4_t |
22709 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
25fe08a8 | 22710 | vmulq_n_f32 (float32x4_t __a, float32_t __b) |
22711 | { | |
22712 | return __a * __b; | |
22713 | } | |
22714 | ||
49ab9992 | 22715 | __extension__ extern __inline float64x2_t |
22716 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
25fe08a8 | 22717 | vmulq_n_f64 (float64x2_t __a, float64_t __b) |
22718 | { | |
22719 | return __a * __b; | |
22720 | } | |
22721 | ||
49ab9992 | 22722 | __extension__ extern __inline int16x4_t |
22723 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
25fe08a8 | 22724 | vmul_n_s16 (int16x4_t __a, int16_t __b) |
22725 | { | |
22726 | return __a * __b; | |
22727 | } | |
22728 | ||
49ab9992 | 22729 | __extension__ extern __inline int16x8_t |
22730 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
25fe08a8 | 22731 | vmulq_n_s16 (int16x8_t __a, int16_t __b) |
22732 | { | |
22733 | return __a * __b; | |
22734 | } | |
22735 | ||
49ab9992 | 22736 | __extension__ extern __inline int32x2_t |
22737 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
25fe08a8 | 22738 | vmul_n_s32 (int32x2_t __a, int32_t __b) |
22739 | { | |
22740 | return __a * __b; | |
22741 | } | |
22742 | ||
49ab9992 | 22743 | __extension__ extern __inline int32x4_t |
22744 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
25fe08a8 | 22745 | vmulq_n_s32 (int32x4_t __a, int32_t __b) |
22746 | { | |
22747 | return __a * __b; | |
22748 | } | |
22749 | ||
49ab9992 | 22750 | __extension__ extern __inline uint16x4_t |
22751 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
25fe08a8 | 22752 | vmul_n_u16 (uint16x4_t __a, uint16_t __b) |
22753 | { | |
22754 | return __a * __b; | |
22755 | } | |
22756 | ||
49ab9992 | 22757 | __extension__ extern __inline uint16x8_t |
22758 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
25fe08a8 | 22759 | vmulq_n_u16 (uint16x8_t __a, uint16_t __b) |
22760 | { | |
22761 | return __a * __b; | |
22762 | } | |
22763 | ||
49ab9992 | 22764 | __extension__ extern __inline uint32x2_t |
22765 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
25fe08a8 | 22766 | vmul_n_u32 (uint32x2_t __a, uint32_t __b) |
22767 | { | |
22768 | return __a * __b; | |
22769 | } | |
22770 | ||
49ab9992 | 22771 | __extension__ extern __inline uint32x4_t |
22772 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
25fe08a8 | 22773 | vmulq_n_u32 (uint32x4_t __a, uint32_t __b) |
22774 | { | |
22775 | return __a * __b; | |
22776 | } | |
22777 | ||
7c287afb | 22778 | /* vmvn */ |
22779 | ||
49ab9992 | 22780 | __extension__ extern __inline poly8x8_t |
22781 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7c287afb | 22782 | vmvn_p8 (poly8x8_t __a) |
22783 | { | |
22784 | return (poly8x8_t) ~((int8x8_t) __a); | |
22785 | } | |
22786 | ||
49ab9992 | 22787 | __extension__ extern __inline int8x8_t |
22788 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7c287afb | 22789 | vmvn_s8 (int8x8_t __a) |
22790 | { | |
22791 | return ~__a; | |
22792 | } | |
22793 | ||
49ab9992 | 22794 | __extension__ extern __inline int16x4_t |
22795 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7c287afb | 22796 | vmvn_s16 (int16x4_t __a) |
22797 | { | |
22798 | return ~__a; | |
22799 | } | |
22800 | ||
49ab9992 | 22801 | __extension__ extern __inline int32x2_t |
22802 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7c287afb | 22803 | vmvn_s32 (int32x2_t __a) |
22804 | { | |
22805 | return ~__a; | |
22806 | } | |
22807 | ||
49ab9992 | 22808 | __extension__ extern __inline uint8x8_t |
22809 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7c287afb | 22810 | vmvn_u8 (uint8x8_t __a) |
22811 | { | |
22812 | return ~__a; | |
22813 | } | |
22814 | ||
49ab9992 | 22815 | __extension__ extern __inline uint16x4_t |
22816 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7c287afb | 22817 | vmvn_u16 (uint16x4_t __a) |
22818 | { | |
22819 | return ~__a; | |
22820 | } | |
22821 | ||
49ab9992 | 22822 | __extension__ extern __inline uint32x2_t |
22823 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7c287afb | 22824 | vmvn_u32 (uint32x2_t __a) |
22825 | { | |
22826 | return ~__a; | |
22827 | } | |
22828 | ||
49ab9992 | 22829 | __extension__ extern __inline poly8x16_t |
22830 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7c287afb | 22831 | vmvnq_p8 (poly8x16_t __a) |
22832 | { | |
22833 | return (poly8x16_t) ~((int8x16_t) __a); | |
22834 | } | |
22835 | ||
49ab9992 | 22836 | __extension__ extern __inline int8x16_t |
22837 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7c287afb | 22838 | vmvnq_s8 (int8x16_t __a) |
22839 | { | |
22840 | return ~__a; | |
22841 | } | |
22842 | ||
49ab9992 | 22843 | __extension__ extern __inline int16x8_t |
22844 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7c287afb | 22845 | vmvnq_s16 (int16x8_t __a) |
22846 | { | |
22847 | return ~__a; | |
22848 | } | |
22849 | ||
49ab9992 | 22850 | __extension__ extern __inline int32x4_t |
22851 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7c287afb | 22852 | vmvnq_s32 (int32x4_t __a) |
22853 | { | |
22854 | return ~__a; | |
22855 | } | |
22856 | ||
49ab9992 | 22857 | __extension__ extern __inline uint8x16_t |
22858 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7c287afb | 22859 | vmvnq_u8 (uint8x16_t __a) |
22860 | { | |
22861 | return ~__a; | |
22862 | } | |
22863 | ||
49ab9992 | 22864 | __extension__ extern __inline uint16x8_t |
22865 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7c287afb | 22866 | vmvnq_u16 (uint16x8_t __a) |
22867 | { | |
22868 | return ~__a; | |
22869 | } | |
22870 | ||
49ab9992 | 22871 | __extension__ extern __inline uint32x4_t |
22872 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7c287afb | 22873 | vmvnq_u32 (uint32x4_t __a) |
22874 | { | |
22875 | return ~__a; | |
22876 | } | |
22877 | ||
9d0ab364 | 22878 | /* vneg */ |
22879 | ||
49ab9992 | 22880 | __extension__ extern __inline float32x2_t |
22881 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
9d0ab364 | 22882 | vneg_f32 (float32x2_t __a) |
22883 | { | |
22884 | return -__a; | |
22885 | } | |
22886 | ||
49ab9992 | 22887 | __extension__ extern __inline float64x1_t |
22888 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
9d0ab364 | 22889 | vneg_f64 (float64x1_t __a) |
22890 | { | |
22891 | return -__a; | |
22892 | } | |
22893 | ||
49ab9992 | 22894 | __extension__ extern __inline int8x8_t |
22895 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
9d0ab364 | 22896 | vneg_s8 (int8x8_t __a) |
22897 | { | |
22898 | return -__a; | |
22899 | } | |
22900 | ||
49ab9992 | 22901 | __extension__ extern __inline int16x4_t |
22902 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
9d0ab364 | 22903 | vneg_s16 (int16x4_t __a) |
22904 | { | |
22905 | return -__a; | |
22906 | } | |
22907 | ||
49ab9992 | 22908 | __extension__ extern __inline int32x2_t |
22909 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
9d0ab364 | 22910 | vneg_s32 (int32x2_t __a) |
22911 | { | |
22912 | return -__a; | |
22913 | } | |
22914 | ||
49ab9992 | 22915 | __extension__ extern __inline int64x1_t |
22916 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
9d0ab364 | 22917 | vneg_s64 (int64x1_t __a) |
22918 | { | |
22919 | return -__a; | |
22920 | } | |
22921 | ||
0d7050df | 22922 | /* According to the ACLE, the negative of the minimum (signed) |
22923 | value is itself. This leads to a semantics mismatch, as this is | |
22924 | undefined behaviour in C. The value range predictor is not | |
22925 | aware that the negation of a negative number can still be negative | |
22926 | and it may try to fold the expression. See the test in | |
22927 | gcc.target/aarch64/vnegd_s64.c for an example. | |
22928 | ||
22929 | The cast below tricks the value range predictor to include | |
22930 | INT64_MIN in the range it computes. So for x in the range | |
22931 | [INT64_MIN, y] the range prediction after vnegd_s64 (x) will | |
22932 | be ~[INT64_MIN + 1, y]. */ | |
22933 | ||
22934 | __extension__ extern __inline int64_t | |
22935 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
22936 | vnegd_s64 (int64_t __a) | |
22937 | { | |
22938 | return - (uint64_t) __a; | |
22939 | } | |
22940 | ||
49ab9992 | 22941 | __extension__ extern __inline float32x4_t |
22942 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
9d0ab364 | 22943 | vnegq_f32 (float32x4_t __a) |
22944 | { | |
22945 | return -__a; | |
22946 | } | |
22947 | ||
49ab9992 | 22948 | __extension__ extern __inline float64x2_t |
22949 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
9d0ab364 | 22950 | vnegq_f64 (float64x2_t __a) |
22951 | { | |
22952 | return -__a; | |
22953 | } | |
22954 | ||
49ab9992 | 22955 | __extension__ extern __inline int8x16_t |
22956 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
9d0ab364 | 22957 | vnegq_s8 (int8x16_t __a) |
22958 | { | |
22959 | return -__a; | |
22960 | } | |
22961 | ||
49ab9992 | 22962 | __extension__ extern __inline int16x8_t |
22963 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
9d0ab364 | 22964 | vnegq_s16 (int16x8_t __a) |
22965 | { | |
22966 | return -__a; | |
22967 | } | |
22968 | ||
49ab9992 | 22969 | __extension__ extern __inline int32x4_t |
22970 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
9d0ab364 | 22971 | vnegq_s32 (int32x4_t __a) |
22972 | { | |
22973 | return -__a; | |
22974 | } | |
22975 | ||
49ab9992 | 22976 | __extension__ extern __inline int64x2_t |
22977 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
9d0ab364 | 22978 | vnegq_s64 (int64x2_t __a) |
22979 | { | |
22980 | return -__a; | |
22981 | } | |
22982 | ||
0bd30463 | 22983 | /* vpadd */ |
22984 | ||
49ab9992 | 22985 | __extension__ extern __inline float32x2_t |
22986 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
bcc64342 | 22987 | vpadd_f32 (float32x2_t __a, float32x2_t __b) |
22988 | { | |
22989 | return __builtin_aarch64_faddpv2sf (__a, __b); | |
22990 | } | |
22991 | ||
49ab9992 | 22992 | __extension__ extern __inline float32x4_t |
22993 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
bcc64342 | 22994 | vpaddq_f32 (float32x4_t __a, float32x4_t __b) |
22995 | { | |
22996 | return __builtin_aarch64_faddpv4sf (__a, __b); | |
22997 | } | |
22998 | ||
49ab9992 | 22999 | __extension__ extern __inline float64x2_t |
23000 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
bcc64342 | 23001 | vpaddq_f64 (float64x2_t __a, float64x2_t __b) |
23002 | { | |
23003 | return __builtin_aarch64_faddpv2df (__a, __b); | |
23004 | } | |
23005 | ||
49ab9992 | 23006 | __extension__ extern __inline int8x8_t |
23007 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0bd30463 | 23008 | vpadd_s8 (int8x8_t __a, int8x8_t __b) |
23009 | { | |
23010 | return __builtin_aarch64_addpv8qi (__a, __b); | |
23011 | } | |
23012 | ||
49ab9992 | 23013 | __extension__ extern __inline int16x4_t |
23014 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0bd30463 | 23015 | vpadd_s16 (int16x4_t __a, int16x4_t __b) |
23016 | { | |
23017 | return __builtin_aarch64_addpv4hi (__a, __b); | |
23018 | } | |
23019 | ||
49ab9992 | 23020 | __extension__ extern __inline int32x2_t |
23021 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0bd30463 | 23022 | vpadd_s32 (int32x2_t __a, int32x2_t __b) |
23023 | { | |
23024 | return __builtin_aarch64_addpv2si (__a, __b); | |
23025 | } | |
23026 | ||
49ab9992 | 23027 | __extension__ extern __inline uint8x8_t |
23028 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0bd30463 | 23029 | vpadd_u8 (uint8x8_t __a, uint8x8_t __b) |
23030 | { | |
23031 | return (uint8x8_t) __builtin_aarch64_addpv8qi ((int8x8_t) __a, | |
23032 | (int8x8_t) __b); | |
23033 | } | |
23034 | ||
49ab9992 | 23035 | __extension__ extern __inline uint16x4_t |
23036 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0bd30463 | 23037 | vpadd_u16 (uint16x4_t __a, uint16x4_t __b) |
23038 | { | |
23039 | return (uint16x4_t) __builtin_aarch64_addpv4hi ((int16x4_t) __a, | |
23040 | (int16x4_t) __b); | |
23041 | } | |
23042 | ||
49ab9992 | 23043 | __extension__ extern __inline uint32x2_t |
23044 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0bd30463 | 23045 | vpadd_u32 (uint32x2_t __a, uint32x2_t __b) |
23046 | { | |
23047 | return (uint32x2_t) __builtin_aarch64_addpv2si ((int32x2_t) __a, | |
23048 | (int32x2_t) __b); | |
23049 | } | |
23050 | ||
49ab9992 | 23051 | __extension__ extern __inline float32_t |
23052 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
bcc64342 | 23053 | vpadds_f32 (float32x2_t __a) |
23054 | { | |
23055 | return __builtin_aarch64_reduc_plus_scal_v2sf (__a); | |
23056 | } | |
23057 | ||
49ab9992 | 23058 | __extension__ extern __inline float64_t |
23059 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0bd30463 | 23060 | vpaddd_f64 (float64x2_t __a) |
23061 | { | |
06329b36 | 23062 | return __builtin_aarch64_reduc_plus_scal_v2df (__a); |
0bd30463 | 23063 | } |
23064 | ||
49ab9992 | 23065 | __extension__ extern __inline int64_t |
23066 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0bd30463 | 23067 | vpaddd_s64 (int64x2_t __a) |
23068 | { | |
23069 | return __builtin_aarch64_addpdi (__a); | |
23070 | } | |
23071 | ||
49ab9992 | 23072 | __extension__ extern __inline uint64_t |
23073 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0bd30463 | 23074 | vpaddd_u64 (uint64x2_t __a) |
23075 | { | |
23076 | return __builtin_aarch64_addpdi ((int64x2_t) __a); | |
23077 | } | |
23078 | ||
df401d54 | 23079 | /* vqabs */ |
23080 | ||
49ab9992 | 23081 | __extension__ extern __inline int64x2_t |
23082 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23083 | vqabsq_s64 (int64x2_t __a) |
23084 | { | |
23085 | return (int64x2_t) __builtin_aarch64_sqabsv2di (__a); | |
23086 | } | |
23087 | ||
49ab9992 | 23088 | __extension__ extern __inline int8_t |
23089 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23090 | vqabsb_s8 (int8_t __a) |
df401d54 | 23091 | { |
857e182a | 23092 | return (int8_t) __builtin_aarch64_sqabsqi (__a); |
df401d54 | 23093 | } |
23094 | ||
49ab9992 | 23095 | __extension__ extern __inline int16_t |
23096 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23097 | vqabsh_s16 (int16_t __a) |
df401d54 | 23098 | { |
857e182a | 23099 | return (int16_t) __builtin_aarch64_sqabshi (__a); |
df401d54 | 23100 | } |
23101 | ||
49ab9992 | 23102 | __extension__ extern __inline int32_t |
23103 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23104 | vqabss_s32 (int32_t __a) |
df401d54 | 23105 | { |
857e182a | 23106 | return (int32_t) __builtin_aarch64_sqabssi (__a); |
df401d54 | 23107 | } |
23108 | ||
49ab9992 | 23109 | __extension__ extern __inline int64_t |
23110 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a9aae8ec | 23111 | vqabsd_s64 (int64_t __a) |
23112 | { | |
23113 | return __builtin_aarch64_sqabsdi (__a); | |
23114 | } | |
23115 | ||
df401d54 | 23116 | /* vqadd */ |
23117 | ||
49ab9992 | 23118 | __extension__ extern __inline int8_t |
23119 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23120 | vqaddb_s8 (int8_t __a, int8_t __b) |
df401d54 | 23121 | { |
857e182a | 23122 | return (int8_t) __builtin_aarch64_sqaddqi (__a, __b); |
df401d54 | 23123 | } |
23124 | ||
49ab9992 | 23125 | __extension__ extern __inline int16_t |
23126 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23127 | vqaddh_s16 (int16_t __a, int16_t __b) |
df401d54 | 23128 | { |
857e182a | 23129 | return (int16_t) __builtin_aarch64_sqaddhi (__a, __b); |
df401d54 | 23130 | } |
23131 | ||
49ab9992 | 23132 | __extension__ extern __inline int32_t |
23133 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23134 | vqadds_s32 (int32_t __a, int32_t __b) |
df401d54 | 23135 | { |
857e182a | 23136 | return (int32_t) __builtin_aarch64_sqaddsi (__a, __b); |
df401d54 | 23137 | } |
23138 | ||
49ab9992 | 23139 | __extension__ extern __inline int64_t |
23140 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 23141 | vqaddd_s64 (int64_t __a, int64_t __b) |
df401d54 | 23142 | { |
12fc7207 | 23143 | return __builtin_aarch64_sqadddi (__a, __b); |
df401d54 | 23144 | } |
23145 | ||
49ab9992 | 23146 | __extension__ extern __inline uint8_t |
23147 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23148 | vqaddb_u8 (uint8_t __a, uint8_t __b) |
df401d54 | 23149 | { |
857e182a | 23150 | return (uint8_t) __builtin_aarch64_uqaddqi_uuu (__a, __b); |
df401d54 | 23151 | } |
23152 | ||
49ab9992 | 23153 | __extension__ extern __inline uint16_t |
23154 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23155 | vqaddh_u16 (uint16_t __a, uint16_t __b) |
df401d54 | 23156 | { |
857e182a | 23157 | return (uint16_t) __builtin_aarch64_uqaddhi_uuu (__a, __b); |
df401d54 | 23158 | } |
23159 | ||
49ab9992 | 23160 | __extension__ extern __inline uint32_t |
23161 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23162 | vqadds_u32 (uint32_t __a, uint32_t __b) |
df401d54 | 23163 | { |
857e182a | 23164 | return (uint32_t) __builtin_aarch64_uqaddsi_uuu (__a, __b); |
df401d54 | 23165 | } |
23166 | ||
49ab9992 | 23167 | __extension__ extern __inline uint64_t |
23168 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 23169 | vqaddd_u64 (uint64_t __a, uint64_t __b) |
df401d54 | 23170 | { |
12fc7207 | 23171 | return __builtin_aarch64_uqadddi_uuu (__a, __b); |
df401d54 | 23172 | } |
23173 | ||
23174 | /* vqdmlal */ | |
23175 | ||
49ab9992 | 23176 | __extension__ extern __inline int32x4_t |
23177 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23178 | vqdmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c) |
23179 | { | |
23180 | return __builtin_aarch64_sqdmlalv4hi (__a, __b, __c); | |
23181 | } | |
23182 | ||
49ab9992 | 23183 | __extension__ extern __inline int32x4_t |
23184 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23185 | vqdmlal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c) |
23186 | { | |
23187 | return __builtin_aarch64_sqdmlal2v8hi (__a, __b, __c); | |
23188 | } | |
23189 | ||
49ab9992 | 23190 | __extension__ extern __inline int32x4_t |
23191 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c7a2a326 | 23192 | vqdmlal_high_lane_s16 (int32x4_t __a, int16x8_t __b, int16x4_t __c, |
df401d54 | 23193 | int const __d) |
23194 | { | |
23195 | return __builtin_aarch64_sqdmlal2_lanev8hi (__a, __b, __c, __d); | |
23196 | } | |
23197 | ||
49ab9992 | 23198 | __extension__ extern __inline int32x4_t |
23199 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23200 | vqdmlal_high_laneq_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c, |
23201 | int const __d) | |
23202 | { | |
23203 | return __builtin_aarch64_sqdmlal2_laneqv8hi (__a, __b, __c, __d); | |
23204 | } | |
23205 | ||
49ab9992 | 23206 | __extension__ extern __inline int32x4_t |
23207 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23208 | vqdmlal_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c) |
23209 | { | |
23210 | return __builtin_aarch64_sqdmlal2_nv8hi (__a, __b, __c); | |
23211 | } | |
23212 | ||
49ab9992 | 23213 | __extension__ extern __inline int32x4_t |
23214 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23215 | vqdmlal_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c, int const __d) |
23216 | { | |
c7a2a326 | 23217 | return __builtin_aarch64_sqdmlal_lanev4hi (__a, __b, __c, __d); |
df401d54 | 23218 | } |
23219 | ||
49ab9992 | 23220 | __extension__ extern __inline int32x4_t |
23221 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23222 | vqdmlal_laneq_s16 (int32x4_t __a, int16x4_t __b, int16x8_t __c, int const __d) |
23223 | { | |
23224 | return __builtin_aarch64_sqdmlal_laneqv4hi (__a, __b, __c, __d); | |
23225 | } | |
23226 | ||
49ab9992 | 23227 | __extension__ extern __inline int32x4_t |
23228 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23229 | vqdmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c) |
23230 | { | |
23231 | return __builtin_aarch64_sqdmlal_nv4hi (__a, __b, __c); | |
23232 | } | |
23233 | ||
49ab9992 | 23234 | __extension__ extern __inline int64x2_t |
23235 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23236 | vqdmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c) |
23237 | { | |
23238 | return __builtin_aarch64_sqdmlalv2si (__a, __b, __c); | |
23239 | } | |
23240 | ||
49ab9992 | 23241 | __extension__ extern __inline int64x2_t |
23242 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23243 | vqdmlal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c) |
23244 | { | |
23245 | return __builtin_aarch64_sqdmlal2v4si (__a, __b, __c); | |
23246 | } | |
23247 | ||
49ab9992 | 23248 | __extension__ extern __inline int64x2_t |
23249 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c7a2a326 | 23250 | vqdmlal_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x2_t __c, |
df401d54 | 23251 | int const __d) |
23252 | { | |
23253 | return __builtin_aarch64_sqdmlal2_lanev4si (__a, __b, __c, __d); | |
23254 | } | |
23255 | ||
49ab9992 | 23256 | __extension__ extern __inline int64x2_t |
23257 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23258 | vqdmlal_high_laneq_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c, |
23259 | int const __d) | |
23260 | { | |
23261 | return __builtin_aarch64_sqdmlal2_laneqv4si (__a, __b, __c, __d); | |
23262 | } | |
23263 | ||
49ab9992 | 23264 | __extension__ extern __inline int64x2_t |
23265 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23266 | vqdmlal_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c) |
23267 | { | |
23268 | return __builtin_aarch64_sqdmlal2_nv4si (__a, __b, __c); | |
23269 | } | |
23270 | ||
49ab9992 | 23271 | __extension__ extern __inline int64x2_t |
23272 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23273 | vqdmlal_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c, int const __d) |
23274 | { | |
c7a2a326 | 23275 | return __builtin_aarch64_sqdmlal_lanev2si (__a, __b, __c, __d); |
df401d54 | 23276 | } |
23277 | ||
49ab9992 | 23278 | __extension__ extern __inline int64x2_t |
23279 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23280 | vqdmlal_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __c, int const __d) |
23281 | { | |
23282 | return __builtin_aarch64_sqdmlal_laneqv2si (__a, __b, __c, __d); | |
23283 | } | |
23284 | ||
49ab9992 | 23285 | __extension__ extern __inline int64x2_t |
23286 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23287 | vqdmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c) |
23288 | { | |
23289 | return __builtin_aarch64_sqdmlal_nv2si (__a, __b, __c); | |
23290 | } | |
23291 | ||
49ab9992 | 23292 | __extension__ extern __inline int32_t |
23293 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23294 | vqdmlalh_s16 (int32_t __a, int16_t __b, int16_t __c) |
df401d54 | 23295 | { |
23296 | return __builtin_aarch64_sqdmlalhi (__a, __b, __c); | |
23297 | } | |
23298 | ||
49ab9992 | 23299 | __extension__ extern __inline int32_t |
23300 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23301 | vqdmlalh_lane_s16 (int32_t __a, int16_t __b, int16x4_t __c, const int __d) |
df401d54 | 23302 | { |
23303 | return __builtin_aarch64_sqdmlal_lanehi (__a, __b, __c, __d); | |
23304 | } | |
23305 | ||
49ab9992 | 23306 | __extension__ extern __inline int32_t |
23307 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ac016904 | 23308 | vqdmlalh_laneq_s16 (int32_t __a, int16_t __b, int16x8_t __c, const int __d) |
23309 | { | |
23310 | return __builtin_aarch64_sqdmlal_laneqhi (__a, __b, __c, __d); | |
23311 | } | |
23312 | ||
49ab9992 | 23313 | __extension__ extern __inline int64_t |
23314 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23315 | vqdmlals_s32 (int64_t __a, int32_t __b, int32_t __c) |
df401d54 | 23316 | { |
23317 | return __builtin_aarch64_sqdmlalsi (__a, __b, __c); | |
23318 | } | |
23319 | ||
49ab9992 | 23320 | __extension__ extern __inline int64_t |
23321 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0fe55bba | 23322 | vqdmlals_lane_s32 (int64_t __a, int32_t __b, int32x2_t __c, const int __d) |
df401d54 | 23323 | { |
0fe55bba | 23324 | return __builtin_aarch64_sqdmlal_lanesi (__a, __b, __c, __d); |
df401d54 | 23325 | } |
23326 | ||
49ab9992 | 23327 | __extension__ extern __inline int64_t |
23328 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ac016904 | 23329 | vqdmlals_laneq_s32 (int64_t __a, int32_t __b, int32x4_t __c, const int __d) |
23330 | { | |
23331 | return __builtin_aarch64_sqdmlal_laneqsi (__a, __b, __c, __d); | |
23332 | } | |
23333 | ||
df401d54 | 23334 | /* vqdmlsl */ |
23335 | ||
49ab9992 | 23336 | __extension__ extern __inline int32x4_t |
23337 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23338 | vqdmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c) |
23339 | { | |
23340 | return __builtin_aarch64_sqdmlslv4hi (__a, __b, __c); | |
23341 | } | |
23342 | ||
49ab9992 | 23343 | __extension__ extern __inline int32x4_t |
23344 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23345 | vqdmlsl_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c) |
23346 | { | |
23347 | return __builtin_aarch64_sqdmlsl2v8hi (__a, __b, __c); | |
23348 | } | |
23349 | ||
49ab9992 | 23350 | __extension__ extern __inline int32x4_t |
23351 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c7a2a326 | 23352 | vqdmlsl_high_lane_s16 (int32x4_t __a, int16x8_t __b, int16x4_t __c, |
df401d54 | 23353 | int const __d) |
23354 | { | |
23355 | return __builtin_aarch64_sqdmlsl2_lanev8hi (__a, __b, __c, __d); | |
23356 | } | |
23357 | ||
49ab9992 | 23358 | __extension__ extern __inline int32x4_t |
23359 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23360 | vqdmlsl_high_laneq_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c, |
23361 | int const __d) | |
23362 | { | |
23363 | return __builtin_aarch64_sqdmlsl2_laneqv8hi (__a, __b, __c, __d); | |
23364 | } | |
23365 | ||
49ab9992 | 23366 | __extension__ extern __inline int32x4_t |
23367 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23368 | vqdmlsl_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c) |
23369 | { | |
23370 | return __builtin_aarch64_sqdmlsl2_nv8hi (__a, __b, __c); | |
23371 | } | |
23372 | ||
49ab9992 | 23373 | __extension__ extern __inline int32x4_t |
23374 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23375 | vqdmlsl_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c, int const __d) |
23376 | { | |
c7a2a326 | 23377 | return __builtin_aarch64_sqdmlsl_lanev4hi (__a, __b, __c, __d); |
df401d54 | 23378 | } |
23379 | ||
49ab9992 | 23380 | __extension__ extern __inline int32x4_t |
23381 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23382 | vqdmlsl_laneq_s16 (int32x4_t __a, int16x4_t __b, int16x8_t __c, int const __d) |
23383 | { | |
23384 | return __builtin_aarch64_sqdmlsl_laneqv4hi (__a, __b, __c, __d); | |
23385 | } | |
23386 | ||
49ab9992 | 23387 | __extension__ extern __inline int32x4_t |
23388 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23389 | vqdmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c) |
23390 | { | |
23391 | return __builtin_aarch64_sqdmlsl_nv4hi (__a, __b, __c); | |
23392 | } | |
23393 | ||
49ab9992 | 23394 | __extension__ extern __inline int64x2_t |
23395 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23396 | vqdmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c) |
23397 | { | |
23398 | return __builtin_aarch64_sqdmlslv2si (__a, __b, __c); | |
23399 | } | |
23400 | ||
49ab9992 | 23401 | __extension__ extern __inline int64x2_t |
23402 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23403 | vqdmlsl_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c) |
23404 | { | |
23405 | return __builtin_aarch64_sqdmlsl2v4si (__a, __b, __c); | |
23406 | } | |
23407 | ||
49ab9992 | 23408 | __extension__ extern __inline int64x2_t |
23409 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c7a2a326 | 23410 | vqdmlsl_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x2_t __c, |
df401d54 | 23411 | int const __d) |
23412 | { | |
23413 | return __builtin_aarch64_sqdmlsl2_lanev4si (__a, __b, __c, __d); | |
23414 | } | |
23415 | ||
49ab9992 | 23416 | __extension__ extern __inline int64x2_t |
23417 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23418 | vqdmlsl_high_laneq_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c, |
23419 | int const __d) | |
23420 | { | |
23421 | return __builtin_aarch64_sqdmlsl2_laneqv4si (__a, __b, __c, __d); | |
23422 | } | |
23423 | ||
49ab9992 | 23424 | __extension__ extern __inline int64x2_t |
23425 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23426 | vqdmlsl_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c) |
23427 | { | |
23428 | return __builtin_aarch64_sqdmlsl2_nv4si (__a, __b, __c); | |
23429 | } | |
23430 | ||
49ab9992 | 23431 | __extension__ extern __inline int64x2_t |
23432 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23433 | vqdmlsl_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c, int const __d) |
23434 | { | |
c7a2a326 | 23435 | return __builtin_aarch64_sqdmlsl_lanev2si (__a, __b, __c, __d); |
df401d54 | 23436 | } |
23437 | ||
49ab9992 | 23438 | __extension__ extern __inline int64x2_t |
23439 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23440 | vqdmlsl_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __c, int const __d) |
23441 | { | |
23442 | return __builtin_aarch64_sqdmlsl_laneqv2si (__a, __b, __c, __d); | |
23443 | } | |
23444 | ||
49ab9992 | 23445 | __extension__ extern __inline int64x2_t |
23446 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23447 | vqdmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c) |
23448 | { | |
23449 | return __builtin_aarch64_sqdmlsl_nv2si (__a, __b, __c); | |
23450 | } | |
23451 | ||
49ab9992 | 23452 | __extension__ extern __inline int32_t |
23453 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23454 | vqdmlslh_s16 (int32_t __a, int16_t __b, int16_t __c) |
df401d54 | 23455 | { |
23456 | return __builtin_aarch64_sqdmlslhi (__a, __b, __c); | |
23457 | } | |
23458 | ||
49ab9992 | 23459 | __extension__ extern __inline int32_t |
23460 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23461 | vqdmlslh_lane_s16 (int32_t __a, int16_t __b, int16x4_t __c, const int __d) |
df401d54 | 23462 | { |
23463 | return __builtin_aarch64_sqdmlsl_lanehi (__a, __b, __c, __d); | |
23464 | } | |
23465 | ||
49ab9992 | 23466 | __extension__ extern __inline int32_t |
23467 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ac016904 | 23468 | vqdmlslh_laneq_s16 (int32_t __a, int16_t __b, int16x8_t __c, const int __d) |
23469 | { | |
23470 | return __builtin_aarch64_sqdmlsl_laneqhi (__a, __b, __c, __d); | |
23471 | } | |
23472 | ||
49ab9992 | 23473 | __extension__ extern __inline int64_t |
23474 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23475 | vqdmlsls_s32 (int64_t __a, int32_t __b, int32_t __c) |
df401d54 | 23476 | { |
23477 | return __builtin_aarch64_sqdmlslsi (__a, __b, __c); | |
23478 | } | |
23479 | ||
49ab9992 | 23480 | __extension__ extern __inline int64_t |
23481 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0fe55bba | 23482 | vqdmlsls_lane_s32 (int64_t __a, int32_t __b, int32x2_t __c, const int __d) |
df401d54 | 23483 | { |
0fe55bba | 23484 | return __builtin_aarch64_sqdmlsl_lanesi (__a, __b, __c, __d); |
df401d54 | 23485 | } |
23486 | ||
49ab9992 | 23487 | __extension__ extern __inline int64_t |
23488 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ac016904 | 23489 | vqdmlsls_laneq_s32 (int64_t __a, int32_t __b, int32x4_t __c, const int __d) |
23490 | { | |
23491 | return __builtin_aarch64_sqdmlsl_laneqsi (__a, __b, __c, __d); | |
23492 | } | |
23493 | ||
df401d54 | 23494 | /* vqdmulh */ |
23495 | ||
49ab9992 | 23496 | __extension__ extern __inline int16x4_t |
23497 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23498 | vqdmulh_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c) |
23499 | { | |
431fc079 | 23500 | return __builtin_aarch64_sqdmulh_lanev4hi (__a, __b, __c); |
df401d54 | 23501 | } |
23502 | ||
49ab9992 | 23503 | __extension__ extern __inline int32x2_t |
23504 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23505 | vqdmulh_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c) |
23506 | { | |
431fc079 | 23507 | return __builtin_aarch64_sqdmulh_lanev2si (__a, __b, __c); |
df401d54 | 23508 | } |
23509 | ||
49ab9992 | 23510 | __extension__ extern __inline int16x8_t |
23511 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23512 | vqdmulhq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __c) |
23513 | { | |
431fc079 | 23514 | return __builtin_aarch64_sqdmulh_lanev8hi (__a, __b, __c); |
df401d54 | 23515 | } |
23516 | ||
49ab9992 | 23517 | __extension__ extern __inline int32x4_t |
23518 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23519 | vqdmulhq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __c) |
23520 | { | |
431fc079 | 23521 | return __builtin_aarch64_sqdmulh_lanev4si (__a, __b, __c); |
df401d54 | 23522 | } |
23523 | ||
49ab9992 | 23524 | __extension__ extern __inline int16_t |
23525 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23526 | vqdmulhh_s16 (int16_t __a, int16_t __b) |
df401d54 | 23527 | { |
857e182a | 23528 | return (int16_t) __builtin_aarch64_sqdmulhhi (__a, __b); |
df401d54 | 23529 | } |
23530 | ||
49ab9992 | 23531 | __extension__ extern __inline int16_t |
23532 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23533 | vqdmulhh_lane_s16 (int16_t __a, int16x4_t __b, const int __c) |
df401d54 | 23534 | { |
23535 | return __builtin_aarch64_sqdmulh_lanehi (__a, __b, __c); | |
23536 | } | |
23537 | ||
49ab9992 | 23538 | __extension__ extern __inline int16_t |
23539 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ac016904 | 23540 | vqdmulhh_laneq_s16 (int16_t __a, int16x8_t __b, const int __c) |
23541 | { | |
23542 | return __builtin_aarch64_sqdmulh_laneqhi (__a, __b, __c); | |
23543 | } | |
23544 | ||
49ab9992 | 23545 | __extension__ extern __inline int32_t |
23546 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23547 | vqdmulhs_s32 (int32_t __a, int32_t __b) |
df401d54 | 23548 | { |
857e182a | 23549 | return (int32_t) __builtin_aarch64_sqdmulhsi (__a, __b); |
df401d54 | 23550 | } |
23551 | ||
49ab9992 | 23552 | __extension__ extern __inline int32_t |
23553 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23554 | vqdmulhs_lane_s32 (int32_t __a, int32x2_t __b, const int __c) |
df401d54 | 23555 | { |
23556 | return __builtin_aarch64_sqdmulh_lanesi (__a, __b, __c); | |
23557 | } | |
23558 | ||
49ab9992 | 23559 | __extension__ extern __inline int32_t |
23560 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ac016904 | 23561 | vqdmulhs_laneq_s32 (int32_t __a, int32x4_t __b, const int __c) |
23562 | { | |
23563 | return __builtin_aarch64_sqdmulh_laneqsi (__a, __b, __c); | |
23564 | } | |
23565 | ||
df401d54 | 23566 | /* vqdmull */ |
23567 | ||
49ab9992 | 23568 | __extension__ extern __inline int32x4_t |
23569 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23570 | vqdmull_s16 (int16x4_t __a, int16x4_t __b) |
23571 | { | |
23572 | return __builtin_aarch64_sqdmullv4hi (__a, __b); | |
23573 | } | |
23574 | ||
49ab9992 | 23575 | __extension__ extern __inline int32x4_t |
23576 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23577 | vqdmull_high_s16 (int16x8_t __a, int16x8_t __b) |
23578 | { | |
23579 | return __builtin_aarch64_sqdmull2v8hi (__a, __b); | |
23580 | } | |
23581 | ||
49ab9992 | 23582 | __extension__ extern __inline int32x4_t |
23583 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c7a2a326 | 23584 | vqdmull_high_lane_s16 (int16x8_t __a, int16x4_t __b, int const __c) |
df401d54 | 23585 | { |
23586 | return __builtin_aarch64_sqdmull2_lanev8hi (__a, __b,__c); | |
23587 | } | |
23588 | ||
49ab9992 | 23589 | __extension__ extern __inline int32x4_t |
23590 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23591 | vqdmull_high_laneq_s16 (int16x8_t __a, int16x8_t __b, int const __c) |
23592 | { | |
23593 | return __builtin_aarch64_sqdmull2_laneqv8hi (__a, __b,__c); | |
23594 | } | |
23595 | ||
49ab9992 | 23596 | __extension__ extern __inline int32x4_t |
23597 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23598 | vqdmull_high_n_s16 (int16x8_t __a, int16_t __b) |
23599 | { | |
23600 | return __builtin_aarch64_sqdmull2_nv8hi (__a, __b); | |
23601 | } | |
23602 | ||
49ab9992 | 23603 | __extension__ extern __inline int32x4_t |
23604 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23605 | vqdmull_lane_s16 (int16x4_t __a, int16x4_t __b, int const __c) |
23606 | { | |
c7a2a326 | 23607 | return __builtin_aarch64_sqdmull_lanev4hi (__a, __b, __c); |
df401d54 | 23608 | } |
23609 | ||
49ab9992 | 23610 | __extension__ extern __inline int32x4_t |
23611 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23612 | vqdmull_laneq_s16 (int16x4_t __a, int16x8_t __b, int const __c) |
23613 | { | |
23614 | return __builtin_aarch64_sqdmull_laneqv4hi (__a, __b, __c); | |
23615 | } | |
23616 | ||
49ab9992 | 23617 | __extension__ extern __inline int32x4_t |
23618 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23619 | vqdmull_n_s16 (int16x4_t __a, int16_t __b) |
23620 | { | |
23621 | return __builtin_aarch64_sqdmull_nv4hi (__a, __b); | |
23622 | } | |
23623 | ||
49ab9992 | 23624 | __extension__ extern __inline int64x2_t |
23625 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23626 | vqdmull_s32 (int32x2_t __a, int32x2_t __b) |
23627 | { | |
23628 | return __builtin_aarch64_sqdmullv2si (__a, __b); | |
23629 | } | |
23630 | ||
49ab9992 | 23631 | __extension__ extern __inline int64x2_t |
23632 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23633 | vqdmull_high_s32 (int32x4_t __a, int32x4_t __b) |
23634 | { | |
23635 | return __builtin_aarch64_sqdmull2v4si (__a, __b); | |
23636 | } | |
23637 | ||
49ab9992 | 23638 | __extension__ extern __inline int64x2_t |
23639 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
c7a2a326 | 23640 | vqdmull_high_lane_s32 (int32x4_t __a, int32x2_t __b, int const __c) |
df401d54 | 23641 | { |
23642 | return __builtin_aarch64_sqdmull2_lanev4si (__a, __b, __c); | |
23643 | } | |
23644 | ||
49ab9992 | 23645 | __extension__ extern __inline int64x2_t |
23646 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23647 | vqdmull_high_laneq_s32 (int32x4_t __a, int32x4_t __b, int const __c) |
23648 | { | |
23649 | return __builtin_aarch64_sqdmull2_laneqv4si (__a, __b, __c); | |
23650 | } | |
23651 | ||
49ab9992 | 23652 | __extension__ extern __inline int64x2_t |
23653 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23654 | vqdmull_high_n_s32 (int32x4_t __a, int32_t __b) |
23655 | { | |
23656 | return __builtin_aarch64_sqdmull2_nv4si (__a, __b); | |
23657 | } | |
23658 | ||
49ab9992 | 23659 | __extension__ extern __inline int64x2_t |
23660 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23661 | vqdmull_lane_s32 (int32x2_t __a, int32x2_t __b, int const __c) |
23662 | { | |
c7a2a326 | 23663 | return __builtin_aarch64_sqdmull_lanev2si (__a, __b, __c); |
df401d54 | 23664 | } |
23665 | ||
49ab9992 | 23666 | __extension__ extern __inline int64x2_t |
23667 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23668 | vqdmull_laneq_s32 (int32x2_t __a, int32x4_t __b, int const __c) |
23669 | { | |
23670 | return __builtin_aarch64_sqdmull_laneqv2si (__a, __b, __c); | |
23671 | } | |
23672 | ||
49ab9992 | 23673 | __extension__ extern __inline int64x2_t |
23674 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23675 | vqdmull_n_s32 (int32x2_t __a, int32_t __b) |
23676 | { | |
23677 | return __builtin_aarch64_sqdmull_nv2si (__a, __b); | |
23678 | } | |
23679 | ||
49ab9992 | 23680 | __extension__ extern __inline int32_t |
23681 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23682 | vqdmullh_s16 (int16_t __a, int16_t __b) |
df401d54 | 23683 | { |
857e182a | 23684 | return (int32_t) __builtin_aarch64_sqdmullhi (__a, __b); |
df401d54 | 23685 | } |
23686 | ||
49ab9992 | 23687 | __extension__ extern __inline int32_t |
23688 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23689 | vqdmullh_lane_s16 (int16_t __a, int16x4_t __b, const int __c) |
df401d54 | 23690 | { |
23691 | return __builtin_aarch64_sqdmull_lanehi (__a, __b, __c); | |
23692 | } | |
23693 | ||
49ab9992 | 23694 | __extension__ extern __inline int32_t |
23695 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4a7e7de5 | 23696 | vqdmullh_laneq_s16 (int16_t __a, int16x8_t __b, const int __c) |
23697 | { | |
23698 | return __builtin_aarch64_sqdmull_laneqhi (__a, __b, __c); | |
23699 | } | |
23700 | ||
49ab9992 | 23701 | __extension__ extern __inline int64_t |
23702 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23703 | vqdmulls_s32 (int32_t __a, int32_t __b) |
df401d54 | 23704 | { |
12fc7207 | 23705 | return __builtin_aarch64_sqdmullsi (__a, __b); |
df401d54 | 23706 | } |
23707 | ||
49ab9992 | 23708 | __extension__ extern __inline int64_t |
23709 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23710 | vqdmulls_lane_s32 (int32_t __a, int32x2_t __b, const int __c) |
df401d54 | 23711 | { |
4a7e7de5 | 23712 | return __builtin_aarch64_sqdmull_lanesi (__a, __b, __c); |
23713 | } | |
23714 | ||
49ab9992 | 23715 | __extension__ extern __inline int64_t |
23716 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
4a7e7de5 | 23717 | vqdmulls_laneq_s32 (int32_t __a, int32x4_t __b, const int __c) |
23718 | { | |
23719 | return __builtin_aarch64_sqdmull_laneqsi (__a, __b, __c); | |
df401d54 | 23720 | } |
23721 | ||
23722 | /* vqmovn */ | |
23723 | ||
49ab9992 | 23724 | __extension__ extern __inline int8x8_t |
23725 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23726 | vqmovn_s16 (int16x8_t __a) |
23727 | { | |
23728 | return (int8x8_t) __builtin_aarch64_sqmovnv8hi (__a); | |
23729 | } | |
23730 | ||
49ab9992 | 23731 | __extension__ extern __inline int16x4_t |
23732 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23733 | vqmovn_s32 (int32x4_t __a) |
23734 | { | |
23735 | return (int16x4_t) __builtin_aarch64_sqmovnv4si (__a); | |
23736 | } | |
23737 | ||
49ab9992 | 23738 | __extension__ extern __inline int32x2_t |
23739 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23740 | vqmovn_s64 (int64x2_t __a) |
23741 | { | |
23742 | return (int32x2_t) __builtin_aarch64_sqmovnv2di (__a); | |
23743 | } | |
23744 | ||
49ab9992 | 23745 | __extension__ extern __inline uint8x8_t |
23746 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23747 | vqmovn_u16 (uint16x8_t __a) |
23748 | { | |
23749 | return (uint8x8_t) __builtin_aarch64_uqmovnv8hi ((int16x8_t) __a); | |
23750 | } | |
23751 | ||
49ab9992 | 23752 | __extension__ extern __inline uint16x4_t |
23753 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23754 | vqmovn_u32 (uint32x4_t __a) |
23755 | { | |
23756 | return (uint16x4_t) __builtin_aarch64_uqmovnv4si ((int32x4_t) __a); | |
23757 | } | |
23758 | ||
49ab9992 | 23759 | __extension__ extern __inline uint32x2_t |
23760 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23761 | vqmovn_u64 (uint64x2_t __a) |
23762 | { | |
23763 | return (uint32x2_t) __builtin_aarch64_uqmovnv2di ((int64x2_t) __a); | |
23764 | } | |
23765 | ||
49ab9992 | 23766 | __extension__ extern __inline int8_t |
23767 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23768 | vqmovnh_s16 (int16_t __a) |
df401d54 | 23769 | { |
857e182a | 23770 | return (int8_t) __builtin_aarch64_sqmovnhi (__a); |
df401d54 | 23771 | } |
23772 | ||
49ab9992 | 23773 | __extension__ extern __inline int16_t |
23774 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23775 | vqmovns_s32 (int32_t __a) |
df401d54 | 23776 | { |
857e182a | 23777 | return (int16_t) __builtin_aarch64_sqmovnsi (__a); |
df401d54 | 23778 | } |
23779 | ||
49ab9992 | 23780 | __extension__ extern __inline int32_t |
23781 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 23782 | vqmovnd_s64 (int64_t __a) |
df401d54 | 23783 | { |
857e182a | 23784 | return (int32_t) __builtin_aarch64_sqmovndi (__a); |
df401d54 | 23785 | } |
23786 | ||
49ab9992 | 23787 | __extension__ extern __inline uint8_t |
23788 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23789 | vqmovnh_u16 (uint16_t __a) |
df401d54 | 23790 | { |
857e182a | 23791 | return (uint8_t) __builtin_aarch64_uqmovnhi (__a); |
df401d54 | 23792 | } |
23793 | ||
49ab9992 | 23794 | __extension__ extern __inline uint16_t |
23795 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23796 | vqmovns_u32 (uint32_t __a) |
df401d54 | 23797 | { |
857e182a | 23798 | return (uint16_t) __builtin_aarch64_uqmovnsi (__a); |
df401d54 | 23799 | } |
23800 | ||
49ab9992 | 23801 | __extension__ extern __inline uint32_t |
23802 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 23803 | vqmovnd_u64 (uint64_t __a) |
df401d54 | 23804 | { |
857e182a | 23805 | return (uint32_t) __builtin_aarch64_uqmovndi (__a); |
df401d54 | 23806 | } |
23807 | ||
23808 | /* vqmovun */ | |
23809 | ||
49ab9992 | 23810 | __extension__ extern __inline uint8x8_t |
23811 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23812 | vqmovun_s16 (int16x8_t __a) |
23813 | { | |
23814 | return (uint8x8_t) __builtin_aarch64_sqmovunv8hi (__a); | |
23815 | } | |
23816 | ||
49ab9992 | 23817 | __extension__ extern __inline uint16x4_t |
23818 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23819 | vqmovun_s32 (int32x4_t __a) |
23820 | { | |
23821 | return (uint16x4_t) __builtin_aarch64_sqmovunv4si (__a); | |
23822 | } | |
23823 | ||
49ab9992 | 23824 | __extension__ extern __inline uint32x2_t |
23825 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23826 | vqmovun_s64 (int64x2_t __a) |
23827 | { | |
23828 | return (uint32x2_t) __builtin_aarch64_sqmovunv2di (__a); | |
23829 | } | |
23830 | ||
49ab9992 | 23831 | __extension__ extern __inline int8_t |
23832 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23833 | vqmovunh_s16 (int16_t __a) |
df401d54 | 23834 | { |
857e182a | 23835 | return (int8_t) __builtin_aarch64_sqmovunhi (__a); |
df401d54 | 23836 | } |
23837 | ||
49ab9992 | 23838 | __extension__ extern __inline int16_t |
23839 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23840 | vqmovuns_s32 (int32_t __a) |
df401d54 | 23841 | { |
857e182a | 23842 | return (int16_t) __builtin_aarch64_sqmovunsi (__a); |
df401d54 | 23843 | } |
23844 | ||
49ab9992 | 23845 | __extension__ extern __inline int32_t |
23846 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 23847 | vqmovund_s64 (int64_t __a) |
df401d54 | 23848 | { |
857e182a | 23849 | return (int32_t) __builtin_aarch64_sqmovundi (__a); |
df401d54 | 23850 | } |
23851 | ||
23852 | /* vqneg */ | |
23853 | ||
49ab9992 | 23854 | __extension__ extern __inline int64x2_t |
23855 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23856 | vqnegq_s64 (int64x2_t __a) |
23857 | { | |
23858 | return (int64x2_t) __builtin_aarch64_sqnegv2di (__a); | |
23859 | } | |
23860 | ||
49ab9992 | 23861 | __extension__ extern __inline int8_t |
23862 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23863 | vqnegb_s8 (int8_t __a) |
df401d54 | 23864 | { |
857e182a | 23865 | return (int8_t) __builtin_aarch64_sqnegqi (__a); |
df401d54 | 23866 | } |
23867 | ||
49ab9992 | 23868 | __extension__ extern __inline int16_t |
23869 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23870 | vqnegh_s16 (int16_t __a) |
df401d54 | 23871 | { |
857e182a | 23872 | return (int16_t) __builtin_aarch64_sqneghi (__a); |
df401d54 | 23873 | } |
23874 | ||
49ab9992 | 23875 | __extension__ extern __inline int32_t |
23876 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23877 | vqnegs_s32 (int32_t __a) |
df401d54 | 23878 | { |
857e182a | 23879 | return (int32_t) __builtin_aarch64_sqnegsi (__a); |
df401d54 | 23880 | } |
23881 | ||
49ab9992 | 23882 | __extension__ extern __inline int64_t |
23883 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a9aae8ec | 23884 | vqnegd_s64 (int64_t __a) |
23885 | { | |
23886 | return __builtin_aarch64_sqnegdi (__a); | |
23887 | } | |
23888 | ||
df401d54 | 23889 | /* vqrdmulh */ |
23890 | ||
49ab9992 | 23891 | __extension__ extern __inline int16x4_t |
23892 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23893 | vqrdmulh_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c) |
23894 | { | |
431fc079 | 23895 | return __builtin_aarch64_sqrdmulh_lanev4hi (__a, __b, __c); |
df401d54 | 23896 | } |
23897 | ||
49ab9992 | 23898 | __extension__ extern __inline int32x2_t |
23899 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23900 | vqrdmulh_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c) |
23901 | { | |
431fc079 | 23902 | return __builtin_aarch64_sqrdmulh_lanev2si (__a, __b, __c); |
df401d54 | 23903 | } |
23904 | ||
49ab9992 | 23905 | __extension__ extern __inline int16x8_t |
23906 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23907 | vqrdmulhq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __c) |
23908 | { | |
431fc079 | 23909 | return __builtin_aarch64_sqrdmulh_lanev8hi (__a, __b, __c); |
df401d54 | 23910 | } |
23911 | ||
49ab9992 | 23912 | __extension__ extern __inline int32x4_t |
23913 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23914 | vqrdmulhq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __c) |
23915 | { | |
431fc079 | 23916 | return __builtin_aarch64_sqrdmulh_lanev4si (__a, __b, __c); |
df401d54 | 23917 | } |
23918 | ||
49ab9992 | 23919 | __extension__ extern __inline int16_t |
23920 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23921 | vqrdmulhh_s16 (int16_t __a, int16_t __b) |
df401d54 | 23922 | { |
857e182a | 23923 | return (int16_t) __builtin_aarch64_sqrdmulhhi (__a, __b); |
df401d54 | 23924 | } |
23925 | ||
49ab9992 | 23926 | __extension__ extern __inline int16_t |
23927 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23928 | vqrdmulhh_lane_s16 (int16_t __a, int16x4_t __b, const int __c) |
df401d54 | 23929 | { |
23930 | return __builtin_aarch64_sqrdmulh_lanehi (__a, __b, __c); | |
23931 | } | |
23932 | ||
49ab9992 | 23933 | __extension__ extern __inline int16_t |
23934 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ac016904 | 23935 | vqrdmulhh_laneq_s16 (int16_t __a, int16x8_t __b, const int __c) |
23936 | { | |
23937 | return __builtin_aarch64_sqrdmulh_laneqhi (__a, __b, __c); | |
23938 | } | |
23939 | ||
49ab9992 | 23940 | __extension__ extern __inline int32_t |
23941 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23942 | vqrdmulhs_s32 (int32_t __a, int32_t __b) |
df401d54 | 23943 | { |
857e182a | 23944 | return (int32_t) __builtin_aarch64_sqrdmulhsi (__a, __b); |
df401d54 | 23945 | } |
23946 | ||
49ab9992 | 23947 | __extension__ extern __inline int32_t |
23948 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 23949 | vqrdmulhs_lane_s32 (int32_t __a, int32x2_t __b, const int __c) |
df401d54 | 23950 | { |
23951 | return __builtin_aarch64_sqrdmulh_lanesi (__a, __b, __c); | |
23952 | } | |
23953 | ||
49ab9992 | 23954 | __extension__ extern __inline int32_t |
23955 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ac016904 | 23956 | vqrdmulhs_laneq_s32 (int32_t __a, int32x4_t __b, const int __c) |
23957 | { | |
23958 | return __builtin_aarch64_sqrdmulh_laneqsi (__a, __b, __c); | |
23959 | } | |
23960 | ||
df401d54 | 23961 | /* vqrshl */ |
23962 | ||
49ab9992 | 23963 | __extension__ extern __inline int8x8_t |
23964 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23965 | vqrshl_s8 (int8x8_t __a, int8x8_t __b) |
23966 | { | |
23967 | return __builtin_aarch64_sqrshlv8qi (__a, __b); | |
23968 | } | |
23969 | ||
49ab9992 | 23970 | __extension__ extern __inline int16x4_t |
23971 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23972 | vqrshl_s16 (int16x4_t __a, int16x4_t __b) |
23973 | { | |
23974 | return __builtin_aarch64_sqrshlv4hi (__a, __b); | |
23975 | } | |
23976 | ||
49ab9992 | 23977 | __extension__ extern __inline int32x2_t |
23978 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23979 | vqrshl_s32 (int32x2_t __a, int32x2_t __b) |
23980 | { | |
23981 | return __builtin_aarch64_sqrshlv2si (__a, __b); | |
23982 | } | |
23983 | ||
49ab9992 | 23984 | __extension__ extern __inline int64x1_t |
23985 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23986 | vqrshl_s64 (int64x1_t __a, int64x1_t __b) |
23987 | { | |
12fc7207 | 23988 | return (int64x1_t) {__builtin_aarch64_sqrshldi (__a[0], __b[0])}; |
df401d54 | 23989 | } |
23990 | ||
49ab9992 | 23991 | __extension__ extern __inline uint8x8_t |
23992 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 23993 | vqrshl_u8 (uint8x8_t __a, int8x8_t __b) |
23994 | { | |
201e54b7 | 23995 | return __builtin_aarch64_uqrshlv8qi_uus ( __a, __b); |
df401d54 | 23996 | } |
23997 | ||
49ab9992 | 23998 | __extension__ extern __inline uint16x4_t |
23999 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24000 | vqrshl_u16 (uint16x4_t __a, int16x4_t __b) |
24001 | { | |
201e54b7 | 24002 | return __builtin_aarch64_uqrshlv4hi_uus ( __a, __b); |
df401d54 | 24003 | } |
24004 | ||
49ab9992 | 24005 | __extension__ extern __inline uint32x2_t |
24006 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24007 | vqrshl_u32 (uint32x2_t __a, int32x2_t __b) |
24008 | { | |
201e54b7 | 24009 | return __builtin_aarch64_uqrshlv2si_uus ( __a, __b); |
df401d54 | 24010 | } |
24011 | ||
49ab9992 | 24012 | __extension__ extern __inline uint64x1_t |
24013 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24014 | vqrshl_u64 (uint64x1_t __a, int64x1_t __b) |
24015 | { | |
12fc7207 | 24016 | return (uint64x1_t) {__builtin_aarch64_uqrshldi_uus (__a[0], __b[0])}; |
df401d54 | 24017 | } |
24018 | ||
49ab9992 | 24019 | __extension__ extern __inline int8x16_t |
24020 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24021 | vqrshlq_s8 (int8x16_t __a, int8x16_t __b) |
24022 | { | |
24023 | return __builtin_aarch64_sqrshlv16qi (__a, __b); | |
24024 | } | |
24025 | ||
49ab9992 | 24026 | __extension__ extern __inline int16x8_t |
24027 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24028 | vqrshlq_s16 (int16x8_t __a, int16x8_t __b) |
24029 | { | |
24030 | return __builtin_aarch64_sqrshlv8hi (__a, __b); | |
24031 | } | |
24032 | ||
49ab9992 | 24033 | __extension__ extern __inline int32x4_t |
24034 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24035 | vqrshlq_s32 (int32x4_t __a, int32x4_t __b) |
24036 | { | |
24037 | return __builtin_aarch64_sqrshlv4si (__a, __b); | |
24038 | } | |
24039 | ||
49ab9992 | 24040 | __extension__ extern __inline int64x2_t |
24041 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24042 | vqrshlq_s64 (int64x2_t __a, int64x2_t __b) |
24043 | { | |
24044 | return __builtin_aarch64_sqrshlv2di (__a, __b); | |
24045 | } | |
24046 | ||
49ab9992 | 24047 | __extension__ extern __inline uint8x16_t |
24048 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24049 | vqrshlq_u8 (uint8x16_t __a, int8x16_t __b) |
24050 | { | |
201e54b7 | 24051 | return __builtin_aarch64_uqrshlv16qi_uus ( __a, __b); |
df401d54 | 24052 | } |
24053 | ||
49ab9992 | 24054 | __extension__ extern __inline uint16x8_t |
24055 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24056 | vqrshlq_u16 (uint16x8_t __a, int16x8_t __b) |
24057 | { | |
201e54b7 | 24058 | return __builtin_aarch64_uqrshlv8hi_uus ( __a, __b); |
df401d54 | 24059 | } |
24060 | ||
49ab9992 | 24061 | __extension__ extern __inline uint32x4_t |
24062 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24063 | vqrshlq_u32 (uint32x4_t __a, int32x4_t __b) |
24064 | { | |
201e54b7 | 24065 | return __builtin_aarch64_uqrshlv4si_uus ( __a, __b); |
df401d54 | 24066 | } |
24067 | ||
49ab9992 | 24068 | __extension__ extern __inline uint64x2_t |
24069 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24070 | vqrshlq_u64 (uint64x2_t __a, int64x2_t __b) |
24071 | { | |
201e54b7 | 24072 | return __builtin_aarch64_uqrshlv2di_uus ( __a, __b); |
df401d54 | 24073 | } |
24074 | ||
49ab9992 | 24075 | __extension__ extern __inline int8_t |
24076 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24077 | vqrshlb_s8 (int8_t __a, int8_t __b) |
df401d54 | 24078 | { |
24079 | return __builtin_aarch64_sqrshlqi (__a, __b); | |
24080 | } | |
24081 | ||
49ab9992 | 24082 | __extension__ extern __inline int16_t |
24083 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24084 | vqrshlh_s16 (int16_t __a, int16_t __b) |
df401d54 | 24085 | { |
24086 | return __builtin_aarch64_sqrshlhi (__a, __b); | |
24087 | } | |
24088 | ||
49ab9992 | 24089 | __extension__ extern __inline int32_t |
24090 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24091 | vqrshls_s32 (int32_t __a, int32_t __b) |
df401d54 | 24092 | { |
24093 | return __builtin_aarch64_sqrshlsi (__a, __b); | |
24094 | } | |
24095 | ||
49ab9992 | 24096 | __extension__ extern __inline int64_t |
24097 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24098 | vqrshld_s64 (int64_t __a, int64_t __b) |
df401d54 | 24099 | { |
24100 | return __builtin_aarch64_sqrshldi (__a, __b); | |
24101 | } | |
24102 | ||
49ab9992 | 24103 | __extension__ extern __inline uint8_t |
24104 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24105 | vqrshlb_u8 (uint8_t __a, uint8_t __b) |
df401d54 | 24106 | { |
201e54b7 | 24107 | return __builtin_aarch64_uqrshlqi_uus (__a, __b); |
df401d54 | 24108 | } |
24109 | ||
49ab9992 | 24110 | __extension__ extern __inline uint16_t |
24111 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24112 | vqrshlh_u16 (uint16_t __a, uint16_t __b) |
df401d54 | 24113 | { |
201e54b7 | 24114 | return __builtin_aarch64_uqrshlhi_uus (__a, __b); |
df401d54 | 24115 | } |
24116 | ||
49ab9992 | 24117 | __extension__ extern __inline uint32_t |
24118 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24119 | vqrshls_u32 (uint32_t __a, uint32_t __b) |
df401d54 | 24120 | { |
201e54b7 | 24121 | return __builtin_aarch64_uqrshlsi_uus (__a, __b); |
df401d54 | 24122 | } |
24123 | ||
49ab9992 | 24124 | __extension__ extern __inline uint64_t |
24125 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24126 | vqrshld_u64 (uint64_t __a, uint64_t __b) |
df401d54 | 24127 | { |
201e54b7 | 24128 | return __builtin_aarch64_uqrshldi_uus (__a, __b); |
df401d54 | 24129 | } |
24130 | ||
24131 | /* vqrshrn */ | |
24132 | ||
49ab9992 | 24133 | __extension__ extern __inline int8x8_t |
24134 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24135 | vqrshrn_n_s16 (int16x8_t __a, const int __b) |
24136 | { | |
24137 | return (int8x8_t) __builtin_aarch64_sqrshrn_nv8hi (__a, __b); | |
24138 | } | |
24139 | ||
49ab9992 | 24140 | __extension__ extern __inline int16x4_t |
24141 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24142 | vqrshrn_n_s32 (int32x4_t __a, const int __b) |
24143 | { | |
24144 | return (int16x4_t) __builtin_aarch64_sqrshrn_nv4si (__a, __b); | |
24145 | } | |
24146 | ||
49ab9992 | 24147 | __extension__ extern __inline int32x2_t |
24148 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24149 | vqrshrn_n_s64 (int64x2_t __a, const int __b) |
24150 | { | |
24151 | return (int32x2_t) __builtin_aarch64_sqrshrn_nv2di (__a, __b); | |
24152 | } | |
24153 | ||
49ab9992 | 24154 | __extension__ extern __inline uint8x8_t |
24155 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24156 | vqrshrn_n_u16 (uint16x8_t __a, const int __b) |
24157 | { | |
201e54b7 | 24158 | return __builtin_aarch64_uqrshrn_nv8hi_uus ( __a, __b); |
df401d54 | 24159 | } |
24160 | ||
49ab9992 | 24161 | __extension__ extern __inline uint16x4_t |
24162 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24163 | vqrshrn_n_u32 (uint32x4_t __a, const int __b) |
24164 | { | |
201e54b7 | 24165 | return __builtin_aarch64_uqrshrn_nv4si_uus ( __a, __b); |
df401d54 | 24166 | } |
24167 | ||
49ab9992 | 24168 | __extension__ extern __inline uint32x2_t |
24169 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24170 | vqrshrn_n_u64 (uint64x2_t __a, const int __b) |
24171 | { | |
201e54b7 | 24172 | return __builtin_aarch64_uqrshrn_nv2di_uus ( __a, __b); |
df401d54 | 24173 | } |
24174 | ||
49ab9992 | 24175 | __extension__ extern __inline int8_t |
24176 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24177 | vqrshrnh_n_s16 (int16_t __a, const int __b) |
df401d54 | 24178 | { |
857e182a | 24179 | return (int8_t) __builtin_aarch64_sqrshrn_nhi (__a, __b); |
df401d54 | 24180 | } |
24181 | ||
49ab9992 | 24182 | __extension__ extern __inline int16_t |
24183 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24184 | vqrshrns_n_s32 (int32_t __a, const int __b) |
df401d54 | 24185 | { |
857e182a | 24186 | return (int16_t) __builtin_aarch64_sqrshrn_nsi (__a, __b); |
df401d54 | 24187 | } |
24188 | ||
49ab9992 | 24189 | __extension__ extern __inline int32_t |
24190 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24191 | vqrshrnd_n_s64 (int64_t __a, const int __b) |
df401d54 | 24192 | { |
857e182a | 24193 | return (int32_t) __builtin_aarch64_sqrshrn_ndi (__a, __b); |
df401d54 | 24194 | } |
24195 | ||
49ab9992 | 24196 | __extension__ extern __inline uint8_t |
24197 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24198 | vqrshrnh_n_u16 (uint16_t __a, const int __b) |
df401d54 | 24199 | { |
201e54b7 | 24200 | return __builtin_aarch64_uqrshrn_nhi_uus (__a, __b); |
df401d54 | 24201 | } |
24202 | ||
49ab9992 | 24203 | __extension__ extern __inline uint16_t |
24204 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24205 | vqrshrns_n_u32 (uint32_t __a, const int __b) |
df401d54 | 24206 | { |
201e54b7 | 24207 | return __builtin_aarch64_uqrshrn_nsi_uus (__a, __b); |
df401d54 | 24208 | } |
24209 | ||
49ab9992 | 24210 | __extension__ extern __inline uint32_t |
24211 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24212 | vqrshrnd_n_u64 (uint64_t __a, const int __b) |
df401d54 | 24213 | { |
201e54b7 | 24214 | return __builtin_aarch64_uqrshrn_ndi_uus (__a, __b); |
df401d54 | 24215 | } |
24216 | ||
24217 | /* vqrshrun */ | |
24218 | ||
49ab9992 | 24219 | __extension__ extern __inline uint8x8_t |
24220 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24221 | vqrshrun_n_s16 (int16x8_t __a, const int __b) |
24222 | { | |
24223 | return (uint8x8_t) __builtin_aarch64_sqrshrun_nv8hi (__a, __b); | |
24224 | } | |
24225 | ||
49ab9992 | 24226 | __extension__ extern __inline uint16x4_t |
24227 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24228 | vqrshrun_n_s32 (int32x4_t __a, const int __b) |
24229 | { | |
24230 | return (uint16x4_t) __builtin_aarch64_sqrshrun_nv4si (__a, __b); | |
24231 | } | |
24232 | ||
49ab9992 | 24233 | __extension__ extern __inline uint32x2_t |
24234 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24235 | vqrshrun_n_s64 (int64x2_t __a, const int __b) |
24236 | { | |
24237 | return (uint32x2_t) __builtin_aarch64_sqrshrun_nv2di (__a, __b); | |
24238 | } | |
24239 | ||
49ab9992 | 24240 | __extension__ extern __inline int8_t |
24241 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24242 | vqrshrunh_n_s16 (int16_t __a, const int __b) |
df401d54 | 24243 | { |
857e182a | 24244 | return (int8_t) __builtin_aarch64_sqrshrun_nhi (__a, __b); |
df401d54 | 24245 | } |
24246 | ||
49ab9992 | 24247 | __extension__ extern __inline int16_t |
24248 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24249 | vqrshruns_n_s32 (int32_t __a, const int __b) |
df401d54 | 24250 | { |
857e182a | 24251 | return (int16_t) __builtin_aarch64_sqrshrun_nsi (__a, __b); |
df401d54 | 24252 | } |
24253 | ||
49ab9992 | 24254 | __extension__ extern __inline int32_t |
24255 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24256 | vqrshrund_n_s64 (int64_t __a, const int __b) |
df401d54 | 24257 | { |
857e182a | 24258 | return (int32_t) __builtin_aarch64_sqrshrun_ndi (__a, __b); |
df401d54 | 24259 | } |
24260 | ||
24261 | /* vqshl */ | |
24262 | ||
49ab9992 | 24263 | __extension__ extern __inline int8x8_t |
24264 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24265 | vqshl_s8 (int8x8_t __a, int8x8_t __b) |
24266 | { | |
24267 | return __builtin_aarch64_sqshlv8qi (__a, __b); | |
24268 | } | |
24269 | ||
49ab9992 | 24270 | __extension__ extern __inline int16x4_t |
24271 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24272 | vqshl_s16 (int16x4_t __a, int16x4_t __b) |
24273 | { | |
24274 | return __builtin_aarch64_sqshlv4hi (__a, __b); | |
24275 | } | |
24276 | ||
49ab9992 | 24277 | __extension__ extern __inline int32x2_t |
24278 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24279 | vqshl_s32 (int32x2_t __a, int32x2_t __b) |
24280 | { | |
24281 | return __builtin_aarch64_sqshlv2si (__a, __b); | |
24282 | } | |
24283 | ||
49ab9992 | 24284 | __extension__ extern __inline int64x1_t |
24285 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24286 | vqshl_s64 (int64x1_t __a, int64x1_t __b) |
24287 | { | |
12fc7207 | 24288 | return (int64x1_t) {__builtin_aarch64_sqshldi (__a[0], __b[0])}; |
df401d54 | 24289 | } |
24290 | ||
49ab9992 | 24291 | __extension__ extern __inline uint8x8_t |
24292 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24293 | vqshl_u8 (uint8x8_t __a, int8x8_t __b) |
24294 | { | |
201e54b7 | 24295 | return __builtin_aarch64_uqshlv8qi_uus ( __a, __b); |
df401d54 | 24296 | } |
24297 | ||
49ab9992 | 24298 | __extension__ extern __inline uint16x4_t |
24299 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24300 | vqshl_u16 (uint16x4_t __a, int16x4_t __b) |
24301 | { | |
201e54b7 | 24302 | return __builtin_aarch64_uqshlv4hi_uus ( __a, __b); |
df401d54 | 24303 | } |
24304 | ||
49ab9992 | 24305 | __extension__ extern __inline uint32x2_t |
24306 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24307 | vqshl_u32 (uint32x2_t __a, int32x2_t __b) |
24308 | { | |
201e54b7 | 24309 | return __builtin_aarch64_uqshlv2si_uus ( __a, __b); |
df401d54 | 24310 | } |
24311 | ||
49ab9992 | 24312 | __extension__ extern __inline uint64x1_t |
24313 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24314 | vqshl_u64 (uint64x1_t __a, int64x1_t __b) |
24315 | { | |
12fc7207 | 24316 | return (uint64x1_t) {__builtin_aarch64_uqshldi_uus (__a[0], __b[0])}; |
df401d54 | 24317 | } |
24318 | ||
49ab9992 | 24319 | __extension__ extern __inline int8x16_t |
24320 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24321 | vqshlq_s8 (int8x16_t __a, int8x16_t __b) |
24322 | { | |
24323 | return __builtin_aarch64_sqshlv16qi (__a, __b); | |
24324 | } | |
24325 | ||
49ab9992 | 24326 | __extension__ extern __inline int16x8_t |
24327 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24328 | vqshlq_s16 (int16x8_t __a, int16x8_t __b) |
24329 | { | |
24330 | return __builtin_aarch64_sqshlv8hi (__a, __b); | |
24331 | } | |
24332 | ||
49ab9992 | 24333 | __extension__ extern __inline int32x4_t |
24334 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24335 | vqshlq_s32 (int32x4_t __a, int32x4_t __b) |
24336 | { | |
24337 | return __builtin_aarch64_sqshlv4si (__a, __b); | |
24338 | } | |
24339 | ||
49ab9992 | 24340 | __extension__ extern __inline int64x2_t |
24341 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24342 | vqshlq_s64 (int64x2_t __a, int64x2_t __b) |
24343 | { | |
24344 | return __builtin_aarch64_sqshlv2di (__a, __b); | |
24345 | } | |
24346 | ||
49ab9992 | 24347 | __extension__ extern __inline uint8x16_t |
24348 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24349 | vqshlq_u8 (uint8x16_t __a, int8x16_t __b) |
24350 | { | |
201e54b7 | 24351 | return __builtin_aarch64_uqshlv16qi_uus ( __a, __b); |
df401d54 | 24352 | } |
24353 | ||
49ab9992 | 24354 | __extension__ extern __inline uint16x8_t |
24355 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24356 | vqshlq_u16 (uint16x8_t __a, int16x8_t __b) |
24357 | { | |
201e54b7 | 24358 | return __builtin_aarch64_uqshlv8hi_uus ( __a, __b); |
df401d54 | 24359 | } |
24360 | ||
49ab9992 | 24361 | __extension__ extern __inline uint32x4_t |
24362 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24363 | vqshlq_u32 (uint32x4_t __a, int32x4_t __b) |
24364 | { | |
201e54b7 | 24365 | return __builtin_aarch64_uqshlv4si_uus ( __a, __b); |
df401d54 | 24366 | } |
24367 | ||
49ab9992 | 24368 | __extension__ extern __inline uint64x2_t |
24369 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24370 | vqshlq_u64 (uint64x2_t __a, int64x2_t __b) |
24371 | { | |
201e54b7 | 24372 | return __builtin_aarch64_uqshlv2di_uus ( __a, __b); |
df401d54 | 24373 | } |
24374 | ||
49ab9992 | 24375 | __extension__ extern __inline int8_t |
24376 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24377 | vqshlb_s8 (int8_t __a, int8_t __b) |
df401d54 | 24378 | { |
24379 | return __builtin_aarch64_sqshlqi (__a, __b); | |
24380 | } | |
24381 | ||
49ab9992 | 24382 | __extension__ extern __inline int16_t |
24383 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24384 | vqshlh_s16 (int16_t __a, int16_t __b) |
df401d54 | 24385 | { |
24386 | return __builtin_aarch64_sqshlhi (__a, __b); | |
24387 | } | |
24388 | ||
49ab9992 | 24389 | __extension__ extern __inline int32_t |
24390 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24391 | vqshls_s32 (int32_t __a, int32_t __b) |
df401d54 | 24392 | { |
24393 | return __builtin_aarch64_sqshlsi (__a, __b); | |
24394 | } | |
24395 | ||
49ab9992 | 24396 | __extension__ extern __inline int64_t |
24397 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24398 | vqshld_s64 (int64_t __a, int64_t __b) |
df401d54 | 24399 | { |
24400 | return __builtin_aarch64_sqshldi (__a, __b); | |
24401 | } | |
24402 | ||
49ab9992 | 24403 | __extension__ extern __inline uint8_t |
24404 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24405 | vqshlb_u8 (uint8_t __a, uint8_t __b) |
df401d54 | 24406 | { |
201e54b7 | 24407 | return __builtin_aarch64_uqshlqi_uus (__a, __b); |
df401d54 | 24408 | } |
24409 | ||
49ab9992 | 24410 | __extension__ extern __inline uint16_t |
24411 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24412 | vqshlh_u16 (uint16_t __a, uint16_t __b) |
df401d54 | 24413 | { |
201e54b7 | 24414 | return __builtin_aarch64_uqshlhi_uus (__a, __b); |
df401d54 | 24415 | } |
24416 | ||
49ab9992 | 24417 | __extension__ extern __inline uint32_t |
24418 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24419 | vqshls_u32 (uint32_t __a, uint32_t __b) |
df401d54 | 24420 | { |
201e54b7 | 24421 | return __builtin_aarch64_uqshlsi_uus (__a, __b); |
df401d54 | 24422 | } |
24423 | ||
49ab9992 | 24424 | __extension__ extern __inline uint64_t |
24425 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24426 | vqshld_u64 (uint64_t __a, uint64_t __b) |
df401d54 | 24427 | { |
201e54b7 | 24428 | return __builtin_aarch64_uqshldi_uus (__a, __b); |
df401d54 | 24429 | } |
24430 | ||
49ab9992 | 24431 | __extension__ extern __inline int8x8_t |
24432 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24433 | vqshl_n_s8 (int8x8_t __a, const int __b) |
24434 | { | |
24435 | return (int8x8_t) __builtin_aarch64_sqshl_nv8qi (__a, __b); | |
24436 | } | |
24437 | ||
49ab9992 | 24438 | __extension__ extern __inline int16x4_t |
24439 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24440 | vqshl_n_s16 (int16x4_t __a, const int __b) |
24441 | { | |
24442 | return (int16x4_t) __builtin_aarch64_sqshl_nv4hi (__a, __b); | |
24443 | } | |
24444 | ||
49ab9992 | 24445 | __extension__ extern __inline int32x2_t |
24446 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24447 | vqshl_n_s32 (int32x2_t __a, const int __b) |
24448 | { | |
24449 | return (int32x2_t) __builtin_aarch64_sqshl_nv2si (__a, __b); | |
24450 | } | |
24451 | ||
49ab9992 | 24452 | __extension__ extern __inline int64x1_t |
24453 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24454 | vqshl_n_s64 (int64x1_t __a, const int __b) |
24455 | { | |
12fc7207 | 24456 | return (int64x1_t) {__builtin_aarch64_sqshl_ndi (__a[0], __b)}; |
df401d54 | 24457 | } |
24458 | ||
49ab9992 | 24459 | __extension__ extern __inline uint8x8_t |
24460 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24461 | vqshl_n_u8 (uint8x8_t __a, const int __b) |
24462 | { | |
201e54b7 | 24463 | return __builtin_aarch64_uqshl_nv8qi_uus (__a, __b); |
df401d54 | 24464 | } |
24465 | ||
49ab9992 | 24466 | __extension__ extern __inline uint16x4_t |
24467 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24468 | vqshl_n_u16 (uint16x4_t __a, const int __b) |
24469 | { | |
201e54b7 | 24470 | return __builtin_aarch64_uqshl_nv4hi_uus (__a, __b); |
df401d54 | 24471 | } |
24472 | ||
49ab9992 | 24473 | __extension__ extern __inline uint32x2_t |
24474 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24475 | vqshl_n_u32 (uint32x2_t __a, const int __b) |
24476 | { | |
201e54b7 | 24477 | return __builtin_aarch64_uqshl_nv2si_uus (__a, __b); |
df401d54 | 24478 | } |
24479 | ||
49ab9992 | 24480 | __extension__ extern __inline uint64x1_t |
24481 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24482 | vqshl_n_u64 (uint64x1_t __a, const int __b) |
24483 | { | |
12fc7207 | 24484 | return (uint64x1_t) {__builtin_aarch64_uqshl_ndi_uus (__a[0], __b)}; |
df401d54 | 24485 | } |
24486 | ||
49ab9992 | 24487 | __extension__ extern __inline int8x16_t |
24488 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24489 | vqshlq_n_s8 (int8x16_t __a, const int __b) |
24490 | { | |
24491 | return (int8x16_t) __builtin_aarch64_sqshl_nv16qi (__a, __b); | |
24492 | } | |
24493 | ||
49ab9992 | 24494 | __extension__ extern __inline int16x8_t |
24495 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24496 | vqshlq_n_s16 (int16x8_t __a, const int __b) |
24497 | { | |
24498 | return (int16x8_t) __builtin_aarch64_sqshl_nv8hi (__a, __b); | |
24499 | } | |
24500 | ||
49ab9992 | 24501 | __extension__ extern __inline int32x4_t |
24502 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24503 | vqshlq_n_s32 (int32x4_t __a, const int __b) |
24504 | { | |
24505 | return (int32x4_t) __builtin_aarch64_sqshl_nv4si (__a, __b); | |
24506 | } | |
24507 | ||
49ab9992 | 24508 | __extension__ extern __inline int64x2_t |
24509 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24510 | vqshlq_n_s64 (int64x2_t __a, const int __b) |
24511 | { | |
24512 | return (int64x2_t) __builtin_aarch64_sqshl_nv2di (__a, __b); | |
24513 | } | |
24514 | ||
49ab9992 | 24515 | __extension__ extern __inline uint8x16_t |
24516 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24517 | vqshlq_n_u8 (uint8x16_t __a, const int __b) |
24518 | { | |
201e54b7 | 24519 | return __builtin_aarch64_uqshl_nv16qi_uus (__a, __b); |
df401d54 | 24520 | } |
24521 | ||
49ab9992 | 24522 | __extension__ extern __inline uint16x8_t |
24523 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24524 | vqshlq_n_u16 (uint16x8_t __a, const int __b) |
24525 | { | |
201e54b7 | 24526 | return __builtin_aarch64_uqshl_nv8hi_uus (__a, __b); |
df401d54 | 24527 | } |
24528 | ||
49ab9992 | 24529 | __extension__ extern __inline uint32x4_t |
24530 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24531 | vqshlq_n_u32 (uint32x4_t __a, const int __b) |
24532 | { | |
201e54b7 | 24533 | return __builtin_aarch64_uqshl_nv4si_uus (__a, __b); |
df401d54 | 24534 | } |
24535 | ||
49ab9992 | 24536 | __extension__ extern __inline uint64x2_t |
24537 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24538 | vqshlq_n_u64 (uint64x2_t __a, const int __b) |
24539 | { | |
201e54b7 | 24540 | return __builtin_aarch64_uqshl_nv2di_uus (__a, __b); |
df401d54 | 24541 | } |
24542 | ||
49ab9992 | 24543 | __extension__ extern __inline int8_t |
24544 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24545 | vqshlb_n_s8 (int8_t __a, const int __b) |
df401d54 | 24546 | { |
857e182a | 24547 | return (int8_t) __builtin_aarch64_sqshl_nqi (__a, __b); |
df401d54 | 24548 | } |
24549 | ||
49ab9992 | 24550 | __extension__ extern __inline int16_t |
24551 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24552 | vqshlh_n_s16 (int16_t __a, const int __b) |
df401d54 | 24553 | { |
857e182a | 24554 | return (int16_t) __builtin_aarch64_sqshl_nhi (__a, __b); |
df401d54 | 24555 | } |
24556 | ||
49ab9992 | 24557 | __extension__ extern __inline int32_t |
24558 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24559 | vqshls_n_s32 (int32_t __a, const int __b) |
df401d54 | 24560 | { |
857e182a | 24561 | return (int32_t) __builtin_aarch64_sqshl_nsi (__a, __b); |
df401d54 | 24562 | } |
24563 | ||
49ab9992 | 24564 | __extension__ extern __inline int64_t |
24565 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24566 | vqshld_n_s64 (int64_t __a, const int __b) |
df401d54 | 24567 | { |
12fc7207 | 24568 | return __builtin_aarch64_sqshl_ndi (__a, __b); |
df401d54 | 24569 | } |
24570 | ||
49ab9992 | 24571 | __extension__ extern __inline uint8_t |
24572 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24573 | vqshlb_n_u8 (uint8_t __a, const int __b) |
df401d54 | 24574 | { |
201e54b7 | 24575 | return __builtin_aarch64_uqshl_nqi_uus (__a, __b); |
df401d54 | 24576 | } |
24577 | ||
49ab9992 | 24578 | __extension__ extern __inline uint16_t |
24579 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24580 | vqshlh_n_u16 (uint16_t __a, const int __b) |
df401d54 | 24581 | { |
201e54b7 | 24582 | return __builtin_aarch64_uqshl_nhi_uus (__a, __b); |
df401d54 | 24583 | } |
24584 | ||
49ab9992 | 24585 | __extension__ extern __inline uint32_t |
24586 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24587 | vqshls_n_u32 (uint32_t __a, const int __b) |
df401d54 | 24588 | { |
201e54b7 | 24589 | return __builtin_aarch64_uqshl_nsi_uus (__a, __b); |
df401d54 | 24590 | } |
24591 | ||
49ab9992 | 24592 | __extension__ extern __inline uint64_t |
24593 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24594 | vqshld_n_u64 (uint64_t __a, const int __b) |
df401d54 | 24595 | { |
201e54b7 | 24596 | return __builtin_aarch64_uqshl_ndi_uus (__a, __b); |
df401d54 | 24597 | } |
24598 | ||
24599 | /* vqshlu */ | |
24600 | ||
49ab9992 | 24601 | __extension__ extern __inline uint8x8_t |
24602 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24603 | vqshlu_n_s8 (int8x8_t __a, const int __b) |
24604 | { | |
201e54b7 | 24605 | return __builtin_aarch64_sqshlu_nv8qi_uss (__a, __b); |
df401d54 | 24606 | } |
24607 | ||
49ab9992 | 24608 | __extension__ extern __inline uint16x4_t |
24609 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24610 | vqshlu_n_s16 (int16x4_t __a, const int __b) |
24611 | { | |
201e54b7 | 24612 | return __builtin_aarch64_sqshlu_nv4hi_uss (__a, __b); |
df401d54 | 24613 | } |
24614 | ||
49ab9992 | 24615 | __extension__ extern __inline uint32x2_t |
24616 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24617 | vqshlu_n_s32 (int32x2_t __a, const int __b) |
24618 | { | |
201e54b7 | 24619 | return __builtin_aarch64_sqshlu_nv2si_uss (__a, __b); |
df401d54 | 24620 | } |
24621 | ||
49ab9992 | 24622 | __extension__ extern __inline uint64x1_t |
24623 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24624 | vqshlu_n_s64 (int64x1_t __a, const int __b) |
24625 | { | |
12fc7207 | 24626 | return (uint64x1_t) {__builtin_aarch64_sqshlu_ndi_uss (__a[0], __b)}; |
df401d54 | 24627 | } |
24628 | ||
49ab9992 | 24629 | __extension__ extern __inline uint8x16_t |
24630 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24631 | vqshluq_n_s8 (int8x16_t __a, const int __b) |
24632 | { | |
201e54b7 | 24633 | return __builtin_aarch64_sqshlu_nv16qi_uss (__a, __b); |
df401d54 | 24634 | } |
24635 | ||
49ab9992 | 24636 | __extension__ extern __inline uint16x8_t |
24637 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24638 | vqshluq_n_s16 (int16x8_t __a, const int __b) |
24639 | { | |
201e54b7 | 24640 | return __builtin_aarch64_sqshlu_nv8hi_uss (__a, __b); |
df401d54 | 24641 | } |
24642 | ||
49ab9992 | 24643 | __extension__ extern __inline uint32x4_t |
24644 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24645 | vqshluq_n_s32 (int32x4_t __a, const int __b) |
24646 | { | |
201e54b7 | 24647 | return __builtin_aarch64_sqshlu_nv4si_uss (__a, __b); |
df401d54 | 24648 | } |
24649 | ||
49ab9992 | 24650 | __extension__ extern __inline uint64x2_t |
24651 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24652 | vqshluq_n_s64 (int64x2_t __a, const int __b) |
24653 | { | |
201e54b7 | 24654 | return __builtin_aarch64_sqshlu_nv2di_uss (__a, __b); |
df401d54 | 24655 | } |
24656 | ||
49ab9992 | 24657 | __extension__ extern __inline int8_t |
24658 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24659 | vqshlub_n_s8 (int8_t __a, const int __b) |
df401d54 | 24660 | { |
857e182a | 24661 | return (int8_t) __builtin_aarch64_sqshlu_nqi_uss (__a, __b); |
df401d54 | 24662 | } |
24663 | ||
49ab9992 | 24664 | __extension__ extern __inline int16_t |
24665 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24666 | vqshluh_n_s16 (int16_t __a, const int __b) |
df401d54 | 24667 | { |
857e182a | 24668 | return (int16_t) __builtin_aarch64_sqshlu_nhi_uss (__a, __b); |
df401d54 | 24669 | } |
24670 | ||
49ab9992 | 24671 | __extension__ extern __inline int32_t |
24672 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24673 | vqshlus_n_s32 (int32_t __a, const int __b) |
df401d54 | 24674 | { |
857e182a | 24675 | return (int32_t) __builtin_aarch64_sqshlu_nsi_uss (__a, __b); |
df401d54 | 24676 | } |
24677 | ||
49ab9992 | 24678 | __extension__ extern __inline uint64_t |
24679 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24680 | vqshlud_n_s64 (int64_t __a, const int __b) |
df401d54 | 24681 | { |
12fc7207 | 24682 | return __builtin_aarch64_sqshlu_ndi_uss (__a, __b); |
df401d54 | 24683 | } |
24684 | ||
24685 | /* vqshrn */ | |
24686 | ||
49ab9992 | 24687 | __extension__ extern __inline int8x8_t |
24688 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24689 | vqshrn_n_s16 (int16x8_t __a, const int __b) |
24690 | { | |
24691 | return (int8x8_t) __builtin_aarch64_sqshrn_nv8hi (__a, __b); | |
24692 | } | |
24693 | ||
49ab9992 | 24694 | __extension__ extern __inline int16x4_t |
24695 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24696 | vqshrn_n_s32 (int32x4_t __a, const int __b) |
24697 | { | |
24698 | return (int16x4_t) __builtin_aarch64_sqshrn_nv4si (__a, __b); | |
24699 | } | |
24700 | ||
49ab9992 | 24701 | __extension__ extern __inline int32x2_t |
24702 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24703 | vqshrn_n_s64 (int64x2_t __a, const int __b) |
24704 | { | |
24705 | return (int32x2_t) __builtin_aarch64_sqshrn_nv2di (__a, __b); | |
24706 | } | |
24707 | ||
49ab9992 | 24708 | __extension__ extern __inline uint8x8_t |
24709 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24710 | vqshrn_n_u16 (uint16x8_t __a, const int __b) |
24711 | { | |
201e54b7 | 24712 | return __builtin_aarch64_uqshrn_nv8hi_uus ( __a, __b); |
df401d54 | 24713 | } |
24714 | ||
49ab9992 | 24715 | __extension__ extern __inline uint16x4_t |
24716 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24717 | vqshrn_n_u32 (uint32x4_t __a, const int __b) |
24718 | { | |
201e54b7 | 24719 | return __builtin_aarch64_uqshrn_nv4si_uus ( __a, __b); |
df401d54 | 24720 | } |
24721 | ||
49ab9992 | 24722 | __extension__ extern __inline uint32x2_t |
24723 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24724 | vqshrn_n_u64 (uint64x2_t __a, const int __b) |
24725 | { | |
201e54b7 | 24726 | return __builtin_aarch64_uqshrn_nv2di_uus ( __a, __b); |
df401d54 | 24727 | } |
24728 | ||
49ab9992 | 24729 | __extension__ extern __inline int8_t |
24730 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24731 | vqshrnh_n_s16 (int16_t __a, const int __b) |
df401d54 | 24732 | { |
857e182a | 24733 | return (int8_t) __builtin_aarch64_sqshrn_nhi (__a, __b); |
df401d54 | 24734 | } |
24735 | ||
49ab9992 | 24736 | __extension__ extern __inline int16_t |
24737 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24738 | vqshrns_n_s32 (int32_t __a, const int __b) |
df401d54 | 24739 | { |
857e182a | 24740 | return (int16_t) __builtin_aarch64_sqshrn_nsi (__a, __b); |
df401d54 | 24741 | } |
24742 | ||
49ab9992 | 24743 | __extension__ extern __inline int32_t |
24744 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24745 | vqshrnd_n_s64 (int64_t __a, const int __b) |
df401d54 | 24746 | { |
857e182a | 24747 | return (int32_t) __builtin_aarch64_sqshrn_ndi (__a, __b); |
df401d54 | 24748 | } |
24749 | ||
49ab9992 | 24750 | __extension__ extern __inline uint8_t |
24751 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24752 | vqshrnh_n_u16 (uint16_t __a, const int __b) |
df401d54 | 24753 | { |
201e54b7 | 24754 | return __builtin_aarch64_uqshrn_nhi_uus (__a, __b); |
df401d54 | 24755 | } |
24756 | ||
49ab9992 | 24757 | __extension__ extern __inline uint16_t |
24758 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24759 | vqshrns_n_u32 (uint32_t __a, const int __b) |
df401d54 | 24760 | { |
201e54b7 | 24761 | return __builtin_aarch64_uqshrn_nsi_uus (__a, __b); |
df401d54 | 24762 | } |
24763 | ||
49ab9992 | 24764 | __extension__ extern __inline uint32_t |
24765 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24766 | vqshrnd_n_u64 (uint64_t __a, const int __b) |
df401d54 | 24767 | { |
201e54b7 | 24768 | return __builtin_aarch64_uqshrn_ndi_uus (__a, __b); |
df401d54 | 24769 | } |
24770 | ||
24771 | /* vqshrun */ | |
24772 | ||
49ab9992 | 24773 | __extension__ extern __inline uint8x8_t |
24774 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24775 | vqshrun_n_s16 (int16x8_t __a, const int __b) |
24776 | { | |
24777 | return (uint8x8_t) __builtin_aarch64_sqshrun_nv8hi (__a, __b); | |
24778 | } | |
24779 | ||
49ab9992 | 24780 | __extension__ extern __inline uint16x4_t |
24781 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24782 | vqshrun_n_s32 (int32x4_t __a, const int __b) |
24783 | { | |
24784 | return (uint16x4_t) __builtin_aarch64_sqshrun_nv4si (__a, __b); | |
24785 | } | |
24786 | ||
49ab9992 | 24787 | __extension__ extern __inline uint32x2_t |
24788 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 24789 | vqshrun_n_s64 (int64x2_t __a, const int __b) |
24790 | { | |
24791 | return (uint32x2_t) __builtin_aarch64_sqshrun_nv2di (__a, __b); | |
24792 | } | |
24793 | ||
49ab9992 | 24794 | __extension__ extern __inline int8_t |
24795 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24796 | vqshrunh_n_s16 (int16_t __a, const int __b) |
df401d54 | 24797 | { |
857e182a | 24798 | return (int8_t) __builtin_aarch64_sqshrun_nhi (__a, __b); |
df401d54 | 24799 | } |
24800 | ||
49ab9992 | 24801 | __extension__ extern __inline int16_t |
24802 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24803 | vqshruns_n_s32 (int32_t __a, const int __b) |
df401d54 | 24804 | { |
857e182a | 24805 | return (int16_t) __builtin_aarch64_sqshrun_nsi (__a, __b); |
df401d54 | 24806 | } |
24807 | ||
49ab9992 | 24808 | __extension__ extern __inline int32_t |
24809 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24810 | vqshrund_n_s64 (int64_t __a, const int __b) |
df401d54 | 24811 | { |
857e182a | 24812 | return (int32_t) __builtin_aarch64_sqshrun_ndi (__a, __b); |
df401d54 | 24813 | } |
24814 | ||
24815 | /* vqsub */ | |
24816 | ||
49ab9992 | 24817 | __extension__ extern __inline int8_t |
24818 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24819 | vqsubb_s8 (int8_t __a, int8_t __b) |
df401d54 | 24820 | { |
857e182a | 24821 | return (int8_t) __builtin_aarch64_sqsubqi (__a, __b); |
df401d54 | 24822 | } |
24823 | ||
49ab9992 | 24824 | __extension__ extern __inline int16_t |
24825 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24826 | vqsubh_s16 (int16_t __a, int16_t __b) |
df401d54 | 24827 | { |
857e182a | 24828 | return (int16_t) __builtin_aarch64_sqsubhi (__a, __b); |
df401d54 | 24829 | } |
24830 | ||
49ab9992 | 24831 | __extension__ extern __inline int32_t |
24832 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24833 | vqsubs_s32 (int32_t __a, int32_t __b) |
df401d54 | 24834 | { |
857e182a | 24835 | return (int32_t) __builtin_aarch64_sqsubsi (__a, __b); |
df401d54 | 24836 | } |
24837 | ||
49ab9992 | 24838 | __extension__ extern __inline int64_t |
24839 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24840 | vqsubd_s64 (int64_t __a, int64_t __b) |
df401d54 | 24841 | { |
12fc7207 | 24842 | return __builtin_aarch64_sqsubdi (__a, __b); |
df401d54 | 24843 | } |
24844 | ||
49ab9992 | 24845 | __extension__ extern __inline uint8_t |
24846 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24847 | vqsubb_u8 (uint8_t __a, uint8_t __b) |
df401d54 | 24848 | { |
857e182a | 24849 | return (uint8_t) __builtin_aarch64_uqsubqi_uuu (__a, __b); |
df401d54 | 24850 | } |
24851 | ||
49ab9992 | 24852 | __extension__ extern __inline uint16_t |
24853 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24854 | vqsubh_u16 (uint16_t __a, uint16_t __b) |
df401d54 | 24855 | { |
857e182a | 24856 | return (uint16_t) __builtin_aarch64_uqsubhi_uuu (__a, __b); |
df401d54 | 24857 | } |
24858 | ||
49ab9992 | 24859 | __extension__ extern __inline uint32_t |
24860 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 24861 | vqsubs_u32 (uint32_t __a, uint32_t __b) |
df401d54 | 24862 | { |
857e182a | 24863 | return (uint32_t) __builtin_aarch64_uqsubsi_uuu (__a, __b); |
df401d54 | 24864 | } |
24865 | ||
49ab9992 | 24866 | __extension__ extern __inline uint64_t |
24867 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 24868 | vqsubd_u64 (uint64_t __a, uint64_t __b) |
df401d54 | 24869 | { |
12fc7207 | 24870 | return __builtin_aarch64_uqsubdi_uuu (__a, __b); |
df401d54 | 24871 | } |
24872 | ||
b631bffd | 24873 | /* vqtbl2 */ |
24874 | ||
49ab9992 | 24875 | __extension__ extern __inline int8x8_t |
24876 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 24877 | vqtbl2_s8 (int8x16x2_t tab, uint8x8_t idx) |
24878 | { | |
24879 | __builtin_aarch64_simd_oi __o; | |
24880 | __o = __builtin_aarch64_set_qregoiv16qi (__o, tab.val[0], 0); | |
24881 | __o = __builtin_aarch64_set_qregoiv16qi (__o, tab.val[1], 1); | |
24882 | return __builtin_aarch64_tbl3v8qi (__o, (int8x8_t)idx); | |
24883 | } | |
24884 | ||
49ab9992 | 24885 | __extension__ extern __inline uint8x8_t |
24886 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 24887 | vqtbl2_u8 (uint8x16x2_t tab, uint8x8_t idx) |
24888 | { | |
24889 | __builtin_aarch64_simd_oi __o; | |
24890 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
24891 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
24892 | return (uint8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)idx); | |
24893 | } | |
24894 | ||
49ab9992 | 24895 | __extension__ extern __inline poly8x8_t |
24896 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 24897 | vqtbl2_p8 (poly8x16x2_t tab, uint8x8_t idx) |
24898 | { | |
24899 | __builtin_aarch64_simd_oi __o; | |
24900 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
24901 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
24902 | return (poly8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)idx); | |
24903 | } | |
24904 | ||
49ab9992 | 24905 | __extension__ extern __inline int8x16_t |
24906 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 24907 | vqtbl2q_s8 (int8x16x2_t tab, uint8x16_t idx) |
24908 | { | |
24909 | __builtin_aarch64_simd_oi __o; | |
24910 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
24911 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
24912 | return __builtin_aarch64_tbl3v16qi (__o, (int8x16_t)idx); | |
24913 | } | |
24914 | ||
49ab9992 | 24915 | __extension__ extern __inline uint8x16_t |
24916 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 24917 | vqtbl2q_u8 (uint8x16x2_t tab, uint8x16_t idx) |
24918 | { | |
24919 | __builtin_aarch64_simd_oi __o; | |
24920 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
24921 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
24922 | return (uint8x16_t)__builtin_aarch64_tbl3v16qi (__o, (int8x16_t)idx); | |
24923 | } | |
24924 | ||
49ab9992 | 24925 | __extension__ extern __inline poly8x16_t |
24926 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 24927 | vqtbl2q_p8 (poly8x16x2_t tab, uint8x16_t idx) |
24928 | { | |
24929 | __builtin_aarch64_simd_oi __o; | |
24930 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
24931 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
24932 | return (poly8x16_t)__builtin_aarch64_tbl3v16qi (__o, (int8x16_t)idx); | |
24933 | } | |
24934 | ||
24935 | /* vqtbl3 */ | |
24936 | ||
49ab9992 | 24937 | __extension__ extern __inline int8x8_t |
24938 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 24939 | vqtbl3_s8 (int8x16x3_t tab, uint8x8_t idx) |
24940 | { | |
24941 | __builtin_aarch64_simd_ci __o; | |
24942 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[0], 0); | |
24943 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[1], 1); | |
24944 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[2], 2); | |
24945 | return __builtin_aarch64_qtbl3v8qi (__o, (int8x8_t)idx); | |
24946 | } | |
24947 | ||
49ab9992 | 24948 | __extension__ extern __inline uint8x8_t |
24949 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 24950 | vqtbl3_u8 (uint8x16x3_t tab, uint8x8_t idx) |
24951 | { | |
24952 | __builtin_aarch64_simd_ci __o; | |
24953 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[0], 0); | |
24954 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[1], 1); | |
24955 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[2], 2); | |
24956 | return (uint8x8_t)__builtin_aarch64_qtbl3v8qi (__o, (int8x8_t)idx); | |
24957 | } | |
24958 | ||
49ab9992 | 24959 | __extension__ extern __inline poly8x8_t |
24960 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 24961 | vqtbl3_p8 (poly8x16x3_t tab, uint8x8_t idx) |
24962 | { | |
24963 | __builtin_aarch64_simd_ci __o; | |
24964 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[0], 0); | |
24965 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[1], 1); | |
24966 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[2], 2); | |
24967 | return (poly8x8_t)__builtin_aarch64_qtbl3v8qi (__o, (int8x8_t)idx); | |
24968 | } | |
24969 | ||
49ab9992 | 24970 | __extension__ extern __inline int8x16_t |
24971 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 24972 | vqtbl3q_s8 (int8x16x3_t tab, uint8x16_t idx) |
24973 | { | |
24974 | __builtin_aarch64_simd_ci __o; | |
24975 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[0], 0); | |
24976 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[1], 1); | |
24977 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[2], 2); | |
24978 | return __builtin_aarch64_qtbl3v16qi (__o, (int8x16_t)idx); | |
24979 | } | |
24980 | ||
49ab9992 | 24981 | __extension__ extern __inline uint8x16_t |
24982 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 24983 | vqtbl3q_u8 (uint8x16x3_t tab, uint8x16_t idx) |
24984 | { | |
24985 | __builtin_aarch64_simd_ci __o; | |
24986 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[0], 0); | |
24987 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[1], 1); | |
24988 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[2], 2); | |
24989 | return (uint8x16_t)__builtin_aarch64_qtbl3v16qi (__o, (int8x16_t)idx); | |
24990 | } | |
24991 | ||
49ab9992 | 24992 | __extension__ extern __inline poly8x16_t |
24993 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 24994 | vqtbl3q_p8 (poly8x16x3_t tab, uint8x16_t idx) |
24995 | { | |
24996 | __builtin_aarch64_simd_ci __o; | |
24997 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[0], 0); | |
24998 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[1], 1); | |
24999 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25000 | return (poly8x16_t)__builtin_aarch64_qtbl3v16qi (__o, (int8x16_t)idx); | |
25001 | } | |
25002 | ||
25003 | /* vqtbl4 */ | |
25004 | ||
49ab9992 | 25005 | __extension__ extern __inline int8x8_t |
25006 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25007 | vqtbl4_s8 (int8x16x4_t tab, uint8x8_t idx) |
25008 | { | |
25009 | __builtin_aarch64_simd_xi __o; | |
25010 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25011 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25012 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25013 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[3], 3); | |
25014 | return __builtin_aarch64_qtbl4v8qi (__o, (int8x8_t)idx); | |
25015 | } | |
25016 | ||
49ab9992 | 25017 | __extension__ extern __inline uint8x8_t |
25018 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25019 | vqtbl4_u8 (uint8x16x4_t tab, uint8x8_t idx) |
25020 | { | |
25021 | __builtin_aarch64_simd_xi __o; | |
25022 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25023 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25024 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25025 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[3], 3); | |
25026 | return (uint8x8_t)__builtin_aarch64_qtbl4v8qi (__o, (int8x8_t)idx); | |
25027 | } | |
25028 | ||
49ab9992 | 25029 | __extension__ extern __inline poly8x8_t |
25030 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25031 | vqtbl4_p8 (poly8x16x4_t tab, uint8x8_t idx) |
25032 | { | |
25033 | __builtin_aarch64_simd_xi __o; | |
25034 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25035 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25036 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25037 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[3], 3); | |
25038 | return (poly8x8_t)__builtin_aarch64_qtbl4v8qi (__o, (int8x8_t)idx); | |
25039 | } | |
25040 | ||
49ab9992 | 25041 | __extension__ extern __inline int8x16_t |
25042 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25043 | vqtbl4q_s8 (int8x16x4_t tab, uint8x16_t idx) |
25044 | { | |
25045 | __builtin_aarch64_simd_xi __o; | |
25046 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25047 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25048 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25049 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[3], 3); | |
25050 | return __builtin_aarch64_qtbl4v16qi (__o, (int8x16_t)idx); | |
25051 | } | |
25052 | ||
49ab9992 | 25053 | __extension__ extern __inline uint8x16_t |
25054 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25055 | vqtbl4q_u8 (uint8x16x4_t tab, uint8x16_t idx) |
25056 | { | |
25057 | __builtin_aarch64_simd_xi __o; | |
25058 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25059 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25060 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25061 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[3], 3); | |
25062 | return (uint8x16_t)__builtin_aarch64_qtbl4v16qi (__o, (int8x16_t)idx); | |
25063 | } | |
25064 | ||
49ab9992 | 25065 | __extension__ extern __inline poly8x16_t |
25066 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25067 | vqtbl4q_p8 (poly8x16x4_t tab, uint8x16_t idx) |
25068 | { | |
25069 | __builtin_aarch64_simd_xi __o; | |
25070 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25071 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25072 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25073 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[3], 3); | |
25074 | return (poly8x16_t)__builtin_aarch64_qtbl4v16qi (__o, (int8x16_t)idx); | |
25075 | } | |
25076 | ||
25077 | ||
25078 | /* vqtbx2 */ | |
49ab9992 | 25079 | __extension__ extern __inline int8x8_t |
25080 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25081 | vqtbx2_s8 (int8x8_t r, int8x16x2_t tab, uint8x8_t idx) |
25082 | { | |
25083 | __builtin_aarch64_simd_oi __o; | |
25084 | __o = __builtin_aarch64_set_qregoiv16qi (__o, tab.val[0], 0); | |
25085 | __o = __builtin_aarch64_set_qregoiv16qi (__o, tab.val[1], 1); | |
25086 | return __builtin_aarch64_tbx4v8qi (r, __o, (int8x8_t)idx); | |
25087 | } | |
25088 | ||
49ab9992 | 25089 | __extension__ extern __inline uint8x8_t |
25090 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25091 | vqtbx2_u8 (uint8x8_t r, uint8x16x2_t tab, uint8x8_t idx) |
25092 | { | |
25093 | __builtin_aarch64_simd_oi __o; | |
25094 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25095 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25096 | return (uint8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)r, __o, | |
25097 | (int8x8_t)idx); | |
25098 | } | |
25099 | ||
49ab9992 | 25100 | __extension__ extern __inline poly8x8_t |
25101 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25102 | vqtbx2_p8 (poly8x8_t r, poly8x16x2_t tab, uint8x8_t idx) |
25103 | { | |
25104 | __builtin_aarch64_simd_oi __o; | |
25105 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25106 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25107 | return (poly8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)r, __o, | |
25108 | (int8x8_t)idx); | |
25109 | } | |
25110 | ||
49ab9992 | 25111 | __extension__ extern __inline int8x16_t |
25112 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25113 | vqtbx2q_s8 (int8x16_t r, int8x16x2_t tab, uint8x16_t idx) |
25114 | { | |
25115 | __builtin_aarch64_simd_oi __o; | |
25116 | __o = __builtin_aarch64_set_qregoiv16qi (__o, tab.val[0], 0); | |
25117 | __o = __builtin_aarch64_set_qregoiv16qi (__o, tab.val[1], 1); | |
25118 | return __builtin_aarch64_tbx4v16qi (r, __o, (int8x16_t)idx); | |
25119 | } | |
25120 | ||
49ab9992 | 25121 | __extension__ extern __inline uint8x16_t |
25122 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25123 | vqtbx2q_u8 (uint8x16_t r, uint8x16x2_t tab, uint8x16_t idx) |
25124 | { | |
25125 | __builtin_aarch64_simd_oi __o; | |
25126 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25127 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25128 | return (uint8x16_t)__builtin_aarch64_tbx4v16qi ((int8x16_t)r, __o, | |
25129 | (int8x16_t)idx); | |
25130 | } | |
25131 | ||
49ab9992 | 25132 | __extension__ extern __inline poly8x16_t |
25133 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25134 | vqtbx2q_p8 (poly8x16_t r, poly8x16x2_t tab, uint8x16_t idx) |
25135 | { | |
25136 | __builtin_aarch64_simd_oi __o; | |
25137 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25138 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25139 | return (poly8x16_t)__builtin_aarch64_tbx4v16qi ((int8x16_t)r, __o, | |
25140 | (int8x16_t)idx); | |
25141 | } | |
25142 | ||
25143 | /* vqtbx3 */ | |
49ab9992 | 25144 | __extension__ extern __inline int8x8_t |
25145 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25146 | vqtbx3_s8 (int8x8_t r, int8x16x3_t tab, uint8x8_t idx) |
25147 | { | |
25148 | __builtin_aarch64_simd_ci __o; | |
25149 | __o = __builtin_aarch64_set_qregciv16qi (__o, tab.val[0], 0); | |
25150 | __o = __builtin_aarch64_set_qregciv16qi (__o, tab.val[1], 1); | |
25151 | __o = __builtin_aarch64_set_qregciv16qi (__o, tab.val[2], 2); | |
25152 | return __builtin_aarch64_qtbx3v8qi (r, __o, (int8x8_t)idx); | |
25153 | } | |
25154 | ||
49ab9992 | 25155 | __extension__ extern __inline uint8x8_t |
25156 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25157 | vqtbx3_u8 (uint8x8_t r, uint8x16x3_t tab, uint8x8_t idx) |
25158 | { | |
25159 | __builtin_aarch64_simd_ci __o; | |
25160 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25161 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25162 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25163 | return (uint8x8_t)__builtin_aarch64_qtbx3v8qi ((int8x8_t)r, __o, | |
25164 | (int8x8_t)idx); | |
25165 | } | |
25166 | ||
49ab9992 | 25167 | __extension__ extern __inline poly8x8_t |
25168 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25169 | vqtbx3_p8 (poly8x8_t r, poly8x16x3_t tab, uint8x8_t idx) |
25170 | { | |
25171 | __builtin_aarch64_simd_ci __o; | |
25172 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25173 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25174 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25175 | return (poly8x8_t)__builtin_aarch64_qtbx3v8qi ((int8x8_t)r, __o, | |
25176 | (int8x8_t)idx); | |
25177 | } | |
25178 | ||
49ab9992 | 25179 | __extension__ extern __inline int8x16_t |
25180 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25181 | vqtbx3q_s8 (int8x16_t r, int8x16x3_t tab, uint8x16_t idx) |
25182 | { | |
25183 | __builtin_aarch64_simd_ci __o; | |
25184 | __o = __builtin_aarch64_set_qregciv16qi (__o, tab.val[0], 0); | |
25185 | __o = __builtin_aarch64_set_qregciv16qi (__o, tab.val[1], 1); | |
25186 | __o = __builtin_aarch64_set_qregciv16qi (__o, tab.val[2], 2); | |
25187 | return __builtin_aarch64_qtbx3v16qi (r, __o, (int8x16_t)idx); | |
25188 | } | |
25189 | ||
49ab9992 | 25190 | __extension__ extern __inline uint8x16_t |
25191 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25192 | vqtbx3q_u8 (uint8x16_t r, uint8x16x3_t tab, uint8x16_t idx) |
25193 | { | |
25194 | __builtin_aarch64_simd_ci __o; | |
25195 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25196 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25197 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25198 | return (uint8x16_t)__builtin_aarch64_qtbx3v16qi ((int8x16_t)r, __o, | |
25199 | (int8x16_t)idx); | |
25200 | } | |
25201 | ||
49ab9992 | 25202 | __extension__ extern __inline poly8x16_t |
25203 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25204 | vqtbx3q_p8 (poly8x16_t r, poly8x16x3_t tab, uint8x16_t idx) |
25205 | { | |
25206 | __builtin_aarch64_simd_ci __o; | |
25207 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25208 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25209 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25210 | return (poly8x16_t)__builtin_aarch64_qtbx3v16qi ((int8x16_t)r, __o, | |
25211 | (int8x16_t)idx); | |
25212 | } | |
25213 | ||
25214 | /* vqtbx4 */ | |
25215 | ||
49ab9992 | 25216 | __extension__ extern __inline int8x8_t |
25217 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25218 | vqtbx4_s8 (int8x8_t r, int8x16x4_t tab, uint8x8_t idx) |
25219 | { | |
25220 | __builtin_aarch64_simd_xi __o; | |
25221 | __o = __builtin_aarch64_set_qregxiv16qi (__o, tab.val[0], 0); | |
25222 | __o = __builtin_aarch64_set_qregxiv16qi (__o, tab.val[1], 1); | |
25223 | __o = __builtin_aarch64_set_qregxiv16qi (__o, tab.val[2], 2); | |
25224 | __o = __builtin_aarch64_set_qregxiv16qi (__o, tab.val[3], 3); | |
25225 | return __builtin_aarch64_qtbx4v8qi (r, __o, (int8x8_t)idx); | |
25226 | } | |
25227 | ||
49ab9992 | 25228 | __extension__ extern __inline uint8x8_t |
25229 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25230 | vqtbx4_u8 (uint8x8_t r, uint8x16x4_t tab, uint8x8_t idx) |
25231 | { | |
25232 | __builtin_aarch64_simd_xi __o; | |
25233 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25234 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25235 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25236 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[3], 3); | |
25237 | return (uint8x8_t)__builtin_aarch64_qtbx4v8qi ((int8x8_t)r, __o, | |
25238 | (int8x8_t)idx); | |
25239 | } | |
25240 | ||
49ab9992 | 25241 | __extension__ extern __inline poly8x8_t |
25242 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25243 | vqtbx4_p8 (poly8x8_t r, poly8x16x4_t tab, uint8x8_t idx) |
25244 | { | |
25245 | __builtin_aarch64_simd_xi __o; | |
25246 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25247 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25248 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25249 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[3], 3); | |
25250 | return (poly8x8_t)__builtin_aarch64_qtbx4v8qi ((int8x8_t)r, __o, | |
25251 | (int8x8_t)idx); | |
25252 | } | |
25253 | ||
49ab9992 | 25254 | __extension__ extern __inline int8x16_t |
25255 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25256 | vqtbx4q_s8 (int8x16_t r, int8x16x4_t tab, uint8x16_t idx) |
25257 | { | |
25258 | __builtin_aarch64_simd_xi __o; | |
25259 | __o = __builtin_aarch64_set_qregxiv16qi (__o, tab.val[0], 0); | |
25260 | __o = __builtin_aarch64_set_qregxiv16qi (__o, tab.val[1], 1); | |
25261 | __o = __builtin_aarch64_set_qregxiv16qi (__o, tab.val[2], 2); | |
25262 | __o = __builtin_aarch64_set_qregxiv16qi (__o, tab.val[3], 3); | |
25263 | return __builtin_aarch64_qtbx4v16qi (r, __o, (int8x16_t)idx); | |
25264 | } | |
25265 | ||
49ab9992 | 25266 | __extension__ extern __inline uint8x16_t |
25267 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25268 | vqtbx4q_u8 (uint8x16_t r, uint8x16x4_t tab, uint8x16_t idx) |
25269 | { | |
25270 | __builtin_aarch64_simd_xi __o; | |
25271 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25272 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25273 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25274 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[3], 3); | |
25275 | return (uint8x16_t)__builtin_aarch64_qtbx4v16qi ((int8x16_t)r, __o, | |
25276 | (int8x16_t)idx); | |
25277 | } | |
25278 | ||
49ab9992 | 25279 | __extension__ extern __inline poly8x16_t |
25280 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
b631bffd | 25281 | vqtbx4q_p8 (poly8x16_t r, poly8x16x4_t tab, uint8x16_t idx) |
25282 | { | |
25283 | __builtin_aarch64_simd_xi __o; | |
25284 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[0], 0); | |
25285 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[1], 1); | |
25286 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[2], 2); | |
25287 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)tab.val[3], 3); | |
25288 | return (poly8x16_t)__builtin_aarch64_qtbx4v16qi ((int8x16_t)r, __o, | |
25289 | (int8x16_t)idx); | |
25290 | } | |
25291 | ||
8dc079f0 | 25292 | /* vrbit */ |
25293 | ||
49ab9992 | 25294 | __extension__ extern __inline poly8x8_t |
25295 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8dc079f0 | 25296 | vrbit_p8 (poly8x8_t __a) |
25297 | { | |
25298 | return (poly8x8_t) __builtin_aarch64_rbitv8qi ((int8x8_t) __a); | |
25299 | } | |
25300 | ||
49ab9992 | 25301 | __extension__ extern __inline int8x8_t |
25302 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8dc079f0 | 25303 | vrbit_s8 (int8x8_t __a) |
25304 | { | |
25305 | return __builtin_aarch64_rbitv8qi (__a); | |
25306 | } | |
25307 | ||
49ab9992 | 25308 | __extension__ extern __inline uint8x8_t |
25309 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8dc079f0 | 25310 | vrbit_u8 (uint8x8_t __a) |
25311 | { | |
25312 | return (uint8x8_t) __builtin_aarch64_rbitv8qi ((int8x8_t) __a); | |
25313 | } | |
25314 | ||
49ab9992 | 25315 | __extension__ extern __inline poly8x16_t |
25316 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8dc079f0 | 25317 | vrbitq_p8 (poly8x16_t __a) |
25318 | { | |
25319 | return (poly8x16_t) __builtin_aarch64_rbitv16qi ((int8x16_t)__a); | |
25320 | } | |
25321 | ||
49ab9992 | 25322 | __extension__ extern __inline int8x16_t |
25323 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8dc079f0 | 25324 | vrbitq_s8 (int8x16_t __a) |
25325 | { | |
25326 | return __builtin_aarch64_rbitv16qi (__a); | |
25327 | } | |
25328 | ||
49ab9992 | 25329 | __extension__ extern __inline uint8x16_t |
25330 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8dc079f0 | 25331 | vrbitq_u8 (uint8x16_t __a) |
25332 | { | |
25333 | return (uint8x16_t) __builtin_aarch64_rbitv16qi ((int8x16_t) __a); | |
25334 | } | |
25335 | ||
7b990298 | 25336 | /* vrecpe */ |
25337 | ||
49ab9992 | 25338 | __extension__ extern __inline uint32x2_t |
25339 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 25340 | vrecpe_u32 (uint32x2_t __a) |
25341 | { | |
25342 | return (uint32x2_t) __builtin_aarch64_urecpev2si ((int32x2_t) __a); | |
25343 | } | |
49ab9992 | 25344 | |
25345 | __extension__ extern __inline uint32x4_t | |
25346 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6fa49e69 | 25347 | vrecpeq_u32 (uint32x4_t __a) |
25348 | { | |
25349 | return (uint32x4_t) __builtin_aarch64_urecpev4si ((int32x4_t) __a); | |
25350 | } | |
25351 | ||
49ab9992 | 25352 | __extension__ extern __inline float32_t |
25353 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7b990298 | 25354 | vrecpes_f32 (float32_t __a) |
25355 | { | |
25356 | return __builtin_aarch64_frecpesf (__a); | |
25357 | } | |
25358 | ||
49ab9992 | 25359 | __extension__ extern __inline float64_t |
25360 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7b990298 | 25361 | vrecped_f64 (float64_t __a) |
25362 | { | |
25363 | return __builtin_aarch64_frecpedf (__a); | |
25364 | } | |
25365 | ||
49ab9992 | 25366 | __extension__ extern __inline float32x2_t |
25367 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7b990298 | 25368 | vrecpe_f32 (float32x2_t __a) |
25369 | { | |
25370 | return __builtin_aarch64_frecpev2sf (__a); | |
25371 | } | |
25372 | ||
49ab9992 | 25373 | __extension__ extern __inline float64x1_t |
25374 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7ab71cb3 | 25375 | vrecpe_f64 (float64x1_t __a) |
25376 | { | |
25377 | return (float64x1_t) { vrecped_f64 (vget_lane_f64 (__a, 0)) }; | |
25378 | } | |
25379 | ||
49ab9992 | 25380 | __extension__ extern __inline float32x4_t |
25381 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7b990298 | 25382 | vrecpeq_f32 (float32x4_t __a) |
25383 | { | |
25384 | return __builtin_aarch64_frecpev4sf (__a); | |
25385 | } | |
25386 | ||
49ab9992 | 25387 | __extension__ extern __inline float64x2_t |
25388 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7b990298 | 25389 | vrecpeq_f64 (float64x2_t __a) |
25390 | { | |
25391 | return __builtin_aarch64_frecpev2df (__a); | |
25392 | } | |
25393 | ||
25394 | /* vrecps */ | |
25395 | ||
49ab9992 | 25396 | __extension__ extern __inline float32_t |
25397 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7b990298 | 25398 | vrecpss_f32 (float32_t __a, float32_t __b) |
25399 | { | |
25400 | return __builtin_aarch64_frecpssf (__a, __b); | |
25401 | } | |
25402 | ||
49ab9992 | 25403 | __extension__ extern __inline float64_t |
25404 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7b990298 | 25405 | vrecpsd_f64 (float64_t __a, float64_t __b) |
25406 | { | |
25407 | return __builtin_aarch64_frecpsdf (__a, __b); | |
25408 | } | |
25409 | ||
49ab9992 | 25410 | __extension__ extern __inline float32x2_t |
25411 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7b990298 | 25412 | vrecps_f32 (float32x2_t __a, float32x2_t __b) |
25413 | { | |
25414 | return __builtin_aarch64_frecpsv2sf (__a, __b); | |
25415 | } | |
25416 | ||
49ab9992 | 25417 | __extension__ extern __inline float64x1_t |
25418 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7ab71cb3 | 25419 | vrecps_f64 (float64x1_t __a, float64x1_t __b) |
25420 | { | |
25421 | return (float64x1_t) { vrecpsd_f64 (vget_lane_f64 (__a, 0), | |
25422 | vget_lane_f64 (__b, 0)) }; | |
25423 | } | |
25424 | ||
49ab9992 | 25425 | __extension__ extern __inline float32x4_t |
25426 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7b990298 | 25427 | vrecpsq_f32 (float32x4_t __a, float32x4_t __b) |
25428 | { | |
25429 | return __builtin_aarch64_frecpsv4sf (__a, __b); | |
25430 | } | |
25431 | ||
49ab9992 | 25432 | __extension__ extern __inline float64x2_t |
25433 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7b990298 | 25434 | vrecpsq_f64 (float64x2_t __a, float64x2_t __b) |
25435 | { | |
25436 | return __builtin_aarch64_frecpsv2df (__a, __b); | |
25437 | } | |
25438 | ||
25439 | /* vrecpx */ | |
25440 | ||
49ab9992 | 25441 | __extension__ extern __inline float32_t |
25442 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7b990298 | 25443 | vrecpxs_f32 (float32_t __a) |
25444 | { | |
25445 | return __builtin_aarch64_frecpxsf (__a); | |
25446 | } | |
25447 | ||
49ab9992 | 25448 | __extension__ extern __inline float64_t |
25449 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7b990298 | 25450 | vrecpxd_f64 (float64_t __a) |
25451 | { | |
25452 | return __builtin_aarch64_frecpxdf (__a); | |
25453 | } | |
25454 | ||
5f5fccf7 | 25455 | |
25456 | /* vrev */ | |
25457 | ||
49ab9992 | 25458 | __extension__ extern __inline poly8x8_t |
25459 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25460 | vrev16_p8 (poly8x8_t a) |
25461 | { | |
25462 | return __builtin_shuffle (a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); | |
25463 | } | |
25464 | ||
49ab9992 | 25465 | __extension__ extern __inline int8x8_t |
25466 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25467 | vrev16_s8 (int8x8_t a) |
25468 | { | |
25469 | return __builtin_shuffle (a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); | |
25470 | } | |
25471 | ||
49ab9992 | 25472 | __extension__ extern __inline uint8x8_t |
25473 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25474 | vrev16_u8 (uint8x8_t a) |
25475 | { | |
25476 | return __builtin_shuffle (a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); | |
25477 | } | |
25478 | ||
49ab9992 | 25479 | __extension__ extern __inline poly8x16_t |
25480 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25481 | vrev16q_p8 (poly8x16_t a) |
25482 | { | |
25483 | return __builtin_shuffle (a, | |
25484 | (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 }); | |
25485 | } | |
25486 | ||
49ab9992 | 25487 | __extension__ extern __inline int8x16_t |
25488 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25489 | vrev16q_s8 (int8x16_t a) |
25490 | { | |
25491 | return __builtin_shuffle (a, | |
25492 | (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 }); | |
25493 | } | |
25494 | ||
49ab9992 | 25495 | __extension__ extern __inline uint8x16_t |
25496 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25497 | vrev16q_u8 (uint8x16_t a) |
25498 | { | |
25499 | return __builtin_shuffle (a, | |
25500 | (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 }); | |
25501 | } | |
25502 | ||
49ab9992 | 25503 | __extension__ extern __inline poly8x8_t |
25504 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25505 | vrev32_p8 (poly8x8_t a) |
25506 | { | |
25507 | return __builtin_shuffle (a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); | |
25508 | } | |
25509 | ||
49ab9992 | 25510 | __extension__ extern __inline poly16x4_t |
25511 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25512 | vrev32_p16 (poly16x4_t a) |
25513 | { | |
25514 | return __builtin_shuffle (a, (uint16x4_t) { 1, 0, 3, 2 }); | |
25515 | } | |
25516 | ||
49ab9992 | 25517 | __extension__ extern __inline int8x8_t |
25518 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25519 | vrev32_s8 (int8x8_t a) |
25520 | { | |
25521 | return __builtin_shuffle (a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); | |
25522 | } | |
25523 | ||
49ab9992 | 25524 | __extension__ extern __inline int16x4_t |
25525 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25526 | vrev32_s16 (int16x4_t a) |
25527 | { | |
25528 | return __builtin_shuffle (a, (uint16x4_t) { 1, 0, 3, 2 }); | |
25529 | } | |
25530 | ||
49ab9992 | 25531 | __extension__ extern __inline uint8x8_t |
25532 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25533 | vrev32_u8 (uint8x8_t a) |
25534 | { | |
25535 | return __builtin_shuffle (a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); | |
25536 | } | |
25537 | ||
49ab9992 | 25538 | __extension__ extern __inline uint16x4_t |
25539 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25540 | vrev32_u16 (uint16x4_t a) |
25541 | { | |
25542 | return __builtin_shuffle (a, (uint16x4_t) { 1, 0, 3, 2 }); | |
25543 | } | |
25544 | ||
49ab9992 | 25545 | __extension__ extern __inline poly8x16_t |
25546 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25547 | vrev32q_p8 (poly8x16_t a) |
25548 | { | |
25549 | return __builtin_shuffle (a, | |
25550 | (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 }); | |
25551 | } | |
25552 | ||
49ab9992 | 25553 | __extension__ extern __inline poly16x8_t |
25554 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25555 | vrev32q_p16 (poly16x8_t a) |
25556 | { | |
25557 | return __builtin_shuffle (a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); | |
25558 | } | |
25559 | ||
49ab9992 | 25560 | __extension__ extern __inline int8x16_t |
25561 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25562 | vrev32q_s8 (int8x16_t a) |
25563 | { | |
25564 | return __builtin_shuffle (a, | |
25565 | (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 }); | |
25566 | } | |
25567 | ||
49ab9992 | 25568 | __extension__ extern __inline int16x8_t |
25569 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25570 | vrev32q_s16 (int16x8_t a) |
25571 | { | |
25572 | return __builtin_shuffle (a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); | |
25573 | } | |
25574 | ||
49ab9992 | 25575 | __extension__ extern __inline uint8x16_t |
25576 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25577 | vrev32q_u8 (uint8x16_t a) |
25578 | { | |
25579 | return __builtin_shuffle (a, | |
25580 | (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 }); | |
25581 | } | |
25582 | ||
49ab9992 | 25583 | __extension__ extern __inline uint16x8_t |
25584 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25585 | vrev32q_u16 (uint16x8_t a) |
25586 | { | |
25587 | return __builtin_shuffle (a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); | |
25588 | } | |
25589 | ||
49ab9992 | 25590 | __extension__ extern __inline float16x4_t |
25591 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 25592 | vrev64_f16 (float16x4_t __a) |
25593 | { | |
25594 | return __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 }); | |
25595 | } | |
25596 | ||
49ab9992 | 25597 | __extension__ extern __inline float32x2_t |
25598 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25599 | vrev64_f32 (float32x2_t a) |
25600 | { | |
25601 | return __builtin_shuffle (a, (uint32x2_t) { 1, 0 }); | |
25602 | } | |
25603 | ||
49ab9992 | 25604 | __extension__ extern __inline poly8x8_t |
25605 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25606 | vrev64_p8 (poly8x8_t a) |
25607 | { | |
25608 | return __builtin_shuffle (a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 }); | |
25609 | } | |
25610 | ||
49ab9992 | 25611 | __extension__ extern __inline poly16x4_t |
25612 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25613 | vrev64_p16 (poly16x4_t a) |
25614 | { | |
25615 | return __builtin_shuffle (a, (uint16x4_t) { 3, 2, 1, 0 }); | |
25616 | } | |
25617 | ||
49ab9992 | 25618 | __extension__ extern __inline int8x8_t |
25619 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25620 | vrev64_s8 (int8x8_t a) |
25621 | { | |
25622 | return __builtin_shuffle (a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 }); | |
25623 | } | |
25624 | ||
49ab9992 | 25625 | __extension__ extern __inline int16x4_t |
25626 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25627 | vrev64_s16 (int16x4_t a) |
25628 | { | |
25629 | return __builtin_shuffle (a, (uint16x4_t) { 3, 2, 1, 0 }); | |
25630 | } | |
25631 | ||
49ab9992 | 25632 | __extension__ extern __inline int32x2_t |
25633 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25634 | vrev64_s32 (int32x2_t a) |
25635 | { | |
25636 | return __builtin_shuffle (a, (uint32x2_t) { 1, 0 }); | |
25637 | } | |
25638 | ||
49ab9992 | 25639 | __extension__ extern __inline uint8x8_t |
25640 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25641 | vrev64_u8 (uint8x8_t a) |
25642 | { | |
25643 | return __builtin_shuffle (a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 }); | |
25644 | } | |
25645 | ||
49ab9992 | 25646 | __extension__ extern __inline uint16x4_t |
25647 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25648 | vrev64_u16 (uint16x4_t a) |
25649 | { | |
25650 | return __builtin_shuffle (a, (uint16x4_t) { 3, 2, 1, 0 }); | |
25651 | } | |
25652 | ||
49ab9992 | 25653 | __extension__ extern __inline uint32x2_t |
25654 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25655 | vrev64_u32 (uint32x2_t a) |
25656 | { | |
25657 | return __builtin_shuffle (a, (uint32x2_t) { 1, 0 }); | |
25658 | } | |
25659 | ||
49ab9992 | 25660 | __extension__ extern __inline float16x8_t |
25661 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 25662 | vrev64q_f16 (float16x8_t __a) |
25663 | { | |
25664 | return __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); | |
25665 | } | |
25666 | ||
49ab9992 | 25667 | __extension__ extern __inline float32x4_t |
25668 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25669 | vrev64q_f32 (float32x4_t a) |
25670 | { | |
25671 | return __builtin_shuffle (a, (uint32x4_t) { 1, 0, 3, 2 }); | |
25672 | } | |
25673 | ||
49ab9992 | 25674 | __extension__ extern __inline poly8x16_t |
25675 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25676 | vrev64q_p8 (poly8x16_t a) |
25677 | { | |
25678 | return __builtin_shuffle (a, | |
25679 | (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 }); | |
25680 | } | |
25681 | ||
49ab9992 | 25682 | __extension__ extern __inline poly16x8_t |
25683 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25684 | vrev64q_p16 (poly16x8_t a) |
25685 | { | |
25686 | return __builtin_shuffle (a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); | |
25687 | } | |
25688 | ||
49ab9992 | 25689 | __extension__ extern __inline int8x16_t |
25690 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25691 | vrev64q_s8 (int8x16_t a) |
25692 | { | |
25693 | return __builtin_shuffle (a, | |
25694 | (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 }); | |
25695 | } | |
25696 | ||
49ab9992 | 25697 | __extension__ extern __inline int16x8_t |
25698 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25699 | vrev64q_s16 (int16x8_t a) |
25700 | { | |
25701 | return __builtin_shuffle (a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); | |
25702 | } | |
25703 | ||
49ab9992 | 25704 | __extension__ extern __inline int32x4_t |
25705 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25706 | vrev64q_s32 (int32x4_t a) |
25707 | { | |
25708 | return __builtin_shuffle (a, (uint32x4_t) { 1, 0, 3, 2 }); | |
25709 | } | |
25710 | ||
49ab9992 | 25711 | __extension__ extern __inline uint8x16_t |
25712 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25713 | vrev64q_u8 (uint8x16_t a) |
25714 | { | |
25715 | return __builtin_shuffle (a, | |
25716 | (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 }); | |
25717 | } | |
25718 | ||
49ab9992 | 25719 | __extension__ extern __inline uint16x8_t |
25720 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25721 | vrev64q_u16 (uint16x8_t a) |
25722 | { | |
25723 | return __builtin_shuffle (a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); | |
25724 | } | |
25725 | ||
49ab9992 | 25726 | __extension__ extern __inline uint32x4_t |
25727 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5f5fccf7 | 25728 | vrev64q_u32 (uint32x4_t a) |
25729 | { | |
25730 | return __builtin_shuffle (a, (uint32x4_t) { 1, 0, 3, 2 }); | |
25731 | } | |
25732 | ||
0c882306 | 25733 | /* vrnd */ |
25734 | ||
49ab9992 | 25735 | __extension__ extern __inline float32x2_t |
25736 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25737 | vrnd_f32 (float32x2_t __a) |
25738 | { | |
25739 | return __builtin_aarch64_btruncv2sf (__a); | |
25740 | } | |
25741 | ||
49ab9992 | 25742 | __extension__ extern __inline float64x1_t |
25743 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
90231a68 | 25744 | vrnd_f64 (float64x1_t __a) |
25745 | { | |
25746 | return vset_lane_f64 (__builtin_trunc (vget_lane_f64 (__a, 0)), __a, 0); | |
25747 | } | |
25748 | ||
49ab9992 | 25749 | __extension__ extern __inline float32x4_t |
25750 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25751 | vrndq_f32 (float32x4_t __a) |
25752 | { | |
25753 | return __builtin_aarch64_btruncv4sf (__a); | |
25754 | } | |
25755 | ||
49ab9992 | 25756 | __extension__ extern __inline float64x2_t |
25757 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25758 | vrndq_f64 (float64x2_t __a) |
25759 | { | |
25760 | return __builtin_aarch64_btruncv2df (__a); | |
25761 | } | |
25762 | ||
25763 | /* vrnda */ | |
25764 | ||
49ab9992 | 25765 | __extension__ extern __inline float32x2_t |
25766 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25767 | vrnda_f32 (float32x2_t __a) |
25768 | { | |
25769 | return __builtin_aarch64_roundv2sf (__a); | |
25770 | } | |
25771 | ||
49ab9992 | 25772 | __extension__ extern __inline float64x1_t |
25773 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
90231a68 | 25774 | vrnda_f64 (float64x1_t __a) |
25775 | { | |
25776 | return vset_lane_f64 (__builtin_round (vget_lane_f64 (__a, 0)), __a, 0); | |
25777 | } | |
25778 | ||
49ab9992 | 25779 | __extension__ extern __inline float32x4_t |
25780 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25781 | vrndaq_f32 (float32x4_t __a) |
25782 | { | |
25783 | return __builtin_aarch64_roundv4sf (__a); | |
25784 | } | |
25785 | ||
49ab9992 | 25786 | __extension__ extern __inline float64x2_t |
25787 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25788 | vrndaq_f64 (float64x2_t __a) |
25789 | { | |
25790 | return __builtin_aarch64_roundv2df (__a); | |
25791 | } | |
25792 | ||
25793 | /* vrndi */ | |
25794 | ||
49ab9992 | 25795 | __extension__ extern __inline float32x2_t |
25796 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25797 | vrndi_f32 (float32x2_t __a) |
25798 | { | |
25799 | return __builtin_aarch64_nearbyintv2sf (__a); | |
25800 | } | |
25801 | ||
49ab9992 | 25802 | __extension__ extern __inline float64x1_t |
25803 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
90231a68 | 25804 | vrndi_f64 (float64x1_t __a) |
25805 | { | |
25806 | return vset_lane_f64 (__builtin_nearbyint (vget_lane_f64 (__a, 0)), __a, 0); | |
25807 | } | |
25808 | ||
49ab9992 | 25809 | __extension__ extern __inline float32x4_t |
25810 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25811 | vrndiq_f32 (float32x4_t __a) |
25812 | { | |
25813 | return __builtin_aarch64_nearbyintv4sf (__a); | |
25814 | } | |
25815 | ||
49ab9992 | 25816 | __extension__ extern __inline float64x2_t |
25817 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25818 | vrndiq_f64 (float64x2_t __a) |
25819 | { | |
25820 | return __builtin_aarch64_nearbyintv2df (__a); | |
25821 | } | |
25822 | ||
25823 | /* vrndm */ | |
25824 | ||
49ab9992 | 25825 | __extension__ extern __inline float32x2_t |
25826 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25827 | vrndm_f32 (float32x2_t __a) |
25828 | { | |
25829 | return __builtin_aarch64_floorv2sf (__a); | |
25830 | } | |
25831 | ||
49ab9992 | 25832 | __extension__ extern __inline float64x1_t |
25833 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
90231a68 | 25834 | vrndm_f64 (float64x1_t __a) |
25835 | { | |
25836 | return vset_lane_f64 (__builtin_floor (vget_lane_f64 (__a, 0)), __a, 0); | |
25837 | } | |
25838 | ||
49ab9992 | 25839 | __extension__ extern __inline float32x4_t |
25840 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25841 | vrndmq_f32 (float32x4_t __a) |
25842 | { | |
25843 | return __builtin_aarch64_floorv4sf (__a); | |
25844 | } | |
25845 | ||
49ab9992 | 25846 | __extension__ extern __inline float64x2_t |
25847 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25848 | vrndmq_f64 (float64x2_t __a) |
25849 | { | |
25850 | return __builtin_aarch64_floorv2df (__a); | |
25851 | } | |
25852 | ||
25853 | /* vrndn */ | |
25854 | ||
49ab9992 | 25855 | __extension__ extern __inline float32x2_t |
25856 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25857 | vrndn_f32 (float32x2_t __a) |
25858 | { | |
25859 | return __builtin_aarch64_frintnv2sf (__a); | |
25860 | } | |
90231a68 | 25861 | |
49ab9992 | 25862 | __extension__ extern __inline float64x1_t |
25863 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
90231a68 | 25864 | vrndn_f64 (float64x1_t __a) |
25865 | { | |
ac292ff5 | 25866 | return (float64x1_t) {__builtin_aarch64_frintndf (__a[0])}; |
90231a68 | 25867 | } |
25868 | ||
49ab9992 | 25869 | __extension__ extern __inline float32x4_t |
25870 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25871 | vrndnq_f32 (float32x4_t __a) |
25872 | { | |
25873 | return __builtin_aarch64_frintnv4sf (__a); | |
25874 | } | |
25875 | ||
49ab9992 | 25876 | __extension__ extern __inline float64x2_t |
25877 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25878 | vrndnq_f64 (float64x2_t __a) |
25879 | { | |
25880 | return __builtin_aarch64_frintnv2df (__a); | |
25881 | } | |
25882 | ||
25883 | /* vrndp */ | |
25884 | ||
49ab9992 | 25885 | __extension__ extern __inline float32x2_t |
25886 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25887 | vrndp_f32 (float32x2_t __a) |
25888 | { | |
25889 | return __builtin_aarch64_ceilv2sf (__a); | |
25890 | } | |
25891 | ||
49ab9992 | 25892 | __extension__ extern __inline float64x1_t |
25893 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
90231a68 | 25894 | vrndp_f64 (float64x1_t __a) |
25895 | { | |
25896 | return vset_lane_f64 (__builtin_ceil (vget_lane_f64 (__a, 0)), __a, 0); | |
25897 | } | |
25898 | ||
49ab9992 | 25899 | __extension__ extern __inline float32x4_t |
25900 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25901 | vrndpq_f32 (float32x4_t __a) |
25902 | { | |
25903 | return __builtin_aarch64_ceilv4sf (__a); | |
25904 | } | |
25905 | ||
49ab9992 | 25906 | __extension__ extern __inline float64x2_t |
25907 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25908 | vrndpq_f64 (float64x2_t __a) |
25909 | { | |
25910 | return __builtin_aarch64_ceilv2df (__a); | |
25911 | } | |
25912 | ||
25913 | /* vrndx */ | |
25914 | ||
49ab9992 | 25915 | __extension__ extern __inline float32x2_t |
25916 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25917 | vrndx_f32 (float32x2_t __a) |
25918 | { | |
25919 | return __builtin_aarch64_rintv2sf (__a); | |
25920 | } | |
25921 | ||
49ab9992 | 25922 | __extension__ extern __inline float64x1_t |
25923 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
90231a68 | 25924 | vrndx_f64 (float64x1_t __a) |
25925 | { | |
25926 | return vset_lane_f64 (__builtin_rint (vget_lane_f64 (__a, 0)), __a, 0); | |
25927 | } | |
25928 | ||
49ab9992 | 25929 | __extension__ extern __inline float32x4_t |
25930 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25931 | vrndxq_f32 (float32x4_t __a) |
25932 | { | |
25933 | return __builtin_aarch64_rintv4sf (__a); | |
25934 | } | |
25935 | ||
49ab9992 | 25936 | __extension__ extern __inline float64x2_t |
25937 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
0c882306 | 25938 | vrndxq_f64 (float64x2_t __a) |
25939 | { | |
25940 | return __builtin_aarch64_rintv2df (__a); | |
25941 | } | |
25942 | ||
df401d54 | 25943 | /* vrshl */ |
25944 | ||
49ab9992 | 25945 | __extension__ extern __inline int8x8_t |
25946 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 25947 | vrshl_s8 (int8x8_t __a, int8x8_t __b) |
25948 | { | |
25949 | return (int8x8_t) __builtin_aarch64_srshlv8qi (__a, __b); | |
25950 | } | |
25951 | ||
49ab9992 | 25952 | __extension__ extern __inline int16x4_t |
25953 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 25954 | vrshl_s16 (int16x4_t __a, int16x4_t __b) |
25955 | { | |
25956 | return (int16x4_t) __builtin_aarch64_srshlv4hi (__a, __b); | |
25957 | } | |
25958 | ||
49ab9992 | 25959 | __extension__ extern __inline int32x2_t |
25960 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 25961 | vrshl_s32 (int32x2_t __a, int32x2_t __b) |
25962 | { | |
25963 | return (int32x2_t) __builtin_aarch64_srshlv2si (__a, __b); | |
25964 | } | |
25965 | ||
49ab9992 | 25966 | __extension__ extern __inline int64x1_t |
25967 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 25968 | vrshl_s64 (int64x1_t __a, int64x1_t __b) |
25969 | { | |
12fc7207 | 25970 | return (int64x1_t) {__builtin_aarch64_srshldi (__a[0], __b[0])}; |
df401d54 | 25971 | } |
25972 | ||
49ab9992 | 25973 | __extension__ extern __inline uint8x8_t |
25974 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 25975 | vrshl_u8 (uint8x8_t __a, int8x8_t __b) |
25976 | { | |
42b87b5f | 25977 | return __builtin_aarch64_urshlv8qi_uus (__a, __b); |
df401d54 | 25978 | } |
25979 | ||
49ab9992 | 25980 | __extension__ extern __inline uint16x4_t |
25981 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 25982 | vrshl_u16 (uint16x4_t __a, int16x4_t __b) |
25983 | { | |
42b87b5f | 25984 | return __builtin_aarch64_urshlv4hi_uus (__a, __b); |
df401d54 | 25985 | } |
25986 | ||
49ab9992 | 25987 | __extension__ extern __inline uint32x2_t |
25988 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 25989 | vrshl_u32 (uint32x2_t __a, int32x2_t __b) |
25990 | { | |
42b87b5f | 25991 | return __builtin_aarch64_urshlv2si_uus (__a, __b); |
df401d54 | 25992 | } |
25993 | ||
49ab9992 | 25994 | __extension__ extern __inline uint64x1_t |
25995 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 25996 | vrshl_u64 (uint64x1_t __a, int64x1_t __b) |
25997 | { | |
12fc7207 | 25998 | return (uint64x1_t) {__builtin_aarch64_urshldi_uus (__a[0], __b[0])}; |
df401d54 | 25999 | } |
26000 | ||
49ab9992 | 26001 | __extension__ extern __inline int8x16_t |
26002 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26003 | vrshlq_s8 (int8x16_t __a, int8x16_t __b) |
26004 | { | |
26005 | return (int8x16_t) __builtin_aarch64_srshlv16qi (__a, __b); | |
26006 | } | |
26007 | ||
49ab9992 | 26008 | __extension__ extern __inline int16x8_t |
26009 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26010 | vrshlq_s16 (int16x8_t __a, int16x8_t __b) |
26011 | { | |
26012 | return (int16x8_t) __builtin_aarch64_srshlv8hi (__a, __b); | |
26013 | } | |
26014 | ||
49ab9992 | 26015 | __extension__ extern __inline int32x4_t |
26016 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26017 | vrshlq_s32 (int32x4_t __a, int32x4_t __b) |
26018 | { | |
26019 | return (int32x4_t) __builtin_aarch64_srshlv4si (__a, __b); | |
26020 | } | |
26021 | ||
49ab9992 | 26022 | __extension__ extern __inline int64x2_t |
26023 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26024 | vrshlq_s64 (int64x2_t __a, int64x2_t __b) |
26025 | { | |
26026 | return (int64x2_t) __builtin_aarch64_srshlv2di (__a, __b); | |
26027 | } | |
26028 | ||
49ab9992 | 26029 | __extension__ extern __inline uint8x16_t |
26030 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26031 | vrshlq_u8 (uint8x16_t __a, int8x16_t __b) |
26032 | { | |
42b87b5f | 26033 | return __builtin_aarch64_urshlv16qi_uus (__a, __b); |
df401d54 | 26034 | } |
26035 | ||
49ab9992 | 26036 | __extension__ extern __inline uint16x8_t |
26037 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26038 | vrshlq_u16 (uint16x8_t __a, int16x8_t __b) |
26039 | { | |
42b87b5f | 26040 | return __builtin_aarch64_urshlv8hi_uus (__a, __b); |
df401d54 | 26041 | } |
26042 | ||
49ab9992 | 26043 | __extension__ extern __inline uint32x4_t |
26044 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26045 | vrshlq_u32 (uint32x4_t __a, int32x4_t __b) |
26046 | { | |
42b87b5f | 26047 | return __builtin_aarch64_urshlv4si_uus (__a, __b); |
df401d54 | 26048 | } |
26049 | ||
49ab9992 | 26050 | __extension__ extern __inline uint64x2_t |
26051 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26052 | vrshlq_u64 (uint64x2_t __a, int64x2_t __b) |
26053 | { | |
42b87b5f | 26054 | return __builtin_aarch64_urshlv2di_uus (__a, __b); |
df401d54 | 26055 | } |
26056 | ||
49ab9992 | 26057 | __extension__ extern __inline int64_t |
26058 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 26059 | vrshld_s64 (int64_t __a, int64_t __b) |
df401d54 | 26060 | { |
12fc7207 | 26061 | return __builtin_aarch64_srshldi (__a, __b); |
df401d54 | 26062 | } |
26063 | ||
49ab9992 | 26064 | __extension__ extern __inline uint64_t |
26065 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 26066 | vrshld_u64 (uint64_t __a, int64_t __b) |
df401d54 | 26067 | { |
42b87b5f | 26068 | return __builtin_aarch64_urshldi_uus (__a, __b); |
df401d54 | 26069 | } |
26070 | ||
26071 | /* vrshr */ | |
26072 | ||
49ab9992 | 26073 | __extension__ extern __inline int8x8_t |
26074 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26075 | vrshr_n_s8 (int8x8_t __a, const int __b) |
26076 | { | |
26077 | return (int8x8_t) __builtin_aarch64_srshr_nv8qi (__a, __b); | |
26078 | } | |
26079 | ||
49ab9992 | 26080 | __extension__ extern __inline int16x4_t |
26081 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26082 | vrshr_n_s16 (int16x4_t __a, const int __b) |
26083 | { | |
26084 | return (int16x4_t) __builtin_aarch64_srshr_nv4hi (__a, __b); | |
26085 | } | |
26086 | ||
49ab9992 | 26087 | __extension__ extern __inline int32x2_t |
26088 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26089 | vrshr_n_s32 (int32x2_t __a, const int __b) |
26090 | { | |
26091 | return (int32x2_t) __builtin_aarch64_srshr_nv2si (__a, __b); | |
26092 | } | |
26093 | ||
49ab9992 | 26094 | __extension__ extern __inline int64x1_t |
26095 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26096 | vrshr_n_s64 (int64x1_t __a, const int __b) |
26097 | { | |
12fc7207 | 26098 | return (int64x1_t) {__builtin_aarch64_srshr_ndi (__a[0], __b)}; |
df401d54 | 26099 | } |
26100 | ||
49ab9992 | 26101 | __extension__ extern __inline uint8x8_t |
26102 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26103 | vrshr_n_u8 (uint8x8_t __a, const int __b) |
26104 | { | |
42b87b5f | 26105 | return __builtin_aarch64_urshr_nv8qi_uus (__a, __b); |
df401d54 | 26106 | } |
26107 | ||
49ab9992 | 26108 | __extension__ extern __inline uint16x4_t |
26109 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26110 | vrshr_n_u16 (uint16x4_t __a, const int __b) |
26111 | { | |
42b87b5f | 26112 | return __builtin_aarch64_urshr_nv4hi_uus (__a, __b); |
df401d54 | 26113 | } |
26114 | ||
49ab9992 | 26115 | __extension__ extern __inline uint32x2_t |
26116 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26117 | vrshr_n_u32 (uint32x2_t __a, const int __b) |
26118 | { | |
42b87b5f | 26119 | return __builtin_aarch64_urshr_nv2si_uus (__a, __b); |
df401d54 | 26120 | } |
26121 | ||
49ab9992 | 26122 | __extension__ extern __inline uint64x1_t |
26123 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26124 | vrshr_n_u64 (uint64x1_t __a, const int __b) |
26125 | { | |
12fc7207 | 26126 | return (uint64x1_t) {__builtin_aarch64_urshr_ndi_uus (__a[0], __b)}; |
df401d54 | 26127 | } |
26128 | ||
49ab9992 | 26129 | __extension__ extern __inline int8x16_t |
26130 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26131 | vrshrq_n_s8 (int8x16_t __a, const int __b) |
26132 | { | |
26133 | return (int8x16_t) __builtin_aarch64_srshr_nv16qi (__a, __b); | |
26134 | } | |
26135 | ||
49ab9992 | 26136 | __extension__ extern __inline int16x8_t |
26137 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26138 | vrshrq_n_s16 (int16x8_t __a, const int __b) |
26139 | { | |
26140 | return (int16x8_t) __builtin_aarch64_srshr_nv8hi (__a, __b); | |
26141 | } | |
26142 | ||
49ab9992 | 26143 | __extension__ extern __inline int32x4_t |
26144 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26145 | vrshrq_n_s32 (int32x4_t __a, const int __b) |
26146 | { | |
26147 | return (int32x4_t) __builtin_aarch64_srshr_nv4si (__a, __b); | |
26148 | } | |
26149 | ||
49ab9992 | 26150 | __extension__ extern __inline int64x2_t |
26151 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26152 | vrshrq_n_s64 (int64x2_t __a, const int __b) |
26153 | { | |
26154 | return (int64x2_t) __builtin_aarch64_srshr_nv2di (__a, __b); | |
26155 | } | |
26156 | ||
49ab9992 | 26157 | __extension__ extern __inline uint8x16_t |
26158 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26159 | vrshrq_n_u8 (uint8x16_t __a, const int __b) |
26160 | { | |
42b87b5f | 26161 | return __builtin_aarch64_urshr_nv16qi_uus (__a, __b); |
df401d54 | 26162 | } |
26163 | ||
49ab9992 | 26164 | __extension__ extern __inline uint16x8_t |
26165 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26166 | vrshrq_n_u16 (uint16x8_t __a, const int __b) |
26167 | { | |
42b87b5f | 26168 | return __builtin_aarch64_urshr_nv8hi_uus (__a, __b); |
df401d54 | 26169 | } |
26170 | ||
49ab9992 | 26171 | __extension__ extern __inline uint32x4_t |
26172 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26173 | vrshrq_n_u32 (uint32x4_t __a, const int __b) |
26174 | { | |
42b87b5f | 26175 | return __builtin_aarch64_urshr_nv4si_uus (__a, __b); |
df401d54 | 26176 | } |
26177 | ||
49ab9992 | 26178 | __extension__ extern __inline uint64x2_t |
26179 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26180 | vrshrq_n_u64 (uint64x2_t __a, const int __b) |
26181 | { | |
42b87b5f | 26182 | return __builtin_aarch64_urshr_nv2di_uus (__a, __b); |
df401d54 | 26183 | } |
26184 | ||
49ab9992 | 26185 | __extension__ extern __inline int64_t |
26186 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 26187 | vrshrd_n_s64 (int64_t __a, const int __b) |
df401d54 | 26188 | { |
12fc7207 | 26189 | return __builtin_aarch64_srshr_ndi (__a, __b); |
df401d54 | 26190 | } |
26191 | ||
49ab9992 | 26192 | __extension__ extern __inline uint64_t |
26193 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 26194 | vrshrd_n_u64 (uint64_t __a, const int __b) |
df401d54 | 26195 | { |
42b87b5f | 26196 | return __builtin_aarch64_urshr_ndi_uus (__a, __b); |
df401d54 | 26197 | } |
26198 | ||
954192d3 | 26199 | /* vrsqrte. */ |
26200 | ||
49ab9992 | 26201 | __extension__ extern __inline float32_t |
26202 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
954192d3 | 26203 | vrsqrtes_f32 (float32_t __a) |
26204 | { | |
26205 | return __builtin_aarch64_rsqrtesf (__a); | |
26206 | } | |
26207 | ||
49ab9992 | 26208 | __extension__ extern __inline float64_t |
26209 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
954192d3 | 26210 | vrsqrted_f64 (float64_t __a) |
26211 | { | |
26212 | return __builtin_aarch64_rsqrtedf (__a); | |
26213 | } | |
26214 | ||
49ab9992 | 26215 | __extension__ extern __inline float32x2_t |
26216 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
954192d3 | 26217 | vrsqrte_f32 (float32x2_t __a) |
26218 | { | |
26219 | return __builtin_aarch64_rsqrtev2sf (__a); | |
26220 | } | |
26221 | ||
49ab9992 | 26222 | __extension__ extern __inline float64x1_t |
26223 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
954192d3 | 26224 | vrsqrte_f64 (float64x1_t __a) |
26225 | { | |
26226 | return (float64x1_t) {vrsqrted_f64 (vget_lane_f64 (__a, 0))}; | |
26227 | } | |
26228 | ||
49ab9992 | 26229 | __extension__ extern __inline float32x4_t |
26230 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
954192d3 | 26231 | vrsqrteq_f32 (float32x4_t __a) |
26232 | { | |
26233 | return __builtin_aarch64_rsqrtev4sf (__a); | |
26234 | } | |
26235 | ||
49ab9992 | 26236 | __extension__ extern __inline float64x2_t |
26237 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
954192d3 | 26238 | vrsqrteq_f64 (float64x2_t __a) |
26239 | { | |
26240 | return __builtin_aarch64_rsqrtev2df (__a); | |
26241 | } | |
26242 | ||
62c6596f | 26243 | /* vrsqrts. */ |
26244 | ||
49ab9992 | 26245 | __extension__ extern __inline float32_t |
26246 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
62c6596f | 26247 | vrsqrtss_f32 (float32_t __a, float32_t __b) |
26248 | { | |
26249 | return __builtin_aarch64_rsqrtssf (__a, __b); | |
26250 | } | |
26251 | ||
49ab9992 | 26252 | __extension__ extern __inline float64_t |
26253 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
62c6596f | 26254 | vrsqrtsd_f64 (float64_t __a, float64_t __b) |
26255 | { | |
26256 | return __builtin_aarch64_rsqrtsdf (__a, __b); | |
26257 | } | |
26258 | ||
49ab9992 | 26259 | __extension__ extern __inline float32x2_t |
26260 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
62c6596f | 26261 | vrsqrts_f32 (float32x2_t __a, float32x2_t __b) |
26262 | { | |
26263 | return __builtin_aarch64_rsqrtsv2sf (__a, __b); | |
26264 | } | |
26265 | ||
49ab9992 | 26266 | __extension__ extern __inline float64x1_t |
26267 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
62c6596f | 26268 | vrsqrts_f64 (float64x1_t __a, float64x1_t __b) |
26269 | { | |
26270 | return (float64x1_t) {vrsqrtsd_f64 (vget_lane_f64 (__a, 0), | |
26271 | vget_lane_f64 (__b, 0))}; | |
26272 | } | |
26273 | ||
49ab9992 | 26274 | __extension__ extern __inline float32x4_t |
26275 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
62c6596f | 26276 | vrsqrtsq_f32 (float32x4_t __a, float32x4_t __b) |
26277 | { | |
26278 | return __builtin_aarch64_rsqrtsv4sf (__a, __b); | |
26279 | } | |
26280 | ||
49ab9992 | 26281 | __extension__ extern __inline float64x2_t |
26282 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
62c6596f | 26283 | vrsqrtsq_f64 (float64x2_t __a, float64x2_t __b) |
26284 | { | |
26285 | return __builtin_aarch64_rsqrtsv2df (__a, __b); | |
26286 | } | |
26287 | ||
df401d54 | 26288 | /* vrsra */ |
26289 | ||
49ab9992 | 26290 | __extension__ extern __inline int8x8_t |
26291 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26292 | vrsra_n_s8 (int8x8_t __a, int8x8_t __b, const int __c) |
26293 | { | |
26294 | return (int8x8_t) __builtin_aarch64_srsra_nv8qi (__a, __b, __c); | |
26295 | } | |
26296 | ||
49ab9992 | 26297 | __extension__ extern __inline int16x4_t |
26298 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26299 | vrsra_n_s16 (int16x4_t __a, int16x4_t __b, const int __c) |
26300 | { | |
26301 | return (int16x4_t) __builtin_aarch64_srsra_nv4hi (__a, __b, __c); | |
26302 | } | |
26303 | ||
49ab9992 | 26304 | __extension__ extern __inline int32x2_t |
26305 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26306 | vrsra_n_s32 (int32x2_t __a, int32x2_t __b, const int __c) |
26307 | { | |
26308 | return (int32x2_t) __builtin_aarch64_srsra_nv2si (__a, __b, __c); | |
26309 | } | |
26310 | ||
49ab9992 | 26311 | __extension__ extern __inline int64x1_t |
26312 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26313 | vrsra_n_s64 (int64x1_t __a, int64x1_t __b, const int __c) |
26314 | { | |
12fc7207 | 26315 | return (int64x1_t) {__builtin_aarch64_srsra_ndi (__a[0], __b[0], __c)}; |
df401d54 | 26316 | } |
26317 | ||
49ab9992 | 26318 | __extension__ extern __inline uint8x8_t |
26319 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26320 | vrsra_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c) |
26321 | { | |
201e54b7 | 26322 | return __builtin_aarch64_ursra_nv8qi_uuus (__a, __b, __c); |
df401d54 | 26323 | } |
26324 | ||
49ab9992 | 26325 | __extension__ extern __inline uint16x4_t |
26326 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26327 | vrsra_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c) |
26328 | { | |
201e54b7 | 26329 | return __builtin_aarch64_ursra_nv4hi_uuus (__a, __b, __c); |
df401d54 | 26330 | } |
26331 | ||
49ab9992 | 26332 | __extension__ extern __inline uint32x2_t |
26333 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26334 | vrsra_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c) |
26335 | { | |
201e54b7 | 26336 | return __builtin_aarch64_ursra_nv2si_uuus (__a, __b, __c); |
df401d54 | 26337 | } |
26338 | ||
49ab9992 | 26339 | __extension__ extern __inline uint64x1_t |
26340 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26341 | vrsra_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) |
26342 | { | |
12fc7207 | 26343 | return (uint64x1_t) {__builtin_aarch64_ursra_ndi_uuus (__a[0], __b[0], __c)}; |
df401d54 | 26344 | } |
26345 | ||
49ab9992 | 26346 | __extension__ extern __inline int8x16_t |
26347 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26348 | vrsraq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c) |
26349 | { | |
26350 | return (int8x16_t) __builtin_aarch64_srsra_nv16qi (__a, __b, __c); | |
26351 | } | |
26352 | ||
49ab9992 | 26353 | __extension__ extern __inline int16x8_t |
26354 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26355 | vrsraq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c) |
26356 | { | |
26357 | return (int16x8_t) __builtin_aarch64_srsra_nv8hi (__a, __b, __c); | |
26358 | } | |
26359 | ||
49ab9992 | 26360 | __extension__ extern __inline int32x4_t |
26361 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26362 | vrsraq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c) |
26363 | { | |
26364 | return (int32x4_t) __builtin_aarch64_srsra_nv4si (__a, __b, __c); | |
26365 | } | |
26366 | ||
49ab9992 | 26367 | __extension__ extern __inline int64x2_t |
26368 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26369 | vrsraq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c) |
26370 | { | |
26371 | return (int64x2_t) __builtin_aarch64_srsra_nv2di (__a, __b, __c); | |
26372 | } | |
26373 | ||
49ab9992 | 26374 | __extension__ extern __inline uint8x16_t |
26375 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26376 | vrsraq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c) |
26377 | { | |
201e54b7 | 26378 | return __builtin_aarch64_ursra_nv16qi_uuus (__a, __b, __c); |
df401d54 | 26379 | } |
26380 | ||
49ab9992 | 26381 | __extension__ extern __inline uint16x8_t |
26382 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26383 | vrsraq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c) |
26384 | { | |
201e54b7 | 26385 | return __builtin_aarch64_ursra_nv8hi_uuus (__a, __b, __c); |
df401d54 | 26386 | } |
26387 | ||
49ab9992 | 26388 | __extension__ extern __inline uint32x4_t |
26389 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26390 | vrsraq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c) |
26391 | { | |
201e54b7 | 26392 | return __builtin_aarch64_ursra_nv4si_uuus (__a, __b, __c); |
df401d54 | 26393 | } |
26394 | ||
49ab9992 | 26395 | __extension__ extern __inline uint64x2_t |
26396 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26397 | vrsraq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c) |
26398 | { | |
201e54b7 | 26399 | return __builtin_aarch64_ursra_nv2di_uuus (__a, __b, __c); |
df401d54 | 26400 | } |
26401 | ||
49ab9992 | 26402 | __extension__ extern __inline int64_t |
26403 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 26404 | vrsrad_n_s64 (int64_t __a, int64_t __b, const int __c) |
df401d54 | 26405 | { |
12fc7207 | 26406 | return __builtin_aarch64_srsra_ndi (__a, __b, __c); |
df401d54 | 26407 | } |
26408 | ||
49ab9992 | 26409 | __extension__ extern __inline uint64_t |
26410 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 26411 | vrsrad_n_u64 (uint64_t __a, uint64_t __b, const int __c) |
df401d54 | 26412 | { |
201e54b7 | 26413 | return __builtin_aarch64_ursra_ndi_uuus (__a, __b, __c); |
df401d54 | 26414 | } |
26415 | ||
26db5325 | 26416 | #pragma GCC push_options |
26417 | #pragma GCC target ("+nothing+crypto") | |
feff02e4 | 26418 | |
26419 | /* vsha1 */ | |
26420 | ||
49ab9992 | 26421 | __extension__ extern __inline uint32x4_t |
26422 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
feff02e4 | 26423 | vsha1cq_u32 (uint32x4_t hash_abcd, uint32_t hash_e, uint32x4_t wk) |
26424 | { | |
26425 | return __builtin_aarch64_crypto_sha1cv4si_uuuu (hash_abcd, hash_e, wk); | |
26426 | } | |
588ee06b | 26427 | |
49ab9992 | 26428 | __extension__ extern __inline uint32x4_t |
26429 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
feff02e4 | 26430 | vsha1mq_u32 (uint32x4_t hash_abcd, uint32_t hash_e, uint32x4_t wk) |
26431 | { | |
26432 | return __builtin_aarch64_crypto_sha1mv4si_uuuu (hash_abcd, hash_e, wk); | |
26433 | } | |
588ee06b | 26434 | |
49ab9992 | 26435 | __extension__ extern __inline uint32x4_t |
26436 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
feff02e4 | 26437 | vsha1pq_u32 (uint32x4_t hash_abcd, uint32_t hash_e, uint32x4_t wk) |
26438 | { | |
26439 | return __builtin_aarch64_crypto_sha1pv4si_uuuu (hash_abcd, hash_e, wk); | |
26440 | } | |
26441 | ||
49ab9992 | 26442 | __extension__ extern __inline uint32_t |
26443 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
feff02e4 | 26444 | vsha1h_u32 (uint32_t hash_e) |
26445 | { | |
26446 | return __builtin_aarch64_crypto_sha1hsi_uu (hash_e); | |
26447 | } | |
26448 | ||
49ab9992 | 26449 | __extension__ extern __inline uint32x4_t |
26450 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
feff02e4 | 26451 | vsha1su0q_u32 (uint32x4_t w0_3, uint32x4_t w4_7, uint32x4_t w8_11) |
26452 | { | |
26453 | return __builtin_aarch64_crypto_sha1su0v4si_uuuu (w0_3, w4_7, w8_11); | |
26454 | } | |
26455 | ||
49ab9992 | 26456 | __extension__ extern __inline uint32x4_t |
26457 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
feff02e4 | 26458 | vsha1su1q_u32 (uint32x4_t tw0_3, uint32x4_t w12_15) |
26459 | { | |
26460 | return __builtin_aarch64_crypto_sha1su1v4si_uuu (tw0_3, w12_15); | |
26461 | } | |
26462 | ||
49ab9992 | 26463 | __extension__ extern __inline uint32x4_t |
26464 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7462aa99 | 26465 | vsha256hq_u32 (uint32x4_t hash_abcd, uint32x4_t hash_efgh, uint32x4_t wk) |
26466 | { | |
26467 | return __builtin_aarch64_crypto_sha256hv4si_uuuu (hash_abcd, hash_efgh, wk); | |
26468 | } | |
26469 | ||
49ab9992 | 26470 | __extension__ extern __inline uint32x4_t |
26471 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7462aa99 | 26472 | vsha256h2q_u32 (uint32x4_t hash_efgh, uint32x4_t hash_abcd, uint32x4_t wk) |
26473 | { | |
26474 | return __builtin_aarch64_crypto_sha256h2v4si_uuuu (hash_efgh, hash_abcd, wk); | |
26475 | } | |
26476 | ||
49ab9992 | 26477 | __extension__ extern __inline uint32x4_t |
26478 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7462aa99 | 26479 | vsha256su0q_u32 (uint32x4_t w0_3, uint32x4_t w4_7) |
26480 | { | |
26481 | return __builtin_aarch64_crypto_sha256su0v4si_uuu (w0_3, w4_7); | |
26482 | } | |
26483 | ||
49ab9992 | 26484 | __extension__ extern __inline uint32x4_t |
26485 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7462aa99 | 26486 | vsha256su1q_u32 (uint32x4_t tw0_3, uint32x4_t w8_11, uint32x4_t w12_15) |
26487 | { | |
26488 | return __builtin_aarch64_crypto_sha256su1v4si_uuuu (tw0_3, w8_11, w12_15); | |
26489 | } | |
26490 | ||
49ab9992 | 26491 | __extension__ extern __inline poly128_t |
26492 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e45446c4 | 26493 | vmull_p64 (poly64_t a, poly64_t b) |
26494 | { | |
26495 | return | |
26496 | __builtin_aarch64_crypto_pmulldi_ppp (a, b); | |
26497 | } | |
26498 | ||
49ab9992 | 26499 | __extension__ extern __inline poly128_t |
26500 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e45446c4 | 26501 | vmull_high_p64 (poly64x2_t a, poly64x2_t b) |
26502 | { | |
26503 | return __builtin_aarch64_crypto_pmullv2di_ppp (a, b); | |
26504 | } | |
26505 | ||
26db5325 | 26506 | #pragma GCC pop_options |
feff02e4 | 26507 | |
df401d54 | 26508 | /* vshl */ |
26509 | ||
49ab9992 | 26510 | __extension__ extern __inline int8x8_t |
26511 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26512 | vshl_n_s8 (int8x8_t __a, const int __b) |
26513 | { | |
5a8d54a9 | 26514 | return (int8x8_t) __builtin_aarch64_ashlv8qi (__a, __b); |
df401d54 | 26515 | } |
26516 | ||
49ab9992 | 26517 | __extension__ extern __inline int16x4_t |
26518 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26519 | vshl_n_s16 (int16x4_t __a, const int __b) |
26520 | { | |
5a8d54a9 | 26521 | return (int16x4_t) __builtin_aarch64_ashlv4hi (__a, __b); |
df401d54 | 26522 | } |
26523 | ||
49ab9992 | 26524 | __extension__ extern __inline int32x2_t |
26525 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26526 | vshl_n_s32 (int32x2_t __a, const int __b) |
26527 | { | |
5a8d54a9 | 26528 | return (int32x2_t) __builtin_aarch64_ashlv2si (__a, __b); |
df401d54 | 26529 | } |
26530 | ||
49ab9992 | 26531 | __extension__ extern __inline int64x1_t |
26532 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26533 | vshl_n_s64 (int64x1_t __a, const int __b) |
26534 | { | |
12fc7207 | 26535 | return (int64x1_t) {__builtin_aarch64_ashldi (__a[0], __b)}; |
df401d54 | 26536 | } |
26537 | ||
49ab9992 | 26538 | __extension__ extern __inline uint8x8_t |
26539 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26540 | vshl_n_u8 (uint8x8_t __a, const int __b) |
26541 | { | |
5a8d54a9 | 26542 | return (uint8x8_t) __builtin_aarch64_ashlv8qi ((int8x8_t) __a, __b); |
df401d54 | 26543 | } |
26544 | ||
49ab9992 | 26545 | __extension__ extern __inline uint16x4_t |
26546 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26547 | vshl_n_u16 (uint16x4_t __a, const int __b) |
26548 | { | |
5a8d54a9 | 26549 | return (uint16x4_t) __builtin_aarch64_ashlv4hi ((int16x4_t) __a, __b); |
df401d54 | 26550 | } |
26551 | ||
49ab9992 | 26552 | __extension__ extern __inline uint32x2_t |
26553 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26554 | vshl_n_u32 (uint32x2_t __a, const int __b) |
26555 | { | |
5a8d54a9 | 26556 | return (uint32x2_t) __builtin_aarch64_ashlv2si ((int32x2_t) __a, __b); |
df401d54 | 26557 | } |
26558 | ||
49ab9992 | 26559 | __extension__ extern __inline uint64x1_t |
26560 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26561 | vshl_n_u64 (uint64x1_t __a, const int __b) |
26562 | { | |
12fc7207 | 26563 | return (uint64x1_t) {__builtin_aarch64_ashldi ((int64_t) __a[0], __b)}; |
df401d54 | 26564 | } |
26565 | ||
49ab9992 | 26566 | __extension__ extern __inline int8x16_t |
26567 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26568 | vshlq_n_s8 (int8x16_t __a, const int __b) |
26569 | { | |
5a8d54a9 | 26570 | return (int8x16_t) __builtin_aarch64_ashlv16qi (__a, __b); |
df401d54 | 26571 | } |
26572 | ||
49ab9992 | 26573 | __extension__ extern __inline int16x8_t |
26574 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26575 | vshlq_n_s16 (int16x8_t __a, const int __b) |
26576 | { | |
5a8d54a9 | 26577 | return (int16x8_t) __builtin_aarch64_ashlv8hi (__a, __b); |
df401d54 | 26578 | } |
26579 | ||
49ab9992 | 26580 | __extension__ extern __inline int32x4_t |
26581 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26582 | vshlq_n_s32 (int32x4_t __a, const int __b) |
26583 | { | |
5a8d54a9 | 26584 | return (int32x4_t) __builtin_aarch64_ashlv4si (__a, __b); |
df401d54 | 26585 | } |
26586 | ||
49ab9992 | 26587 | __extension__ extern __inline int64x2_t |
26588 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26589 | vshlq_n_s64 (int64x2_t __a, const int __b) |
26590 | { | |
5a8d54a9 | 26591 | return (int64x2_t) __builtin_aarch64_ashlv2di (__a, __b); |
df401d54 | 26592 | } |
26593 | ||
49ab9992 | 26594 | __extension__ extern __inline uint8x16_t |
26595 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26596 | vshlq_n_u8 (uint8x16_t __a, const int __b) |
26597 | { | |
5a8d54a9 | 26598 | return (uint8x16_t) __builtin_aarch64_ashlv16qi ((int8x16_t) __a, __b); |
df401d54 | 26599 | } |
26600 | ||
49ab9992 | 26601 | __extension__ extern __inline uint16x8_t |
26602 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26603 | vshlq_n_u16 (uint16x8_t __a, const int __b) |
26604 | { | |
5a8d54a9 | 26605 | return (uint16x8_t) __builtin_aarch64_ashlv8hi ((int16x8_t) __a, __b); |
df401d54 | 26606 | } |
26607 | ||
49ab9992 | 26608 | __extension__ extern __inline uint32x4_t |
26609 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26610 | vshlq_n_u32 (uint32x4_t __a, const int __b) |
26611 | { | |
5a8d54a9 | 26612 | return (uint32x4_t) __builtin_aarch64_ashlv4si ((int32x4_t) __a, __b); |
df401d54 | 26613 | } |
26614 | ||
49ab9992 | 26615 | __extension__ extern __inline uint64x2_t |
26616 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26617 | vshlq_n_u64 (uint64x2_t __a, const int __b) |
26618 | { | |
5a8d54a9 | 26619 | return (uint64x2_t) __builtin_aarch64_ashlv2di ((int64x2_t) __a, __b); |
df401d54 | 26620 | } |
26621 | ||
49ab9992 | 26622 | __extension__ extern __inline int64_t |
26623 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 26624 | vshld_n_s64 (int64_t __a, const int __b) |
df401d54 | 26625 | { |
12fc7207 | 26626 | return __builtin_aarch64_ashldi (__a, __b); |
df401d54 | 26627 | } |
26628 | ||
49ab9992 | 26629 | __extension__ extern __inline uint64_t |
26630 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 26631 | vshld_n_u64 (uint64_t __a, const int __b) |
df401d54 | 26632 | { |
12fc7207 | 26633 | return (uint64_t) __builtin_aarch64_ashldi (__a, __b); |
df401d54 | 26634 | } |
26635 | ||
49ab9992 | 26636 | __extension__ extern __inline int8x8_t |
26637 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26638 | vshl_s8 (int8x8_t __a, int8x8_t __b) |
26639 | { | |
42b87b5f | 26640 | return __builtin_aarch64_sshlv8qi (__a, __b); |
df401d54 | 26641 | } |
26642 | ||
49ab9992 | 26643 | __extension__ extern __inline int16x4_t |
26644 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26645 | vshl_s16 (int16x4_t __a, int16x4_t __b) |
26646 | { | |
42b87b5f | 26647 | return __builtin_aarch64_sshlv4hi (__a, __b); |
df401d54 | 26648 | } |
26649 | ||
49ab9992 | 26650 | __extension__ extern __inline int32x2_t |
26651 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26652 | vshl_s32 (int32x2_t __a, int32x2_t __b) |
26653 | { | |
42b87b5f | 26654 | return __builtin_aarch64_sshlv2si (__a, __b); |
df401d54 | 26655 | } |
26656 | ||
49ab9992 | 26657 | __extension__ extern __inline int64x1_t |
26658 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26659 | vshl_s64 (int64x1_t __a, int64x1_t __b) |
26660 | { | |
12fc7207 | 26661 | return (int64x1_t) {__builtin_aarch64_sshldi (__a[0], __b[0])}; |
df401d54 | 26662 | } |
26663 | ||
49ab9992 | 26664 | __extension__ extern __inline uint8x8_t |
26665 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26666 | vshl_u8 (uint8x8_t __a, int8x8_t __b) |
26667 | { | |
42b87b5f | 26668 | return __builtin_aarch64_ushlv8qi_uus (__a, __b); |
df401d54 | 26669 | } |
26670 | ||
49ab9992 | 26671 | __extension__ extern __inline uint16x4_t |
26672 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26673 | vshl_u16 (uint16x4_t __a, int16x4_t __b) |
26674 | { | |
42b87b5f | 26675 | return __builtin_aarch64_ushlv4hi_uus (__a, __b); |
df401d54 | 26676 | } |
26677 | ||
49ab9992 | 26678 | __extension__ extern __inline uint32x2_t |
26679 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26680 | vshl_u32 (uint32x2_t __a, int32x2_t __b) |
26681 | { | |
42b87b5f | 26682 | return __builtin_aarch64_ushlv2si_uus (__a, __b); |
df401d54 | 26683 | } |
26684 | ||
49ab9992 | 26685 | __extension__ extern __inline uint64x1_t |
26686 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26687 | vshl_u64 (uint64x1_t __a, int64x1_t __b) |
26688 | { | |
12fc7207 | 26689 | return (uint64x1_t) {__builtin_aarch64_ushldi_uus (__a[0], __b[0])}; |
df401d54 | 26690 | } |
26691 | ||
49ab9992 | 26692 | __extension__ extern __inline int8x16_t |
26693 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26694 | vshlq_s8 (int8x16_t __a, int8x16_t __b) |
26695 | { | |
42b87b5f | 26696 | return __builtin_aarch64_sshlv16qi (__a, __b); |
df401d54 | 26697 | } |
26698 | ||
49ab9992 | 26699 | __extension__ extern __inline int16x8_t |
26700 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26701 | vshlq_s16 (int16x8_t __a, int16x8_t __b) |
26702 | { | |
42b87b5f | 26703 | return __builtin_aarch64_sshlv8hi (__a, __b); |
df401d54 | 26704 | } |
26705 | ||
49ab9992 | 26706 | __extension__ extern __inline int32x4_t |
26707 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26708 | vshlq_s32 (int32x4_t __a, int32x4_t __b) |
26709 | { | |
42b87b5f | 26710 | return __builtin_aarch64_sshlv4si (__a, __b); |
df401d54 | 26711 | } |
26712 | ||
49ab9992 | 26713 | __extension__ extern __inline int64x2_t |
26714 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26715 | vshlq_s64 (int64x2_t __a, int64x2_t __b) |
26716 | { | |
42b87b5f | 26717 | return __builtin_aarch64_sshlv2di (__a, __b); |
df401d54 | 26718 | } |
26719 | ||
49ab9992 | 26720 | __extension__ extern __inline uint8x16_t |
26721 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26722 | vshlq_u8 (uint8x16_t __a, int8x16_t __b) |
26723 | { | |
42b87b5f | 26724 | return __builtin_aarch64_ushlv16qi_uus (__a, __b); |
df401d54 | 26725 | } |
26726 | ||
49ab9992 | 26727 | __extension__ extern __inline uint16x8_t |
26728 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26729 | vshlq_u16 (uint16x8_t __a, int16x8_t __b) |
26730 | { | |
42b87b5f | 26731 | return __builtin_aarch64_ushlv8hi_uus (__a, __b); |
df401d54 | 26732 | } |
26733 | ||
49ab9992 | 26734 | __extension__ extern __inline uint32x4_t |
26735 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26736 | vshlq_u32 (uint32x4_t __a, int32x4_t __b) |
26737 | { | |
42b87b5f | 26738 | return __builtin_aarch64_ushlv4si_uus (__a, __b); |
df401d54 | 26739 | } |
26740 | ||
49ab9992 | 26741 | __extension__ extern __inline uint64x2_t |
26742 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26743 | vshlq_u64 (uint64x2_t __a, int64x2_t __b) |
26744 | { | |
42b87b5f | 26745 | return __builtin_aarch64_ushlv2di_uus (__a, __b); |
df401d54 | 26746 | } |
26747 | ||
49ab9992 | 26748 | __extension__ extern __inline int64_t |
26749 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 26750 | vshld_s64 (int64_t __a, int64_t __b) |
df401d54 | 26751 | { |
42b87b5f | 26752 | return __builtin_aarch64_sshldi (__a, __b); |
df401d54 | 26753 | } |
26754 | ||
49ab9992 | 26755 | __extension__ extern __inline uint64_t |
26756 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 26757 | vshld_u64 (uint64_t __a, uint64_t __b) |
df401d54 | 26758 | { |
42b87b5f | 26759 | return __builtin_aarch64_ushldi_uus (__a, __b); |
df401d54 | 26760 | } |
26761 | ||
49ab9992 | 26762 | __extension__ extern __inline int16x8_t |
26763 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26764 | vshll_high_n_s8 (int8x16_t __a, const int __b) |
26765 | { | |
26766 | return __builtin_aarch64_sshll2_nv16qi (__a, __b); | |
26767 | } | |
26768 | ||
49ab9992 | 26769 | __extension__ extern __inline int32x4_t |
26770 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26771 | vshll_high_n_s16 (int16x8_t __a, const int __b) |
26772 | { | |
26773 | return __builtin_aarch64_sshll2_nv8hi (__a, __b); | |
26774 | } | |
26775 | ||
49ab9992 | 26776 | __extension__ extern __inline int64x2_t |
26777 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26778 | vshll_high_n_s32 (int32x4_t __a, const int __b) |
26779 | { | |
26780 | return __builtin_aarch64_sshll2_nv4si (__a, __b); | |
26781 | } | |
26782 | ||
49ab9992 | 26783 | __extension__ extern __inline uint16x8_t |
26784 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26785 | vshll_high_n_u8 (uint8x16_t __a, const int __b) |
26786 | { | |
26787 | return (uint16x8_t) __builtin_aarch64_ushll2_nv16qi ((int8x16_t) __a, __b); | |
26788 | } | |
26789 | ||
49ab9992 | 26790 | __extension__ extern __inline uint32x4_t |
26791 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26792 | vshll_high_n_u16 (uint16x8_t __a, const int __b) |
26793 | { | |
26794 | return (uint32x4_t) __builtin_aarch64_ushll2_nv8hi ((int16x8_t) __a, __b); | |
26795 | } | |
26796 | ||
49ab9992 | 26797 | __extension__ extern __inline uint64x2_t |
26798 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26799 | vshll_high_n_u32 (uint32x4_t __a, const int __b) |
26800 | { | |
26801 | return (uint64x2_t) __builtin_aarch64_ushll2_nv4si ((int32x4_t) __a, __b); | |
26802 | } | |
26803 | ||
49ab9992 | 26804 | __extension__ extern __inline int16x8_t |
26805 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26806 | vshll_n_s8 (int8x8_t __a, const int __b) |
26807 | { | |
26808 | return __builtin_aarch64_sshll_nv8qi (__a, __b); | |
26809 | } | |
26810 | ||
49ab9992 | 26811 | __extension__ extern __inline int32x4_t |
26812 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26813 | vshll_n_s16 (int16x4_t __a, const int __b) |
26814 | { | |
26815 | return __builtin_aarch64_sshll_nv4hi (__a, __b); | |
26816 | } | |
26817 | ||
49ab9992 | 26818 | __extension__ extern __inline int64x2_t |
26819 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26820 | vshll_n_s32 (int32x2_t __a, const int __b) |
26821 | { | |
26822 | return __builtin_aarch64_sshll_nv2si (__a, __b); | |
26823 | } | |
26824 | ||
49ab9992 | 26825 | __extension__ extern __inline uint16x8_t |
26826 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26827 | vshll_n_u8 (uint8x8_t __a, const int __b) |
26828 | { | |
42b87b5f | 26829 | return __builtin_aarch64_ushll_nv8qi_uus (__a, __b); |
df401d54 | 26830 | } |
26831 | ||
49ab9992 | 26832 | __extension__ extern __inline uint32x4_t |
26833 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26834 | vshll_n_u16 (uint16x4_t __a, const int __b) |
26835 | { | |
42b87b5f | 26836 | return __builtin_aarch64_ushll_nv4hi_uus (__a, __b); |
df401d54 | 26837 | } |
26838 | ||
49ab9992 | 26839 | __extension__ extern __inline uint64x2_t |
26840 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26841 | vshll_n_u32 (uint32x2_t __a, const int __b) |
26842 | { | |
42b87b5f | 26843 | return __builtin_aarch64_ushll_nv2si_uus (__a, __b); |
df401d54 | 26844 | } |
26845 | ||
26846 | /* vshr */ | |
26847 | ||
49ab9992 | 26848 | __extension__ extern __inline int8x8_t |
26849 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26850 | vshr_n_s8 (int8x8_t __a, const int __b) |
26851 | { | |
5a8d54a9 | 26852 | return (int8x8_t) __builtin_aarch64_ashrv8qi (__a, __b); |
df401d54 | 26853 | } |
26854 | ||
49ab9992 | 26855 | __extension__ extern __inline int16x4_t |
26856 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26857 | vshr_n_s16 (int16x4_t __a, const int __b) |
26858 | { | |
5a8d54a9 | 26859 | return (int16x4_t) __builtin_aarch64_ashrv4hi (__a, __b); |
df401d54 | 26860 | } |
26861 | ||
49ab9992 | 26862 | __extension__ extern __inline int32x2_t |
26863 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26864 | vshr_n_s32 (int32x2_t __a, const int __b) |
26865 | { | |
5a8d54a9 | 26866 | return (int32x2_t) __builtin_aarch64_ashrv2si (__a, __b); |
df401d54 | 26867 | } |
26868 | ||
49ab9992 | 26869 | __extension__ extern __inline int64x1_t |
26870 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26871 | vshr_n_s64 (int64x1_t __a, const int __b) |
26872 | { | |
12fc7207 | 26873 | return (int64x1_t) {__builtin_aarch64_ashr_simddi (__a[0], __b)}; |
df401d54 | 26874 | } |
26875 | ||
49ab9992 | 26876 | __extension__ extern __inline uint8x8_t |
26877 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26878 | vshr_n_u8 (uint8x8_t __a, const int __b) |
26879 | { | |
5a8d54a9 | 26880 | return (uint8x8_t) __builtin_aarch64_lshrv8qi ((int8x8_t) __a, __b); |
df401d54 | 26881 | } |
26882 | ||
49ab9992 | 26883 | __extension__ extern __inline uint16x4_t |
26884 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26885 | vshr_n_u16 (uint16x4_t __a, const int __b) |
26886 | { | |
5a8d54a9 | 26887 | return (uint16x4_t) __builtin_aarch64_lshrv4hi ((int16x4_t) __a, __b); |
df401d54 | 26888 | } |
26889 | ||
49ab9992 | 26890 | __extension__ extern __inline uint32x2_t |
26891 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26892 | vshr_n_u32 (uint32x2_t __a, const int __b) |
26893 | { | |
5a8d54a9 | 26894 | return (uint32x2_t) __builtin_aarch64_lshrv2si ((int32x2_t) __a, __b); |
df401d54 | 26895 | } |
26896 | ||
49ab9992 | 26897 | __extension__ extern __inline uint64x1_t |
26898 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26899 | vshr_n_u64 (uint64x1_t __a, const int __b) |
26900 | { | |
12fc7207 | 26901 | return (uint64x1_t) {__builtin_aarch64_lshr_simddi_uus ( __a[0], __b)}; |
df401d54 | 26902 | } |
26903 | ||
49ab9992 | 26904 | __extension__ extern __inline int8x16_t |
26905 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26906 | vshrq_n_s8 (int8x16_t __a, const int __b) |
26907 | { | |
5a8d54a9 | 26908 | return (int8x16_t) __builtin_aarch64_ashrv16qi (__a, __b); |
df401d54 | 26909 | } |
26910 | ||
49ab9992 | 26911 | __extension__ extern __inline int16x8_t |
26912 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26913 | vshrq_n_s16 (int16x8_t __a, const int __b) |
26914 | { | |
5a8d54a9 | 26915 | return (int16x8_t) __builtin_aarch64_ashrv8hi (__a, __b); |
df401d54 | 26916 | } |
26917 | ||
49ab9992 | 26918 | __extension__ extern __inline int32x4_t |
26919 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26920 | vshrq_n_s32 (int32x4_t __a, const int __b) |
26921 | { | |
5a8d54a9 | 26922 | return (int32x4_t) __builtin_aarch64_ashrv4si (__a, __b); |
df401d54 | 26923 | } |
26924 | ||
49ab9992 | 26925 | __extension__ extern __inline int64x2_t |
26926 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26927 | vshrq_n_s64 (int64x2_t __a, const int __b) |
26928 | { | |
5a8d54a9 | 26929 | return (int64x2_t) __builtin_aarch64_ashrv2di (__a, __b); |
df401d54 | 26930 | } |
26931 | ||
49ab9992 | 26932 | __extension__ extern __inline uint8x16_t |
26933 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26934 | vshrq_n_u8 (uint8x16_t __a, const int __b) |
26935 | { | |
5a8d54a9 | 26936 | return (uint8x16_t) __builtin_aarch64_lshrv16qi ((int8x16_t) __a, __b); |
df401d54 | 26937 | } |
26938 | ||
49ab9992 | 26939 | __extension__ extern __inline uint16x8_t |
26940 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26941 | vshrq_n_u16 (uint16x8_t __a, const int __b) |
26942 | { | |
5a8d54a9 | 26943 | return (uint16x8_t) __builtin_aarch64_lshrv8hi ((int16x8_t) __a, __b); |
df401d54 | 26944 | } |
26945 | ||
49ab9992 | 26946 | __extension__ extern __inline uint32x4_t |
26947 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26948 | vshrq_n_u32 (uint32x4_t __a, const int __b) |
26949 | { | |
5a8d54a9 | 26950 | return (uint32x4_t) __builtin_aarch64_lshrv4si ((int32x4_t) __a, __b); |
df401d54 | 26951 | } |
26952 | ||
49ab9992 | 26953 | __extension__ extern __inline uint64x2_t |
26954 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26955 | vshrq_n_u64 (uint64x2_t __a, const int __b) |
26956 | { | |
5a8d54a9 | 26957 | return (uint64x2_t) __builtin_aarch64_lshrv2di ((int64x2_t) __a, __b); |
df401d54 | 26958 | } |
26959 | ||
49ab9992 | 26960 | __extension__ extern __inline int64_t |
26961 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 26962 | vshrd_n_s64 (int64_t __a, const int __b) |
df401d54 | 26963 | { |
12fc7207 | 26964 | return __builtin_aarch64_ashr_simddi (__a, __b); |
df401d54 | 26965 | } |
26966 | ||
49ab9992 | 26967 | __extension__ extern __inline uint64_t |
26968 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
bed34e83 | 26969 | vshrd_n_u64 (uint64_t __a, const int __b) |
df401d54 | 26970 | { |
bed34e83 | 26971 | return __builtin_aarch64_lshr_simddi_uus (__a, __b); |
df401d54 | 26972 | } |
26973 | ||
26974 | /* vsli */ | |
26975 | ||
49ab9992 | 26976 | __extension__ extern __inline int8x8_t |
26977 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26978 | vsli_n_s8 (int8x8_t __a, int8x8_t __b, const int __c) |
26979 | { | |
26980 | return (int8x8_t) __builtin_aarch64_ssli_nv8qi (__a, __b, __c); | |
26981 | } | |
26982 | ||
49ab9992 | 26983 | __extension__ extern __inline int16x4_t |
26984 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26985 | vsli_n_s16 (int16x4_t __a, int16x4_t __b, const int __c) |
26986 | { | |
26987 | return (int16x4_t) __builtin_aarch64_ssli_nv4hi (__a, __b, __c); | |
26988 | } | |
26989 | ||
49ab9992 | 26990 | __extension__ extern __inline int32x2_t |
26991 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26992 | vsli_n_s32 (int32x2_t __a, int32x2_t __b, const int __c) |
26993 | { | |
26994 | return (int32x2_t) __builtin_aarch64_ssli_nv2si (__a, __b, __c); | |
26995 | } | |
26996 | ||
49ab9992 | 26997 | __extension__ extern __inline int64x1_t |
26998 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 26999 | vsli_n_s64 (int64x1_t __a, int64x1_t __b, const int __c) |
27000 | { | |
12fc7207 | 27001 | return (int64x1_t) {__builtin_aarch64_ssli_ndi (__a[0], __b[0], __c)}; |
df401d54 | 27002 | } |
27003 | ||
49ab9992 | 27004 | __extension__ extern __inline uint8x8_t |
27005 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27006 | vsli_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c) |
27007 | { | |
201e54b7 | 27008 | return __builtin_aarch64_usli_nv8qi_uuus (__a, __b, __c); |
df401d54 | 27009 | } |
27010 | ||
49ab9992 | 27011 | __extension__ extern __inline uint16x4_t |
27012 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27013 | vsli_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c) |
27014 | { | |
201e54b7 | 27015 | return __builtin_aarch64_usli_nv4hi_uuus (__a, __b, __c); |
df401d54 | 27016 | } |
27017 | ||
49ab9992 | 27018 | __extension__ extern __inline uint32x2_t |
27019 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27020 | vsli_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c) |
27021 | { | |
201e54b7 | 27022 | return __builtin_aarch64_usli_nv2si_uuus (__a, __b, __c); |
df401d54 | 27023 | } |
27024 | ||
49ab9992 | 27025 | __extension__ extern __inline uint64x1_t |
27026 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27027 | vsli_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) |
27028 | { | |
12fc7207 | 27029 | return (uint64x1_t) {__builtin_aarch64_usli_ndi_uuus (__a[0], __b[0], __c)}; |
df401d54 | 27030 | } |
27031 | ||
d4f47414 | 27032 | __extension__ extern __inline poly64x1_t |
27033 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27034 | vsli_n_p64 (poly64x1_t __a, poly64x1_t __b, const int __c) | |
27035 | { | |
27036 | return (poly64x1_t) {__builtin_aarch64_ssli_ndi_ppps (__a[0], __b[0], __c)}; | |
27037 | } | |
27038 | ||
49ab9992 | 27039 | __extension__ extern __inline int8x16_t |
27040 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27041 | vsliq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c) |
27042 | { | |
27043 | return (int8x16_t) __builtin_aarch64_ssli_nv16qi (__a, __b, __c); | |
27044 | } | |
27045 | ||
49ab9992 | 27046 | __extension__ extern __inline int16x8_t |
27047 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27048 | vsliq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c) |
27049 | { | |
27050 | return (int16x8_t) __builtin_aarch64_ssli_nv8hi (__a, __b, __c); | |
27051 | } | |
27052 | ||
49ab9992 | 27053 | __extension__ extern __inline int32x4_t |
27054 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27055 | vsliq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c) |
27056 | { | |
27057 | return (int32x4_t) __builtin_aarch64_ssli_nv4si (__a, __b, __c); | |
27058 | } | |
27059 | ||
49ab9992 | 27060 | __extension__ extern __inline int64x2_t |
27061 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27062 | vsliq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c) |
27063 | { | |
27064 | return (int64x2_t) __builtin_aarch64_ssli_nv2di (__a, __b, __c); | |
27065 | } | |
27066 | ||
49ab9992 | 27067 | __extension__ extern __inline uint8x16_t |
27068 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27069 | vsliq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c) |
27070 | { | |
201e54b7 | 27071 | return __builtin_aarch64_usli_nv16qi_uuus (__a, __b, __c); |
df401d54 | 27072 | } |
27073 | ||
49ab9992 | 27074 | __extension__ extern __inline uint16x8_t |
27075 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27076 | vsliq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c) |
27077 | { | |
201e54b7 | 27078 | return __builtin_aarch64_usli_nv8hi_uuus (__a, __b, __c); |
df401d54 | 27079 | } |
27080 | ||
49ab9992 | 27081 | __extension__ extern __inline uint32x4_t |
27082 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27083 | vsliq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c) |
27084 | { | |
201e54b7 | 27085 | return __builtin_aarch64_usli_nv4si_uuus (__a, __b, __c); |
df401d54 | 27086 | } |
27087 | ||
49ab9992 | 27088 | __extension__ extern __inline uint64x2_t |
27089 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27090 | vsliq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c) |
27091 | { | |
201e54b7 | 27092 | return __builtin_aarch64_usli_nv2di_uuus (__a, __b, __c); |
df401d54 | 27093 | } |
27094 | ||
d4f47414 | 27095 | __extension__ extern __inline poly64x2_t |
27096 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27097 | vsliq_n_p64 (poly64x2_t __a, poly64x2_t __b, const int __c) | |
27098 | { | |
27099 | return __builtin_aarch64_ssli_nv2di_ppps (__a, __b, __c); | |
27100 | } | |
27101 | ||
49ab9992 | 27102 | __extension__ extern __inline int64_t |
27103 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 27104 | vslid_n_s64 (int64_t __a, int64_t __b, const int __c) |
df401d54 | 27105 | { |
12fc7207 | 27106 | return __builtin_aarch64_ssli_ndi (__a, __b, __c); |
df401d54 | 27107 | } |
27108 | ||
49ab9992 | 27109 | __extension__ extern __inline uint64_t |
27110 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 27111 | vslid_n_u64 (uint64_t __a, uint64_t __b, const int __c) |
df401d54 | 27112 | { |
201e54b7 | 27113 | return __builtin_aarch64_usli_ndi_uuus (__a, __b, __c); |
df401d54 | 27114 | } |
27115 | ||
27116 | /* vsqadd */ | |
27117 | ||
49ab9992 | 27118 | __extension__ extern __inline uint8x8_t |
27119 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27120 | vsqadd_u8 (uint8x8_t __a, int8x8_t __b) |
27121 | { | |
201e54b7 | 27122 | return __builtin_aarch64_usqaddv8qi_uus (__a, __b); |
df401d54 | 27123 | } |
27124 | ||
49ab9992 | 27125 | __extension__ extern __inline uint16x4_t |
27126 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27127 | vsqadd_u16 (uint16x4_t __a, int16x4_t __b) |
27128 | { | |
201e54b7 | 27129 | return __builtin_aarch64_usqaddv4hi_uus (__a, __b); |
df401d54 | 27130 | } |
27131 | ||
49ab9992 | 27132 | __extension__ extern __inline uint32x2_t |
27133 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27134 | vsqadd_u32 (uint32x2_t __a, int32x2_t __b) |
27135 | { | |
201e54b7 | 27136 | return __builtin_aarch64_usqaddv2si_uus (__a, __b); |
df401d54 | 27137 | } |
27138 | ||
49ab9992 | 27139 | __extension__ extern __inline uint64x1_t |
27140 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27141 | vsqadd_u64 (uint64x1_t __a, int64x1_t __b) |
27142 | { | |
12fc7207 | 27143 | return (uint64x1_t) {__builtin_aarch64_usqadddi_uus (__a[0], __b[0])}; |
df401d54 | 27144 | } |
27145 | ||
49ab9992 | 27146 | __extension__ extern __inline uint8x16_t |
27147 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27148 | vsqaddq_u8 (uint8x16_t __a, int8x16_t __b) |
27149 | { | |
201e54b7 | 27150 | return __builtin_aarch64_usqaddv16qi_uus (__a, __b); |
df401d54 | 27151 | } |
27152 | ||
49ab9992 | 27153 | __extension__ extern __inline uint16x8_t |
27154 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27155 | vsqaddq_u16 (uint16x8_t __a, int16x8_t __b) |
27156 | { | |
201e54b7 | 27157 | return __builtin_aarch64_usqaddv8hi_uus (__a, __b); |
df401d54 | 27158 | } |
27159 | ||
49ab9992 | 27160 | __extension__ extern __inline uint32x4_t |
27161 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27162 | vsqaddq_u32 (uint32x4_t __a, int32x4_t __b) |
27163 | { | |
201e54b7 | 27164 | return __builtin_aarch64_usqaddv4si_uus (__a, __b); |
df401d54 | 27165 | } |
27166 | ||
49ab9992 | 27167 | __extension__ extern __inline uint64x2_t |
27168 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27169 | vsqaddq_u64 (uint64x2_t __a, int64x2_t __b) |
27170 | { | |
201e54b7 | 27171 | return __builtin_aarch64_usqaddv2di_uus (__a, __b); |
df401d54 | 27172 | } |
27173 | ||
49ab9992 | 27174 | __extension__ extern __inline uint8_t |
27175 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 27176 | vsqaddb_u8 (uint8_t __a, int8_t __b) |
df401d54 | 27177 | { |
201e54b7 | 27178 | return __builtin_aarch64_usqaddqi_uus (__a, __b); |
df401d54 | 27179 | } |
27180 | ||
49ab9992 | 27181 | __extension__ extern __inline uint16_t |
27182 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 27183 | vsqaddh_u16 (uint16_t __a, int16_t __b) |
df401d54 | 27184 | { |
201e54b7 | 27185 | return __builtin_aarch64_usqaddhi_uus (__a, __b); |
df401d54 | 27186 | } |
27187 | ||
49ab9992 | 27188 | __extension__ extern __inline uint32_t |
27189 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 27190 | vsqadds_u32 (uint32_t __a, int32_t __b) |
df401d54 | 27191 | { |
201e54b7 | 27192 | return __builtin_aarch64_usqaddsi_uus (__a, __b); |
df401d54 | 27193 | } |
27194 | ||
49ab9992 | 27195 | __extension__ extern __inline uint64_t |
27196 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 27197 | vsqaddd_u64 (uint64_t __a, int64_t __b) |
df401d54 | 27198 | { |
201e54b7 | 27199 | return __builtin_aarch64_usqadddi_uus (__a, __b); |
df401d54 | 27200 | } |
27201 | ||
27202 | /* vsqrt */ | |
49ab9992 | 27203 | __extension__ extern __inline float32x2_t |
27204 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27205 | vsqrt_f32 (float32x2_t a) |
27206 | { | |
27207 | return __builtin_aarch64_sqrtv2sf (a); | |
27208 | } | |
27209 | ||
49ab9992 | 27210 | __extension__ extern __inline float32x4_t |
27211 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27212 | vsqrtq_f32 (float32x4_t a) |
27213 | { | |
27214 | return __builtin_aarch64_sqrtv4sf (a); | |
27215 | } | |
27216 | ||
49ab9992 | 27217 | __extension__ extern __inline float64x1_t |
27218 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28988091 | 27219 | vsqrt_f64 (float64x1_t a) |
27220 | { | |
f62d2c15 | 27221 | return (float64x1_t) { __builtin_aarch64_sqrtdf (a[0]) }; |
28988091 | 27222 | } |
27223 | ||
49ab9992 | 27224 | __extension__ extern __inline float64x2_t |
27225 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27226 | vsqrtq_f64 (float64x2_t a) |
27227 | { | |
27228 | return __builtin_aarch64_sqrtv2df (a); | |
27229 | } | |
27230 | ||
27231 | /* vsra */ | |
27232 | ||
49ab9992 | 27233 | __extension__ extern __inline int8x8_t |
27234 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27235 | vsra_n_s8 (int8x8_t __a, int8x8_t __b, const int __c) |
27236 | { | |
27237 | return (int8x8_t) __builtin_aarch64_ssra_nv8qi (__a, __b, __c); | |
27238 | } | |
27239 | ||
49ab9992 | 27240 | __extension__ extern __inline int16x4_t |
27241 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27242 | vsra_n_s16 (int16x4_t __a, int16x4_t __b, const int __c) |
27243 | { | |
27244 | return (int16x4_t) __builtin_aarch64_ssra_nv4hi (__a, __b, __c); | |
27245 | } | |
27246 | ||
49ab9992 | 27247 | __extension__ extern __inline int32x2_t |
27248 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27249 | vsra_n_s32 (int32x2_t __a, int32x2_t __b, const int __c) |
27250 | { | |
27251 | return (int32x2_t) __builtin_aarch64_ssra_nv2si (__a, __b, __c); | |
27252 | } | |
27253 | ||
49ab9992 | 27254 | __extension__ extern __inline int64x1_t |
27255 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27256 | vsra_n_s64 (int64x1_t __a, int64x1_t __b, const int __c) |
27257 | { | |
12fc7207 | 27258 | return (int64x1_t) {__builtin_aarch64_ssra_ndi (__a[0], __b[0], __c)}; |
df401d54 | 27259 | } |
27260 | ||
49ab9992 | 27261 | __extension__ extern __inline uint8x8_t |
27262 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27263 | vsra_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c) |
27264 | { | |
201e54b7 | 27265 | return __builtin_aarch64_usra_nv8qi_uuus (__a, __b, __c); |
df401d54 | 27266 | } |
27267 | ||
49ab9992 | 27268 | __extension__ extern __inline uint16x4_t |
27269 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27270 | vsra_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c) |
27271 | { | |
201e54b7 | 27272 | return __builtin_aarch64_usra_nv4hi_uuus (__a, __b, __c); |
df401d54 | 27273 | } |
27274 | ||
49ab9992 | 27275 | __extension__ extern __inline uint32x2_t |
27276 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27277 | vsra_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c) |
27278 | { | |
201e54b7 | 27279 | return __builtin_aarch64_usra_nv2si_uuus (__a, __b, __c); |
df401d54 | 27280 | } |
27281 | ||
49ab9992 | 27282 | __extension__ extern __inline uint64x1_t |
27283 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27284 | vsra_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) |
27285 | { | |
12fc7207 | 27286 | return (uint64x1_t) {__builtin_aarch64_usra_ndi_uuus (__a[0], __b[0], __c)}; |
df401d54 | 27287 | } |
27288 | ||
49ab9992 | 27289 | __extension__ extern __inline int8x16_t |
27290 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27291 | vsraq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c) |
27292 | { | |
27293 | return (int8x16_t) __builtin_aarch64_ssra_nv16qi (__a, __b, __c); | |
27294 | } | |
27295 | ||
49ab9992 | 27296 | __extension__ extern __inline int16x8_t |
27297 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27298 | vsraq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c) |
27299 | { | |
27300 | return (int16x8_t) __builtin_aarch64_ssra_nv8hi (__a, __b, __c); | |
27301 | } | |
27302 | ||
49ab9992 | 27303 | __extension__ extern __inline int32x4_t |
27304 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27305 | vsraq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c) |
27306 | { | |
27307 | return (int32x4_t) __builtin_aarch64_ssra_nv4si (__a, __b, __c); | |
27308 | } | |
27309 | ||
49ab9992 | 27310 | __extension__ extern __inline int64x2_t |
27311 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27312 | vsraq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c) |
27313 | { | |
27314 | return (int64x2_t) __builtin_aarch64_ssra_nv2di (__a, __b, __c); | |
27315 | } | |
27316 | ||
49ab9992 | 27317 | __extension__ extern __inline uint8x16_t |
27318 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27319 | vsraq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c) |
27320 | { | |
201e54b7 | 27321 | return __builtin_aarch64_usra_nv16qi_uuus (__a, __b, __c); |
df401d54 | 27322 | } |
27323 | ||
49ab9992 | 27324 | __extension__ extern __inline uint16x8_t |
27325 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27326 | vsraq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c) |
27327 | { | |
201e54b7 | 27328 | return __builtin_aarch64_usra_nv8hi_uuus (__a, __b, __c); |
df401d54 | 27329 | } |
27330 | ||
49ab9992 | 27331 | __extension__ extern __inline uint32x4_t |
27332 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27333 | vsraq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c) |
27334 | { | |
201e54b7 | 27335 | return __builtin_aarch64_usra_nv4si_uuus (__a, __b, __c); |
df401d54 | 27336 | } |
27337 | ||
49ab9992 | 27338 | __extension__ extern __inline uint64x2_t |
27339 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27340 | vsraq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c) |
27341 | { | |
201e54b7 | 27342 | return __builtin_aarch64_usra_nv2di_uuus (__a, __b, __c); |
df401d54 | 27343 | } |
27344 | ||
49ab9992 | 27345 | __extension__ extern __inline int64_t |
27346 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 27347 | vsrad_n_s64 (int64_t __a, int64_t __b, const int __c) |
df401d54 | 27348 | { |
12fc7207 | 27349 | return __builtin_aarch64_ssra_ndi (__a, __b, __c); |
df401d54 | 27350 | } |
27351 | ||
49ab9992 | 27352 | __extension__ extern __inline uint64_t |
27353 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 27354 | vsrad_n_u64 (uint64_t __a, uint64_t __b, const int __c) |
df401d54 | 27355 | { |
201e54b7 | 27356 | return __builtin_aarch64_usra_ndi_uuus (__a, __b, __c); |
df401d54 | 27357 | } |
27358 | ||
27359 | /* vsri */ | |
27360 | ||
49ab9992 | 27361 | __extension__ extern __inline int8x8_t |
27362 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27363 | vsri_n_s8 (int8x8_t __a, int8x8_t __b, const int __c) |
27364 | { | |
27365 | return (int8x8_t) __builtin_aarch64_ssri_nv8qi (__a, __b, __c); | |
27366 | } | |
27367 | ||
49ab9992 | 27368 | __extension__ extern __inline int16x4_t |
27369 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27370 | vsri_n_s16 (int16x4_t __a, int16x4_t __b, const int __c) |
27371 | { | |
27372 | return (int16x4_t) __builtin_aarch64_ssri_nv4hi (__a, __b, __c); | |
27373 | } | |
27374 | ||
49ab9992 | 27375 | __extension__ extern __inline int32x2_t |
27376 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27377 | vsri_n_s32 (int32x2_t __a, int32x2_t __b, const int __c) |
27378 | { | |
27379 | return (int32x2_t) __builtin_aarch64_ssri_nv2si (__a, __b, __c); | |
27380 | } | |
27381 | ||
49ab9992 | 27382 | __extension__ extern __inline int64x1_t |
27383 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27384 | vsri_n_s64 (int64x1_t __a, int64x1_t __b, const int __c) |
27385 | { | |
12fc7207 | 27386 | return (int64x1_t) {__builtin_aarch64_ssri_ndi (__a[0], __b[0], __c)}; |
df401d54 | 27387 | } |
27388 | ||
49ab9992 | 27389 | __extension__ extern __inline uint8x8_t |
27390 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27391 | vsri_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c) |
27392 | { | |
201e54b7 | 27393 | return __builtin_aarch64_usri_nv8qi_uuus (__a, __b, __c); |
df401d54 | 27394 | } |
27395 | ||
49ab9992 | 27396 | __extension__ extern __inline uint16x4_t |
27397 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27398 | vsri_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c) |
27399 | { | |
201e54b7 | 27400 | return __builtin_aarch64_usri_nv4hi_uuus (__a, __b, __c); |
df401d54 | 27401 | } |
27402 | ||
49ab9992 | 27403 | __extension__ extern __inline uint32x2_t |
27404 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27405 | vsri_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c) |
27406 | { | |
201e54b7 | 27407 | return __builtin_aarch64_usri_nv2si_uuus (__a, __b, __c); |
df401d54 | 27408 | } |
27409 | ||
49ab9992 | 27410 | __extension__ extern __inline uint64x1_t |
27411 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27412 | vsri_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) |
27413 | { | |
12fc7207 | 27414 | return (uint64x1_t) {__builtin_aarch64_usri_ndi_uuus (__a[0], __b[0], __c)}; |
df401d54 | 27415 | } |
27416 | ||
49ab9992 | 27417 | __extension__ extern __inline int8x16_t |
27418 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27419 | vsriq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c) |
27420 | { | |
27421 | return (int8x16_t) __builtin_aarch64_ssri_nv16qi (__a, __b, __c); | |
27422 | } | |
27423 | ||
49ab9992 | 27424 | __extension__ extern __inline int16x8_t |
27425 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27426 | vsriq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c) |
27427 | { | |
27428 | return (int16x8_t) __builtin_aarch64_ssri_nv8hi (__a, __b, __c); | |
27429 | } | |
27430 | ||
49ab9992 | 27431 | __extension__ extern __inline int32x4_t |
27432 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27433 | vsriq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c) |
27434 | { | |
27435 | return (int32x4_t) __builtin_aarch64_ssri_nv4si (__a, __b, __c); | |
27436 | } | |
27437 | ||
49ab9992 | 27438 | __extension__ extern __inline int64x2_t |
27439 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27440 | vsriq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c) |
27441 | { | |
27442 | return (int64x2_t) __builtin_aarch64_ssri_nv2di (__a, __b, __c); | |
27443 | } | |
27444 | ||
49ab9992 | 27445 | __extension__ extern __inline uint8x16_t |
27446 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27447 | vsriq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c) |
27448 | { | |
201e54b7 | 27449 | return __builtin_aarch64_usri_nv16qi_uuus (__a, __b, __c); |
df401d54 | 27450 | } |
27451 | ||
49ab9992 | 27452 | __extension__ extern __inline uint16x8_t |
27453 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27454 | vsriq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c) |
27455 | { | |
201e54b7 | 27456 | return __builtin_aarch64_usri_nv8hi_uuus (__a, __b, __c); |
df401d54 | 27457 | } |
27458 | ||
49ab9992 | 27459 | __extension__ extern __inline uint32x4_t |
27460 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27461 | vsriq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c) |
27462 | { | |
201e54b7 | 27463 | return __builtin_aarch64_usri_nv4si_uuus (__a, __b, __c); |
df401d54 | 27464 | } |
27465 | ||
49ab9992 | 27466 | __extension__ extern __inline uint64x2_t |
27467 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 27468 | vsriq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c) |
27469 | { | |
201e54b7 | 27470 | return __builtin_aarch64_usri_nv2di_uuus (__a, __b, __c); |
df401d54 | 27471 | } |
27472 | ||
49ab9992 | 27473 | __extension__ extern __inline int64_t |
27474 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 27475 | vsrid_n_s64 (int64_t __a, int64_t __b, const int __c) |
df401d54 | 27476 | { |
12fc7207 | 27477 | return __builtin_aarch64_ssri_ndi (__a, __b, __c); |
df401d54 | 27478 | } |
27479 | ||
49ab9992 | 27480 | __extension__ extern __inline uint64_t |
27481 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 27482 | vsrid_n_u64 (uint64_t __a, uint64_t __b, const int __c) |
df401d54 | 27483 | { |
201e54b7 | 27484 | return __builtin_aarch64_usri_ndi_uuus (__a, __b, __c); |
df401d54 | 27485 | } |
27486 | ||
88c9a347 | 27487 | /* vst1 */ |
27488 | ||
49ab9992 | 27489 | __extension__ extern __inline void |
27490 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
aea31229 | 27491 | vst1_f16 (float16_t *__a, float16x4_t __b) |
27492 | { | |
27493 | __builtin_aarch64_st1v4hf (__a, __b); | |
27494 | } | |
27495 | ||
49ab9992 | 27496 | __extension__ extern __inline void |
27497 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27498 | vst1_f32 (float32_t *a, float32x2_t b) |
27499 | { | |
27500 | __builtin_aarch64_st1v2sf ((__builtin_aarch64_simd_sf *) a, b); | |
27501 | } | |
27502 | ||
49ab9992 | 27503 | __extension__ extern __inline void |
27504 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27505 | vst1_f64 (float64_t *a, float64x1_t b) |
27506 | { | |
ac292ff5 | 27507 | *a = b[0]; |
88c9a347 | 27508 | } |
27509 | ||
49ab9992 | 27510 | __extension__ extern __inline void |
27511 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27512 | vst1_p8 (poly8_t *a, poly8x8_t b) |
27513 | { | |
27514 | __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi *) a, | |
27515 | (int8x8_t) b); | |
27516 | } | |
27517 | ||
49ab9992 | 27518 | __extension__ extern __inline void |
27519 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27520 | vst1_p16 (poly16_t *a, poly16x4_t b) |
27521 | { | |
27522 | __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi *) a, | |
27523 | (int16x4_t) b); | |
27524 | } | |
27525 | ||
d4f47414 | 27526 | __extension__ extern __inline void |
27527 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27528 | vst1_p64 (poly64_t *a, poly64x1_t b) | |
27529 | { | |
27530 | *a = b[0]; | |
27531 | } | |
27532 | ||
49ab9992 | 27533 | __extension__ extern __inline void |
27534 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27535 | vst1_s8 (int8_t *a, int8x8_t b) |
27536 | { | |
27537 | __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi *) a, b); | |
27538 | } | |
27539 | ||
49ab9992 | 27540 | __extension__ extern __inline void |
27541 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27542 | vst1_s16 (int16_t *a, int16x4_t b) |
27543 | { | |
27544 | __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi *) a, b); | |
27545 | } | |
27546 | ||
49ab9992 | 27547 | __extension__ extern __inline void |
27548 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27549 | vst1_s32 (int32_t *a, int32x2_t b) |
27550 | { | |
27551 | __builtin_aarch64_st1v2si ((__builtin_aarch64_simd_si *) a, b); | |
27552 | } | |
27553 | ||
49ab9992 | 27554 | __extension__ extern __inline void |
27555 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27556 | vst1_s64 (int64_t *a, int64x1_t b) |
27557 | { | |
12fc7207 | 27558 | *a = b[0]; |
88c9a347 | 27559 | } |
27560 | ||
49ab9992 | 27561 | __extension__ extern __inline void |
27562 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27563 | vst1_u8 (uint8_t *a, uint8x8_t b) |
27564 | { | |
27565 | __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi *) a, | |
27566 | (int8x8_t) b); | |
27567 | } | |
27568 | ||
49ab9992 | 27569 | __extension__ extern __inline void |
27570 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27571 | vst1_u16 (uint16_t *a, uint16x4_t b) |
27572 | { | |
27573 | __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi *) a, | |
27574 | (int16x4_t) b); | |
27575 | } | |
27576 | ||
49ab9992 | 27577 | __extension__ extern __inline void |
27578 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27579 | vst1_u32 (uint32_t *a, uint32x2_t b) |
27580 | { | |
27581 | __builtin_aarch64_st1v2si ((__builtin_aarch64_simd_si *) a, | |
27582 | (int32x2_t) b); | |
27583 | } | |
27584 | ||
49ab9992 | 27585 | __extension__ extern __inline void |
27586 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27587 | vst1_u64 (uint64_t *a, uint64x1_t b) |
27588 | { | |
12fc7207 | 27589 | *a = b[0]; |
88c9a347 | 27590 | } |
27591 | ||
f7507320 | 27592 | /* vst1q */ |
27593 | ||
49ab9992 | 27594 | __extension__ extern __inline void |
27595 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
aea31229 | 27596 | vst1q_f16 (float16_t *__a, float16x8_t __b) |
27597 | { | |
27598 | __builtin_aarch64_st1v8hf (__a, __b); | |
27599 | } | |
27600 | ||
49ab9992 | 27601 | __extension__ extern __inline void |
27602 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27603 | vst1q_f32 (float32_t *a, float32x4_t b) |
27604 | { | |
27605 | __builtin_aarch64_st1v4sf ((__builtin_aarch64_simd_sf *) a, b); | |
27606 | } | |
27607 | ||
49ab9992 | 27608 | __extension__ extern __inline void |
27609 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27610 | vst1q_f64 (float64_t *a, float64x2_t b) |
27611 | { | |
27612 | __builtin_aarch64_st1v2df ((__builtin_aarch64_simd_df *) a, b); | |
27613 | } | |
27614 | ||
49ab9992 | 27615 | __extension__ extern __inline void |
27616 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27617 | vst1q_p8 (poly8_t *a, poly8x16_t b) |
27618 | { | |
27619 | __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi *) a, | |
27620 | (int8x16_t) b); | |
27621 | } | |
27622 | ||
49ab9992 | 27623 | __extension__ extern __inline void |
27624 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27625 | vst1q_p16 (poly16_t *a, poly16x8_t b) |
27626 | { | |
27627 | __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi *) a, | |
27628 | (int16x8_t) b); | |
27629 | } | |
27630 | ||
d4f47414 | 27631 | __extension__ extern __inline void |
27632 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27633 | vst1q_p64 (poly64_t *a, poly64x2_t b) | |
27634 | { | |
27635 | __builtin_aarch64_st1v2di_sp ((__builtin_aarch64_simd_di *) a, | |
27636 | (poly64x2_t) b); | |
27637 | } | |
27638 | ||
49ab9992 | 27639 | __extension__ extern __inline void |
27640 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27641 | vst1q_s8 (int8_t *a, int8x16_t b) |
27642 | { | |
27643 | __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi *) a, b); | |
27644 | } | |
27645 | ||
49ab9992 | 27646 | __extension__ extern __inline void |
27647 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27648 | vst1q_s16 (int16_t *a, int16x8_t b) |
27649 | { | |
27650 | __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi *) a, b); | |
27651 | } | |
27652 | ||
49ab9992 | 27653 | __extension__ extern __inline void |
27654 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27655 | vst1q_s32 (int32_t *a, int32x4_t b) |
27656 | { | |
27657 | __builtin_aarch64_st1v4si ((__builtin_aarch64_simd_si *) a, b); | |
27658 | } | |
27659 | ||
49ab9992 | 27660 | __extension__ extern __inline void |
27661 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27662 | vst1q_s64 (int64_t *a, int64x2_t b) |
27663 | { | |
27664 | __builtin_aarch64_st1v2di ((__builtin_aarch64_simd_di *) a, b); | |
27665 | } | |
27666 | ||
49ab9992 | 27667 | __extension__ extern __inline void |
27668 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27669 | vst1q_u8 (uint8_t *a, uint8x16_t b) |
27670 | { | |
27671 | __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi *) a, | |
27672 | (int8x16_t) b); | |
27673 | } | |
27674 | ||
49ab9992 | 27675 | __extension__ extern __inline void |
27676 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27677 | vst1q_u16 (uint16_t *a, uint16x8_t b) |
27678 | { | |
27679 | __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi *) a, | |
27680 | (int16x8_t) b); | |
27681 | } | |
27682 | ||
49ab9992 | 27683 | __extension__ extern __inline void |
27684 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27685 | vst1q_u32 (uint32_t *a, uint32x4_t b) |
27686 | { | |
27687 | __builtin_aarch64_st1v4si ((__builtin_aarch64_simd_si *) a, | |
27688 | (int32x4_t) b); | |
27689 | } | |
27690 | ||
49ab9992 | 27691 | __extension__ extern __inline void |
27692 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
88c9a347 | 27693 | vst1q_u64 (uint64_t *a, uint64x2_t b) |
27694 | { | |
27695 | __builtin_aarch64_st1v2di ((__builtin_aarch64_simd_di *) a, | |
27696 | (int64x2_t) b); | |
27697 | } | |
27698 | ||
f7507320 | 27699 | /* vst1_lane */ |
27700 | ||
49ab9992 | 27701 | __extension__ extern __inline void |
27702 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
aea31229 | 27703 | vst1_lane_f16 (float16_t *__a, float16x4_t __b, const int __lane) |
27704 | { | |
27705 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27706 | } | |
27707 | ||
49ab9992 | 27708 | __extension__ extern __inline void |
27709 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27710 | vst1_lane_f32 (float32_t *__a, float32x2_t __b, const int __lane) |
27711 | { | |
27712 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27713 | } | |
27714 | ||
49ab9992 | 27715 | __extension__ extern __inline void |
27716 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27717 | vst1_lane_f64 (float64_t *__a, float64x1_t __b, const int __lane) |
27718 | { | |
27719 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27720 | } | |
27721 | ||
49ab9992 | 27722 | __extension__ extern __inline void |
27723 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27724 | vst1_lane_p8 (poly8_t *__a, poly8x8_t __b, const int __lane) |
27725 | { | |
27726 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27727 | } | |
27728 | ||
49ab9992 | 27729 | __extension__ extern __inline void |
27730 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27731 | vst1_lane_p16 (poly16_t *__a, poly16x4_t __b, const int __lane) |
27732 | { | |
27733 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27734 | } | |
27735 | ||
d4f47414 | 27736 | __extension__ extern __inline void |
27737 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27738 | vst1_lane_p64 (poly64_t *__a, poly64x1_t __b, const int __lane) | |
27739 | { | |
27740 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27741 | } | |
27742 | ||
49ab9992 | 27743 | __extension__ extern __inline void |
27744 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27745 | vst1_lane_s8 (int8_t *__a, int8x8_t __b, const int __lane) |
27746 | { | |
27747 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27748 | } | |
27749 | ||
49ab9992 | 27750 | __extension__ extern __inline void |
27751 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27752 | vst1_lane_s16 (int16_t *__a, int16x4_t __b, const int __lane) |
27753 | { | |
27754 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27755 | } | |
27756 | ||
49ab9992 | 27757 | __extension__ extern __inline void |
27758 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27759 | vst1_lane_s32 (int32_t *__a, int32x2_t __b, const int __lane) |
27760 | { | |
27761 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27762 | } | |
27763 | ||
49ab9992 | 27764 | __extension__ extern __inline void |
27765 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27766 | vst1_lane_s64 (int64_t *__a, int64x1_t __b, const int __lane) |
27767 | { | |
27768 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27769 | } | |
27770 | ||
49ab9992 | 27771 | __extension__ extern __inline void |
27772 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27773 | vst1_lane_u8 (uint8_t *__a, uint8x8_t __b, const int __lane) |
27774 | { | |
27775 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27776 | } | |
27777 | ||
49ab9992 | 27778 | __extension__ extern __inline void |
27779 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27780 | vst1_lane_u16 (uint16_t *__a, uint16x4_t __b, const int __lane) |
27781 | { | |
27782 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27783 | } | |
27784 | ||
49ab9992 | 27785 | __extension__ extern __inline void |
27786 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27787 | vst1_lane_u32 (uint32_t *__a, uint32x2_t __b, const int __lane) |
27788 | { | |
27789 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27790 | } | |
27791 | ||
49ab9992 | 27792 | __extension__ extern __inline void |
27793 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27794 | vst1_lane_u64 (uint64_t *__a, uint64x1_t __b, const int __lane) |
27795 | { | |
27796 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27797 | } | |
27798 | ||
27799 | /* vst1q_lane */ | |
27800 | ||
49ab9992 | 27801 | __extension__ extern __inline void |
27802 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
aea31229 | 27803 | vst1q_lane_f16 (float16_t *__a, float16x8_t __b, const int __lane) |
27804 | { | |
27805 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27806 | } | |
27807 | ||
49ab9992 | 27808 | __extension__ extern __inline void |
27809 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27810 | vst1q_lane_f32 (float32_t *__a, float32x4_t __b, const int __lane) |
27811 | { | |
27812 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27813 | } | |
27814 | ||
49ab9992 | 27815 | __extension__ extern __inline void |
27816 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27817 | vst1q_lane_f64 (float64_t *__a, float64x2_t __b, const int __lane) |
27818 | { | |
27819 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27820 | } | |
27821 | ||
49ab9992 | 27822 | __extension__ extern __inline void |
27823 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27824 | vst1q_lane_p8 (poly8_t *__a, poly8x16_t __b, const int __lane) |
27825 | { | |
27826 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27827 | } | |
27828 | ||
49ab9992 | 27829 | __extension__ extern __inline void |
27830 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27831 | vst1q_lane_p16 (poly16_t *__a, poly16x8_t __b, const int __lane) |
27832 | { | |
27833 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27834 | } | |
27835 | ||
d4f47414 | 27836 | __extension__ extern __inline void |
27837 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27838 | vst1q_lane_p64 (poly64_t *__a, poly64x2_t __b, const int __lane) | |
27839 | { | |
27840 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27841 | } | |
27842 | ||
49ab9992 | 27843 | __extension__ extern __inline void |
27844 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27845 | vst1q_lane_s8 (int8_t *__a, int8x16_t __b, const int __lane) |
27846 | { | |
27847 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27848 | } | |
27849 | ||
49ab9992 | 27850 | __extension__ extern __inline void |
27851 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27852 | vst1q_lane_s16 (int16_t *__a, int16x8_t __b, const int __lane) |
27853 | { | |
27854 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27855 | } | |
27856 | ||
49ab9992 | 27857 | __extension__ extern __inline void |
27858 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27859 | vst1q_lane_s32 (int32_t *__a, int32x4_t __b, const int __lane) |
27860 | { | |
27861 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27862 | } | |
27863 | ||
49ab9992 | 27864 | __extension__ extern __inline void |
27865 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27866 | vst1q_lane_s64 (int64_t *__a, int64x2_t __b, const int __lane) |
27867 | { | |
27868 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27869 | } | |
27870 | ||
49ab9992 | 27871 | __extension__ extern __inline void |
27872 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27873 | vst1q_lane_u8 (uint8_t *__a, uint8x16_t __b, const int __lane) |
27874 | { | |
27875 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27876 | } | |
27877 | ||
49ab9992 | 27878 | __extension__ extern __inline void |
27879 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27880 | vst1q_lane_u16 (uint16_t *__a, uint16x8_t __b, const int __lane) |
27881 | { | |
27882 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27883 | } | |
27884 | ||
49ab9992 | 27885 | __extension__ extern __inline void |
27886 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27887 | vst1q_lane_u32 (uint32_t *__a, uint32x4_t __b, const int __lane) |
27888 | { | |
27889 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27890 | } | |
27891 | ||
49ab9992 | 27892 | __extension__ extern __inline void |
27893 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f7507320 | 27894 | vst1q_lane_u64 (uint64_t *__a, uint64x2_t __b, const int __lane) |
27895 | { | |
27896 | *__a = __aarch64_vget_lane_any (__b, __lane); | |
27897 | } | |
27898 | ||
1f52413c | 27899 | /* vst1x2 */ |
27900 | ||
27901 | __extension__ extern __inline void | |
27902 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27903 | vst1_s64_x2 (int64_t * __a, int64x1x2_t val) | |
27904 | { | |
27905 | __builtin_aarch64_simd_oi __o; | |
27906 | int64x2x2_t temp; | |
27907 | temp.val[0] = vcombine_s64 (val.val[0], vcreate_s64 (__AARCH64_INT64_C (0))); | |
27908 | temp.val[1] = vcombine_s64 (val.val[1], vcreate_s64 (__AARCH64_INT64_C (0))); | |
27909 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[0], 0); | |
27910 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[1], 1); | |
27911 | __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o); | |
27912 | } | |
27913 | ||
27914 | __extension__ extern __inline void | |
27915 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27916 | vst1_u64_x2 (uint64_t * __a, uint64x1x2_t val) | |
27917 | { | |
27918 | __builtin_aarch64_simd_oi __o; | |
27919 | uint64x2x2_t temp; | |
27920 | temp.val[0] = vcombine_u64 (val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
27921 | temp.val[1] = vcombine_u64 (val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
27922 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[0], 0); | |
27923 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[1], 1); | |
27924 | __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o); | |
27925 | } | |
27926 | ||
27927 | __extension__ extern __inline void | |
27928 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27929 | vst1_f64_x2 (float64_t * __a, float64x1x2_t val) | |
27930 | { | |
27931 | __builtin_aarch64_simd_oi __o; | |
27932 | float64x2x2_t temp; | |
27933 | temp.val[0] = vcombine_f64 (val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
27934 | temp.val[1] = vcombine_f64 (val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
27935 | __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) temp.val[0], 0); | |
27936 | __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) temp.val[1], 1); | |
27937 | __builtin_aarch64_st1x2df ((__builtin_aarch64_simd_df *) __a, __o); | |
27938 | } | |
27939 | ||
27940 | __extension__ extern __inline void | |
27941 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27942 | vst1_s8_x2 (int8_t * __a, int8x8x2_t val) | |
27943 | { | |
27944 | __builtin_aarch64_simd_oi __o; | |
27945 | int8x16x2_t temp; | |
27946 | temp.val[0] = vcombine_s8 (val.val[0], vcreate_s8 (__AARCH64_INT64_C (0))); | |
27947 | temp.val[1] = vcombine_s8 (val.val[1], vcreate_s8 (__AARCH64_INT64_C (0))); | |
27948 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); | |
27949 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); | |
27950 | __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
27951 | } | |
27952 | ||
27953 | __extension__ extern __inline void | |
27954 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27955 | vst1_p8_x2 (poly8_t * __a, poly8x8x2_t val) | |
27956 | { | |
27957 | __builtin_aarch64_simd_oi __o; | |
27958 | poly8x16x2_t temp; | |
27959 | temp.val[0] = vcombine_p8 (val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
27960 | temp.val[1] = vcombine_p8 (val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
27961 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); | |
27962 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); | |
27963 | __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
27964 | } | |
27965 | ||
27966 | __extension__ extern __inline void | |
27967 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27968 | vst1_s16_x2 (int16_t * __a, int16x4x2_t val) | |
27969 | { | |
27970 | __builtin_aarch64_simd_oi __o; | |
27971 | int16x8x2_t temp; | |
27972 | temp.val[0] = vcombine_s16 (val.val[0], vcreate_s16 (__AARCH64_INT64_C (0))); | |
27973 | temp.val[1] = vcombine_s16 (val.val[1], vcreate_s16 (__AARCH64_INT64_C (0))); | |
27974 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); | |
27975 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); | |
27976 | __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
27977 | } | |
27978 | ||
27979 | __extension__ extern __inline void | |
27980 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27981 | vst1_p16_x2 (poly16_t * __a, poly16x4x2_t val) | |
27982 | { | |
27983 | __builtin_aarch64_simd_oi __o; | |
27984 | poly16x8x2_t temp; | |
27985 | temp.val[0] = vcombine_p16 (val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
27986 | temp.val[1] = vcombine_p16 (val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
27987 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); | |
27988 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); | |
27989 | __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
27990 | } | |
27991 | ||
27992 | __extension__ extern __inline void | |
27993 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27994 | vst1_s32_x2 (int32_t * __a, int32x2x2_t val) | |
27995 | { | |
27996 | __builtin_aarch64_simd_oi __o; | |
27997 | int32x4x2_t temp; | |
27998 | temp.val[0] = vcombine_s32 (val.val[0], vcreate_s32 (__AARCH64_INT64_C (0))); | |
27999 | temp.val[1] = vcombine_s32 (val.val[1], vcreate_s32 (__AARCH64_INT64_C (0))); | |
28000 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[0], 0); | |
28001 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[1], 1); | |
28002 | __builtin_aarch64_st1x2v2si ((__builtin_aarch64_simd_si *) __a, __o); | |
28003 | } | |
28004 | ||
28005 | __extension__ extern __inline void | |
28006 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28007 | vst1_u8_x2 (uint8_t * __a, uint8x8x2_t val) | |
28008 | { | |
28009 | __builtin_aarch64_simd_oi __o; | |
28010 | uint8x16x2_t temp; | |
28011 | temp.val[0] = vcombine_u8 (val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
28012 | temp.val[1] = vcombine_u8 (val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
28013 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); | |
28014 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); | |
28015 | __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28016 | } | |
28017 | ||
28018 | __extension__ extern __inline void | |
28019 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28020 | vst1_u16_x2 (uint16_t * __a, uint16x4x2_t val) | |
28021 | { | |
28022 | __builtin_aarch64_simd_oi __o; | |
28023 | uint16x8x2_t temp; | |
28024 | temp.val[0] = vcombine_u16 (val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
28025 | temp.val[1] = vcombine_u16 (val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
28026 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); | |
28027 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); | |
28028 | __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28029 | } | |
28030 | ||
28031 | __extension__ extern __inline void | |
28032 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28033 | vst1_u32_x2 (uint32_t * __a, uint32x2x2_t val) | |
28034 | { | |
28035 | __builtin_aarch64_simd_oi __o; | |
28036 | uint32x4x2_t temp; | |
28037 | temp.val[0] = vcombine_u32 (val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
28038 | temp.val[1] = vcombine_u32 (val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
28039 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[0], 0); | |
28040 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[1], 1); | |
28041 | __builtin_aarch64_st1x2v2si ((__builtin_aarch64_simd_si *) __a, __o); | |
28042 | } | |
28043 | ||
28044 | __extension__ extern __inline void | |
28045 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28046 | vst1_f16_x2 (float16_t * __a, float16x4x2_t val) | |
28047 | { | |
28048 | __builtin_aarch64_simd_oi __o; | |
28049 | float16x8x2_t temp; | |
28050 | temp.val[0] = vcombine_f16 (val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
28051 | temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
28052 | __o = __builtin_aarch64_set_qregoiv8hf (__o, temp.val[0], 0); | |
28053 | __o = __builtin_aarch64_set_qregoiv8hf (__o, temp.val[1], 1); | |
28054 | __builtin_aarch64_st1x2v4hf (__a, __o); | |
28055 | } | |
28056 | ||
28057 | __extension__ extern __inline void | |
28058 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28059 | vst1_f32_x2 (float32_t * __a, float32x2x2_t val) | |
28060 | { | |
28061 | __builtin_aarch64_simd_oi __o; | |
28062 | float32x4x2_t temp; | |
28063 | temp.val[0] = vcombine_f32 (val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
28064 | temp.val[1] = vcombine_f32 (val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
28065 | __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) temp.val[0], 0); | |
28066 | __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) temp.val[1], 1); | |
28067 | __builtin_aarch64_st1x2v2sf ((__builtin_aarch64_simd_sf *) __a, __o); | |
28068 | } | |
28069 | ||
28070 | __extension__ extern __inline void | |
28071 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28072 | vst1_p64_x2 (poly64_t * __a, poly64x1x2_t val) | |
28073 | { | |
28074 | __builtin_aarch64_simd_oi __o; | |
28075 | poly64x2x2_t temp; | |
28076 | temp.val[0] = vcombine_p64 (val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
28077 | temp.val[1] = vcombine_p64 (val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
28078 | __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, | |
28079 | (poly64x2_t) temp.val[0], 0); | |
28080 | __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, | |
28081 | (poly64x2_t) temp.val[1], 1); | |
28082 | __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28083 | } | |
28084 | ||
28085 | __extension__ extern __inline void | |
28086 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28087 | vst1q_s8_x2 (int8_t * __a, int8x16x2_t val) | |
28088 | { | |
28089 | __builtin_aarch64_simd_oi __o; | |
28090 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); | |
28091 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); | |
28092 | __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28093 | } | |
28094 | ||
28095 | __extension__ extern __inline void | |
28096 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28097 | vst1q_p8_x2 (poly8_t * __a, poly8x16x2_t val) | |
28098 | { | |
28099 | __builtin_aarch64_simd_oi __o; | |
28100 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); | |
28101 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); | |
28102 | __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28103 | } | |
28104 | ||
28105 | __extension__ extern __inline void | |
28106 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28107 | vst1q_s16_x2 (int16_t * __a, int16x8x2_t val) | |
28108 | { | |
28109 | __builtin_aarch64_simd_oi __o; | |
28110 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); | |
28111 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); | |
28112 | __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28113 | } | |
28114 | ||
28115 | __extension__ extern __inline void | |
28116 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28117 | vst1q_p16_x2 (poly16_t * __a, poly16x8x2_t val) | |
28118 | { | |
28119 | __builtin_aarch64_simd_oi __o; | |
28120 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); | |
28121 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); | |
28122 | __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28123 | } | |
28124 | ||
28125 | __extension__ extern __inline void | |
28126 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28127 | vst1q_s32_x2 (int32_t * __a, int32x4x2_t val) | |
28128 | { | |
28129 | __builtin_aarch64_simd_oi __o; | |
28130 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[0], 0); | |
28131 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[1], 1); | |
28132 | __builtin_aarch64_st1x2v4si ((__builtin_aarch64_simd_si *) __a, __o); | |
28133 | } | |
28134 | ||
28135 | __extension__ extern __inline void | |
28136 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28137 | vst1q_s64_x2 (int64_t * __a, int64x2x2_t val) | |
28138 | { | |
28139 | __builtin_aarch64_simd_oi __o; | |
28140 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[0], 0); | |
28141 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[1], 1); | |
28142 | __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28143 | } | |
28144 | ||
28145 | __extension__ extern __inline void | |
28146 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28147 | vst1q_u8_x2 (uint8_t * __a, uint8x16x2_t val) | |
28148 | { | |
28149 | __builtin_aarch64_simd_oi __o; | |
28150 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); | |
28151 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); | |
28152 | __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28153 | } | |
28154 | ||
28155 | __extension__ extern __inline void | |
28156 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28157 | vst1q_u16_x2 (uint16_t * __a, uint16x8x2_t val) | |
28158 | { | |
28159 | __builtin_aarch64_simd_oi __o; | |
28160 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); | |
28161 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); | |
28162 | __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28163 | } | |
28164 | ||
28165 | __extension__ extern __inline void | |
28166 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28167 | vst1q_u32_x2 (uint32_t * __a, uint32x4x2_t val) | |
28168 | { | |
28169 | __builtin_aarch64_simd_oi __o; | |
28170 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[0], 0); | |
28171 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[1], 1); | |
28172 | __builtin_aarch64_st1x2v4si ((__builtin_aarch64_simd_si *) __a, __o); | |
28173 | } | |
28174 | ||
28175 | __extension__ extern __inline void | |
28176 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28177 | vst1q_u64_x2 (uint64_t * __a, uint64x2x2_t val) | |
28178 | { | |
28179 | __builtin_aarch64_simd_oi __o; | |
28180 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[0], 0); | |
28181 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[1], 1); | |
28182 | __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28183 | } | |
28184 | ||
28185 | __extension__ extern __inline void | |
28186 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28187 | vst1q_f16_x2 (float16_t * __a, float16x8x2_t val) | |
28188 | { | |
28189 | __builtin_aarch64_simd_oi __o; | |
28190 | __o = __builtin_aarch64_set_qregoiv8hf (__o, val.val[0], 0); | |
28191 | __o = __builtin_aarch64_set_qregoiv8hf (__o, val.val[1], 1); | |
28192 | __builtin_aarch64_st1x2v8hf (__a, __o); | |
28193 | } | |
28194 | ||
28195 | __extension__ extern __inline void | |
28196 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28197 | vst1q_f32_x2 (float32_t * __a, float32x4x2_t val) | |
28198 | { | |
28199 | __builtin_aarch64_simd_oi __o; | |
28200 | __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) val.val[0], 0); | |
28201 | __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) val.val[1], 1); | |
28202 | __builtin_aarch64_st1x2v4sf ((__builtin_aarch64_simd_sf *) __a, __o); | |
28203 | } | |
28204 | ||
28205 | __extension__ extern __inline void | |
28206 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28207 | vst1q_f64_x2 (float64_t * __a, float64x2x2_t val) | |
28208 | { | |
28209 | __builtin_aarch64_simd_oi __o; | |
28210 | __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) val.val[0], 0); | |
28211 | __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) val.val[1], 1); | |
28212 | __builtin_aarch64_st1x2v2df ((__builtin_aarch64_simd_df *) __a, __o); | |
28213 | } | |
28214 | ||
28215 | __extension__ extern __inline void | |
28216 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28217 | vst1q_p64_x2 (poly64_t * __a, poly64x2x2_t val) | |
28218 | { | |
28219 | __builtin_aarch64_simd_oi __o; | |
28220 | __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, | |
28221 | (poly64x2_t) val.val[0], 0); | |
28222 | __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, | |
28223 | (poly64x2_t) val.val[1], 1); | |
28224 | __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28225 | } | |
28226 | ||
28227 | /* vst1x3 */ | |
28228 | ||
28229 | __extension__ extern __inline void | |
28230 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28231 | vst1_s64_x3 (int64_t * __a, int64x1x3_t val) | |
28232 | { | |
28233 | __builtin_aarch64_simd_ci __o; | |
28234 | int64x2x3_t temp; | |
28235 | temp.val[0] = vcombine_s64 (val.val[0], vcreate_s64 (__AARCH64_INT64_C (0))); | |
28236 | temp.val[1] = vcombine_s64 (val.val[1], vcreate_s64 (__AARCH64_INT64_C (0))); | |
28237 | temp.val[2] = vcombine_s64 (val.val[2], vcreate_s64 (__AARCH64_INT64_C (0))); | |
28238 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[0], 0); | |
28239 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[1], 1); | |
28240 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[2], 2); | |
28241 | __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o); | |
28242 | } | |
28243 | ||
28244 | __extension__ extern __inline void | |
28245 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28246 | vst1_u64_x3 (uint64_t * __a, uint64x1x3_t val) | |
28247 | { | |
28248 | __builtin_aarch64_simd_ci __o; | |
28249 | uint64x2x3_t temp; | |
28250 | temp.val[0] = vcombine_u64 (val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
28251 | temp.val[1] = vcombine_u64 (val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
28252 | temp.val[2] = vcombine_u64 (val.val[2], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
28253 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[0], 0); | |
28254 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[1], 1); | |
28255 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[2], 2); | |
28256 | __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o); | |
28257 | } | |
28258 | ||
28259 | __extension__ extern __inline void | |
28260 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28261 | vst1_f64_x3 (float64_t * __a, float64x1x3_t val) | |
28262 | { | |
28263 | __builtin_aarch64_simd_ci __o; | |
28264 | float64x2x3_t temp; | |
28265 | temp.val[0] = vcombine_f64 (val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
28266 | temp.val[1] = vcombine_f64 (val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
28267 | temp.val[2] = vcombine_f64 (val.val[2], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
28268 | __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[0], 0); | |
28269 | __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[1], 1); | |
28270 | __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[2], 2); | |
28271 | __builtin_aarch64_st1x3df ((__builtin_aarch64_simd_df *) __a, __o); | |
28272 | } | |
28273 | ||
28274 | __extension__ extern __inline void | |
28275 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28276 | vst1_s8_x3 (int8_t * __a, int8x8x3_t val) | |
28277 | { | |
28278 | __builtin_aarch64_simd_ci __o; | |
28279 | int8x16x3_t temp; | |
28280 | temp.val[0] = vcombine_s8 (val.val[0], vcreate_s8 (__AARCH64_INT64_C (0))); | |
28281 | temp.val[1] = vcombine_s8 (val.val[1], vcreate_s8 (__AARCH64_INT64_C (0))); | |
28282 | temp.val[2] = vcombine_s8 (val.val[2], vcreate_s8 (__AARCH64_INT64_C (0))); | |
28283 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); | |
28284 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); | |
28285 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); | |
28286 | __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28287 | } | |
28288 | ||
28289 | __extension__ extern __inline void | |
28290 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28291 | vst1_p8_x3 (poly8_t * __a, poly8x8x3_t val) | |
28292 | { | |
28293 | __builtin_aarch64_simd_ci __o; | |
28294 | poly8x16x3_t temp; | |
28295 | temp.val[0] = vcombine_p8 (val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
28296 | temp.val[1] = vcombine_p8 (val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
28297 | temp.val[2] = vcombine_p8 (val.val[2], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
28298 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); | |
28299 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); | |
28300 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); | |
28301 | __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28302 | } | |
28303 | ||
28304 | __extension__ extern __inline void | |
28305 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28306 | vst1_s16_x3 (int16_t * __a, int16x4x3_t val) | |
28307 | { | |
28308 | __builtin_aarch64_simd_ci __o; | |
28309 | int16x8x3_t temp; | |
28310 | temp.val[0] = vcombine_s16 (val.val[0], vcreate_s16 (__AARCH64_INT64_C (0))); | |
28311 | temp.val[1] = vcombine_s16 (val.val[1], vcreate_s16 (__AARCH64_INT64_C (0))); | |
28312 | temp.val[2] = vcombine_s16 (val.val[2], vcreate_s16 (__AARCH64_INT64_C (0))); | |
28313 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); | |
28314 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); | |
28315 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); | |
28316 | __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28317 | } | |
28318 | ||
28319 | __extension__ extern __inline void | |
28320 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28321 | vst1_p16_x3 (poly16_t * __a, poly16x4x3_t val) | |
28322 | { | |
28323 | __builtin_aarch64_simd_ci __o; | |
28324 | poly16x8x3_t temp; | |
28325 | temp.val[0] = vcombine_p16 (val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
28326 | temp.val[1] = vcombine_p16 (val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
28327 | temp.val[2] = vcombine_p16 (val.val[2], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
28328 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); | |
28329 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); | |
28330 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); | |
28331 | __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28332 | } | |
28333 | ||
28334 | __extension__ extern __inline void | |
28335 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28336 | vst1_s32_x3 (int32_t * __a, int32x2x3_t val) | |
28337 | { | |
28338 | __builtin_aarch64_simd_ci __o; | |
28339 | int32x4x3_t temp; | |
28340 | temp.val[0] = vcombine_s32 (val.val[0], vcreate_s32 (__AARCH64_INT64_C (0))); | |
28341 | temp.val[1] = vcombine_s32 (val.val[1], vcreate_s32 (__AARCH64_INT64_C (0))); | |
28342 | temp.val[2] = vcombine_s32 (val.val[2], vcreate_s32 (__AARCH64_INT64_C (0))); | |
28343 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[0], 0); | |
28344 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[1], 1); | |
28345 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[2], 2); | |
28346 | __builtin_aarch64_st1x3v2si ((__builtin_aarch64_simd_si *) __a, __o); | |
28347 | } | |
28348 | ||
28349 | __extension__ extern __inline void | |
28350 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28351 | vst1_u8_x3 (uint8_t * __a, uint8x8x3_t val) | |
28352 | { | |
28353 | __builtin_aarch64_simd_ci __o; | |
28354 | uint8x16x3_t temp; | |
28355 | temp.val[0] = vcombine_u8 (val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
28356 | temp.val[1] = vcombine_u8 (val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
28357 | temp.val[2] = vcombine_u8 (val.val[2], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
28358 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); | |
28359 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); | |
28360 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); | |
28361 | __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28362 | } | |
28363 | ||
28364 | __extension__ extern __inline void | |
28365 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28366 | vst1_u16_x3 (uint16_t * __a, uint16x4x3_t val) | |
28367 | { | |
28368 | __builtin_aarch64_simd_ci __o; | |
28369 | uint16x8x3_t temp; | |
28370 | temp.val[0] = vcombine_u16 (val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
28371 | temp.val[1] = vcombine_u16 (val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
28372 | temp.val[2] = vcombine_u16 (val.val[2], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
28373 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); | |
28374 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); | |
28375 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); | |
28376 | __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28377 | } | |
28378 | ||
28379 | __extension__ extern __inline void | |
28380 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28381 | vst1_u32_x3 (uint32_t * __a, uint32x2x3_t val) | |
28382 | { | |
28383 | __builtin_aarch64_simd_ci __o; | |
28384 | uint32x4x3_t temp; | |
28385 | temp.val[0] = vcombine_u32 (val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
28386 | temp.val[1] = vcombine_u32 (val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
28387 | temp.val[2] = vcombine_u32 (val.val[2], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
28388 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[0], 0); | |
28389 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[1], 1); | |
28390 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[2], 2); | |
28391 | __builtin_aarch64_st1x3v2si ((__builtin_aarch64_simd_si *) __a, __o); | |
28392 | } | |
28393 | ||
28394 | __extension__ extern __inline void | |
28395 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28396 | vst1_f16_x3 (float16_t * __a, float16x4x3_t val) | |
28397 | { | |
28398 | __builtin_aarch64_simd_ci __o; | |
28399 | float16x8x3_t temp; | |
28400 | temp.val[0] = vcombine_f16 (val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
28401 | temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
28402 | temp.val[2] = vcombine_f16 (val.val[2], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
28403 | __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[0], 0); | |
28404 | __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[1], 1); | |
28405 | __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[2], 2); | |
28406 | __builtin_aarch64_st1x3v4hf ((__builtin_aarch64_simd_hf *) __a, __o); | |
28407 | } | |
28408 | ||
28409 | __extension__ extern __inline void | |
28410 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28411 | vst1_f32_x3 (float32_t * __a, float32x2x3_t val) | |
28412 | { | |
28413 | __builtin_aarch64_simd_ci __o; | |
28414 | float32x4x3_t temp; | |
28415 | temp.val[0] = vcombine_f32 (val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
28416 | temp.val[1] = vcombine_f32 (val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
28417 | temp.val[2] = vcombine_f32 (val.val[2], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
28418 | __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[0], 0); | |
28419 | __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[1], 1); | |
28420 | __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[2], 2); | |
28421 | __builtin_aarch64_st1x3v2sf ((__builtin_aarch64_simd_sf *) __a, __o); | |
28422 | } | |
28423 | ||
28424 | __extension__ extern __inline void | |
28425 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28426 | vst1_p64_x3 (poly64_t * __a, poly64x1x3_t val) | |
28427 | { | |
28428 | __builtin_aarch64_simd_ci __o; | |
28429 | poly64x2x3_t temp; | |
28430 | temp.val[0] = vcombine_p64 (val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
28431 | temp.val[1] = vcombine_p64 (val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
28432 | temp.val[2] = vcombine_p64 (val.val[2], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
28433 | __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
28434 | (poly64x2_t) temp.val[0], 0); | |
28435 | __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
28436 | (poly64x2_t) temp.val[1], 1); | |
28437 | __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
28438 | (poly64x2_t) temp.val[2], 2); | |
28439 | __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o); | |
28440 | } | |
28441 | ||
28442 | __extension__ extern __inline void | |
28443 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28444 | vst1q_s8_x3 (int8_t * __a, int8x16x3_t val) | |
28445 | { | |
28446 | __builtin_aarch64_simd_ci __o; | |
28447 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); | |
28448 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); | |
28449 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); | |
28450 | __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28451 | } | |
28452 | ||
28453 | __extension__ extern __inline void | |
28454 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28455 | vst1q_p8_x3 (poly8_t * __a, poly8x16x3_t val) | |
28456 | { | |
28457 | __builtin_aarch64_simd_ci __o; | |
28458 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); | |
28459 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); | |
28460 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); | |
28461 | __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28462 | } | |
28463 | ||
28464 | __extension__ extern __inline void | |
28465 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28466 | vst1q_s16_x3 (int16_t * __a, int16x8x3_t val) | |
28467 | { | |
28468 | __builtin_aarch64_simd_ci __o; | |
28469 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); | |
28470 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); | |
28471 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); | |
28472 | __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28473 | } | |
28474 | ||
28475 | __extension__ extern __inline void | |
28476 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28477 | vst1q_p16_x3 (poly16_t * __a, poly16x8x3_t val) | |
28478 | { | |
28479 | __builtin_aarch64_simd_ci __o; | |
28480 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); | |
28481 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); | |
28482 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); | |
28483 | __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28484 | } | |
28485 | ||
28486 | __extension__ extern __inline void | |
28487 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28488 | vst1q_s32_x3 (int32_t * __a, int32x4x3_t val) | |
28489 | { | |
28490 | __builtin_aarch64_simd_ci __o; | |
28491 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[0], 0); | |
28492 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[1], 1); | |
28493 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[2], 2); | |
28494 | __builtin_aarch64_st1x3v4si ((__builtin_aarch64_simd_si *) __a, __o); | |
28495 | } | |
28496 | ||
28497 | __extension__ extern __inline void | |
28498 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28499 | vst1q_s64_x3 (int64_t * __a, int64x2x3_t val) | |
28500 | { | |
28501 | __builtin_aarch64_simd_ci __o; | |
28502 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[0], 0); | |
28503 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[1], 1); | |
28504 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[2], 2); | |
28505 | __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28506 | } | |
28507 | ||
28508 | __extension__ extern __inline void | |
28509 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28510 | vst1q_u8_x3 (uint8_t * __a, uint8x16x3_t val) | |
28511 | { | |
28512 | __builtin_aarch64_simd_ci __o; | |
28513 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); | |
28514 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); | |
28515 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); | |
28516 | __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28517 | } | |
28518 | ||
28519 | __extension__ extern __inline void | |
28520 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28521 | vst1q_u16_x3 (uint16_t * __a, uint16x8x3_t val) | |
28522 | { | |
28523 | __builtin_aarch64_simd_ci __o; | |
28524 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); | |
28525 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); | |
28526 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); | |
28527 | __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28528 | } | |
28529 | ||
28530 | __extension__ extern __inline void | |
28531 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28532 | vst1q_u32_x3 (uint32_t * __a, uint32x4x3_t val) | |
28533 | { | |
28534 | __builtin_aarch64_simd_ci __o; | |
28535 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[0], 0); | |
28536 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[1], 1); | |
28537 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[2], 2); | |
28538 | __builtin_aarch64_st1x3v4si ((__builtin_aarch64_simd_si *) __a, __o); | |
28539 | } | |
28540 | ||
28541 | __extension__ extern __inline void | |
28542 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28543 | vst1q_u64_x3 (uint64_t * __a, uint64x2x3_t val) | |
28544 | { | |
28545 | __builtin_aarch64_simd_ci __o; | |
28546 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[0], 0); | |
28547 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[1], 1); | |
28548 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[2], 2); | |
28549 | __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28550 | } | |
28551 | ||
28552 | __extension__ extern __inline void | |
28553 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28554 | vst1q_f16_x3 (float16_t * __a, float16x8x3_t val) | |
28555 | { | |
28556 | __builtin_aarch64_simd_ci __o; | |
28557 | __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[0], 0); | |
28558 | __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[1], 1); | |
28559 | __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[2], 2); | |
28560 | __builtin_aarch64_st1x3v8hf ((__builtin_aarch64_simd_hf *) __a, __o); | |
28561 | } | |
28562 | ||
28563 | __extension__ extern __inline void | |
28564 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28565 | vst1q_f32_x3 (float32_t * __a, float32x4x3_t val) | |
28566 | { | |
28567 | __builtin_aarch64_simd_ci __o; | |
28568 | __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[0], 0); | |
28569 | __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[1], 1); | |
28570 | __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[2], 2); | |
28571 | __builtin_aarch64_st1x3v4sf ((__builtin_aarch64_simd_sf *) __a, __o); | |
28572 | } | |
28573 | ||
28574 | __extension__ extern __inline void | |
28575 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28576 | vst1q_f64_x3 (float64_t * __a, float64x2x3_t val) | |
28577 | { | |
28578 | __builtin_aarch64_simd_ci __o; | |
28579 | __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[0], 0); | |
28580 | __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[1], 1); | |
28581 | __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[2], 2); | |
28582 | __builtin_aarch64_st1x3v2df ((__builtin_aarch64_simd_df *) __a, __o); | |
28583 | } | |
28584 | ||
28585 | __extension__ extern __inline void | |
28586 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28587 | vst1q_p64_x3 (poly64_t * __a, poly64x2x3_t val) | |
28588 | { | |
28589 | __builtin_aarch64_simd_ci __o; | |
28590 | __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
28591 | (poly64x2_t) val.val[0], 0); | |
28592 | __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
28593 | (poly64x2_t) val.val[1], 1); | |
28594 | __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
28595 | (poly64x2_t) val.val[2], 2); | |
28596 | __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28597 | } | |
28598 | ||
df401d54 | 28599 | /* vstn */ |
28600 | ||
49ab9992 | 28601 | __extension__ extern __inline void |
a979f722 | 28602 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
df401d54 | 28603 | vst2_s64 (int64_t * __a, int64x1x2_t val) |
28604 | { | |
28605 | __builtin_aarch64_simd_oi __o; | |
28606 | int64x2x2_t temp; | |
d75377fe | 28607 | temp.val[0] = vcombine_s64 (val.val[0], vcreate_s64 (__AARCH64_INT64_C (0))); |
28608 | temp.val[1] = vcombine_s64 (val.val[1], vcreate_s64 (__AARCH64_INT64_C (0))); | |
df401d54 | 28609 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[0], 0); |
28610 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[1], 1); | |
28611 | __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28612 | } | |
28613 | ||
49ab9992 | 28614 | __extension__ extern __inline void |
a979f722 | 28615 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
df401d54 | 28616 | vst2_u64 (uint64_t * __a, uint64x1x2_t val) |
28617 | { | |
28618 | __builtin_aarch64_simd_oi __o; | |
28619 | uint64x2x2_t temp; | |
d75377fe | 28620 | temp.val[0] = vcombine_u64 (val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0))); |
28621 | temp.val[1] = vcombine_u64 (val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
df401d54 | 28622 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[0], 0); |
28623 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[1], 1); | |
28624 | __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28625 | } | |
28626 | ||
49ab9992 | 28627 | __extension__ extern __inline void |
a979f722 | 28628 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
df401d54 | 28629 | vst2_f64 (float64_t * __a, float64x1x2_t val) |
28630 | { | |
28631 | __builtin_aarch64_simd_oi __o; | |
28632 | float64x2x2_t temp; | |
d75377fe | 28633 | temp.val[0] = vcombine_f64 (val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0))); |
28634 | temp.val[1] = vcombine_f64 (val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
df401d54 | 28635 | __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) temp.val[0], 0); |
28636 | __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) temp.val[1], 1); | |
28637 | __builtin_aarch64_st2df ((__builtin_aarch64_simd_df *) __a, __o); | |
28638 | } | |
28639 | ||
49ab9992 | 28640 | __extension__ extern __inline void |
a979f722 | 28641 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
df401d54 | 28642 | vst2_s8 (int8_t * __a, int8x8x2_t val) |
28643 | { | |
28644 | __builtin_aarch64_simd_oi __o; | |
28645 | int8x16x2_t temp; | |
d75377fe | 28646 | temp.val[0] = vcombine_s8 (val.val[0], vcreate_s8 (__AARCH64_INT64_C (0))); |
28647 | temp.val[1] = vcombine_s8 (val.val[1], vcreate_s8 (__AARCH64_INT64_C (0))); | |
df401d54 | 28648 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); |
28649 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); | |
28650 | __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28651 | } | |
28652 | ||
49ab9992 | 28653 | __extension__ extern __inline void |
28654 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28655 | vst2_p8 (poly8_t * __a, poly8x8x2_t val) |
28656 | { | |
28657 | __builtin_aarch64_simd_oi __o; | |
28658 | poly8x16x2_t temp; | |
d75377fe | 28659 | temp.val[0] = vcombine_p8 (val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0))); |
28660 | temp.val[1] = vcombine_p8 (val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
df401d54 | 28661 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); |
28662 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); | |
28663 | __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28664 | } | |
28665 | ||
49ab9992 | 28666 | __extension__ extern __inline void |
28667 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28668 | vst2_s16 (int16_t * __a, int16x4x2_t val) |
28669 | { | |
28670 | __builtin_aarch64_simd_oi __o; | |
28671 | int16x8x2_t temp; | |
d75377fe | 28672 | temp.val[0] = vcombine_s16 (val.val[0], vcreate_s16 (__AARCH64_INT64_C (0))); |
28673 | temp.val[1] = vcombine_s16 (val.val[1], vcreate_s16 (__AARCH64_INT64_C (0))); | |
df401d54 | 28674 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); |
28675 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); | |
28676 | __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28677 | } | |
28678 | ||
49ab9992 | 28679 | __extension__ extern __inline void |
28680 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28681 | vst2_p16 (poly16_t * __a, poly16x4x2_t val) |
28682 | { | |
28683 | __builtin_aarch64_simd_oi __o; | |
28684 | poly16x8x2_t temp; | |
d75377fe | 28685 | temp.val[0] = vcombine_p16 (val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0))); |
28686 | temp.val[1] = vcombine_p16 (val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
df401d54 | 28687 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); |
28688 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); | |
28689 | __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28690 | } | |
28691 | ||
49ab9992 | 28692 | __extension__ extern __inline void |
28693 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28694 | vst2_s32 (int32_t * __a, int32x2x2_t val) |
28695 | { | |
28696 | __builtin_aarch64_simd_oi __o; | |
28697 | int32x4x2_t temp; | |
d75377fe | 28698 | temp.val[0] = vcombine_s32 (val.val[0], vcreate_s32 (__AARCH64_INT64_C (0))); |
28699 | temp.val[1] = vcombine_s32 (val.val[1], vcreate_s32 (__AARCH64_INT64_C (0))); | |
df401d54 | 28700 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[0], 0); |
28701 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[1], 1); | |
28702 | __builtin_aarch64_st2v2si ((__builtin_aarch64_simd_si *) __a, __o); | |
28703 | } | |
28704 | ||
49ab9992 | 28705 | __extension__ extern __inline void |
28706 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28707 | vst2_u8 (uint8_t * __a, uint8x8x2_t val) |
28708 | { | |
28709 | __builtin_aarch64_simd_oi __o; | |
28710 | uint8x16x2_t temp; | |
d75377fe | 28711 | temp.val[0] = vcombine_u8 (val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0))); |
28712 | temp.val[1] = vcombine_u8 (val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
df401d54 | 28713 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); |
28714 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); | |
28715 | __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28716 | } | |
28717 | ||
49ab9992 | 28718 | __extension__ extern __inline void |
28719 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28720 | vst2_u16 (uint16_t * __a, uint16x4x2_t val) |
28721 | { | |
28722 | __builtin_aarch64_simd_oi __o; | |
28723 | uint16x8x2_t temp; | |
d75377fe | 28724 | temp.val[0] = vcombine_u16 (val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0))); |
28725 | temp.val[1] = vcombine_u16 (val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
df401d54 | 28726 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); |
28727 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); | |
28728 | __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28729 | } | |
28730 | ||
49ab9992 | 28731 | __extension__ extern __inline void |
28732 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28733 | vst2_u32 (uint32_t * __a, uint32x2x2_t val) |
28734 | { | |
28735 | __builtin_aarch64_simd_oi __o; | |
28736 | uint32x4x2_t temp; | |
d75377fe | 28737 | temp.val[0] = vcombine_u32 (val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0))); |
28738 | temp.val[1] = vcombine_u32 (val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
df401d54 | 28739 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[0], 0); |
28740 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[1], 1); | |
28741 | __builtin_aarch64_st2v2si ((__builtin_aarch64_simd_si *) __a, __o); | |
28742 | } | |
28743 | ||
49ab9992 | 28744 | __extension__ extern __inline void |
28745 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 28746 | vst2_f16 (float16_t * __a, float16x4x2_t val) |
28747 | { | |
28748 | __builtin_aarch64_simd_oi __o; | |
28749 | float16x8x2_t temp; | |
28750 | temp.val[0] = vcombine_f16 (val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
28751 | temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
28752 | __o = __builtin_aarch64_set_qregoiv8hf (__o, temp.val[0], 0); | |
28753 | __o = __builtin_aarch64_set_qregoiv8hf (__o, temp.val[1], 1); | |
28754 | __builtin_aarch64_st2v4hf (__a, __o); | |
28755 | } | |
28756 | ||
49ab9992 | 28757 | __extension__ extern __inline void |
28758 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28759 | vst2_f32 (float32_t * __a, float32x2x2_t val) |
28760 | { | |
28761 | __builtin_aarch64_simd_oi __o; | |
28762 | float32x4x2_t temp; | |
d75377fe | 28763 | temp.val[0] = vcombine_f32 (val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0))); |
28764 | temp.val[1] = vcombine_f32 (val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
df401d54 | 28765 | __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) temp.val[0], 0); |
28766 | __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) temp.val[1], 1); | |
28767 | __builtin_aarch64_st2v2sf ((__builtin_aarch64_simd_sf *) __a, __o); | |
28768 | } | |
28769 | ||
d4f47414 | 28770 | __extension__ extern __inline void |
28771 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28772 | vst2_p64 (poly64_t * __a, poly64x1x2_t val) | |
28773 | { | |
28774 | __builtin_aarch64_simd_oi __o; | |
28775 | poly64x2x2_t temp; | |
28776 | temp.val[0] = vcombine_p64 (val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
28777 | temp.val[1] = vcombine_p64 (val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
28778 | __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, | |
28779 | (poly64x2_t) temp.val[0], 0); | |
28780 | __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, | |
28781 | (poly64x2_t) temp.val[1], 1); | |
28782 | __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28783 | } | |
28784 | ||
49ab9992 | 28785 | __extension__ extern __inline void |
28786 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28787 | vst2q_s8 (int8_t * __a, int8x16x2_t val) |
28788 | { | |
28789 | __builtin_aarch64_simd_oi __o; | |
28790 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); | |
28791 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); | |
28792 | __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28793 | } | |
28794 | ||
49ab9992 | 28795 | __extension__ extern __inline void |
28796 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28797 | vst2q_p8 (poly8_t * __a, poly8x16x2_t val) |
28798 | { | |
28799 | __builtin_aarch64_simd_oi __o; | |
28800 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); | |
28801 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); | |
28802 | __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28803 | } | |
28804 | ||
49ab9992 | 28805 | __extension__ extern __inline void |
28806 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28807 | vst2q_s16 (int16_t * __a, int16x8x2_t val) |
28808 | { | |
28809 | __builtin_aarch64_simd_oi __o; | |
28810 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); | |
28811 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); | |
28812 | __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28813 | } | |
28814 | ||
49ab9992 | 28815 | __extension__ extern __inline void |
28816 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28817 | vst2q_p16 (poly16_t * __a, poly16x8x2_t val) |
28818 | { | |
28819 | __builtin_aarch64_simd_oi __o; | |
28820 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); | |
28821 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); | |
28822 | __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28823 | } | |
28824 | ||
49ab9992 | 28825 | __extension__ extern __inline void |
28826 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28827 | vst2q_s32 (int32_t * __a, int32x4x2_t val) |
28828 | { | |
28829 | __builtin_aarch64_simd_oi __o; | |
28830 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[0], 0); | |
28831 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[1], 1); | |
28832 | __builtin_aarch64_st2v4si ((__builtin_aarch64_simd_si *) __a, __o); | |
28833 | } | |
28834 | ||
49ab9992 | 28835 | __extension__ extern __inline void |
28836 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28837 | vst2q_s64 (int64_t * __a, int64x2x2_t val) |
28838 | { | |
28839 | __builtin_aarch64_simd_oi __o; | |
28840 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[0], 0); | |
28841 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[1], 1); | |
28842 | __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28843 | } | |
28844 | ||
49ab9992 | 28845 | __extension__ extern __inline void |
28846 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28847 | vst2q_u8 (uint8_t * __a, uint8x16x2_t val) |
28848 | { | |
28849 | __builtin_aarch64_simd_oi __o; | |
28850 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); | |
28851 | __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); | |
28852 | __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28853 | } | |
28854 | ||
49ab9992 | 28855 | __extension__ extern __inline void |
28856 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28857 | vst2q_u16 (uint16_t * __a, uint16x8x2_t val) |
28858 | { | |
28859 | __builtin_aarch64_simd_oi __o; | |
28860 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); | |
28861 | __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); | |
28862 | __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28863 | } | |
28864 | ||
49ab9992 | 28865 | __extension__ extern __inline void |
28866 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28867 | vst2q_u32 (uint32_t * __a, uint32x4x2_t val) |
28868 | { | |
28869 | __builtin_aarch64_simd_oi __o; | |
28870 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[0], 0); | |
28871 | __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[1], 1); | |
28872 | __builtin_aarch64_st2v4si ((__builtin_aarch64_simd_si *) __a, __o); | |
28873 | } | |
28874 | ||
49ab9992 | 28875 | __extension__ extern __inline void |
28876 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28877 | vst2q_u64 (uint64_t * __a, uint64x2x2_t val) |
28878 | { | |
28879 | __builtin_aarch64_simd_oi __o; | |
28880 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[0], 0); | |
28881 | __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[1], 1); | |
28882 | __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28883 | } | |
28884 | ||
49ab9992 | 28885 | __extension__ extern __inline void |
28886 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 28887 | vst2q_f16 (float16_t * __a, float16x8x2_t val) |
28888 | { | |
28889 | __builtin_aarch64_simd_oi __o; | |
28890 | __o = __builtin_aarch64_set_qregoiv8hf (__o, val.val[0], 0); | |
28891 | __o = __builtin_aarch64_set_qregoiv8hf (__o, val.val[1], 1); | |
28892 | __builtin_aarch64_st2v8hf (__a, __o); | |
28893 | } | |
28894 | ||
49ab9992 | 28895 | __extension__ extern __inline void |
28896 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28897 | vst2q_f32 (float32_t * __a, float32x4x2_t val) |
28898 | { | |
28899 | __builtin_aarch64_simd_oi __o; | |
28900 | __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) val.val[0], 0); | |
28901 | __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) val.val[1], 1); | |
28902 | __builtin_aarch64_st2v4sf ((__builtin_aarch64_simd_sf *) __a, __o); | |
28903 | } | |
28904 | ||
49ab9992 | 28905 | __extension__ extern __inline void |
28906 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28907 | vst2q_f64 (float64_t * __a, float64x2x2_t val) |
28908 | { | |
28909 | __builtin_aarch64_simd_oi __o; | |
28910 | __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) val.val[0], 0); | |
28911 | __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) val.val[1], 1); | |
28912 | __builtin_aarch64_st2v2df ((__builtin_aarch64_simd_df *) __a, __o); | |
28913 | } | |
28914 | ||
d4f47414 | 28915 | __extension__ extern __inline void |
28916 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28917 | vst2q_p64 (poly64_t * __a, poly64x2x2_t val) | |
28918 | { | |
28919 | __builtin_aarch64_simd_oi __o; | |
28920 | __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, | |
28921 | (poly64x2_t) val.val[0], 0); | |
28922 | __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, | |
28923 | (poly64x2_t) val.val[1], 1); | |
28924 | __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28925 | } | |
28926 | ||
49ab9992 | 28927 | __extension__ extern __inline void |
a979f722 | 28928 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
df401d54 | 28929 | vst3_s64 (int64_t * __a, int64x1x3_t val) |
28930 | { | |
28931 | __builtin_aarch64_simd_ci __o; | |
28932 | int64x2x3_t temp; | |
d75377fe | 28933 | temp.val[0] = vcombine_s64 (val.val[0], vcreate_s64 (__AARCH64_INT64_C (0))); |
28934 | temp.val[1] = vcombine_s64 (val.val[1], vcreate_s64 (__AARCH64_INT64_C (0))); | |
28935 | temp.val[2] = vcombine_s64 (val.val[2], vcreate_s64 (__AARCH64_INT64_C (0))); | |
df401d54 | 28936 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[0], 0); |
28937 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[1], 1); | |
28938 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[2], 2); | |
28939 | __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o); | |
28940 | } | |
28941 | ||
49ab9992 | 28942 | __extension__ extern __inline void |
a979f722 | 28943 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
df401d54 | 28944 | vst3_u64 (uint64_t * __a, uint64x1x3_t val) |
28945 | { | |
28946 | __builtin_aarch64_simd_ci __o; | |
28947 | uint64x2x3_t temp; | |
d75377fe | 28948 | temp.val[0] = vcombine_u64 (val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0))); |
28949 | temp.val[1] = vcombine_u64 (val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
28950 | temp.val[2] = vcombine_u64 (val.val[2], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
df401d54 | 28951 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[0], 0); |
28952 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[1], 1); | |
28953 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[2], 2); | |
28954 | __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o); | |
28955 | } | |
28956 | ||
49ab9992 | 28957 | __extension__ extern __inline void |
a979f722 | 28958 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
df401d54 | 28959 | vst3_f64 (float64_t * __a, float64x1x3_t val) |
28960 | { | |
28961 | __builtin_aarch64_simd_ci __o; | |
28962 | float64x2x3_t temp; | |
d75377fe | 28963 | temp.val[0] = vcombine_f64 (val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0))); |
28964 | temp.val[1] = vcombine_f64 (val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
28965 | temp.val[2] = vcombine_f64 (val.val[2], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
df401d54 | 28966 | __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[0], 0); |
28967 | __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[1], 1); | |
28968 | __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[2], 2); | |
28969 | __builtin_aarch64_st3df ((__builtin_aarch64_simd_df *) __a, __o); | |
28970 | } | |
28971 | ||
49ab9992 | 28972 | __extension__ extern __inline void |
a979f722 | 28973 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
df401d54 | 28974 | vst3_s8 (int8_t * __a, int8x8x3_t val) |
28975 | { | |
28976 | __builtin_aarch64_simd_ci __o; | |
28977 | int8x16x3_t temp; | |
d75377fe | 28978 | temp.val[0] = vcombine_s8 (val.val[0], vcreate_s8 (__AARCH64_INT64_C (0))); |
28979 | temp.val[1] = vcombine_s8 (val.val[1], vcreate_s8 (__AARCH64_INT64_C (0))); | |
28980 | temp.val[2] = vcombine_s8 (val.val[2], vcreate_s8 (__AARCH64_INT64_C (0))); | |
df401d54 | 28981 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); |
28982 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); | |
28983 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); | |
28984 | __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28985 | } | |
28986 | ||
49ab9992 | 28987 | __extension__ extern __inline void |
28988 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 28989 | vst3_p8 (poly8_t * __a, poly8x8x3_t val) |
28990 | { | |
28991 | __builtin_aarch64_simd_ci __o; | |
28992 | poly8x16x3_t temp; | |
d75377fe | 28993 | temp.val[0] = vcombine_p8 (val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0))); |
28994 | temp.val[1] = vcombine_p8 (val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
28995 | temp.val[2] = vcombine_p8 (val.val[2], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
df401d54 | 28996 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); |
28997 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); | |
28998 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); | |
28999 | __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
29000 | } | |
29001 | ||
49ab9992 | 29002 | __extension__ extern __inline void |
29003 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29004 | vst3_s16 (int16_t * __a, int16x4x3_t val) |
29005 | { | |
29006 | __builtin_aarch64_simd_ci __o; | |
29007 | int16x8x3_t temp; | |
d75377fe | 29008 | temp.val[0] = vcombine_s16 (val.val[0], vcreate_s16 (__AARCH64_INT64_C (0))); |
29009 | temp.val[1] = vcombine_s16 (val.val[1], vcreate_s16 (__AARCH64_INT64_C (0))); | |
29010 | temp.val[2] = vcombine_s16 (val.val[2], vcreate_s16 (__AARCH64_INT64_C (0))); | |
df401d54 | 29011 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); |
29012 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); | |
29013 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); | |
29014 | __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
29015 | } | |
29016 | ||
49ab9992 | 29017 | __extension__ extern __inline void |
29018 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29019 | vst3_p16 (poly16_t * __a, poly16x4x3_t val) |
29020 | { | |
29021 | __builtin_aarch64_simd_ci __o; | |
29022 | poly16x8x3_t temp; | |
d75377fe | 29023 | temp.val[0] = vcombine_p16 (val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0))); |
29024 | temp.val[1] = vcombine_p16 (val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
29025 | temp.val[2] = vcombine_p16 (val.val[2], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
df401d54 | 29026 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); |
29027 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); | |
29028 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); | |
29029 | __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
29030 | } | |
29031 | ||
49ab9992 | 29032 | __extension__ extern __inline void |
29033 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29034 | vst3_s32 (int32_t * __a, int32x2x3_t val) |
29035 | { | |
29036 | __builtin_aarch64_simd_ci __o; | |
29037 | int32x4x3_t temp; | |
d75377fe | 29038 | temp.val[0] = vcombine_s32 (val.val[0], vcreate_s32 (__AARCH64_INT64_C (0))); |
29039 | temp.val[1] = vcombine_s32 (val.val[1], vcreate_s32 (__AARCH64_INT64_C (0))); | |
29040 | temp.val[2] = vcombine_s32 (val.val[2], vcreate_s32 (__AARCH64_INT64_C (0))); | |
df401d54 | 29041 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[0], 0); |
29042 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[1], 1); | |
29043 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[2], 2); | |
29044 | __builtin_aarch64_st3v2si ((__builtin_aarch64_simd_si *) __a, __o); | |
29045 | } | |
29046 | ||
49ab9992 | 29047 | __extension__ extern __inline void |
29048 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29049 | vst3_u8 (uint8_t * __a, uint8x8x3_t val) |
29050 | { | |
29051 | __builtin_aarch64_simd_ci __o; | |
29052 | uint8x16x3_t temp; | |
d75377fe | 29053 | temp.val[0] = vcombine_u8 (val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0))); |
29054 | temp.val[1] = vcombine_u8 (val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
29055 | temp.val[2] = vcombine_u8 (val.val[2], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
df401d54 | 29056 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); |
29057 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); | |
29058 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); | |
29059 | __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
29060 | } | |
29061 | ||
49ab9992 | 29062 | __extension__ extern __inline void |
29063 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29064 | vst3_u16 (uint16_t * __a, uint16x4x3_t val) |
29065 | { | |
29066 | __builtin_aarch64_simd_ci __o; | |
29067 | uint16x8x3_t temp; | |
d75377fe | 29068 | temp.val[0] = vcombine_u16 (val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0))); |
29069 | temp.val[1] = vcombine_u16 (val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
29070 | temp.val[2] = vcombine_u16 (val.val[2], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
df401d54 | 29071 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); |
29072 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); | |
29073 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); | |
29074 | __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
29075 | } | |
29076 | ||
49ab9992 | 29077 | __extension__ extern __inline void |
29078 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29079 | vst3_u32 (uint32_t * __a, uint32x2x3_t val) |
29080 | { | |
29081 | __builtin_aarch64_simd_ci __o; | |
29082 | uint32x4x3_t temp; | |
d75377fe | 29083 | temp.val[0] = vcombine_u32 (val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0))); |
29084 | temp.val[1] = vcombine_u32 (val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
29085 | temp.val[2] = vcombine_u32 (val.val[2], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
df401d54 | 29086 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[0], 0); |
29087 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[1], 1); | |
29088 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[2], 2); | |
29089 | __builtin_aarch64_st3v2si ((__builtin_aarch64_simd_si *) __a, __o); | |
29090 | } | |
29091 | ||
49ab9992 | 29092 | __extension__ extern __inline void |
29093 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 29094 | vst3_f16 (float16_t * __a, float16x4x3_t val) |
29095 | { | |
29096 | __builtin_aarch64_simd_ci __o; | |
29097 | float16x8x3_t temp; | |
29098 | temp.val[0] = vcombine_f16 (val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
29099 | temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
29100 | temp.val[2] = vcombine_f16 (val.val[2], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
29101 | __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[0], 0); | |
29102 | __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[1], 1); | |
29103 | __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[2], 2); | |
29104 | __builtin_aarch64_st3v4hf ((__builtin_aarch64_simd_hf *) __a, __o); | |
29105 | } | |
29106 | ||
49ab9992 | 29107 | __extension__ extern __inline void |
29108 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29109 | vst3_f32 (float32_t * __a, float32x2x3_t val) |
29110 | { | |
29111 | __builtin_aarch64_simd_ci __o; | |
29112 | float32x4x3_t temp; | |
d75377fe | 29113 | temp.val[0] = vcombine_f32 (val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0))); |
29114 | temp.val[1] = vcombine_f32 (val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
29115 | temp.val[2] = vcombine_f32 (val.val[2], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
df401d54 | 29116 | __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[0], 0); |
29117 | __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[1], 1); | |
29118 | __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[2], 2); | |
29119 | __builtin_aarch64_st3v2sf ((__builtin_aarch64_simd_sf *) __a, __o); | |
29120 | } | |
29121 | ||
d4f47414 | 29122 | __extension__ extern __inline void |
29123 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
29124 | vst3_p64 (poly64_t * __a, poly64x1x3_t val) | |
29125 | { | |
29126 | __builtin_aarch64_simd_ci __o; | |
29127 | poly64x2x3_t temp; | |
29128 | temp.val[0] = vcombine_p64 (val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
29129 | temp.val[1] = vcombine_p64 (val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
29130 | temp.val[2] = vcombine_p64 (val.val[2], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
29131 | __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
29132 | (poly64x2_t) temp.val[0], 0); | |
29133 | __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
29134 | (poly64x2_t) temp.val[1], 1); | |
29135 | __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
29136 | (poly64x2_t) temp.val[2], 2); | |
29137 | __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o); | |
29138 | } | |
29139 | ||
49ab9992 | 29140 | __extension__ extern __inline void |
29141 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29142 | vst3q_s8 (int8_t * __a, int8x16x3_t val) |
29143 | { | |
29144 | __builtin_aarch64_simd_ci __o; | |
29145 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); | |
29146 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); | |
29147 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); | |
29148 | __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
29149 | } | |
29150 | ||
49ab9992 | 29151 | __extension__ extern __inline void |
29152 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29153 | vst3q_p8 (poly8_t * __a, poly8x16x3_t val) |
29154 | { | |
29155 | __builtin_aarch64_simd_ci __o; | |
29156 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); | |
29157 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); | |
29158 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); | |
29159 | __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
29160 | } | |
29161 | ||
49ab9992 | 29162 | __extension__ extern __inline void |
29163 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29164 | vst3q_s16 (int16_t * __a, int16x8x3_t val) |
29165 | { | |
29166 | __builtin_aarch64_simd_ci __o; | |
29167 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); | |
29168 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); | |
29169 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); | |
29170 | __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
29171 | } | |
29172 | ||
49ab9992 | 29173 | __extension__ extern __inline void |
29174 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29175 | vst3q_p16 (poly16_t * __a, poly16x8x3_t val) |
29176 | { | |
29177 | __builtin_aarch64_simd_ci __o; | |
29178 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); | |
29179 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); | |
29180 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); | |
29181 | __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
29182 | } | |
29183 | ||
49ab9992 | 29184 | __extension__ extern __inline void |
29185 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29186 | vst3q_s32 (int32_t * __a, int32x4x3_t val) |
29187 | { | |
29188 | __builtin_aarch64_simd_ci __o; | |
29189 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[0], 0); | |
29190 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[1], 1); | |
29191 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[2], 2); | |
29192 | __builtin_aarch64_st3v4si ((__builtin_aarch64_simd_si *) __a, __o); | |
29193 | } | |
29194 | ||
49ab9992 | 29195 | __extension__ extern __inline void |
29196 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29197 | vst3q_s64 (int64_t * __a, int64x2x3_t val) |
29198 | { | |
29199 | __builtin_aarch64_simd_ci __o; | |
29200 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[0], 0); | |
29201 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[1], 1); | |
29202 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[2], 2); | |
29203 | __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
29204 | } | |
29205 | ||
49ab9992 | 29206 | __extension__ extern __inline void |
29207 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29208 | vst3q_u8 (uint8_t * __a, uint8x16x3_t val) |
29209 | { | |
29210 | __builtin_aarch64_simd_ci __o; | |
29211 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); | |
29212 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); | |
29213 | __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); | |
29214 | __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
29215 | } | |
29216 | ||
49ab9992 | 29217 | __extension__ extern __inline void |
29218 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29219 | vst3q_u16 (uint16_t * __a, uint16x8x3_t val) |
29220 | { | |
29221 | __builtin_aarch64_simd_ci __o; | |
29222 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); | |
29223 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); | |
29224 | __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); | |
29225 | __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
29226 | } | |
29227 | ||
49ab9992 | 29228 | __extension__ extern __inline void |
29229 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29230 | vst3q_u32 (uint32_t * __a, uint32x4x3_t val) |
29231 | { | |
29232 | __builtin_aarch64_simd_ci __o; | |
29233 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[0], 0); | |
29234 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[1], 1); | |
29235 | __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[2], 2); | |
29236 | __builtin_aarch64_st3v4si ((__builtin_aarch64_simd_si *) __a, __o); | |
29237 | } | |
29238 | ||
49ab9992 | 29239 | __extension__ extern __inline void |
29240 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29241 | vst3q_u64 (uint64_t * __a, uint64x2x3_t val) |
29242 | { | |
29243 | __builtin_aarch64_simd_ci __o; | |
29244 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[0], 0); | |
29245 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[1], 1); | |
29246 | __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[2], 2); | |
29247 | __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
29248 | } | |
29249 | ||
49ab9992 | 29250 | __extension__ extern __inline void |
29251 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 29252 | vst3q_f16 (float16_t * __a, float16x8x3_t val) |
29253 | { | |
29254 | __builtin_aarch64_simd_ci __o; | |
29255 | __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[0], 0); | |
29256 | __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[1], 1); | |
29257 | __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[2], 2); | |
29258 | __builtin_aarch64_st3v8hf ((__builtin_aarch64_simd_hf *) __a, __o); | |
29259 | } | |
29260 | ||
49ab9992 | 29261 | __extension__ extern __inline void |
29262 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29263 | vst3q_f32 (float32_t * __a, float32x4x3_t val) |
29264 | { | |
29265 | __builtin_aarch64_simd_ci __o; | |
29266 | __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[0], 0); | |
29267 | __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[1], 1); | |
29268 | __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[2], 2); | |
29269 | __builtin_aarch64_st3v4sf ((__builtin_aarch64_simd_sf *) __a, __o); | |
29270 | } | |
29271 | ||
49ab9992 | 29272 | __extension__ extern __inline void |
29273 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29274 | vst3q_f64 (float64_t * __a, float64x2x3_t val) |
29275 | { | |
29276 | __builtin_aarch64_simd_ci __o; | |
29277 | __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[0], 0); | |
29278 | __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[1], 1); | |
29279 | __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[2], 2); | |
29280 | __builtin_aarch64_st3v2df ((__builtin_aarch64_simd_df *) __a, __o); | |
29281 | } | |
29282 | ||
d4f47414 | 29283 | __extension__ extern __inline void |
29284 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
29285 | vst3q_p64 (poly64_t * __a, poly64x2x3_t val) | |
29286 | { | |
29287 | __builtin_aarch64_simd_ci __o; | |
29288 | __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
29289 | (poly64x2_t) val.val[0], 0); | |
29290 | __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
29291 | (poly64x2_t) val.val[1], 1); | |
29292 | __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
29293 | (poly64x2_t) val.val[2], 2); | |
29294 | __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
29295 | } | |
29296 | ||
49ab9992 | 29297 | __extension__ extern __inline void |
a979f722 | 29298 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
df401d54 | 29299 | vst4_s64 (int64_t * __a, int64x1x4_t val) |
29300 | { | |
29301 | __builtin_aarch64_simd_xi __o; | |
29302 | int64x2x4_t temp; | |
d75377fe | 29303 | temp.val[0] = vcombine_s64 (val.val[0], vcreate_s64 (__AARCH64_INT64_C (0))); |
29304 | temp.val[1] = vcombine_s64 (val.val[1], vcreate_s64 (__AARCH64_INT64_C (0))); | |
29305 | temp.val[2] = vcombine_s64 (val.val[2], vcreate_s64 (__AARCH64_INT64_C (0))); | |
29306 | temp.val[3] = vcombine_s64 (val.val[3], vcreate_s64 (__AARCH64_INT64_C (0))); | |
df401d54 | 29307 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[0], 0); |
29308 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[1], 1); | |
29309 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[2], 2); | |
29310 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[3], 3); | |
29311 | __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o); | |
29312 | } | |
29313 | ||
49ab9992 | 29314 | __extension__ extern __inline void |
a979f722 | 29315 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
df401d54 | 29316 | vst4_u64 (uint64_t * __a, uint64x1x4_t val) |
29317 | { | |
29318 | __builtin_aarch64_simd_xi __o; | |
29319 | uint64x2x4_t temp; | |
d75377fe | 29320 | temp.val[0] = vcombine_u64 (val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0))); |
29321 | temp.val[1] = vcombine_u64 (val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
29322 | temp.val[2] = vcombine_u64 (val.val[2], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
29323 | temp.val[3] = vcombine_u64 (val.val[3], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
df401d54 | 29324 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[0], 0); |
29325 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[1], 1); | |
29326 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[2], 2); | |
29327 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[3], 3); | |
29328 | __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o); | |
29329 | } | |
29330 | ||
49ab9992 | 29331 | __extension__ extern __inline void |
a979f722 | 29332 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
df401d54 | 29333 | vst4_f64 (float64_t * __a, float64x1x4_t val) |
29334 | { | |
29335 | __builtin_aarch64_simd_xi __o; | |
29336 | float64x2x4_t temp; | |
d75377fe | 29337 | temp.val[0] = vcombine_f64 (val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0))); |
29338 | temp.val[1] = vcombine_f64 (val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
29339 | temp.val[2] = vcombine_f64 (val.val[2], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
29340 | temp.val[3] = vcombine_f64 (val.val[3], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
df401d54 | 29341 | __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) temp.val[0], 0); |
29342 | __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) temp.val[1], 1); | |
29343 | __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) temp.val[2], 2); | |
29344 | __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) temp.val[3], 3); | |
29345 | __builtin_aarch64_st4df ((__builtin_aarch64_simd_df *) __a, __o); | |
29346 | } | |
29347 | ||
49ab9992 | 29348 | __extension__ extern __inline void |
a979f722 | 29349 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
df401d54 | 29350 | vst4_s8 (int8_t * __a, int8x8x4_t val) |
29351 | { | |
29352 | __builtin_aarch64_simd_xi __o; | |
29353 | int8x16x4_t temp; | |
d75377fe | 29354 | temp.val[0] = vcombine_s8 (val.val[0], vcreate_s8 (__AARCH64_INT64_C (0))); |
29355 | temp.val[1] = vcombine_s8 (val.val[1], vcreate_s8 (__AARCH64_INT64_C (0))); | |
29356 | temp.val[2] = vcombine_s8 (val.val[2], vcreate_s8 (__AARCH64_INT64_C (0))); | |
29357 | temp.val[3] = vcombine_s8 (val.val[3], vcreate_s8 (__AARCH64_INT64_C (0))); | |
df401d54 | 29358 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[0], 0); |
29359 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[1], 1); | |
29360 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[2], 2); | |
29361 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[3], 3); | |
29362 | __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
29363 | } | |
29364 | ||
49ab9992 | 29365 | __extension__ extern __inline void |
29366 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29367 | vst4_p8 (poly8_t * __a, poly8x8x4_t val) |
29368 | { | |
29369 | __builtin_aarch64_simd_xi __o; | |
29370 | poly8x16x4_t temp; | |
d75377fe | 29371 | temp.val[0] = vcombine_p8 (val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0))); |
29372 | temp.val[1] = vcombine_p8 (val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
29373 | temp.val[2] = vcombine_p8 (val.val[2], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
29374 | temp.val[3] = vcombine_p8 (val.val[3], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
df401d54 | 29375 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[0], 0); |
29376 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[1], 1); | |
29377 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[2], 2); | |
29378 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[3], 3); | |
29379 | __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
29380 | } | |
29381 | ||
49ab9992 | 29382 | __extension__ extern __inline void |
29383 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29384 | vst4_s16 (int16_t * __a, int16x4x4_t val) |
29385 | { | |
29386 | __builtin_aarch64_simd_xi __o; | |
29387 | int16x8x4_t temp; | |
d75377fe | 29388 | temp.val[0] = vcombine_s16 (val.val[0], vcreate_s16 (__AARCH64_INT64_C (0))); |
29389 | temp.val[1] = vcombine_s16 (val.val[1], vcreate_s16 (__AARCH64_INT64_C (0))); | |
29390 | temp.val[2] = vcombine_s16 (val.val[2], vcreate_s16 (__AARCH64_INT64_C (0))); | |
29391 | temp.val[3] = vcombine_s16 (val.val[3], vcreate_s16 (__AARCH64_INT64_C (0))); | |
df401d54 | 29392 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[0], 0); |
29393 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[1], 1); | |
29394 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[2], 2); | |
29395 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[3], 3); | |
29396 | __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
29397 | } | |
29398 | ||
49ab9992 | 29399 | __extension__ extern __inline void |
29400 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29401 | vst4_p16 (poly16_t * __a, poly16x4x4_t val) |
29402 | { | |
29403 | __builtin_aarch64_simd_xi __o; | |
29404 | poly16x8x4_t temp; | |
d75377fe | 29405 | temp.val[0] = vcombine_p16 (val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0))); |
29406 | temp.val[1] = vcombine_p16 (val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
29407 | temp.val[2] = vcombine_p16 (val.val[2], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
29408 | temp.val[3] = vcombine_p16 (val.val[3], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
df401d54 | 29409 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[0], 0); |
29410 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[1], 1); | |
29411 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[2], 2); | |
29412 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[3], 3); | |
29413 | __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
29414 | } | |
29415 | ||
49ab9992 | 29416 | __extension__ extern __inline void |
29417 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29418 | vst4_s32 (int32_t * __a, int32x2x4_t val) |
29419 | { | |
29420 | __builtin_aarch64_simd_xi __o; | |
29421 | int32x4x4_t temp; | |
d75377fe | 29422 | temp.val[0] = vcombine_s32 (val.val[0], vcreate_s32 (__AARCH64_INT64_C (0))); |
29423 | temp.val[1] = vcombine_s32 (val.val[1], vcreate_s32 (__AARCH64_INT64_C (0))); | |
29424 | temp.val[2] = vcombine_s32 (val.val[2], vcreate_s32 (__AARCH64_INT64_C (0))); | |
29425 | temp.val[3] = vcombine_s32 (val.val[3], vcreate_s32 (__AARCH64_INT64_C (0))); | |
df401d54 | 29426 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[0], 0); |
29427 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[1], 1); | |
29428 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[2], 2); | |
29429 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[3], 3); | |
29430 | __builtin_aarch64_st4v2si ((__builtin_aarch64_simd_si *) __a, __o); | |
29431 | } | |
29432 | ||
49ab9992 | 29433 | __extension__ extern __inline void |
29434 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29435 | vst4_u8 (uint8_t * __a, uint8x8x4_t val) |
29436 | { | |
29437 | __builtin_aarch64_simd_xi __o; | |
29438 | uint8x16x4_t temp; | |
d75377fe | 29439 | temp.val[0] = vcombine_u8 (val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0))); |
29440 | temp.val[1] = vcombine_u8 (val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
29441 | temp.val[2] = vcombine_u8 (val.val[2], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
29442 | temp.val[3] = vcombine_u8 (val.val[3], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
df401d54 | 29443 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[0], 0); |
29444 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[1], 1); | |
29445 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[2], 2); | |
29446 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[3], 3); | |
29447 | __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
29448 | } | |
29449 | ||
49ab9992 | 29450 | __extension__ extern __inline void |
29451 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29452 | vst4_u16 (uint16_t * __a, uint16x4x4_t val) |
29453 | { | |
29454 | __builtin_aarch64_simd_xi __o; | |
29455 | uint16x8x4_t temp; | |
d75377fe | 29456 | temp.val[0] = vcombine_u16 (val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0))); |
29457 | temp.val[1] = vcombine_u16 (val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
29458 | temp.val[2] = vcombine_u16 (val.val[2], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
29459 | temp.val[3] = vcombine_u16 (val.val[3], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
df401d54 | 29460 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[0], 0); |
29461 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[1], 1); | |
29462 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[2], 2); | |
29463 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[3], 3); | |
29464 | __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
29465 | } | |
29466 | ||
49ab9992 | 29467 | __extension__ extern __inline void |
29468 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29469 | vst4_u32 (uint32_t * __a, uint32x2x4_t val) |
29470 | { | |
29471 | __builtin_aarch64_simd_xi __o; | |
29472 | uint32x4x4_t temp; | |
d75377fe | 29473 | temp.val[0] = vcombine_u32 (val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0))); |
29474 | temp.val[1] = vcombine_u32 (val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
29475 | temp.val[2] = vcombine_u32 (val.val[2], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
29476 | temp.val[3] = vcombine_u32 (val.val[3], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
df401d54 | 29477 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[0], 0); |
29478 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[1], 1); | |
29479 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[2], 2); | |
29480 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[3], 3); | |
29481 | __builtin_aarch64_st4v2si ((__builtin_aarch64_simd_si *) __a, __o); | |
29482 | } | |
29483 | ||
49ab9992 | 29484 | __extension__ extern __inline void |
29485 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 29486 | vst4_f16 (float16_t * __a, float16x4x4_t val) |
29487 | { | |
29488 | __builtin_aarch64_simd_xi __o; | |
29489 | float16x8x4_t temp; | |
29490 | temp.val[0] = vcombine_f16 (val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
29491 | temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
29492 | temp.val[2] = vcombine_f16 (val.val[2], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
29493 | temp.val[3] = vcombine_f16 (val.val[3], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
29494 | __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[0], 0); | |
29495 | __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[1], 1); | |
29496 | __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[2], 2); | |
29497 | __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[3], 3); | |
29498 | __builtin_aarch64_st4v4hf ((__builtin_aarch64_simd_hf *) __a, __o); | |
29499 | } | |
29500 | ||
49ab9992 | 29501 | __extension__ extern __inline void |
29502 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29503 | vst4_f32 (float32_t * __a, float32x2x4_t val) |
29504 | { | |
29505 | __builtin_aarch64_simd_xi __o; | |
29506 | float32x4x4_t temp; | |
d75377fe | 29507 | temp.val[0] = vcombine_f32 (val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0))); |
29508 | temp.val[1] = vcombine_f32 (val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
29509 | temp.val[2] = vcombine_f32 (val.val[2], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
29510 | temp.val[3] = vcombine_f32 (val.val[3], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
df401d54 | 29511 | __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) temp.val[0], 0); |
29512 | __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) temp.val[1], 1); | |
29513 | __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) temp.val[2], 2); | |
29514 | __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) temp.val[3], 3); | |
29515 | __builtin_aarch64_st4v2sf ((__builtin_aarch64_simd_sf *) __a, __o); | |
29516 | } | |
29517 | ||
d4f47414 | 29518 | __extension__ extern __inline void |
29519 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
29520 | vst4_p64 (poly64_t * __a, poly64x1x4_t val) | |
29521 | { | |
29522 | __builtin_aarch64_simd_xi __o; | |
29523 | poly64x2x4_t temp; | |
29524 | temp.val[0] = vcombine_p64 (val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
29525 | temp.val[1] = vcombine_p64 (val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
29526 | temp.val[2] = vcombine_p64 (val.val[2], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
29527 | temp.val[3] = vcombine_p64 (val.val[3], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
29528 | __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, | |
29529 | (poly64x2_t) temp.val[0], 0); | |
29530 | __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, | |
29531 | (poly64x2_t) temp.val[1], 1); | |
29532 | __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, | |
29533 | (poly64x2_t) temp.val[2], 2); | |
29534 | __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, | |
29535 | (poly64x2_t) temp.val[3], 3); | |
29536 | __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o); | |
29537 | } | |
29538 | ||
49ab9992 | 29539 | __extension__ extern __inline void |
29540 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29541 | vst4q_s8 (int8_t * __a, int8x16x4_t val) |
29542 | { | |
29543 | __builtin_aarch64_simd_xi __o; | |
29544 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[0], 0); | |
29545 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[1], 1); | |
29546 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[2], 2); | |
29547 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[3], 3); | |
29548 | __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
29549 | } | |
29550 | ||
49ab9992 | 29551 | __extension__ extern __inline void |
29552 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29553 | vst4q_p8 (poly8_t * __a, poly8x16x4_t val) |
29554 | { | |
29555 | __builtin_aarch64_simd_xi __o; | |
29556 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[0], 0); | |
29557 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[1], 1); | |
29558 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[2], 2); | |
29559 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[3], 3); | |
29560 | __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
29561 | } | |
29562 | ||
49ab9992 | 29563 | __extension__ extern __inline void |
29564 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29565 | vst4q_s16 (int16_t * __a, int16x8x4_t val) |
29566 | { | |
29567 | __builtin_aarch64_simd_xi __o; | |
29568 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[0], 0); | |
29569 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[1], 1); | |
29570 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[2], 2); | |
29571 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[3], 3); | |
29572 | __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
29573 | } | |
29574 | ||
49ab9992 | 29575 | __extension__ extern __inline void |
29576 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29577 | vst4q_p16 (poly16_t * __a, poly16x8x4_t val) |
29578 | { | |
29579 | __builtin_aarch64_simd_xi __o; | |
29580 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[0], 0); | |
29581 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[1], 1); | |
29582 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[2], 2); | |
29583 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[3], 3); | |
29584 | __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
29585 | } | |
29586 | ||
49ab9992 | 29587 | __extension__ extern __inline void |
29588 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29589 | vst4q_s32 (int32_t * __a, int32x4x4_t val) |
29590 | { | |
29591 | __builtin_aarch64_simd_xi __o; | |
29592 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[0], 0); | |
29593 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[1], 1); | |
29594 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[2], 2); | |
29595 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[3], 3); | |
29596 | __builtin_aarch64_st4v4si ((__builtin_aarch64_simd_si *) __a, __o); | |
29597 | } | |
29598 | ||
49ab9992 | 29599 | __extension__ extern __inline void |
29600 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29601 | vst4q_s64 (int64_t * __a, int64x2x4_t val) |
29602 | { | |
29603 | __builtin_aarch64_simd_xi __o; | |
29604 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[0], 0); | |
29605 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[1], 1); | |
29606 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[2], 2); | |
29607 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[3], 3); | |
29608 | __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
29609 | } | |
29610 | ||
49ab9992 | 29611 | __extension__ extern __inline void |
29612 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29613 | vst4q_u8 (uint8_t * __a, uint8x16x4_t val) |
29614 | { | |
29615 | __builtin_aarch64_simd_xi __o; | |
29616 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[0], 0); | |
29617 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[1], 1); | |
29618 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[2], 2); | |
29619 | __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[3], 3); | |
29620 | __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
29621 | } | |
29622 | ||
49ab9992 | 29623 | __extension__ extern __inline void |
29624 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29625 | vst4q_u16 (uint16_t * __a, uint16x8x4_t val) |
29626 | { | |
29627 | __builtin_aarch64_simd_xi __o; | |
29628 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[0], 0); | |
29629 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[1], 1); | |
29630 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[2], 2); | |
29631 | __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[3], 3); | |
29632 | __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
29633 | } | |
29634 | ||
49ab9992 | 29635 | __extension__ extern __inline void |
29636 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29637 | vst4q_u32 (uint32_t * __a, uint32x4x4_t val) |
29638 | { | |
29639 | __builtin_aarch64_simd_xi __o; | |
29640 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[0], 0); | |
29641 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[1], 1); | |
29642 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[2], 2); | |
29643 | __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[3], 3); | |
29644 | __builtin_aarch64_st4v4si ((__builtin_aarch64_simd_si *) __a, __o); | |
29645 | } | |
29646 | ||
49ab9992 | 29647 | __extension__ extern __inline void |
29648 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29649 | vst4q_u64 (uint64_t * __a, uint64x2x4_t val) |
29650 | { | |
29651 | __builtin_aarch64_simd_xi __o; | |
29652 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[0], 0); | |
29653 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[1], 1); | |
29654 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[2], 2); | |
29655 | __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[3], 3); | |
29656 | __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
29657 | } | |
29658 | ||
49ab9992 | 29659 | __extension__ extern __inline void |
29660 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
07c40439 | 29661 | vst4q_f16 (float16_t * __a, float16x8x4_t val) |
29662 | { | |
29663 | __builtin_aarch64_simd_xi __o; | |
29664 | __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[0], 0); | |
29665 | __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[1], 1); | |
29666 | __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[2], 2); | |
29667 | __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[3], 3); | |
29668 | __builtin_aarch64_st4v8hf ((__builtin_aarch64_simd_hf *) __a, __o); | |
29669 | } | |
29670 | ||
49ab9992 | 29671 | __extension__ extern __inline void |
29672 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29673 | vst4q_f32 (float32_t * __a, float32x4x4_t val) |
29674 | { | |
29675 | __builtin_aarch64_simd_xi __o; | |
29676 | __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) val.val[0], 0); | |
29677 | __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) val.val[1], 1); | |
29678 | __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) val.val[2], 2); | |
29679 | __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) val.val[3], 3); | |
29680 | __builtin_aarch64_st4v4sf ((__builtin_aarch64_simd_sf *) __a, __o); | |
29681 | } | |
29682 | ||
49ab9992 | 29683 | __extension__ extern __inline void |
29684 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 29685 | vst4q_f64 (float64_t * __a, float64x2x4_t val) |
29686 | { | |
29687 | __builtin_aarch64_simd_xi __o; | |
29688 | __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) val.val[0], 0); | |
29689 | __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) val.val[1], 1); | |
29690 | __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) val.val[2], 2); | |
29691 | __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) val.val[3], 3); | |
29692 | __builtin_aarch64_st4v2df ((__builtin_aarch64_simd_df *) __a, __o); | |
29693 | } | |
29694 | ||
d4f47414 | 29695 | __extension__ extern __inline void |
29696 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
29697 | vst4q_p64 (poly64_t * __a, poly64x2x4_t val) | |
29698 | { | |
29699 | __builtin_aarch64_simd_xi __o; | |
29700 | __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, | |
29701 | (poly64x2_t) val.val[0], 0); | |
29702 | __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, | |
29703 | (poly64x2_t) val.val[1], 1); | |
29704 | __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, | |
29705 | (poly64x2_t) val.val[2], 2); | |
29706 | __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, | |
29707 | (poly64x2_t) val.val[3], 3); | |
29708 | __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
29709 | } | |
29710 | ||
df401d54 | 29711 | /* vsub */ |
29712 | ||
49ab9992 | 29713 | __extension__ extern __inline int64_t |
29714 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 29715 | vsubd_s64 (int64_t __a, int64_t __b) |
df401d54 | 29716 | { |
29717 | return __a - __b; | |
29718 | } | |
29719 | ||
49ab9992 | 29720 | __extension__ extern __inline uint64_t |
29721 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 29722 | vsubd_u64 (uint64_t __a, uint64_t __b) |
df401d54 | 29723 | { |
29724 | return __a - __b; | |
29725 | } | |
29726 | ||
6ae2e2f1 | 29727 | /* vtbx1 */ |
29728 | ||
49ab9992 | 29729 | __extension__ extern __inline int8x8_t |
29730 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6ae2e2f1 | 29731 | vtbx1_s8 (int8x8_t __r, int8x8_t __tab, int8x8_t __idx) |
29732 | { | |
29733 | uint8x8_t __mask = vclt_u8 (vreinterpret_u8_s8 (__idx), | |
29734 | vmov_n_u8 (8)); | |
29735 | int8x8_t __tbl = vtbl1_s8 (__tab, __idx); | |
29736 | ||
29737 | return vbsl_s8 (__mask, __tbl, __r); | |
29738 | } | |
29739 | ||
49ab9992 | 29740 | __extension__ extern __inline uint8x8_t |
29741 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6ae2e2f1 | 29742 | vtbx1_u8 (uint8x8_t __r, uint8x8_t __tab, uint8x8_t __idx) |
29743 | { | |
29744 | uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (8)); | |
29745 | uint8x8_t __tbl = vtbl1_u8 (__tab, __idx); | |
29746 | ||
29747 | return vbsl_u8 (__mask, __tbl, __r); | |
29748 | } | |
29749 | ||
49ab9992 | 29750 | __extension__ extern __inline poly8x8_t |
29751 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6ae2e2f1 | 29752 | vtbx1_p8 (poly8x8_t __r, poly8x8_t __tab, uint8x8_t __idx) |
29753 | { | |
29754 | uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (8)); | |
29755 | poly8x8_t __tbl = vtbl1_p8 (__tab, __idx); | |
29756 | ||
29757 | return vbsl_p8 (__mask, __tbl, __r); | |
29758 | } | |
29759 | ||
29760 | /* vtbx3 */ | |
29761 | ||
49ab9992 | 29762 | __extension__ extern __inline int8x8_t |
29763 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6ae2e2f1 | 29764 | vtbx3_s8 (int8x8_t __r, int8x8x3_t __tab, int8x8_t __idx) |
29765 | { | |
29766 | uint8x8_t __mask = vclt_u8 (vreinterpret_u8_s8 (__idx), | |
29767 | vmov_n_u8 (24)); | |
29768 | int8x8_t __tbl = vtbl3_s8 (__tab, __idx); | |
29769 | ||
29770 | return vbsl_s8 (__mask, __tbl, __r); | |
29771 | } | |
29772 | ||
49ab9992 | 29773 | __extension__ extern __inline uint8x8_t |
29774 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6ae2e2f1 | 29775 | vtbx3_u8 (uint8x8_t __r, uint8x8x3_t __tab, uint8x8_t __idx) |
29776 | { | |
29777 | uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (24)); | |
29778 | uint8x8_t __tbl = vtbl3_u8 (__tab, __idx); | |
29779 | ||
29780 | return vbsl_u8 (__mask, __tbl, __r); | |
29781 | } | |
29782 | ||
49ab9992 | 29783 | __extension__ extern __inline poly8x8_t |
29784 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
6ae2e2f1 | 29785 | vtbx3_p8 (poly8x8_t __r, poly8x8x3_t __tab, uint8x8_t __idx) |
29786 | { | |
29787 | uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (24)); | |
29788 | poly8x8_t __tbl = vtbl3_p8 (__tab, __idx); | |
29789 | ||
29790 | return vbsl_p8 (__mask, __tbl, __r); | |
29791 | } | |
29792 | ||
297c6263 | 29793 | /* vtbx4 */ |
29794 | ||
49ab9992 | 29795 | __extension__ extern __inline int8x8_t |
29796 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
297c6263 | 29797 | vtbx4_s8 (int8x8_t __r, int8x8x4_t __tab, int8x8_t __idx) |
29798 | { | |
29799 | int8x8_t result; | |
29800 | int8x16x2_t temp; | |
29801 | __builtin_aarch64_simd_oi __o; | |
29802 | temp.val[0] = vcombine_s8 (__tab.val[0], __tab.val[1]); | |
29803 | temp.val[1] = vcombine_s8 (__tab.val[2], __tab.val[3]); | |
29804 | __o = __builtin_aarch64_set_qregoiv16qi (__o, | |
29805 | (int8x16_t) temp.val[0], 0); | |
29806 | __o = __builtin_aarch64_set_qregoiv16qi (__o, | |
29807 | (int8x16_t) temp.val[1], 1); | |
29808 | result = __builtin_aarch64_tbx4v8qi (__r, __o, __idx); | |
29809 | return result; | |
29810 | } | |
29811 | ||
49ab9992 | 29812 | __extension__ extern __inline uint8x8_t |
29813 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
297c6263 | 29814 | vtbx4_u8 (uint8x8_t __r, uint8x8x4_t __tab, uint8x8_t __idx) |
29815 | { | |
29816 | uint8x8_t result; | |
29817 | uint8x16x2_t temp; | |
29818 | __builtin_aarch64_simd_oi __o; | |
29819 | temp.val[0] = vcombine_u8 (__tab.val[0], __tab.val[1]); | |
29820 | temp.val[1] = vcombine_u8 (__tab.val[2], __tab.val[3]); | |
29821 | __o = __builtin_aarch64_set_qregoiv16qi (__o, | |
29822 | (int8x16_t) temp.val[0], 0); | |
29823 | __o = __builtin_aarch64_set_qregoiv16qi (__o, | |
29824 | (int8x16_t) temp.val[1], 1); | |
29825 | result = (uint8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o, | |
29826 | (int8x8_t)__idx); | |
29827 | return result; | |
29828 | } | |
29829 | ||
49ab9992 | 29830 | __extension__ extern __inline poly8x8_t |
29831 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
297c6263 | 29832 | vtbx4_p8 (poly8x8_t __r, poly8x8x4_t __tab, uint8x8_t __idx) |
29833 | { | |
29834 | poly8x8_t result; | |
29835 | poly8x16x2_t temp; | |
29836 | __builtin_aarch64_simd_oi __o; | |
29837 | temp.val[0] = vcombine_p8 (__tab.val[0], __tab.val[1]); | |
29838 | temp.val[1] = vcombine_p8 (__tab.val[2], __tab.val[3]); | |
29839 | __o = __builtin_aarch64_set_qregoiv16qi (__o, | |
29840 | (int8x16_t) temp.val[0], 0); | |
29841 | __o = __builtin_aarch64_set_qregoiv16qi (__o, | |
29842 | (int8x16_t) temp.val[1], 1); | |
29843 | result = (poly8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o, | |
29844 | (int8x8_t)__idx); | |
29845 | return result; | |
29846 | } | |
29847 | ||
df401d54 | 29848 | /* vtrn */ |
29849 | ||
49ab9992 | 29850 | __extension__ extern __inline float16x4_t |
29851 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 29852 | vtrn1_f16 (float16x4_t __a, float16x4_t __b) |
29853 | { | |
29854 | #ifdef __AARCH64EB__ | |
29855 | return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); | |
29856 | #else | |
29857 | return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); | |
29858 | #endif | |
29859 | } | |
29860 | ||
49ab9992 | 29861 | __extension__ extern __inline float32x2_t |
29862 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 29863 | vtrn1_f32 (float32x2_t __a, float32x2_t __b) |
29864 | { | |
29865 | #ifdef __AARCH64EB__ | |
29866 | return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); | |
29867 | #else | |
29868 | return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); | |
29869 | #endif | |
29870 | } | |
29871 | ||
49ab9992 | 29872 | __extension__ extern __inline poly8x8_t |
29873 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 29874 | vtrn1_p8 (poly8x8_t __a, poly8x8_t __b) |
29875 | { | |
29876 | #ifdef __AARCH64EB__ | |
29877 | return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); | |
29878 | #else | |
29879 | return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); | |
29880 | #endif | |
29881 | } | |
29882 | ||
49ab9992 | 29883 | __extension__ extern __inline poly16x4_t |
29884 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 29885 | vtrn1_p16 (poly16x4_t __a, poly16x4_t __b) |
29886 | { | |
29887 | #ifdef __AARCH64EB__ | |
29888 | return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); | |
29889 | #else | |
29890 | return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); | |
29891 | #endif | |
29892 | } | |
29893 | ||
49ab9992 | 29894 | __extension__ extern __inline int8x8_t |
29895 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 29896 | vtrn1_s8 (int8x8_t __a, int8x8_t __b) |
29897 | { | |
29898 | #ifdef __AARCH64EB__ | |
29899 | return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); | |
29900 | #else | |
29901 | return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); | |
29902 | #endif | |
29903 | } | |
29904 | ||
49ab9992 | 29905 | __extension__ extern __inline int16x4_t |
29906 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 29907 | vtrn1_s16 (int16x4_t __a, int16x4_t __b) |
29908 | { | |
29909 | #ifdef __AARCH64EB__ | |
29910 | return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); | |
29911 | #else | |
29912 | return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); | |
29913 | #endif | |
29914 | } | |
29915 | ||
49ab9992 | 29916 | __extension__ extern __inline int32x2_t |
29917 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 29918 | vtrn1_s32 (int32x2_t __a, int32x2_t __b) |
29919 | { | |
29920 | #ifdef __AARCH64EB__ | |
29921 | return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); | |
29922 | #else | |
29923 | return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); | |
29924 | #endif | |
29925 | } | |
29926 | ||
49ab9992 | 29927 | __extension__ extern __inline uint8x8_t |
29928 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 29929 | vtrn1_u8 (uint8x8_t __a, uint8x8_t __b) |
29930 | { | |
29931 | #ifdef __AARCH64EB__ | |
29932 | return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); | |
29933 | #else | |
29934 | return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); | |
29935 | #endif | |
29936 | } | |
29937 | ||
49ab9992 | 29938 | __extension__ extern __inline uint16x4_t |
29939 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 29940 | vtrn1_u16 (uint16x4_t __a, uint16x4_t __b) |
29941 | { | |
29942 | #ifdef __AARCH64EB__ | |
29943 | return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); | |
29944 | #else | |
29945 | return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); | |
29946 | #endif | |
29947 | } | |
29948 | ||
49ab9992 | 29949 | __extension__ extern __inline uint32x2_t |
29950 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 29951 | vtrn1_u32 (uint32x2_t __a, uint32x2_t __b) |
29952 | { | |
29953 | #ifdef __AARCH64EB__ | |
29954 | return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); | |
29955 | #else | |
29956 | return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); | |
29957 | #endif | |
29958 | } | |
29959 | ||
49ab9992 | 29960 | __extension__ extern __inline float16x8_t |
29961 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 29962 | vtrn1q_f16 (float16x8_t __a, float16x8_t __b) |
29963 | { | |
29964 | #ifdef __AARCH64EB__ | |
29965 | return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); | |
29966 | #else | |
29967 | return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); | |
29968 | #endif | |
29969 | } | |
29970 | ||
49ab9992 | 29971 | __extension__ extern __inline float32x4_t |
29972 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 29973 | vtrn1q_f32 (float32x4_t __a, float32x4_t __b) |
29974 | { | |
29975 | #ifdef __AARCH64EB__ | |
29976 | return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3}); | |
29977 | #else | |
29978 | return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); | |
29979 | #endif | |
29980 | } | |
29981 | ||
49ab9992 | 29982 | __extension__ extern __inline float64x2_t |
29983 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 29984 | vtrn1q_f64 (float64x2_t __a, float64x2_t __b) |
29985 | { | |
29986 | #ifdef __AARCH64EB__ | |
29987 | return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); | |
29988 | #else | |
29989 | return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); | |
29990 | #endif | |
29991 | } | |
29992 | ||
49ab9992 | 29993 | __extension__ extern __inline poly8x16_t |
29994 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 29995 | vtrn1q_p8 (poly8x16_t __a, poly8x16_t __b) |
29996 | { | |
29997 | #ifdef __AARCH64EB__ | |
29998 | return __builtin_shuffle (__a, __b, | |
29999 | (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15}); | |
30000 | #else | |
30001 | return __builtin_shuffle (__a, __b, | |
30002 | (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); | |
30003 | #endif | |
30004 | } | |
30005 | ||
49ab9992 | 30006 | __extension__ extern __inline poly16x8_t |
30007 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30008 | vtrn1q_p16 (poly16x8_t __a, poly16x8_t __b) |
30009 | { | |
30010 | #ifdef __AARCH64EB__ | |
30011 | return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); | |
30012 | #else | |
30013 | return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); | |
30014 | #endif | |
30015 | } | |
30016 | ||
49ab9992 | 30017 | __extension__ extern __inline int8x16_t |
30018 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30019 | vtrn1q_s8 (int8x16_t __a, int8x16_t __b) |
30020 | { | |
30021 | #ifdef __AARCH64EB__ | |
30022 | return __builtin_shuffle (__a, __b, | |
30023 | (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15}); | |
30024 | #else | |
30025 | return __builtin_shuffle (__a, __b, | |
30026 | (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); | |
30027 | #endif | |
30028 | } | |
30029 | ||
49ab9992 | 30030 | __extension__ extern __inline int16x8_t |
30031 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30032 | vtrn1q_s16 (int16x8_t __a, int16x8_t __b) |
30033 | { | |
30034 | #ifdef __AARCH64EB__ | |
30035 | return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); | |
30036 | #else | |
30037 | return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); | |
30038 | #endif | |
30039 | } | |
30040 | ||
49ab9992 | 30041 | __extension__ extern __inline int32x4_t |
30042 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30043 | vtrn1q_s32 (int32x4_t __a, int32x4_t __b) |
30044 | { | |
30045 | #ifdef __AARCH64EB__ | |
30046 | return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3}); | |
30047 | #else | |
30048 | return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); | |
30049 | #endif | |
30050 | } | |
30051 | ||
49ab9992 | 30052 | __extension__ extern __inline int64x2_t |
30053 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30054 | vtrn1q_s64 (int64x2_t __a, int64x2_t __b) |
30055 | { | |
30056 | #ifdef __AARCH64EB__ | |
30057 | return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); | |
30058 | #else | |
30059 | return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); | |
30060 | #endif | |
30061 | } | |
30062 | ||
49ab9992 | 30063 | __extension__ extern __inline uint8x16_t |
30064 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30065 | vtrn1q_u8 (uint8x16_t __a, uint8x16_t __b) |
30066 | { | |
30067 | #ifdef __AARCH64EB__ | |
30068 | return __builtin_shuffle (__a, __b, | |
30069 | (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15}); | |
30070 | #else | |
30071 | return __builtin_shuffle (__a, __b, | |
30072 | (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); | |
30073 | #endif | |
30074 | } | |
30075 | ||
49ab9992 | 30076 | __extension__ extern __inline uint16x8_t |
30077 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30078 | vtrn1q_u16 (uint16x8_t __a, uint16x8_t __b) |
30079 | { | |
30080 | #ifdef __AARCH64EB__ | |
30081 | return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); | |
30082 | #else | |
30083 | return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); | |
30084 | #endif | |
30085 | } | |
30086 | ||
49ab9992 | 30087 | __extension__ extern __inline uint32x4_t |
30088 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30089 | vtrn1q_u32 (uint32x4_t __a, uint32x4_t __b) |
30090 | { | |
30091 | #ifdef __AARCH64EB__ | |
30092 | return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3}); | |
30093 | #else | |
30094 | return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); | |
30095 | #endif | |
30096 | } | |
30097 | ||
49ab9992 | 30098 | __extension__ extern __inline uint64x2_t |
30099 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30100 | vtrn1q_u64 (uint64x2_t __a, uint64x2_t __b) |
30101 | { | |
30102 | #ifdef __AARCH64EB__ | |
30103 | return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); | |
30104 | #else | |
30105 | return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); | |
30106 | #endif | |
30107 | } | |
30108 | ||
49ab9992 | 30109 | __extension__ extern __inline float16x4_t |
30110 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 30111 | vtrn2_f16 (float16x4_t __a, float16x4_t __b) |
30112 | { | |
30113 | #ifdef __AARCH64EB__ | |
30114 | return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); | |
30115 | #else | |
30116 | return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); | |
30117 | #endif | |
30118 | } | |
30119 | ||
49ab9992 | 30120 | __extension__ extern __inline float32x2_t |
30121 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30122 | vtrn2_f32 (float32x2_t __a, float32x2_t __b) |
30123 | { | |
30124 | #ifdef __AARCH64EB__ | |
30125 | return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); | |
30126 | #else | |
30127 | return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); | |
30128 | #endif | |
30129 | } | |
30130 | ||
49ab9992 | 30131 | __extension__ extern __inline poly8x8_t |
30132 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30133 | vtrn2_p8 (poly8x8_t __a, poly8x8_t __b) |
30134 | { | |
30135 | #ifdef __AARCH64EB__ | |
30136 | return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); | |
30137 | #else | |
30138 | return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); | |
30139 | #endif | |
30140 | } | |
30141 | ||
49ab9992 | 30142 | __extension__ extern __inline poly16x4_t |
30143 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30144 | vtrn2_p16 (poly16x4_t __a, poly16x4_t __b) |
30145 | { | |
30146 | #ifdef __AARCH64EB__ | |
30147 | return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); | |
30148 | #else | |
30149 | return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); | |
30150 | #endif | |
30151 | } | |
30152 | ||
49ab9992 | 30153 | __extension__ extern __inline int8x8_t |
30154 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30155 | vtrn2_s8 (int8x8_t __a, int8x8_t __b) |
30156 | { | |
30157 | #ifdef __AARCH64EB__ | |
30158 | return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); | |
30159 | #else | |
30160 | return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); | |
30161 | #endif | |
30162 | } | |
30163 | ||
49ab9992 | 30164 | __extension__ extern __inline int16x4_t |
30165 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30166 | vtrn2_s16 (int16x4_t __a, int16x4_t __b) |
30167 | { | |
30168 | #ifdef __AARCH64EB__ | |
30169 | return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); | |
30170 | #else | |
30171 | return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); | |
30172 | #endif | |
30173 | } | |
30174 | ||
49ab9992 | 30175 | __extension__ extern __inline int32x2_t |
30176 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30177 | vtrn2_s32 (int32x2_t __a, int32x2_t __b) |
30178 | { | |
30179 | #ifdef __AARCH64EB__ | |
30180 | return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); | |
30181 | #else | |
30182 | return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); | |
30183 | #endif | |
30184 | } | |
30185 | ||
49ab9992 | 30186 | __extension__ extern __inline uint8x8_t |
30187 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30188 | vtrn2_u8 (uint8x8_t __a, uint8x8_t __b) |
30189 | { | |
30190 | #ifdef __AARCH64EB__ | |
30191 | return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); | |
30192 | #else | |
30193 | return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); | |
30194 | #endif | |
30195 | } | |
30196 | ||
49ab9992 | 30197 | __extension__ extern __inline uint16x4_t |
30198 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30199 | vtrn2_u16 (uint16x4_t __a, uint16x4_t __b) |
30200 | { | |
30201 | #ifdef __AARCH64EB__ | |
30202 | return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); | |
30203 | #else | |
30204 | return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); | |
30205 | #endif | |
30206 | } | |
30207 | ||
49ab9992 | 30208 | __extension__ extern __inline uint32x2_t |
30209 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30210 | vtrn2_u32 (uint32x2_t __a, uint32x2_t __b) |
30211 | { | |
30212 | #ifdef __AARCH64EB__ | |
30213 | return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); | |
30214 | #else | |
30215 | return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); | |
30216 | #endif | |
30217 | } | |
30218 | ||
49ab9992 | 30219 | __extension__ extern __inline float16x8_t |
30220 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 30221 | vtrn2q_f16 (float16x8_t __a, float16x8_t __b) |
30222 | { | |
30223 | #ifdef __AARCH64EB__ | |
30224 | return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); | |
30225 | #else | |
30226 | return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); | |
30227 | #endif | |
30228 | } | |
30229 | ||
49ab9992 | 30230 | __extension__ extern __inline float32x4_t |
30231 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30232 | vtrn2q_f32 (float32x4_t __a, float32x4_t __b) |
30233 | { | |
30234 | #ifdef __AARCH64EB__ | |
30235 | return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2}); | |
30236 | #else | |
30237 | return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); | |
30238 | #endif | |
30239 | } | |
30240 | ||
49ab9992 | 30241 | __extension__ extern __inline float64x2_t |
30242 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30243 | vtrn2q_f64 (float64x2_t __a, float64x2_t __b) |
30244 | { | |
30245 | #ifdef __AARCH64EB__ | |
30246 | return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); | |
30247 | #else | |
30248 | return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); | |
30249 | #endif | |
30250 | } | |
30251 | ||
49ab9992 | 30252 | __extension__ extern __inline poly8x16_t |
30253 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30254 | vtrn2q_p8 (poly8x16_t __a, poly8x16_t __b) |
30255 | { | |
30256 | #ifdef __AARCH64EB__ | |
30257 | return __builtin_shuffle (__a, __b, | |
30258 | (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14}); | |
30259 | #else | |
30260 | return __builtin_shuffle (__a, __b, | |
30261 | (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); | |
30262 | #endif | |
30263 | } | |
30264 | ||
49ab9992 | 30265 | __extension__ extern __inline poly16x8_t |
30266 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30267 | vtrn2q_p16 (poly16x8_t __a, poly16x8_t __b) |
30268 | { | |
30269 | #ifdef __AARCH64EB__ | |
30270 | return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); | |
30271 | #else | |
30272 | return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); | |
30273 | #endif | |
30274 | } | |
30275 | ||
49ab9992 | 30276 | __extension__ extern __inline int8x16_t |
30277 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30278 | vtrn2q_s8 (int8x16_t __a, int8x16_t __b) |
30279 | { | |
30280 | #ifdef __AARCH64EB__ | |
30281 | return __builtin_shuffle (__a, __b, | |
30282 | (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14}); | |
30283 | #else | |
30284 | return __builtin_shuffle (__a, __b, | |
30285 | (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); | |
30286 | #endif | |
30287 | } | |
30288 | ||
49ab9992 | 30289 | __extension__ extern __inline int16x8_t |
30290 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30291 | vtrn2q_s16 (int16x8_t __a, int16x8_t __b) |
30292 | { | |
30293 | #ifdef __AARCH64EB__ | |
30294 | return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); | |
30295 | #else | |
30296 | return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); | |
30297 | #endif | |
30298 | } | |
30299 | ||
49ab9992 | 30300 | __extension__ extern __inline int32x4_t |
30301 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30302 | vtrn2q_s32 (int32x4_t __a, int32x4_t __b) |
30303 | { | |
30304 | #ifdef __AARCH64EB__ | |
30305 | return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2}); | |
30306 | #else | |
30307 | return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); | |
30308 | #endif | |
30309 | } | |
30310 | ||
49ab9992 | 30311 | __extension__ extern __inline int64x2_t |
30312 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30313 | vtrn2q_s64 (int64x2_t __a, int64x2_t __b) |
30314 | { | |
30315 | #ifdef __AARCH64EB__ | |
30316 | return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); | |
30317 | #else | |
30318 | return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); | |
30319 | #endif | |
30320 | } | |
30321 | ||
49ab9992 | 30322 | __extension__ extern __inline uint8x16_t |
30323 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30324 | vtrn2q_u8 (uint8x16_t __a, uint8x16_t __b) |
30325 | { | |
30326 | #ifdef __AARCH64EB__ | |
30327 | return __builtin_shuffle (__a, __b, | |
30328 | (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14}); | |
30329 | #else | |
30330 | return __builtin_shuffle (__a, __b, | |
30331 | (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); | |
30332 | #endif | |
30333 | } | |
30334 | ||
49ab9992 | 30335 | __extension__ extern __inline uint16x8_t |
30336 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30337 | vtrn2q_u16 (uint16x8_t __a, uint16x8_t __b) |
30338 | { | |
30339 | #ifdef __AARCH64EB__ | |
30340 | return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); | |
30341 | #else | |
30342 | return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); | |
30343 | #endif | |
30344 | } | |
30345 | ||
49ab9992 | 30346 | __extension__ extern __inline uint32x4_t |
30347 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30348 | vtrn2q_u32 (uint32x4_t __a, uint32x4_t __b) |
30349 | { | |
30350 | #ifdef __AARCH64EB__ | |
30351 | return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2}); | |
30352 | #else | |
30353 | return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); | |
30354 | #endif | |
30355 | } | |
30356 | ||
49ab9992 | 30357 | __extension__ extern __inline uint64x2_t |
30358 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
549412c4 | 30359 | vtrn2q_u64 (uint64x2_t __a, uint64x2_t __b) |
30360 | { | |
30361 | #ifdef __AARCH64EB__ | |
30362 | return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); | |
30363 | #else | |
30364 | return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); | |
30365 | #endif | |
30366 | } | |
30367 | ||
49ab9992 | 30368 | __extension__ extern __inline float16x4x2_t |
30369 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 30370 | vtrn_f16 (float16x4_t __a, float16x4_t __b) |
30371 | { | |
30372 | return (float16x4x2_t) {vtrn1_f16 (__a, __b), vtrn2_f16 (__a, __b)}; | |
30373 | } | |
30374 | ||
49ab9992 | 30375 | __extension__ extern __inline float32x2x2_t |
30376 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30377 | vtrn_f32 (float32x2_t a, float32x2_t b) |
30378 | { | |
30379 | return (float32x2x2_t) {vtrn1_f32 (a, b), vtrn2_f32 (a, b)}; | |
30380 | } | |
30381 | ||
49ab9992 | 30382 | __extension__ extern __inline poly8x8x2_t |
30383 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30384 | vtrn_p8 (poly8x8_t a, poly8x8_t b) |
30385 | { | |
30386 | return (poly8x8x2_t) {vtrn1_p8 (a, b), vtrn2_p8 (a, b)}; | |
30387 | } | |
30388 | ||
49ab9992 | 30389 | __extension__ extern __inline poly16x4x2_t |
30390 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30391 | vtrn_p16 (poly16x4_t a, poly16x4_t b) |
30392 | { | |
30393 | return (poly16x4x2_t) {vtrn1_p16 (a, b), vtrn2_p16 (a, b)}; | |
30394 | } | |
30395 | ||
49ab9992 | 30396 | __extension__ extern __inline int8x8x2_t |
30397 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30398 | vtrn_s8 (int8x8_t a, int8x8_t b) |
30399 | { | |
30400 | return (int8x8x2_t) {vtrn1_s8 (a, b), vtrn2_s8 (a, b)}; | |
30401 | } | |
30402 | ||
49ab9992 | 30403 | __extension__ extern __inline int16x4x2_t |
30404 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30405 | vtrn_s16 (int16x4_t a, int16x4_t b) |
30406 | { | |
30407 | return (int16x4x2_t) {vtrn1_s16 (a, b), vtrn2_s16 (a, b)}; | |
30408 | } | |
30409 | ||
49ab9992 | 30410 | __extension__ extern __inline int32x2x2_t |
30411 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30412 | vtrn_s32 (int32x2_t a, int32x2_t b) |
30413 | { | |
30414 | return (int32x2x2_t) {vtrn1_s32 (a, b), vtrn2_s32 (a, b)}; | |
30415 | } | |
30416 | ||
49ab9992 | 30417 | __extension__ extern __inline uint8x8x2_t |
30418 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30419 | vtrn_u8 (uint8x8_t a, uint8x8_t b) |
30420 | { | |
30421 | return (uint8x8x2_t) {vtrn1_u8 (a, b), vtrn2_u8 (a, b)}; | |
30422 | } | |
30423 | ||
49ab9992 | 30424 | __extension__ extern __inline uint16x4x2_t |
30425 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30426 | vtrn_u16 (uint16x4_t a, uint16x4_t b) |
30427 | { | |
30428 | return (uint16x4x2_t) {vtrn1_u16 (a, b), vtrn2_u16 (a, b)}; | |
30429 | } | |
30430 | ||
49ab9992 | 30431 | __extension__ extern __inline uint32x2x2_t |
30432 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30433 | vtrn_u32 (uint32x2_t a, uint32x2_t b) |
30434 | { | |
30435 | return (uint32x2x2_t) {vtrn1_u32 (a, b), vtrn2_u32 (a, b)}; | |
30436 | } | |
30437 | ||
49ab9992 | 30438 | __extension__ extern __inline float16x8x2_t |
30439 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 30440 | vtrnq_f16 (float16x8_t __a, float16x8_t __b) |
30441 | { | |
30442 | return (float16x8x2_t) {vtrn1q_f16 (__a, __b), vtrn2q_f16 (__a, __b)}; | |
30443 | } | |
30444 | ||
49ab9992 | 30445 | __extension__ extern __inline float32x4x2_t |
30446 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30447 | vtrnq_f32 (float32x4_t a, float32x4_t b) |
30448 | { | |
30449 | return (float32x4x2_t) {vtrn1q_f32 (a, b), vtrn2q_f32 (a, b)}; | |
30450 | } | |
30451 | ||
49ab9992 | 30452 | __extension__ extern __inline poly8x16x2_t |
30453 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30454 | vtrnq_p8 (poly8x16_t a, poly8x16_t b) |
30455 | { | |
30456 | return (poly8x16x2_t) {vtrn1q_p8 (a, b), vtrn2q_p8 (a, b)}; | |
30457 | } | |
30458 | ||
49ab9992 | 30459 | __extension__ extern __inline poly16x8x2_t |
30460 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30461 | vtrnq_p16 (poly16x8_t a, poly16x8_t b) |
30462 | { | |
30463 | return (poly16x8x2_t) {vtrn1q_p16 (a, b), vtrn2q_p16 (a, b)}; | |
30464 | } | |
30465 | ||
49ab9992 | 30466 | __extension__ extern __inline int8x16x2_t |
30467 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30468 | vtrnq_s8 (int8x16_t a, int8x16_t b) |
30469 | { | |
30470 | return (int8x16x2_t) {vtrn1q_s8 (a, b), vtrn2q_s8 (a, b)}; | |
30471 | } | |
30472 | ||
49ab9992 | 30473 | __extension__ extern __inline int16x8x2_t |
30474 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30475 | vtrnq_s16 (int16x8_t a, int16x8_t b) |
30476 | { | |
30477 | return (int16x8x2_t) {vtrn1q_s16 (a, b), vtrn2q_s16 (a, b)}; | |
30478 | } | |
30479 | ||
49ab9992 | 30480 | __extension__ extern __inline int32x4x2_t |
30481 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30482 | vtrnq_s32 (int32x4_t a, int32x4_t b) |
30483 | { | |
30484 | return (int32x4x2_t) {vtrn1q_s32 (a, b), vtrn2q_s32 (a, b)}; | |
30485 | } | |
30486 | ||
49ab9992 | 30487 | __extension__ extern __inline uint8x16x2_t |
30488 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30489 | vtrnq_u8 (uint8x16_t a, uint8x16_t b) |
30490 | { | |
30491 | return (uint8x16x2_t) {vtrn1q_u8 (a, b), vtrn2q_u8 (a, b)}; | |
30492 | } | |
30493 | ||
49ab9992 | 30494 | __extension__ extern __inline uint16x8x2_t |
30495 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30496 | vtrnq_u16 (uint16x8_t a, uint16x8_t b) |
30497 | { | |
30498 | return (uint16x8x2_t) {vtrn1q_u16 (a, b), vtrn2q_u16 (a, b)}; | |
30499 | } | |
30500 | ||
49ab9992 | 30501 | __extension__ extern __inline uint32x4x2_t |
30502 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30503 | vtrnq_u32 (uint32x4_t a, uint32x4_t b) |
30504 | { | |
30505 | return (uint32x4x2_t) {vtrn1q_u32 (a, b), vtrn2q_u32 (a, b)}; | |
30506 | } | |
30507 | ||
30508 | /* vtst */ | |
30509 | ||
49ab9992 | 30510 | __extension__ extern __inline uint8x8_t |
30511 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30512 | vtst_s8 (int8x8_t __a, int8x8_t __b) |
30513 | { | |
e9611d1e | 30514 | return (uint8x8_t) ((__a & __b) != 0); |
df401d54 | 30515 | } |
30516 | ||
49ab9992 | 30517 | __extension__ extern __inline uint16x4_t |
30518 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30519 | vtst_s16 (int16x4_t __a, int16x4_t __b) |
30520 | { | |
e9611d1e | 30521 | return (uint16x4_t) ((__a & __b) != 0); |
df401d54 | 30522 | } |
30523 | ||
49ab9992 | 30524 | __extension__ extern __inline uint32x2_t |
30525 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30526 | vtst_s32 (int32x2_t __a, int32x2_t __b) |
30527 | { | |
e9611d1e | 30528 | return (uint32x2_t) ((__a & __b) != 0); |
df401d54 | 30529 | } |
30530 | ||
49ab9992 | 30531 | __extension__ extern __inline uint64x1_t |
30532 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30533 | vtst_s64 (int64x1_t __a, int64x1_t __b) |
30534 | { | |
dc3738cb | 30535 | return (uint64x1_t) ((__a & __b) != __AARCH64_INT64_C (0)); |
df401d54 | 30536 | } |
30537 | ||
49ab9992 | 30538 | __extension__ extern __inline uint8x8_t |
30539 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30540 | vtst_u8 (uint8x8_t __a, uint8x8_t __b) |
30541 | { | |
e9611d1e | 30542 | return ((__a & __b) != 0); |
df401d54 | 30543 | } |
30544 | ||
49ab9992 | 30545 | __extension__ extern __inline uint16x4_t |
30546 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30547 | vtst_u16 (uint16x4_t __a, uint16x4_t __b) |
30548 | { | |
e9611d1e | 30549 | return ((__a & __b) != 0); |
df401d54 | 30550 | } |
30551 | ||
49ab9992 | 30552 | __extension__ extern __inline uint32x2_t |
30553 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30554 | vtst_u32 (uint32x2_t __a, uint32x2_t __b) |
30555 | { | |
e9611d1e | 30556 | return ((__a & __b) != 0); |
df401d54 | 30557 | } |
30558 | ||
49ab9992 | 30559 | __extension__ extern __inline uint64x1_t |
30560 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30561 | vtst_u64 (uint64x1_t __a, uint64x1_t __b) |
30562 | { | |
dc3738cb | 30563 | return ((__a & __b) != __AARCH64_UINT64_C (0)); |
df401d54 | 30564 | } |
30565 | ||
49ab9992 | 30566 | __extension__ extern __inline uint8x16_t |
30567 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30568 | vtstq_s8 (int8x16_t __a, int8x16_t __b) |
30569 | { | |
e9611d1e | 30570 | return (uint8x16_t) ((__a & __b) != 0); |
df401d54 | 30571 | } |
30572 | ||
49ab9992 | 30573 | __extension__ extern __inline uint16x8_t |
30574 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30575 | vtstq_s16 (int16x8_t __a, int16x8_t __b) |
30576 | { | |
e9611d1e | 30577 | return (uint16x8_t) ((__a & __b) != 0); |
df401d54 | 30578 | } |
30579 | ||
49ab9992 | 30580 | __extension__ extern __inline uint32x4_t |
30581 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30582 | vtstq_s32 (int32x4_t __a, int32x4_t __b) |
30583 | { | |
e9611d1e | 30584 | return (uint32x4_t) ((__a & __b) != 0); |
df401d54 | 30585 | } |
30586 | ||
49ab9992 | 30587 | __extension__ extern __inline uint64x2_t |
30588 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30589 | vtstq_s64 (int64x2_t __a, int64x2_t __b) |
30590 | { | |
e9611d1e | 30591 | return (uint64x2_t) ((__a & __b) != __AARCH64_INT64_C (0)); |
df401d54 | 30592 | } |
30593 | ||
49ab9992 | 30594 | __extension__ extern __inline uint8x16_t |
30595 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30596 | vtstq_u8 (uint8x16_t __a, uint8x16_t __b) |
30597 | { | |
e9611d1e | 30598 | return ((__a & __b) != 0); |
df401d54 | 30599 | } |
30600 | ||
49ab9992 | 30601 | __extension__ extern __inline uint16x8_t |
30602 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30603 | vtstq_u16 (uint16x8_t __a, uint16x8_t __b) |
30604 | { | |
e9611d1e | 30605 | return ((__a & __b) != 0); |
df401d54 | 30606 | } |
30607 | ||
49ab9992 | 30608 | __extension__ extern __inline uint32x4_t |
30609 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30610 | vtstq_u32 (uint32x4_t __a, uint32x4_t __b) |
30611 | { | |
e9611d1e | 30612 | return ((__a & __b) != 0); |
df401d54 | 30613 | } |
30614 | ||
49ab9992 | 30615 | __extension__ extern __inline uint64x2_t |
30616 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30617 | vtstq_u64 (uint64x2_t __a, uint64x2_t __b) |
30618 | { | |
e9611d1e | 30619 | return ((__a & __b) != __AARCH64_UINT64_C (0)); |
df401d54 | 30620 | } |
30621 | ||
49ab9992 | 30622 | __extension__ extern __inline uint64_t |
30623 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 30624 | vtstd_s64 (int64_t __a, int64_t __b) |
df401d54 | 30625 | { |
c4759747 | 30626 | return (__a & __b) ? -1ll : 0ll; |
df401d54 | 30627 | } |
30628 | ||
49ab9992 | 30629 | __extension__ extern __inline uint64_t |
30630 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 30631 | vtstd_u64 (uint64_t __a, uint64_t __b) |
df401d54 | 30632 | { |
c4759747 | 30633 | return (__a & __b) ? -1ll : 0ll; |
df401d54 | 30634 | } |
30635 | ||
30636 | /* vuqadd */ | |
30637 | ||
49ab9992 | 30638 | __extension__ extern __inline int8x8_t |
30639 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30640 | vuqadd_s8 (int8x8_t __a, uint8x8_t __b) |
30641 | { | |
42b87b5f | 30642 | return __builtin_aarch64_suqaddv8qi_ssu (__a, __b); |
df401d54 | 30643 | } |
30644 | ||
49ab9992 | 30645 | __extension__ extern __inline int16x4_t |
30646 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30647 | vuqadd_s16 (int16x4_t __a, uint16x4_t __b) |
30648 | { | |
42b87b5f | 30649 | return __builtin_aarch64_suqaddv4hi_ssu (__a, __b); |
df401d54 | 30650 | } |
30651 | ||
49ab9992 | 30652 | __extension__ extern __inline int32x2_t |
30653 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30654 | vuqadd_s32 (int32x2_t __a, uint32x2_t __b) |
30655 | { | |
42b87b5f | 30656 | return __builtin_aarch64_suqaddv2si_ssu (__a, __b); |
df401d54 | 30657 | } |
30658 | ||
49ab9992 | 30659 | __extension__ extern __inline int64x1_t |
30660 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30661 | vuqadd_s64 (int64x1_t __a, uint64x1_t __b) |
30662 | { | |
12fc7207 | 30663 | return (int64x1_t) {__builtin_aarch64_suqadddi_ssu (__a[0], __b[0])}; |
df401d54 | 30664 | } |
30665 | ||
49ab9992 | 30666 | __extension__ extern __inline int8x16_t |
30667 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30668 | vuqaddq_s8 (int8x16_t __a, uint8x16_t __b) |
30669 | { | |
42b87b5f | 30670 | return __builtin_aarch64_suqaddv16qi_ssu (__a, __b); |
df401d54 | 30671 | } |
30672 | ||
49ab9992 | 30673 | __extension__ extern __inline int16x8_t |
30674 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30675 | vuqaddq_s16 (int16x8_t __a, uint16x8_t __b) |
30676 | { | |
42b87b5f | 30677 | return __builtin_aarch64_suqaddv8hi_ssu (__a, __b); |
df401d54 | 30678 | } |
30679 | ||
49ab9992 | 30680 | __extension__ extern __inline int32x4_t |
30681 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30682 | vuqaddq_s32 (int32x4_t __a, uint32x4_t __b) |
30683 | { | |
42b87b5f | 30684 | return __builtin_aarch64_suqaddv4si_ssu (__a, __b); |
df401d54 | 30685 | } |
30686 | ||
49ab9992 | 30687 | __extension__ extern __inline int64x2_t |
30688 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
df401d54 | 30689 | vuqaddq_s64 (int64x2_t __a, uint64x2_t __b) |
30690 | { | |
42b87b5f | 30691 | return __builtin_aarch64_suqaddv2di_ssu (__a, __b); |
df401d54 | 30692 | } |
30693 | ||
49ab9992 | 30694 | __extension__ extern __inline int8_t |
30695 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 30696 | vuqaddb_s8 (int8_t __a, uint8_t __b) |
df401d54 | 30697 | { |
42b87b5f | 30698 | return __builtin_aarch64_suqaddqi_ssu (__a, __b); |
df401d54 | 30699 | } |
30700 | ||
49ab9992 | 30701 | __extension__ extern __inline int16_t |
30702 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 30703 | vuqaddh_s16 (int16_t __a, uint16_t __b) |
df401d54 | 30704 | { |
42b87b5f | 30705 | return __builtin_aarch64_suqaddhi_ssu (__a, __b); |
df401d54 | 30706 | } |
30707 | ||
49ab9992 | 30708 | __extension__ extern __inline int32_t |
30709 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
857e182a | 30710 | vuqadds_s32 (int32_t __a, uint32_t __b) |
df401d54 | 30711 | { |
42b87b5f | 30712 | return __builtin_aarch64_suqaddsi_ssu (__a, __b); |
df401d54 | 30713 | } |
30714 | ||
49ab9992 | 30715 | __extension__ extern __inline int64_t |
30716 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
12fc7207 | 30717 | vuqaddd_s64 (int64_t __a, uint64_t __b) |
df401d54 | 30718 | { |
42b87b5f | 30719 | return __builtin_aarch64_suqadddi_ssu (__a, __b); |
df401d54 | 30720 | } |
30721 | ||
30722 | #define __DEFINTERLEAVE(op, rettype, intype, funcsuffix, Q) \ | |
49ab9992 | 30723 | __extension__ extern __inline rettype \ |
30724 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \ | |
df401d54 | 30725 | v ## op ## Q ## _ ## funcsuffix (intype a, intype b) \ |
30726 | { \ | |
30727 | return (rettype) {v ## op ## 1 ## Q ## _ ## funcsuffix (a, b), \ | |
30728 | v ## op ## 2 ## Q ## _ ## funcsuffix (a, b)}; \ | |
30729 | } | |
30730 | ||
30731 | #define __INTERLEAVE_LIST(op) \ | |
7d8a6c0e | 30732 | __DEFINTERLEAVE (op, float16x4x2_t, float16x4_t, f16,) \ |
df401d54 | 30733 | __DEFINTERLEAVE (op, float32x2x2_t, float32x2_t, f32,) \ |
30734 | __DEFINTERLEAVE (op, poly8x8x2_t, poly8x8_t, p8,) \ | |
30735 | __DEFINTERLEAVE (op, poly16x4x2_t, poly16x4_t, p16,) \ | |
30736 | __DEFINTERLEAVE (op, int8x8x2_t, int8x8_t, s8,) \ | |
30737 | __DEFINTERLEAVE (op, int16x4x2_t, int16x4_t, s16,) \ | |
30738 | __DEFINTERLEAVE (op, int32x2x2_t, int32x2_t, s32,) \ | |
30739 | __DEFINTERLEAVE (op, uint8x8x2_t, uint8x8_t, u8,) \ | |
30740 | __DEFINTERLEAVE (op, uint16x4x2_t, uint16x4_t, u16,) \ | |
30741 | __DEFINTERLEAVE (op, uint32x2x2_t, uint32x2_t, u32,) \ | |
7d8a6c0e | 30742 | __DEFINTERLEAVE (op, float16x8x2_t, float16x8_t, f16, q) \ |
df401d54 | 30743 | __DEFINTERLEAVE (op, float32x4x2_t, float32x4_t, f32, q) \ |
30744 | __DEFINTERLEAVE (op, poly8x16x2_t, poly8x16_t, p8, q) \ | |
30745 | __DEFINTERLEAVE (op, poly16x8x2_t, poly16x8_t, p16, q) \ | |
30746 | __DEFINTERLEAVE (op, int8x16x2_t, int8x16_t, s8, q) \ | |
30747 | __DEFINTERLEAVE (op, int16x8x2_t, int16x8_t, s16, q) \ | |
30748 | __DEFINTERLEAVE (op, int32x4x2_t, int32x4_t, s32, q) \ | |
30749 | __DEFINTERLEAVE (op, uint8x16x2_t, uint8x16_t, u8, q) \ | |
30750 | __DEFINTERLEAVE (op, uint16x8x2_t, uint16x8_t, u16, q) \ | |
30751 | __DEFINTERLEAVE (op, uint32x4x2_t, uint32x4_t, u32, q) | |
30752 | ||
30753 | /* vuzp */ | |
30754 | ||
49ab9992 | 30755 | __extension__ extern __inline float16x4_t |
30756 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 30757 | vuzp1_f16 (float16x4_t __a, float16x4_t __b) |
30758 | { | |
30759 | #ifdef __AARCH64EB__ | |
30760 | return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); | |
30761 | #else | |
30762 | return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); | |
30763 | #endif | |
30764 | } | |
30765 | ||
49ab9992 | 30766 | __extension__ extern __inline float32x2_t |
30767 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30768 | vuzp1_f32 (float32x2_t __a, float32x2_t __b) |
30769 | { | |
30770 | #ifdef __AARCH64EB__ | |
30771 | return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); | |
30772 | #else | |
30773 | return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); | |
30774 | #endif | |
30775 | } | |
30776 | ||
49ab9992 | 30777 | __extension__ extern __inline poly8x8_t |
30778 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30779 | vuzp1_p8 (poly8x8_t __a, poly8x8_t __b) |
30780 | { | |
30781 | #ifdef __AARCH64EB__ | |
30782 | return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); | |
30783 | #else | |
30784 | return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); | |
30785 | #endif | |
30786 | } | |
30787 | ||
49ab9992 | 30788 | __extension__ extern __inline poly16x4_t |
30789 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30790 | vuzp1_p16 (poly16x4_t __a, poly16x4_t __b) |
30791 | { | |
30792 | #ifdef __AARCH64EB__ | |
30793 | return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); | |
30794 | #else | |
30795 | return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); | |
30796 | #endif | |
30797 | } | |
30798 | ||
49ab9992 | 30799 | __extension__ extern __inline int8x8_t |
30800 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30801 | vuzp1_s8 (int8x8_t __a, int8x8_t __b) |
30802 | { | |
30803 | #ifdef __AARCH64EB__ | |
30804 | return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); | |
30805 | #else | |
30806 | return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); | |
30807 | #endif | |
30808 | } | |
30809 | ||
49ab9992 | 30810 | __extension__ extern __inline int16x4_t |
30811 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30812 | vuzp1_s16 (int16x4_t __a, int16x4_t __b) |
30813 | { | |
30814 | #ifdef __AARCH64EB__ | |
30815 | return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); | |
30816 | #else | |
30817 | return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); | |
30818 | #endif | |
30819 | } | |
30820 | ||
49ab9992 | 30821 | __extension__ extern __inline int32x2_t |
30822 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30823 | vuzp1_s32 (int32x2_t __a, int32x2_t __b) |
30824 | { | |
30825 | #ifdef __AARCH64EB__ | |
30826 | return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); | |
30827 | #else | |
30828 | return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); | |
30829 | #endif | |
30830 | } | |
30831 | ||
49ab9992 | 30832 | __extension__ extern __inline uint8x8_t |
30833 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30834 | vuzp1_u8 (uint8x8_t __a, uint8x8_t __b) |
30835 | { | |
30836 | #ifdef __AARCH64EB__ | |
30837 | return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); | |
30838 | #else | |
30839 | return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); | |
30840 | #endif | |
30841 | } | |
30842 | ||
49ab9992 | 30843 | __extension__ extern __inline uint16x4_t |
30844 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30845 | vuzp1_u16 (uint16x4_t __a, uint16x4_t __b) |
30846 | { | |
30847 | #ifdef __AARCH64EB__ | |
30848 | return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); | |
30849 | #else | |
30850 | return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); | |
30851 | #endif | |
30852 | } | |
30853 | ||
49ab9992 | 30854 | __extension__ extern __inline uint32x2_t |
30855 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30856 | vuzp1_u32 (uint32x2_t __a, uint32x2_t __b) |
30857 | { | |
30858 | #ifdef __AARCH64EB__ | |
30859 | return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); | |
30860 | #else | |
30861 | return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); | |
30862 | #endif | |
30863 | } | |
30864 | ||
49ab9992 | 30865 | __extension__ extern __inline float16x8_t |
30866 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 30867 | vuzp1q_f16 (float16x8_t __a, float16x8_t __b) |
30868 | { | |
30869 | #ifdef __AARCH64EB__ | |
30870 | return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); | |
30871 | #else | |
30872 | return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); | |
30873 | #endif | |
30874 | } | |
30875 | ||
49ab9992 | 30876 | __extension__ extern __inline float32x4_t |
30877 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30878 | vuzp1q_f32 (float32x4_t __a, float32x4_t __b) |
30879 | { | |
30880 | #ifdef __AARCH64EB__ | |
30881 | return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3}); | |
30882 | #else | |
30883 | return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); | |
30884 | #endif | |
30885 | } | |
30886 | ||
49ab9992 | 30887 | __extension__ extern __inline float64x2_t |
30888 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30889 | vuzp1q_f64 (float64x2_t __a, float64x2_t __b) |
30890 | { | |
30891 | #ifdef __AARCH64EB__ | |
30892 | return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); | |
30893 | #else | |
30894 | return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); | |
30895 | #endif | |
30896 | } | |
30897 | ||
49ab9992 | 30898 | __extension__ extern __inline poly8x16_t |
30899 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30900 | vuzp1q_p8 (poly8x16_t __a, poly8x16_t __b) |
30901 | { | |
30902 | #ifdef __AARCH64EB__ | |
30903 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
30904 | {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15}); | |
30905 | #else | |
30906 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
30907 | {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); | |
30908 | #endif | |
30909 | } | |
30910 | ||
49ab9992 | 30911 | __extension__ extern __inline poly16x8_t |
30912 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30913 | vuzp1q_p16 (poly16x8_t __a, poly16x8_t __b) |
30914 | { | |
30915 | #ifdef __AARCH64EB__ | |
30916 | return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); | |
30917 | #else | |
30918 | return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); | |
30919 | #endif | |
30920 | } | |
30921 | ||
49ab9992 | 30922 | __extension__ extern __inline int8x16_t |
30923 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30924 | vuzp1q_s8 (int8x16_t __a, int8x16_t __b) |
30925 | { | |
30926 | #ifdef __AARCH64EB__ | |
30927 | return __builtin_shuffle (__a, __b, | |
30928 | (uint8x16_t) {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15}); | |
30929 | #else | |
30930 | return __builtin_shuffle (__a, __b, | |
30931 | (uint8x16_t) {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); | |
30932 | #endif | |
30933 | } | |
30934 | ||
49ab9992 | 30935 | __extension__ extern __inline int16x8_t |
30936 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30937 | vuzp1q_s16 (int16x8_t __a, int16x8_t __b) |
30938 | { | |
30939 | #ifdef __AARCH64EB__ | |
30940 | return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); | |
30941 | #else | |
30942 | return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); | |
30943 | #endif | |
30944 | } | |
30945 | ||
49ab9992 | 30946 | __extension__ extern __inline int32x4_t |
30947 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30948 | vuzp1q_s32 (int32x4_t __a, int32x4_t __b) |
30949 | { | |
30950 | #ifdef __AARCH64EB__ | |
30951 | return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3}); | |
30952 | #else | |
30953 | return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); | |
30954 | #endif | |
30955 | } | |
30956 | ||
49ab9992 | 30957 | __extension__ extern __inline int64x2_t |
30958 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30959 | vuzp1q_s64 (int64x2_t __a, int64x2_t __b) |
30960 | { | |
30961 | #ifdef __AARCH64EB__ | |
30962 | return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); | |
30963 | #else | |
30964 | return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); | |
30965 | #endif | |
30966 | } | |
30967 | ||
49ab9992 | 30968 | __extension__ extern __inline uint8x16_t |
30969 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30970 | vuzp1q_u8 (uint8x16_t __a, uint8x16_t __b) |
30971 | { | |
30972 | #ifdef __AARCH64EB__ | |
30973 | return __builtin_shuffle (__a, __b, | |
30974 | (uint8x16_t) {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15}); | |
30975 | #else | |
30976 | return __builtin_shuffle (__a, __b, | |
30977 | (uint8x16_t) {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); | |
30978 | #endif | |
30979 | } | |
30980 | ||
49ab9992 | 30981 | __extension__ extern __inline uint16x8_t |
30982 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30983 | vuzp1q_u16 (uint16x8_t __a, uint16x8_t __b) |
30984 | { | |
30985 | #ifdef __AARCH64EB__ | |
30986 | return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); | |
30987 | #else | |
30988 | return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); | |
30989 | #endif | |
30990 | } | |
30991 | ||
49ab9992 | 30992 | __extension__ extern __inline uint32x4_t |
30993 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 30994 | vuzp1q_u32 (uint32x4_t __a, uint32x4_t __b) |
30995 | { | |
30996 | #ifdef __AARCH64EB__ | |
30997 | return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3}); | |
30998 | #else | |
30999 | return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); | |
31000 | #endif | |
31001 | } | |
31002 | ||
49ab9992 | 31003 | __extension__ extern __inline uint64x2_t |
31004 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31005 | vuzp1q_u64 (uint64x2_t __a, uint64x2_t __b) |
31006 | { | |
31007 | #ifdef __AARCH64EB__ | |
31008 | return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); | |
31009 | #else | |
31010 | return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); | |
31011 | #endif | |
31012 | } | |
31013 | ||
49ab9992 | 31014 | __extension__ extern __inline float16x4_t |
31015 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 31016 | vuzp2_f16 (float16x4_t __a, float16x4_t __b) |
31017 | { | |
31018 | #ifdef __AARCH64EB__ | |
31019 | return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); | |
31020 | #else | |
31021 | return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); | |
31022 | #endif | |
31023 | } | |
31024 | ||
49ab9992 | 31025 | __extension__ extern __inline float32x2_t |
31026 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31027 | vuzp2_f32 (float32x2_t __a, float32x2_t __b) |
31028 | { | |
31029 | #ifdef __AARCH64EB__ | |
31030 | return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); | |
31031 | #else | |
31032 | return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); | |
31033 | #endif | |
31034 | } | |
31035 | ||
49ab9992 | 31036 | __extension__ extern __inline poly8x8_t |
31037 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31038 | vuzp2_p8 (poly8x8_t __a, poly8x8_t __b) |
31039 | { | |
31040 | #ifdef __AARCH64EB__ | |
31041 | return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); | |
31042 | #else | |
31043 | return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); | |
31044 | #endif | |
31045 | } | |
31046 | ||
49ab9992 | 31047 | __extension__ extern __inline poly16x4_t |
31048 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31049 | vuzp2_p16 (poly16x4_t __a, poly16x4_t __b) |
31050 | { | |
31051 | #ifdef __AARCH64EB__ | |
31052 | return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); | |
31053 | #else | |
31054 | return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); | |
31055 | #endif | |
31056 | } | |
31057 | ||
49ab9992 | 31058 | __extension__ extern __inline int8x8_t |
31059 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31060 | vuzp2_s8 (int8x8_t __a, int8x8_t __b) |
31061 | { | |
31062 | #ifdef __AARCH64EB__ | |
31063 | return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); | |
31064 | #else | |
31065 | return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); | |
31066 | #endif | |
31067 | } | |
31068 | ||
49ab9992 | 31069 | __extension__ extern __inline int16x4_t |
31070 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31071 | vuzp2_s16 (int16x4_t __a, int16x4_t __b) |
31072 | { | |
31073 | #ifdef __AARCH64EB__ | |
31074 | return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); | |
31075 | #else | |
31076 | return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); | |
31077 | #endif | |
31078 | } | |
31079 | ||
49ab9992 | 31080 | __extension__ extern __inline int32x2_t |
31081 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31082 | vuzp2_s32 (int32x2_t __a, int32x2_t __b) |
31083 | { | |
31084 | #ifdef __AARCH64EB__ | |
31085 | return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); | |
31086 | #else | |
31087 | return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); | |
31088 | #endif | |
31089 | } | |
31090 | ||
49ab9992 | 31091 | __extension__ extern __inline uint8x8_t |
31092 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31093 | vuzp2_u8 (uint8x8_t __a, uint8x8_t __b) |
31094 | { | |
31095 | #ifdef __AARCH64EB__ | |
31096 | return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); | |
31097 | #else | |
31098 | return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); | |
31099 | #endif | |
31100 | } | |
31101 | ||
49ab9992 | 31102 | __extension__ extern __inline uint16x4_t |
31103 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31104 | vuzp2_u16 (uint16x4_t __a, uint16x4_t __b) |
31105 | { | |
31106 | #ifdef __AARCH64EB__ | |
31107 | return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); | |
31108 | #else | |
31109 | return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); | |
31110 | #endif | |
31111 | } | |
31112 | ||
49ab9992 | 31113 | __extension__ extern __inline uint32x2_t |
31114 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31115 | vuzp2_u32 (uint32x2_t __a, uint32x2_t __b) |
31116 | { | |
31117 | #ifdef __AARCH64EB__ | |
31118 | return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); | |
31119 | #else | |
31120 | return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); | |
31121 | #endif | |
31122 | } | |
31123 | ||
49ab9992 | 31124 | __extension__ extern __inline float16x8_t |
31125 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 31126 | vuzp2q_f16 (float16x8_t __a, float16x8_t __b) |
31127 | { | |
31128 | #ifdef __AARCH64EB__ | |
31129 | return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); | |
31130 | #else | |
31131 | return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); | |
31132 | #endif | |
31133 | } | |
31134 | ||
49ab9992 | 31135 | __extension__ extern __inline float32x4_t |
31136 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31137 | vuzp2q_f32 (float32x4_t __a, float32x4_t __b) |
31138 | { | |
31139 | #ifdef __AARCH64EB__ | |
31140 | return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2}); | |
31141 | #else | |
31142 | return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); | |
31143 | #endif | |
31144 | } | |
31145 | ||
49ab9992 | 31146 | __extension__ extern __inline float64x2_t |
31147 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31148 | vuzp2q_f64 (float64x2_t __a, float64x2_t __b) |
31149 | { | |
31150 | #ifdef __AARCH64EB__ | |
31151 | return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); | |
31152 | #else | |
31153 | return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); | |
31154 | #endif | |
31155 | } | |
31156 | ||
49ab9992 | 31157 | __extension__ extern __inline poly8x16_t |
31158 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31159 | vuzp2q_p8 (poly8x16_t __a, poly8x16_t __b) |
31160 | { | |
31161 | #ifdef __AARCH64EB__ | |
31162 | return __builtin_shuffle (__a, __b, | |
31163 | (uint8x16_t) {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14}); | |
31164 | #else | |
31165 | return __builtin_shuffle (__a, __b, | |
31166 | (uint8x16_t) {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); | |
31167 | #endif | |
31168 | } | |
31169 | ||
49ab9992 | 31170 | __extension__ extern __inline poly16x8_t |
31171 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31172 | vuzp2q_p16 (poly16x8_t __a, poly16x8_t __b) |
31173 | { | |
31174 | #ifdef __AARCH64EB__ | |
31175 | return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); | |
31176 | #else | |
31177 | return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); | |
31178 | #endif | |
31179 | } | |
31180 | ||
49ab9992 | 31181 | __extension__ extern __inline int8x16_t |
31182 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31183 | vuzp2q_s8 (int8x16_t __a, int8x16_t __b) |
31184 | { | |
31185 | #ifdef __AARCH64EB__ | |
31186 | return __builtin_shuffle (__a, __b, | |
31187 | (uint8x16_t) {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14}); | |
31188 | #else | |
31189 | return __builtin_shuffle (__a, __b, | |
31190 | (uint8x16_t) {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); | |
31191 | #endif | |
31192 | } | |
31193 | ||
49ab9992 | 31194 | __extension__ extern __inline int16x8_t |
31195 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31196 | vuzp2q_s16 (int16x8_t __a, int16x8_t __b) |
31197 | { | |
31198 | #ifdef __AARCH64EB__ | |
31199 | return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); | |
31200 | #else | |
31201 | return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); | |
31202 | #endif | |
31203 | } | |
31204 | ||
49ab9992 | 31205 | __extension__ extern __inline int32x4_t |
31206 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31207 | vuzp2q_s32 (int32x4_t __a, int32x4_t __b) |
31208 | { | |
31209 | #ifdef __AARCH64EB__ | |
31210 | return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2}); | |
31211 | #else | |
31212 | return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); | |
31213 | #endif | |
31214 | } | |
31215 | ||
49ab9992 | 31216 | __extension__ extern __inline int64x2_t |
31217 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31218 | vuzp2q_s64 (int64x2_t __a, int64x2_t __b) |
31219 | { | |
31220 | #ifdef __AARCH64EB__ | |
31221 | return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); | |
31222 | #else | |
31223 | return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); | |
31224 | #endif | |
31225 | } | |
31226 | ||
49ab9992 | 31227 | __extension__ extern __inline uint8x16_t |
31228 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31229 | vuzp2q_u8 (uint8x16_t __a, uint8x16_t __b) |
31230 | { | |
31231 | #ifdef __AARCH64EB__ | |
31232 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
31233 | {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14}); | |
31234 | #else | |
31235 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
31236 | {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); | |
31237 | #endif | |
31238 | } | |
31239 | ||
49ab9992 | 31240 | __extension__ extern __inline uint16x8_t |
31241 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31242 | vuzp2q_u16 (uint16x8_t __a, uint16x8_t __b) |
31243 | { | |
31244 | #ifdef __AARCH64EB__ | |
31245 | return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); | |
31246 | #else | |
31247 | return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); | |
31248 | #endif | |
31249 | } | |
31250 | ||
49ab9992 | 31251 | __extension__ extern __inline uint32x4_t |
31252 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31253 | vuzp2q_u32 (uint32x4_t __a, uint32x4_t __b) |
31254 | { | |
31255 | #ifdef __AARCH64EB__ | |
31256 | return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2}); | |
31257 | #else | |
31258 | return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); | |
31259 | #endif | |
31260 | } | |
31261 | ||
49ab9992 | 31262 | __extension__ extern __inline uint64x2_t |
31263 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
8a21d39c | 31264 | vuzp2q_u64 (uint64x2_t __a, uint64x2_t __b) |
31265 | { | |
31266 | #ifdef __AARCH64EB__ | |
31267 | return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); | |
31268 | #else | |
31269 | return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); | |
31270 | #endif | |
31271 | } | |
31272 | ||
df401d54 | 31273 | __INTERLEAVE_LIST (uzp) |
31274 | ||
31275 | /* vzip */ | |
31276 | ||
49ab9992 | 31277 | __extension__ extern __inline float16x4_t |
31278 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 31279 | vzip1_f16 (float16x4_t __a, float16x4_t __b) |
31280 | { | |
31281 | #ifdef __AARCH64EB__ | |
31282 | return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); | |
31283 | #else | |
31284 | return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); | |
31285 | #endif | |
31286 | } | |
31287 | ||
49ab9992 | 31288 | __extension__ extern __inline float32x2_t |
31289 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31290 | vzip1_f32 (float32x2_t __a, float32x2_t __b) |
31291 | { | |
31292 | #ifdef __AARCH64EB__ | |
31293 | return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); | |
31294 | #else | |
31295 | return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); | |
31296 | #endif | |
31297 | } | |
31298 | ||
49ab9992 | 31299 | __extension__ extern __inline poly8x8_t |
31300 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31301 | vzip1_p8 (poly8x8_t __a, poly8x8_t __b) |
31302 | { | |
31303 | #ifdef __AARCH64EB__ | |
31304 | return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); | |
31305 | #else | |
31306 | return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); | |
31307 | #endif | |
31308 | } | |
31309 | ||
49ab9992 | 31310 | __extension__ extern __inline poly16x4_t |
31311 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31312 | vzip1_p16 (poly16x4_t __a, poly16x4_t __b) |
31313 | { | |
31314 | #ifdef __AARCH64EB__ | |
31315 | return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); | |
31316 | #else | |
31317 | return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); | |
31318 | #endif | |
31319 | } | |
31320 | ||
49ab9992 | 31321 | __extension__ extern __inline int8x8_t |
31322 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31323 | vzip1_s8 (int8x8_t __a, int8x8_t __b) |
31324 | { | |
31325 | #ifdef __AARCH64EB__ | |
31326 | return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); | |
31327 | #else | |
31328 | return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); | |
31329 | #endif | |
31330 | } | |
31331 | ||
49ab9992 | 31332 | __extension__ extern __inline int16x4_t |
31333 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31334 | vzip1_s16 (int16x4_t __a, int16x4_t __b) |
31335 | { | |
31336 | #ifdef __AARCH64EB__ | |
31337 | return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); | |
31338 | #else | |
31339 | return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); | |
31340 | #endif | |
31341 | } | |
31342 | ||
49ab9992 | 31343 | __extension__ extern __inline int32x2_t |
31344 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31345 | vzip1_s32 (int32x2_t __a, int32x2_t __b) |
31346 | { | |
31347 | #ifdef __AARCH64EB__ | |
31348 | return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); | |
31349 | #else | |
31350 | return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); | |
31351 | #endif | |
31352 | } | |
31353 | ||
49ab9992 | 31354 | __extension__ extern __inline uint8x8_t |
31355 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31356 | vzip1_u8 (uint8x8_t __a, uint8x8_t __b) |
31357 | { | |
31358 | #ifdef __AARCH64EB__ | |
31359 | return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); | |
31360 | #else | |
31361 | return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); | |
31362 | #endif | |
31363 | } | |
31364 | ||
49ab9992 | 31365 | __extension__ extern __inline uint16x4_t |
31366 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31367 | vzip1_u16 (uint16x4_t __a, uint16x4_t __b) |
31368 | { | |
31369 | #ifdef __AARCH64EB__ | |
31370 | return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); | |
31371 | #else | |
31372 | return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); | |
31373 | #endif | |
31374 | } | |
31375 | ||
49ab9992 | 31376 | __extension__ extern __inline uint32x2_t |
31377 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31378 | vzip1_u32 (uint32x2_t __a, uint32x2_t __b) |
31379 | { | |
31380 | #ifdef __AARCH64EB__ | |
31381 | return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); | |
31382 | #else | |
31383 | return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); | |
31384 | #endif | |
31385 | } | |
31386 | ||
49ab9992 | 31387 | __extension__ extern __inline float16x8_t |
31388 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 31389 | vzip1q_f16 (float16x8_t __a, float16x8_t __b) |
31390 | { | |
31391 | #ifdef __AARCH64EB__ | |
31392 | return __builtin_shuffle (__a, __b, | |
31393 | (uint16x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); | |
31394 | #else | |
31395 | return __builtin_shuffle (__a, __b, | |
31396 | (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); | |
31397 | #endif | |
31398 | } | |
31399 | ||
49ab9992 | 31400 | __extension__ extern __inline float32x4_t |
31401 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31402 | vzip1q_f32 (float32x4_t __a, float32x4_t __b) |
31403 | { | |
31404 | #ifdef __AARCH64EB__ | |
31405 | return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3}); | |
31406 | #else | |
31407 | return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); | |
31408 | #endif | |
31409 | } | |
31410 | ||
49ab9992 | 31411 | __extension__ extern __inline float64x2_t |
31412 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31413 | vzip1q_f64 (float64x2_t __a, float64x2_t __b) |
31414 | { | |
31415 | #ifdef __AARCH64EB__ | |
31416 | return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); | |
31417 | #else | |
31418 | return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); | |
31419 | #endif | |
31420 | } | |
31421 | ||
49ab9992 | 31422 | __extension__ extern __inline poly8x16_t |
31423 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31424 | vzip1q_p8 (poly8x16_t __a, poly8x16_t __b) |
31425 | { | |
31426 | #ifdef __AARCH64EB__ | |
31427 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
31428 | {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15}); | |
31429 | #else | |
31430 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
31431 | {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); | |
31432 | #endif | |
31433 | } | |
31434 | ||
49ab9992 | 31435 | __extension__ extern __inline poly16x8_t |
31436 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31437 | vzip1q_p16 (poly16x8_t __a, poly16x8_t __b) |
31438 | { | |
31439 | #ifdef __AARCH64EB__ | |
31440 | return __builtin_shuffle (__a, __b, (uint16x8_t) | |
31441 | {12, 4, 13, 5, 14, 6, 15, 7}); | |
31442 | #else | |
31443 | return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); | |
31444 | #endif | |
31445 | } | |
31446 | ||
49ab9992 | 31447 | __extension__ extern __inline int8x16_t |
31448 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31449 | vzip1q_s8 (int8x16_t __a, int8x16_t __b) |
31450 | { | |
31451 | #ifdef __AARCH64EB__ | |
31452 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
31453 | {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15}); | |
31454 | #else | |
31455 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
31456 | {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); | |
31457 | #endif | |
31458 | } | |
31459 | ||
49ab9992 | 31460 | __extension__ extern __inline int16x8_t |
31461 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31462 | vzip1q_s16 (int16x8_t __a, int16x8_t __b) |
31463 | { | |
31464 | #ifdef __AARCH64EB__ | |
31465 | return __builtin_shuffle (__a, __b, (uint16x8_t) | |
31466 | {12, 4, 13, 5, 14, 6, 15, 7}); | |
31467 | #else | |
31468 | return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); | |
31469 | #endif | |
31470 | } | |
31471 | ||
49ab9992 | 31472 | __extension__ extern __inline int32x4_t |
31473 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31474 | vzip1q_s32 (int32x4_t __a, int32x4_t __b) |
31475 | { | |
31476 | #ifdef __AARCH64EB__ | |
31477 | return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3}); | |
31478 | #else | |
31479 | return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); | |
31480 | #endif | |
31481 | } | |
31482 | ||
49ab9992 | 31483 | __extension__ extern __inline int64x2_t |
31484 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31485 | vzip1q_s64 (int64x2_t __a, int64x2_t __b) |
31486 | { | |
31487 | #ifdef __AARCH64EB__ | |
31488 | return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); | |
31489 | #else | |
31490 | return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); | |
31491 | #endif | |
31492 | } | |
31493 | ||
49ab9992 | 31494 | __extension__ extern __inline uint8x16_t |
31495 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31496 | vzip1q_u8 (uint8x16_t __a, uint8x16_t __b) |
31497 | { | |
31498 | #ifdef __AARCH64EB__ | |
31499 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
31500 | {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15}); | |
31501 | #else | |
31502 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
31503 | {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); | |
31504 | #endif | |
31505 | } | |
31506 | ||
49ab9992 | 31507 | __extension__ extern __inline uint16x8_t |
31508 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31509 | vzip1q_u16 (uint16x8_t __a, uint16x8_t __b) |
31510 | { | |
31511 | #ifdef __AARCH64EB__ | |
31512 | return __builtin_shuffle (__a, __b, (uint16x8_t) | |
31513 | {12, 4, 13, 5, 14, 6, 15, 7}); | |
31514 | #else | |
31515 | return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); | |
31516 | #endif | |
31517 | } | |
31518 | ||
49ab9992 | 31519 | __extension__ extern __inline uint32x4_t |
31520 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31521 | vzip1q_u32 (uint32x4_t __a, uint32x4_t __b) |
31522 | { | |
31523 | #ifdef __AARCH64EB__ | |
31524 | return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3}); | |
31525 | #else | |
31526 | return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); | |
31527 | #endif | |
31528 | } | |
31529 | ||
49ab9992 | 31530 | __extension__ extern __inline uint64x2_t |
31531 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31532 | vzip1q_u64 (uint64x2_t __a, uint64x2_t __b) |
31533 | { | |
31534 | #ifdef __AARCH64EB__ | |
31535 | return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); | |
31536 | #else | |
31537 | return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); | |
31538 | #endif | |
31539 | } | |
31540 | ||
49ab9992 | 31541 | __extension__ extern __inline float16x4_t |
31542 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 31543 | vzip2_f16 (float16x4_t __a, float16x4_t __b) |
31544 | { | |
31545 | #ifdef __AARCH64EB__ | |
31546 | return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); | |
31547 | #else | |
31548 | return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); | |
31549 | #endif | |
31550 | } | |
31551 | ||
49ab9992 | 31552 | __extension__ extern __inline float32x2_t |
31553 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31554 | vzip2_f32 (float32x2_t __a, float32x2_t __b) |
31555 | { | |
31556 | #ifdef __AARCH64EB__ | |
31557 | return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); | |
31558 | #else | |
31559 | return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); | |
31560 | #endif | |
31561 | } | |
31562 | ||
49ab9992 | 31563 | __extension__ extern __inline poly8x8_t |
31564 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31565 | vzip2_p8 (poly8x8_t __a, poly8x8_t __b) |
31566 | { | |
31567 | #ifdef __AARCH64EB__ | |
31568 | return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); | |
31569 | #else | |
31570 | return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); | |
31571 | #endif | |
31572 | } | |
31573 | ||
49ab9992 | 31574 | __extension__ extern __inline poly16x4_t |
31575 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31576 | vzip2_p16 (poly16x4_t __a, poly16x4_t __b) |
31577 | { | |
31578 | #ifdef __AARCH64EB__ | |
31579 | return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); | |
31580 | #else | |
31581 | return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); | |
31582 | #endif | |
31583 | } | |
31584 | ||
49ab9992 | 31585 | __extension__ extern __inline int8x8_t |
31586 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31587 | vzip2_s8 (int8x8_t __a, int8x8_t __b) |
31588 | { | |
31589 | #ifdef __AARCH64EB__ | |
31590 | return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); | |
31591 | #else | |
31592 | return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); | |
31593 | #endif | |
31594 | } | |
31595 | ||
49ab9992 | 31596 | __extension__ extern __inline int16x4_t |
31597 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31598 | vzip2_s16 (int16x4_t __a, int16x4_t __b) |
31599 | { | |
31600 | #ifdef __AARCH64EB__ | |
31601 | return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); | |
31602 | #else | |
31603 | return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); | |
31604 | #endif | |
31605 | } | |
31606 | ||
49ab9992 | 31607 | __extension__ extern __inline int32x2_t |
31608 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31609 | vzip2_s32 (int32x2_t __a, int32x2_t __b) |
31610 | { | |
31611 | #ifdef __AARCH64EB__ | |
31612 | return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); | |
31613 | #else | |
31614 | return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); | |
31615 | #endif | |
31616 | } | |
31617 | ||
49ab9992 | 31618 | __extension__ extern __inline uint8x8_t |
31619 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31620 | vzip2_u8 (uint8x8_t __a, uint8x8_t __b) |
31621 | { | |
31622 | #ifdef __AARCH64EB__ | |
31623 | return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); | |
31624 | #else | |
31625 | return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); | |
31626 | #endif | |
31627 | } | |
31628 | ||
49ab9992 | 31629 | __extension__ extern __inline uint16x4_t |
31630 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31631 | vzip2_u16 (uint16x4_t __a, uint16x4_t __b) |
31632 | { | |
31633 | #ifdef __AARCH64EB__ | |
31634 | return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); | |
31635 | #else | |
31636 | return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); | |
31637 | #endif | |
31638 | } | |
31639 | ||
49ab9992 | 31640 | __extension__ extern __inline uint32x2_t |
31641 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31642 | vzip2_u32 (uint32x2_t __a, uint32x2_t __b) |
31643 | { | |
31644 | #ifdef __AARCH64EB__ | |
31645 | return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); | |
31646 | #else | |
31647 | return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); | |
31648 | #endif | |
31649 | } | |
31650 | ||
49ab9992 | 31651 | __extension__ extern __inline float16x8_t |
31652 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
7d8a6c0e | 31653 | vzip2q_f16 (float16x8_t __a, float16x8_t __b) |
31654 | { | |
31655 | #ifdef __AARCH64EB__ | |
31656 | return __builtin_shuffle (__a, __b, | |
31657 | (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); | |
31658 | #else | |
31659 | return __builtin_shuffle (__a, __b, | |
31660 | (uint16x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); | |
31661 | #endif | |
31662 | } | |
31663 | ||
49ab9992 | 31664 | __extension__ extern __inline float32x4_t |
31665 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31666 | vzip2q_f32 (float32x4_t __a, float32x4_t __b) |
31667 | { | |
31668 | #ifdef __AARCH64EB__ | |
31669 | return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1}); | |
31670 | #else | |
31671 | return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); | |
31672 | #endif | |
31673 | } | |
31674 | ||
49ab9992 | 31675 | __extension__ extern __inline float64x2_t |
31676 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31677 | vzip2q_f64 (float64x2_t __a, float64x2_t __b) |
31678 | { | |
31679 | #ifdef __AARCH64EB__ | |
31680 | return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); | |
31681 | #else | |
31682 | return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); | |
31683 | #endif | |
31684 | } | |
31685 | ||
49ab9992 | 31686 | __extension__ extern __inline poly8x16_t |
31687 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31688 | vzip2q_p8 (poly8x16_t __a, poly8x16_t __b) |
31689 | { | |
31690 | #ifdef __AARCH64EB__ | |
31691 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
31692 | {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7}); | |
31693 | #else | |
31694 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
31695 | {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); | |
31696 | #endif | |
31697 | } | |
31698 | ||
49ab9992 | 31699 | __extension__ extern __inline poly16x8_t |
31700 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31701 | vzip2q_p16 (poly16x8_t __a, poly16x8_t __b) |
31702 | { | |
31703 | #ifdef __AARCH64EB__ | |
31704 | return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); | |
31705 | #else | |
31706 | return __builtin_shuffle (__a, __b, (uint16x8_t) | |
31707 | {4, 12, 5, 13, 6, 14, 7, 15}); | |
31708 | #endif | |
31709 | } | |
31710 | ||
49ab9992 | 31711 | __extension__ extern __inline int8x16_t |
31712 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31713 | vzip2q_s8 (int8x16_t __a, int8x16_t __b) |
31714 | { | |
31715 | #ifdef __AARCH64EB__ | |
31716 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
31717 | {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7}); | |
31718 | #else | |
31719 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
31720 | {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); | |
31721 | #endif | |
31722 | } | |
31723 | ||
49ab9992 | 31724 | __extension__ extern __inline int16x8_t |
31725 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31726 | vzip2q_s16 (int16x8_t __a, int16x8_t __b) |
31727 | { | |
31728 | #ifdef __AARCH64EB__ | |
31729 | return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); | |
31730 | #else | |
31731 | return __builtin_shuffle (__a, __b, (uint16x8_t) | |
31732 | {4, 12, 5, 13, 6, 14, 7, 15}); | |
31733 | #endif | |
31734 | } | |
31735 | ||
49ab9992 | 31736 | __extension__ extern __inline int32x4_t |
31737 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31738 | vzip2q_s32 (int32x4_t __a, int32x4_t __b) |
31739 | { | |
31740 | #ifdef __AARCH64EB__ | |
31741 | return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1}); | |
31742 | #else | |
31743 | return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); | |
31744 | #endif | |
31745 | } | |
31746 | ||
49ab9992 | 31747 | __extension__ extern __inline int64x2_t |
31748 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31749 | vzip2q_s64 (int64x2_t __a, int64x2_t __b) |
31750 | { | |
31751 | #ifdef __AARCH64EB__ | |
31752 | return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); | |
31753 | #else | |
31754 | return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); | |
31755 | #endif | |
31756 | } | |
31757 | ||
49ab9992 | 31758 | __extension__ extern __inline uint8x16_t |
31759 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31760 | vzip2q_u8 (uint8x16_t __a, uint8x16_t __b) |
31761 | { | |
31762 | #ifdef __AARCH64EB__ | |
31763 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
31764 | {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7}); | |
31765 | #else | |
31766 | return __builtin_shuffle (__a, __b, (uint8x16_t) | |
31767 | {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); | |
31768 | #endif | |
31769 | } | |
31770 | ||
49ab9992 | 31771 | __extension__ extern __inline uint16x8_t |
31772 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31773 | vzip2q_u16 (uint16x8_t __a, uint16x8_t __b) |
31774 | { | |
31775 | #ifdef __AARCH64EB__ | |
31776 | return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); | |
31777 | #else | |
31778 | return __builtin_shuffle (__a, __b, (uint16x8_t) | |
31779 | {4, 12, 5, 13, 6, 14, 7, 15}); | |
31780 | #endif | |
31781 | } | |
31782 | ||
49ab9992 | 31783 | __extension__ extern __inline uint32x4_t |
31784 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31785 | vzip2q_u32 (uint32x4_t __a, uint32x4_t __b) |
31786 | { | |
31787 | #ifdef __AARCH64EB__ | |
31788 | return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1}); | |
31789 | #else | |
31790 | return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); | |
31791 | #endif | |
31792 | } | |
31793 | ||
49ab9992 | 31794 | __extension__ extern __inline uint64x2_t |
31795 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
e1506184 | 31796 | vzip2q_u64 (uint64x2_t __a, uint64x2_t __b) |
31797 | { | |
31798 | #ifdef __AARCH64EB__ | |
31799 | return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); | |
31800 | #else | |
31801 | return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); | |
31802 | #endif | |
31803 | } | |
31804 | ||
df401d54 | 31805 | __INTERLEAVE_LIST (zip) |
31806 | ||
31807 | #undef __INTERLEAVE_LIST | |
31808 | #undef __DEFINTERLEAVE | |
31809 | ||
31810 | /* End of optimal implementations in approved order. */ | |
31811 | ||
3249cb09 | 31812 | #pragma GCC pop_options |
31813 | ||
31814 | /* ARMv8.2-A FP16 intrinsics. */ | |
31815 | ||
79cab9c6 | 31816 | #include "arm_fp16.h" |
31817 | ||
3249cb09 | 31818 | #pragma GCC push_options |
31819 | #pragma GCC target ("arch=armv8.2-a+fp16") | |
31820 | ||
31821 | /* ARMv8.2-A FP16 one operand vector intrinsics. */ | |
31822 | ||
49ab9992 | 31823 | __extension__ extern __inline float16x4_t |
31824 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31825 | vabs_f16 (float16x4_t __a) |
31826 | { | |
31827 | return __builtin_aarch64_absv4hf (__a); | |
31828 | } | |
31829 | ||
49ab9992 | 31830 | __extension__ extern __inline float16x8_t |
31831 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31832 | vabsq_f16 (float16x8_t __a) |
31833 | { | |
31834 | return __builtin_aarch64_absv8hf (__a); | |
31835 | } | |
31836 | ||
49ab9992 | 31837 | __extension__ extern __inline uint16x4_t |
31838 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31839 | vceqz_f16 (float16x4_t __a) |
31840 | { | |
31841 | return __builtin_aarch64_cmeqv4hf_uss (__a, vdup_n_f16 (0.0f)); | |
31842 | } | |
31843 | ||
49ab9992 | 31844 | __extension__ extern __inline uint16x8_t |
31845 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31846 | vceqzq_f16 (float16x8_t __a) |
31847 | { | |
31848 | return __builtin_aarch64_cmeqv8hf_uss (__a, vdupq_n_f16 (0.0f)); | |
31849 | } | |
31850 | ||
49ab9992 | 31851 | __extension__ extern __inline uint16x4_t |
31852 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31853 | vcgez_f16 (float16x4_t __a) |
31854 | { | |
31855 | return __builtin_aarch64_cmgev4hf_uss (__a, vdup_n_f16 (0.0f)); | |
31856 | } | |
31857 | ||
49ab9992 | 31858 | __extension__ extern __inline uint16x8_t |
31859 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31860 | vcgezq_f16 (float16x8_t __a) |
31861 | { | |
31862 | return __builtin_aarch64_cmgev8hf_uss (__a, vdupq_n_f16 (0.0f)); | |
31863 | } | |
31864 | ||
49ab9992 | 31865 | __extension__ extern __inline uint16x4_t |
31866 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31867 | vcgtz_f16 (float16x4_t __a) |
31868 | { | |
31869 | return __builtin_aarch64_cmgtv4hf_uss (__a, vdup_n_f16 (0.0f)); | |
31870 | } | |
31871 | ||
49ab9992 | 31872 | __extension__ extern __inline uint16x8_t |
31873 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31874 | vcgtzq_f16 (float16x8_t __a) |
31875 | { | |
31876 | return __builtin_aarch64_cmgtv8hf_uss (__a, vdupq_n_f16 (0.0f)); | |
31877 | } | |
31878 | ||
49ab9992 | 31879 | __extension__ extern __inline uint16x4_t |
31880 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31881 | vclez_f16 (float16x4_t __a) |
31882 | { | |
31883 | return __builtin_aarch64_cmlev4hf_uss (__a, vdup_n_f16 (0.0f)); | |
31884 | } | |
31885 | ||
49ab9992 | 31886 | __extension__ extern __inline uint16x8_t |
31887 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31888 | vclezq_f16 (float16x8_t __a) |
31889 | { | |
31890 | return __builtin_aarch64_cmlev8hf_uss (__a, vdupq_n_f16 (0.0f)); | |
31891 | } | |
31892 | ||
49ab9992 | 31893 | __extension__ extern __inline uint16x4_t |
31894 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31895 | vcltz_f16 (float16x4_t __a) |
31896 | { | |
31897 | return __builtin_aarch64_cmltv4hf_uss (__a, vdup_n_f16 (0.0f)); | |
31898 | } | |
31899 | ||
49ab9992 | 31900 | __extension__ extern __inline uint16x8_t |
31901 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31902 | vcltzq_f16 (float16x8_t __a) |
31903 | { | |
31904 | return __builtin_aarch64_cmltv8hf_uss (__a, vdupq_n_f16 (0.0f)); | |
31905 | } | |
31906 | ||
49ab9992 | 31907 | __extension__ extern __inline float16x4_t |
31908 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31909 | vcvt_f16_s16 (int16x4_t __a) |
31910 | { | |
31911 | return __builtin_aarch64_floatv4hiv4hf (__a); | |
31912 | } | |
31913 | ||
49ab9992 | 31914 | __extension__ extern __inline float16x8_t |
31915 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31916 | vcvtq_f16_s16 (int16x8_t __a) |
31917 | { | |
31918 | return __builtin_aarch64_floatv8hiv8hf (__a); | |
31919 | } | |
31920 | ||
49ab9992 | 31921 | __extension__ extern __inline float16x4_t |
31922 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31923 | vcvt_f16_u16 (uint16x4_t __a) |
31924 | { | |
31925 | return __builtin_aarch64_floatunsv4hiv4hf ((int16x4_t) __a); | |
31926 | } | |
31927 | ||
49ab9992 | 31928 | __extension__ extern __inline float16x8_t |
31929 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31930 | vcvtq_f16_u16 (uint16x8_t __a) |
31931 | { | |
31932 | return __builtin_aarch64_floatunsv8hiv8hf ((int16x8_t) __a); | |
31933 | } | |
31934 | ||
49ab9992 | 31935 | __extension__ extern __inline int16x4_t |
31936 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31937 | vcvt_s16_f16 (float16x4_t __a) |
31938 | { | |
31939 | return __builtin_aarch64_lbtruncv4hfv4hi (__a); | |
31940 | } | |
31941 | ||
49ab9992 | 31942 | __extension__ extern __inline int16x8_t |
31943 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31944 | vcvtq_s16_f16 (float16x8_t __a) |
31945 | { | |
31946 | return __builtin_aarch64_lbtruncv8hfv8hi (__a); | |
31947 | } | |
31948 | ||
49ab9992 | 31949 | __extension__ extern __inline uint16x4_t |
31950 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31951 | vcvt_u16_f16 (float16x4_t __a) |
31952 | { | |
31953 | return __builtin_aarch64_lbtruncuv4hfv4hi_us (__a); | |
31954 | } | |
31955 | ||
49ab9992 | 31956 | __extension__ extern __inline uint16x8_t |
31957 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31958 | vcvtq_u16_f16 (float16x8_t __a) |
31959 | { | |
31960 | return __builtin_aarch64_lbtruncuv8hfv8hi_us (__a); | |
31961 | } | |
31962 | ||
49ab9992 | 31963 | __extension__ extern __inline int16x4_t |
31964 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31965 | vcvta_s16_f16 (float16x4_t __a) |
31966 | { | |
31967 | return __builtin_aarch64_lroundv4hfv4hi (__a); | |
31968 | } | |
31969 | ||
49ab9992 | 31970 | __extension__ extern __inline int16x8_t |
31971 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31972 | vcvtaq_s16_f16 (float16x8_t __a) |
31973 | { | |
31974 | return __builtin_aarch64_lroundv8hfv8hi (__a); | |
31975 | } | |
31976 | ||
49ab9992 | 31977 | __extension__ extern __inline uint16x4_t |
31978 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31979 | vcvta_u16_f16 (float16x4_t __a) |
31980 | { | |
31981 | return __builtin_aarch64_lrounduv4hfv4hi_us (__a); | |
31982 | } | |
31983 | ||
49ab9992 | 31984 | __extension__ extern __inline uint16x8_t |
31985 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31986 | vcvtaq_u16_f16 (float16x8_t __a) |
31987 | { | |
31988 | return __builtin_aarch64_lrounduv8hfv8hi_us (__a); | |
31989 | } | |
31990 | ||
49ab9992 | 31991 | __extension__ extern __inline int16x4_t |
31992 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 31993 | vcvtm_s16_f16 (float16x4_t __a) |
31994 | { | |
31995 | return __builtin_aarch64_lfloorv4hfv4hi (__a); | |
31996 | } | |
31997 | ||
49ab9992 | 31998 | __extension__ extern __inline int16x8_t |
31999 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32000 | vcvtmq_s16_f16 (float16x8_t __a) |
32001 | { | |
32002 | return __builtin_aarch64_lfloorv8hfv8hi (__a); | |
32003 | } | |
32004 | ||
49ab9992 | 32005 | __extension__ extern __inline uint16x4_t |
32006 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32007 | vcvtm_u16_f16 (float16x4_t __a) |
32008 | { | |
32009 | return __builtin_aarch64_lflooruv4hfv4hi_us (__a); | |
32010 | } | |
32011 | ||
49ab9992 | 32012 | __extension__ extern __inline uint16x8_t |
32013 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32014 | vcvtmq_u16_f16 (float16x8_t __a) |
32015 | { | |
32016 | return __builtin_aarch64_lflooruv8hfv8hi_us (__a); | |
32017 | } | |
32018 | ||
49ab9992 | 32019 | __extension__ extern __inline int16x4_t |
32020 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32021 | vcvtn_s16_f16 (float16x4_t __a) |
32022 | { | |
32023 | return __builtin_aarch64_lfrintnv4hfv4hi (__a); | |
32024 | } | |
32025 | ||
49ab9992 | 32026 | __extension__ extern __inline int16x8_t |
32027 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32028 | vcvtnq_s16_f16 (float16x8_t __a) |
32029 | { | |
32030 | return __builtin_aarch64_lfrintnv8hfv8hi (__a); | |
32031 | } | |
32032 | ||
49ab9992 | 32033 | __extension__ extern __inline uint16x4_t |
32034 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32035 | vcvtn_u16_f16 (float16x4_t __a) |
32036 | { | |
32037 | return __builtin_aarch64_lfrintnuv4hfv4hi_us (__a); | |
32038 | } | |
32039 | ||
49ab9992 | 32040 | __extension__ extern __inline uint16x8_t |
32041 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32042 | vcvtnq_u16_f16 (float16x8_t __a) |
32043 | { | |
32044 | return __builtin_aarch64_lfrintnuv8hfv8hi_us (__a); | |
32045 | } | |
32046 | ||
49ab9992 | 32047 | __extension__ extern __inline int16x4_t |
32048 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32049 | vcvtp_s16_f16 (float16x4_t __a) |
32050 | { | |
32051 | return __builtin_aarch64_lceilv4hfv4hi (__a); | |
32052 | } | |
32053 | ||
49ab9992 | 32054 | __extension__ extern __inline int16x8_t |
32055 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32056 | vcvtpq_s16_f16 (float16x8_t __a) |
32057 | { | |
32058 | return __builtin_aarch64_lceilv8hfv8hi (__a); | |
32059 | } | |
32060 | ||
49ab9992 | 32061 | __extension__ extern __inline uint16x4_t |
32062 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32063 | vcvtp_u16_f16 (float16x4_t __a) |
32064 | { | |
32065 | return __builtin_aarch64_lceiluv4hfv4hi_us (__a); | |
32066 | } | |
32067 | ||
49ab9992 | 32068 | __extension__ extern __inline uint16x8_t |
32069 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32070 | vcvtpq_u16_f16 (float16x8_t __a) |
32071 | { | |
32072 | return __builtin_aarch64_lceiluv8hfv8hi_us (__a); | |
32073 | } | |
32074 | ||
49ab9992 | 32075 | __extension__ extern __inline float16x4_t |
32076 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32077 | vneg_f16 (float16x4_t __a) |
32078 | { | |
32079 | return -__a; | |
32080 | } | |
32081 | ||
49ab9992 | 32082 | __extension__ extern __inline float16x8_t |
32083 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32084 | vnegq_f16 (float16x8_t __a) |
32085 | { | |
32086 | return -__a; | |
32087 | } | |
32088 | ||
49ab9992 | 32089 | __extension__ extern __inline float16x4_t |
32090 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32091 | vrecpe_f16 (float16x4_t __a) |
32092 | { | |
32093 | return __builtin_aarch64_frecpev4hf (__a); | |
32094 | } | |
32095 | ||
49ab9992 | 32096 | __extension__ extern __inline float16x8_t |
32097 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32098 | vrecpeq_f16 (float16x8_t __a) |
32099 | { | |
32100 | return __builtin_aarch64_frecpev8hf (__a); | |
32101 | } | |
32102 | ||
49ab9992 | 32103 | __extension__ extern __inline float16x4_t |
32104 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32105 | vrnd_f16 (float16x4_t __a) |
32106 | { | |
32107 | return __builtin_aarch64_btruncv4hf (__a); | |
32108 | } | |
32109 | ||
49ab9992 | 32110 | __extension__ extern __inline float16x8_t |
32111 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32112 | vrndq_f16 (float16x8_t __a) |
32113 | { | |
32114 | return __builtin_aarch64_btruncv8hf (__a); | |
32115 | } | |
32116 | ||
49ab9992 | 32117 | __extension__ extern __inline float16x4_t |
32118 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32119 | vrnda_f16 (float16x4_t __a) |
32120 | { | |
32121 | return __builtin_aarch64_roundv4hf (__a); | |
32122 | } | |
32123 | ||
49ab9992 | 32124 | __extension__ extern __inline float16x8_t |
32125 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32126 | vrndaq_f16 (float16x8_t __a) |
32127 | { | |
32128 | return __builtin_aarch64_roundv8hf (__a); | |
32129 | } | |
32130 | ||
49ab9992 | 32131 | __extension__ extern __inline float16x4_t |
32132 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32133 | vrndi_f16 (float16x4_t __a) |
32134 | { | |
32135 | return __builtin_aarch64_nearbyintv4hf (__a); | |
32136 | } | |
32137 | ||
49ab9992 | 32138 | __extension__ extern __inline float16x8_t |
32139 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32140 | vrndiq_f16 (float16x8_t __a) |
32141 | { | |
32142 | return __builtin_aarch64_nearbyintv8hf (__a); | |
32143 | } | |
32144 | ||
49ab9992 | 32145 | __extension__ extern __inline float16x4_t |
32146 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32147 | vrndm_f16 (float16x4_t __a) |
32148 | { | |
32149 | return __builtin_aarch64_floorv4hf (__a); | |
32150 | } | |
32151 | ||
49ab9992 | 32152 | __extension__ extern __inline float16x8_t |
32153 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32154 | vrndmq_f16 (float16x8_t __a) |
32155 | { | |
32156 | return __builtin_aarch64_floorv8hf (__a); | |
32157 | } | |
32158 | ||
49ab9992 | 32159 | __extension__ extern __inline float16x4_t |
32160 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32161 | vrndn_f16 (float16x4_t __a) |
32162 | { | |
32163 | return __builtin_aarch64_frintnv4hf (__a); | |
32164 | } | |
32165 | ||
49ab9992 | 32166 | __extension__ extern __inline float16x8_t |
32167 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32168 | vrndnq_f16 (float16x8_t __a) |
32169 | { | |
32170 | return __builtin_aarch64_frintnv8hf (__a); | |
32171 | } | |
32172 | ||
49ab9992 | 32173 | __extension__ extern __inline float16x4_t |
32174 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32175 | vrndp_f16 (float16x4_t __a) |
32176 | { | |
32177 | return __builtin_aarch64_ceilv4hf (__a); | |
32178 | } | |
32179 | ||
49ab9992 | 32180 | __extension__ extern __inline float16x8_t |
32181 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32182 | vrndpq_f16 (float16x8_t __a) |
32183 | { | |
32184 | return __builtin_aarch64_ceilv8hf (__a); | |
32185 | } | |
32186 | ||
49ab9992 | 32187 | __extension__ extern __inline float16x4_t |
32188 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32189 | vrndx_f16 (float16x4_t __a) |
32190 | { | |
32191 | return __builtin_aarch64_rintv4hf (__a); | |
32192 | } | |
32193 | ||
49ab9992 | 32194 | __extension__ extern __inline float16x8_t |
32195 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32196 | vrndxq_f16 (float16x8_t __a) |
32197 | { | |
32198 | return __builtin_aarch64_rintv8hf (__a); | |
32199 | } | |
32200 | ||
49ab9992 | 32201 | __extension__ extern __inline float16x4_t |
32202 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32203 | vrsqrte_f16 (float16x4_t a) |
32204 | { | |
32205 | return __builtin_aarch64_rsqrtev4hf (a); | |
32206 | } | |
32207 | ||
49ab9992 | 32208 | __extension__ extern __inline float16x8_t |
32209 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32210 | vrsqrteq_f16 (float16x8_t a) |
32211 | { | |
32212 | return __builtin_aarch64_rsqrtev8hf (a); | |
32213 | } | |
32214 | ||
49ab9992 | 32215 | __extension__ extern __inline float16x4_t |
32216 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32217 | vsqrt_f16 (float16x4_t a) |
32218 | { | |
32219 | return __builtin_aarch64_sqrtv4hf (a); | |
32220 | } | |
32221 | ||
49ab9992 | 32222 | __extension__ extern __inline float16x8_t |
32223 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
3249cb09 | 32224 | vsqrtq_f16 (float16x8_t a) |
32225 | { | |
32226 | return __builtin_aarch64_sqrtv8hf (a); | |
32227 | } | |
32228 | ||
a3b39d55 | 32229 | /* ARMv8.2-A FP16 two operands vector intrinsics. */ |
32230 | ||
49ab9992 | 32231 | __extension__ extern __inline float16x4_t |
32232 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32233 | vadd_f16 (float16x4_t __a, float16x4_t __b) |
32234 | { | |
32235 | return __a + __b; | |
32236 | } | |
32237 | ||
49ab9992 | 32238 | __extension__ extern __inline float16x8_t |
32239 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32240 | vaddq_f16 (float16x8_t __a, float16x8_t __b) |
32241 | { | |
32242 | return __a + __b; | |
32243 | } | |
32244 | ||
49ab9992 | 32245 | __extension__ extern __inline float16x4_t |
32246 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32247 | vabd_f16 (float16x4_t a, float16x4_t b) |
32248 | { | |
32249 | return __builtin_aarch64_fabdv4hf (a, b); | |
32250 | } | |
32251 | ||
49ab9992 | 32252 | __extension__ extern __inline float16x8_t |
32253 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32254 | vabdq_f16 (float16x8_t a, float16x8_t b) |
32255 | { | |
32256 | return __builtin_aarch64_fabdv8hf (a, b); | |
32257 | } | |
32258 | ||
49ab9992 | 32259 | __extension__ extern __inline uint16x4_t |
32260 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32261 | vcage_f16 (float16x4_t __a, float16x4_t __b) |
32262 | { | |
32263 | return __builtin_aarch64_facgev4hf_uss (__a, __b); | |
32264 | } | |
32265 | ||
49ab9992 | 32266 | __extension__ extern __inline uint16x8_t |
32267 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32268 | vcageq_f16 (float16x8_t __a, float16x8_t __b) |
32269 | { | |
32270 | return __builtin_aarch64_facgev8hf_uss (__a, __b); | |
32271 | } | |
32272 | ||
49ab9992 | 32273 | __extension__ extern __inline uint16x4_t |
32274 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32275 | vcagt_f16 (float16x4_t __a, float16x4_t __b) |
32276 | { | |
32277 | return __builtin_aarch64_facgtv4hf_uss (__a, __b); | |
32278 | } | |
32279 | ||
49ab9992 | 32280 | __extension__ extern __inline uint16x8_t |
32281 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32282 | vcagtq_f16 (float16x8_t __a, float16x8_t __b) |
32283 | { | |
32284 | return __builtin_aarch64_facgtv8hf_uss (__a, __b); | |
32285 | } | |
32286 | ||
49ab9992 | 32287 | __extension__ extern __inline uint16x4_t |
32288 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32289 | vcale_f16 (float16x4_t __a, float16x4_t __b) |
32290 | { | |
32291 | return __builtin_aarch64_faclev4hf_uss (__a, __b); | |
32292 | } | |
32293 | ||
49ab9992 | 32294 | __extension__ extern __inline uint16x8_t |
32295 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32296 | vcaleq_f16 (float16x8_t __a, float16x8_t __b) |
32297 | { | |
32298 | return __builtin_aarch64_faclev8hf_uss (__a, __b); | |
32299 | } | |
32300 | ||
49ab9992 | 32301 | __extension__ extern __inline uint16x4_t |
32302 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32303 | vcalt_f16 (float16x4_t __a, float16x4_t __b) |
32304 | { | |
32305 | return __builtin_aarch64_facltv4hf_uss (__a, __b); | |
32306 | } | |
32307 | ||
49ab9992 | 32308 | __extension__ extern __inline uint16x8_t |
32309 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32310 | vcaltq_f16 (float16x8_t __a, float16x8_t __b) |
32311 | { | |
32312 | return __builtin_aarch64_facltv8hf_uss (__a, __b); | |
32313 | } | |
32314 | ||
49ab9992 | 32315 | __extension__ extern __inline uint16x4_t |
32316 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32317 | vceq_f16 (float16x4_t __a, float16x4_t __b) |
32318 | { | |
32319 | return __builtin_aarch64_cmeqv4hf_uss (__a, __b); | |
32320 | } | |
32321 | ||
49ab9992 | 32322 | __extension__ extern __inline uint16x8_t |
32323 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32324 | vceqq_f16 (float16x8_t __a, float16x8_t __b) |
32325 | { | |
32326 | return __builtin_aarch64_cmeqv8hf_uss (__a, __b); | |
32327 | } | |
32328 | ||
49ab9992 | 32329 | __extension__ extern __inline uint16x4_t |
32330 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32331 | vcge_f16 (float16x4_t __a, float16x4_t __b) |
32332 | { | |
32333 | return __builtin_aarch64_cmgev4hf_uss (__a, __b); | |
32334 | } | |
32335 | ||
49ab9992 | 32336 | __extension__ extern __inline uint16x8_t |
32337 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32338 | vcgeq_f16 (float16x8_t __a, float16x8_t __b) |
32339 | { | |
32340 | return __builtin_aarch64_cmgev8hf_uss (__a, __b); | |
32341 | } | |
32342 | ||
49ab9992 | 32343 | __extension__ extern __inline uint16x4_t |
32344 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32345 | vcgt_f16 (float16x4_t __a, float16x4_t __b) |
32346 | { | |
32347 | return __builtin_aarch64_cmgtv4hf_uss (__a, __b); | |
32348 | } | |
32349 | ||
49ab9992 | 32350 | __extension__ extern __inline uint16x8_t |
32351 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32352 | vcgtq_f16 (float16x8_t __a, float16x8_t __b) |
32353 | { | |
32354 | return __builtin_aarch64_cmgtv8hf_uss (__a, __b); | |
32355 | } | |
32356 | ||
49ab9992 | 32357 | __extension__ extern __inline uint16x4_t |
32358 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32359 | vcle_f16 (float16x4_t __a, float16x4_t __b) |
32360 | { | |
32361 | return __builtin_aarch64_cmlev4hf_uss (__a, __b); | |
32362 | } | |
32363 | ||
49ab9992 | 32364 | __extension__ extern __inline uint16x8_t |
32365 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32366 | vcleq_f16 (float16x8_t __a, float16x8_t __b) |
32367 | { | |
32368 | return __builtin_aarch64_cmlev8hf_uss (__a, __b); | |
32369 | } | |
32370 | ||
49ab9992 | 32371 | __extension__ extern __inline uint16x4_t |
32372 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32373 | vclt_f16 (float16x4_t __a, float16x4_t __b) |
32374 | { | |
32375 | return __builtin_aarch64_cmltv4hf_uss (__a, __b); | |
32376 | } | |
32377 | ||
49ab9992 | 32378 | __extension__ extern __inline uint16x8_t |
32379 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32380 | vcltq_f16 (float16x8_t __a, float16x8_t __b) |
32381 | { | |
32382 | return __builtin_aarch64_cmltv8hf_uss (__a, __b); | |
32383 | } | |
32384 | ||
49ab9992 | 32385 | __extension__ extern __inline float16x4_t |
32386 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32387 | vcvt_n_f16_s16 (int16x4_t __a, const int __b) |
32388 | { | |
32389 | return __builtin_aarch64_scvtfv4hi (__a, __b); | |
32390 | } | |
32391 | ||
49ab9992 | 32392 | __extension__ extern __inline float16x8_t |
32393 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32394 | vcvtq_n_f16_s16 (int16x8_t __a, const int __b) |
32395 | { | |
32396 | return __builtin_aarch64_scvtfv8hi (__a, __b); | |
32397 | } | |
32398 | ||
49ab9992 | 32399 | __extension__ extern __inline float16x4_t |
32400 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32401 | vcvt_n_f16_u16 (uint16x4_t __a, const int __b) |
32402 | { | |
32403 | return __builtin_aarch64_ucvtfv4hi_sus (__a, __b); | |
32404 | } | |
32405 | ||
49ab9992 | 32406 | __extension__ extern __inline float16x8_t |
32407 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32408 | vcvtq_n_f16_u16 (uint16x8_t __a, const int __b) |
32409 | { | |
32410 | return __builtin_aarch64_ucvtfv8hi_sus (__a, __b); | |
32411 | } | |
32412 | ||
49ab9992 | 32413 | __extension__ extern __inline int16x4_t |
32414 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32415 | vcvt_n_s16_f16 (float16x4_t __a, const int __b) |
32416 | { | |
32417 | return __builtin_aarch64_fcvtzsv4hf (__a, __b); | |
32418 | } | |
32419 | ||
49ab9992 | 32420 | __extension__ extern __inline int16x8_t |
32421 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32422 | vcvtq_n_s16_f16 (float16x8_t __a, const int __b) |
32423 | { | |
32424 | return __builtin_aarch64_fcvtzsv8hf (__a, __b); | |
32425 | } | |
32426 | ||
49ab9992 | 32427 | __extension__ extern __inline uint16x4_t |
32428 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32429 | vcvt_n_u16_f16 (float16x4_t __a, const int __b) |
32430 | { | |
32431 | return __builtin_aarch64_fcvtzuv4hf_uss (__a, __b); | |
32432 | } | |
32433 | ||
49ab9992 | 32434 | __extension__ extern __inline uint16x8_t |
32435 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32436 | vcvtq_n_u16_f16 (float16x8_t __a, const int __b) |
32437 | { | |
32438 | return __builtin_aarch64_fcvtzuv8hf_uss (__a, __b); | |
32439 | } | |
32440 | ||
49ab9992 | 32441 | __extension__ extern __inline float16x4_t |
32442 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32443 | vdiv_f16 (float16x4_t __a, float16x4_t __b) |
32444 | { | |
32445 | return __a / __b; | |
32446 | } | |
32447 | ||
49ab9992 | 32448 | __extension__ extern __inline float16x8_t |
32449 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32450 | vdivq_f16 (float16x8_t __a, float16x8_t __b) |
32451 | { | |
32452 | return __a / __b; | |
32453 | } | |
32454 | ||
49ab9992 | 32455 | __extension__ extern __inline float16x4_t |
32456 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32457 | vmax_f16 (float16x4_t __a, float16x4_t __b) |
32458 | { | |
32459 | return __builtin_aarch64_smax_nanv4hf (__a, __b); | |
32460 | } | |
32461 | ||
49ab9992 | 32462 | __extension__ extern __inline float16x8_t |
32463 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32464 | vmaxq_f16 (float16x8_t __a, float16x8_t __b) |
32465 | { | |
32466 | return __builtin_aarch64_smax_nanv8hf (__a, __b); | |
32467 | } | |
32468 | ||
49ab9992 | 32469 | __extension__ extern __inline float16x4_t |
32470 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32471 | vmaxnm_f16 (float16x4_t __a, float16x4_t __b) |
32472 | { | |
32473 | return __builtin_aarch64_fmaxv4hf (__a, __b); | |
32474 | } | |
32475 | ||
49ab9992 | 32476 | __extension__ extern __inline float16x8_t |
32477 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32478 | vmaxnmq_f16 (float16x8_t __a, float16x8_t __b) |
32479 | { | |
32480 | return __builtin_aarch64_fmaxv8hf (__a, __b); | |
32481 | } | |
32482 | ||
49ab9992 | 32483 | __extension__ extern __inline float16x4_t |
32484 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32485 | vmin_f16 (float16x4_t __a, float16x4_t __b) |
32486 | { | |
32487 | return __builtin_aarch64_smin_nanv4hf (__a, __b); | |
32488 | } | |
32489 | ||
49ab9992 | 32490 | __extension__ extern __inline float16x8_t |
32491 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32492 | vminq_f16 (float16x8_t __a, float16x8_t __b) |
32493 | { | |
32494 | return __builtin_aarch64_smin_nanv8hf (__a, __b); | |
32495 | } | |
32496 | ||
49ab9992 | 32497 | __extension__ extern __inline float16x4_t |
32498 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32499 | vminnm_f16 (float16x4_t __a, float16x4_t __b) |
32500 | { | |
32501 | return __builtin_aarch64_fminv4hf (__a, __b); | |
32502 | } | |
32503 | ||
49ab9992 | 32504 | __extension__ extern __inline float16x8_t |
32505 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32506 | vminnmq_f16 (float16x8_t __a, float16x8_t __b) |
32507 | { | |
32508 | return __builtin_aarch64_fminv8hf (__a, __b); | |
32509 | } | |
32510 | ||
49ab9992 | 32511 | __extension__ extern __inline float16x4_t |
32512 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32513 | vmul_f16 (float16x4_t __a, float16x4_t __b) |
32514 | { | |
32515 | return __a * __b; | |
32516 | } | |
32517 | ||
49ab9992 | 32518 | __extension__ extern __inline float16x8_t |
32519 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32520 | vmulq_f16 (float16x8_t __a, float16x8_t __b) |
32521 | { | |
32522 | return __a * __b; | |
32523 | } | |
32524 | ||
49ab9992 | 32525 | __extension__ extern __inline float16x4_t |
32526 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32527 | vmulx_f16 (float16x4_t __a, float16x4_t __b) |
32528 | { | |
32529 | return __builtin_aarch64_fmulxv4hf (__a, __b); | |
32530 | } | |
32531 | ||
49ab9992 | 32532 | __extension__ extern __inline float16x8_t |
32533 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32534 | vmulxq_f16 (float16x8_t __a, float16x8_t __b) |
32535 | { | |
32536 | return __builtin_aarch64_fmulxv8hf (__a, __b); | |
32537 | } | |
32538 | ||
49ab9992 | 32539 | __extension__ extern __inline float16x4_t |
32540 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32541 | vpadd_f16 (float16x4_t a, float16x4_t b) |
32542 | { | |
32543 | return __builtin_aarch64_faddpv4hf (a, b); | |
32544 | } | |
32545 | ||
49ab9992 | 32546 | __extension__ extern __inline float16x8_t |
32547 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32548 | vpaddq_f16 (float16x8_t a, float16x8_t b) |
32549 | { | |
32550 | return __builtin_aarch64_faddpv8hf (a, b); | |
32551 | } | |
32552 | ||
49ab9992 | 32553 | __extension__ extern __inline float16x4_t |
32554 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32555 | vpmax_f16 (float16x4_t a, float16x4_t b) |
32556 | { | |
32557 | return __builtin_aarch64_smax_nanpv4hf (a, b); | |
32558 | } | |
32559 | ||
49ab9992 | 32560 | __extension__ extern __inline float16x8_t |
32561 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32562 | vpmaxq_f16 (float16x8_t a, float16x8_t b) |
32563 | { | |
32564 | return __builtin_aarch64_smax_nanpv8hf (a, b); | |
32565 | } | |
32566 | ||
49ab9992 | 32567 | __extension__ extern __inline float16x4_t |
32568 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32569 | vpmaxnm_f16 (float16x4_t a, float16x4_t b) |
32570 | { | |
32571 | return __builtin_aarch64_smaxpv4hf (a, b); | |
32572 | } | |
32573 | ||
49ab9992 | 32574 | __extension__ extern __inline float16x8_t |
32575 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32576 | vpmaxnmq_f16 (float16x8_t a, float16x8_t b) |
32577 | { | |
32578 | return __builtin_aarch64_smaxpv8hf (a, b); | |
32579 | } | |
32580 | ||
49ab9992 | 32581 | __extension__ extern __inline float16x4_t |
32582 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32583 | vpmin_f16 (float16x4_t a, float16x4_t b) |
32584 | { | |
32585 | return __builtin_aarch64_smin_nanpv4hf (a, b); | |
32586 | } | |
32587 | ||
49ab9992 | 32588 | __extension__ extern __inline float16x8_t |
32589 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32590 | vpminq_f16 (float16x8_t a, float16x8_t b) |
32591 | { | |
32592 | return __builtin_aarch64_smin_nanpv8hf (a, b); | |
32593 | } | |
32594 | ||
49ab9992 | 32595 | __extension__ extern __inline float16x4_t |
32596 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32597 | vpminnm_f16 (float16x4_t a, float16x4_t b) |
32598 | { | |
32599 | return __builtin_aarch64_sminpv4hf (a, b); | |
32600 | } | |
32601 | ||
49ab9992 | 32602 | __extension__ extern __inline float16x8_t |
32603 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32604 | vpminnmq_f16 (float16x8_t a, float16x8_t b) |
32605 | { | |
32606 | return __builtin_aarch64_sminpv8hf (a, b); | |
32607 | } | |
32608 | ||
49ab9992 | 32609 | __extension__ extern __inline float16x4_t |
32610 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32611 | vrecps_f16 (float16x4_t __a, float16x4_t __b) |
32612 | { | |
32613 | return __builtin_aarch64_frecpsv4hf (__a, __b); | |
32614 | } | |
32615 | ||
49ab9992 | 32616 | __extension__ extern __inline float16x8_t |
32617 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32618 | vrecpsq_f16 (float16x8_t __a, float16x8_t __b) |
32619 | { | |
32620 | return __builtin_aarch64_frecpsv8hf (__a, __b); | |
32621 | } | |
32622 | ||
49ab9992 | 32623 | __extension__ extern __inline float16x4_t |
32624 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32625 | vrsqrts_f16 (float16x4_t a, float16x4_t b) |
32626 | { | |
32627 | return __builtin_aarch64_rsqrtsv4hf (a, b); | |
32628 | } | |
32629 | ||
49ab9992 | 32630 | __extension__ extern __inline float16x8_t |
32631 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32632 | vrsqrtsq_f16 (float16x8_t a, float16x8_t b) |
32633 | { | |
32634 | return __builtin_aarch64_rsqrtsv8hf (a, b); | |
32635 | } | |
32636 | ||
49ab9992 | 32637 | __extension__ extern __inline float16x4_t |
32638 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32639 | vsub_f16 (float16x4_t __a, float16x4_t __b) |
32640 | { | |
32641 | return __a - __b; | |
32642 | } | |
32643 | ||
49ab9992 | 32644 | __extension__ extern __inline float16x8_t |
32645 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
a3b39d55 | 32646 | vsubq_f16 (float16x8_t __a, float16x8_t __b) |
32647 | { | |
32648 | return __a - __b; | |
32649 | } | |
32650 | ||
ded47ca7 | 32651 | /* ARMv8.2-A FP16 three operands vector intrinsics. */ |
32652 | ||
49ab9992 | 32653 | __extension__ extern __inline float16x4_t |
32654 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ded47ca7 | 32655 | vfma_f16 (float16x4_t __a, float16x4_t __b, float16x4_t __c) |
32656 | { | |
32657 | return __builtin_aarch64_fmav4hf (__b, __c, __a); | |
32658 | } | |
32659 | ||
49ab9992 | 32660 | __extension__ extern __inline float16x8_t |
32661 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ded47ca7 | 32662 | vfmaq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c) |
32663 | { | |
32664 | return __builtin_aarch64_fmav8hf (__b, __c, __a); | |
32665 | } | |
32666 | ||
49ab9992 | 32667 | __extension__ extern __inline float16x4_t |
32668 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ded47ca7 | 32669 | vfms_f16 (float16x4_t __a, float16x4_t __b, float16x4_t __c) |
32670 | { | |
32671 | return __builtin_aarch64_fnmav4hf (__b, __c, __a); | |
32672 | } | |
32673 | ||
49ab9992 | 32674 | __extension__ extern __inline float16x8_t |
32675 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
ded47ca7 | 32676 | vfmsq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c) |
32677 | { | |
32678 | return __builtin_aarch64_fnmav8hf (__b, __c, __a); | |
32679 | } | |
32680 | ||
f16ee469 | 32681 | /* ARMv8.2-A FP16 lane vector intrinsics. */ |
32682 | ||
49ab9992 | 32683 | __extension__ extern __inline float16_t |
32684 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5d4ed563 | 32685 | vfmah_lane_f16 (float16_t __a, float16_t __b, |
32686 | float16x4_t __c, const int __lane) | |
32687 | { | |
32688 | return vfmah_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane)); | |
32689 | } | |
32690 | ||
49ab9992 | 32691 | __extension__ extern __inline float16_t |
32692 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5d4ed563 | 32693 | vfmah_laneq_f16 (float16_t __a, float16_t __b, |
32694 | float16x8_t __c, const int __lane) | |
32695 | { | |
32696 | return vfmah_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane)); | |
32697 | } | |
32698 | ||
49ab9992 | 32699 | __extension__ extern __inline float16x4_t |
32700 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32701 | vfma_lane_f16 (float16x4_t __a, float16x4_t __b, |
32702 | float16x4_t __c, const int __lane) | |
32703 | { | |
32704 | return vfma_f16 (__a, __b, __aarch64_vdup_lane_f16 (__c, __lane)); | |
32705 | } | |
32706 | ||
49ab9992 | 32707 | __extension__ extern __inline float16x8_t |
32708 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32709 | vfmaq_lane_f16 (float16x8_t __a, float16x8_t __b, |
32710 | float16x4_t __c, const int __lane) | |
32711 | { | |
32712 | return vfmaq_f16 (__a, __b, __aarch64_vdupq_lane_f16 (__c, __lane)); | |
32713 | } | |
32714 | ||
49ab9992 | 32715 | __extension__ extern __inline float16x4_t |
32716 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32717 | vfma_laneq_f16 (float16x4_t __a, float16x4_t __b, |
32718 | float16x8_t __c, const int __lane) | |
32719 | { | |
32720 | return vfma_f16 (__a, __b, __aarch64_vdup_laneq_f16 (__c, __lane)); | |
32721 | } | |
32722 | ||
49ab9992 | 32723 | __extension__ extern __inline float16x8_t |
32724 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32725 | vfmaq_laneq_f16 (float16x8_t __a, float16x8_t __b, |
32726 | float16x8_t __c, const int __lane) | |
32727 | { | |
32728 | return vfmaq_f16 (__a, __b, __aarch64_vdupq_laneq_f16 (__c, __lane)); | |
32729 | } | |
32730 | ||
49ab9992 | 32731 | __extension__ extern __inline float16x4_t |
32732 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32733 | vfma_n_f16 (float16x4_t __a, float16x4_t __b, float16_t __c) |
32734 | { | |
32735 | return vfma_f16 (__a, __b, vdup_n_f16 (__c)); | |
32736 | } | |
32737 | ||
49ab9992 | 32738 | __extension__ extern __inline float16x8_t |
32739 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32740 | vfmaq_n_f16 (float16x8_t __a, float16x8_t __b, float16_t __c) |
32741 | { | |
32742 | return vfmaq_f16 (__a, __b, vdupq_n_f16 (__c)); | |
32743 | } | |
32744 | ||
49ab9992 | 32745 | __extension__ extern __inline float16_t |
32746 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5d4ed563 | 32747 | vfmsh_lane_f16 (float16_t __a, float16_t __b, |
32748 | float16x4_t __c, const int __lane) | |
32749 | { | |
32750 | return vfmsh_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane)); | |
32751 | } | |
32752 | ||
49ab9992 | 32753 | __extension__ extern __inline float16_t |
32754 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5d4ed563 | 32755 | vfmsh_laneq_f16 (float16_t __a, float16_t __b, |
32756 | float16x8_t __c, const int __lane) | |
32757 | { | |
32758 | return vfmsh_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane)); | |
32759 | } | |
32760 | ||
49ab9992 | 32761 | __extension__ extern __inline float16x4_t |
32762 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32763 | vfms_lane_f16 (float16x4_t __a, float16x4_t __b, |
32764 | float16x4_t __c, const int __lane) | |
32765 | { | |
32766 | return vfms_f16 (__a, __b, __aarch64_vdup_lane_f16 (__c, __lane)); | |
32767 | } | |
32768 | ||
49ab9992 | 32769 | __extension__ extern __inline float16x8_t |
32770 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32771 | vfmsq_lane_f16 (float16x8_t __a, float16x8_t __b, |
32772 | float16x4_t __c, const int __lane) | |
32773 | { | |
32774 | return vfmsq_f16 (__a, __b, __aarch64_vdupq_lane_f16 (__c, __lane)); | |
32775 | } | |
32776 | ||
49ab9992 | 32777 | __extension__ extern __inline float16x4_t |
32778 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32779 | vfms_laneq_f16 (float16x4_t __a, float16x4_t __b, |
32780 | float16x8_t __c, const int __lane) | |
32781 | { | |
32782 | return vfms_f16 (__a, __b, __aarch64_vdup_laneq_f16 (__c, __lane)); | |
32783 | } | |
32784 | ||
49ab9992 | 32785 | __extension__ extern __inline float16x8_t |
32786 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32787 | vfmsq_laneq_f16 (float16x8_t __a, float16x8_t __b, |
32788 | float16x8_t __c, const int __lane) | |
32789 | { | |
32790 | return vfmsq_f16 (__a, __b, __aarch64_vdupq_laneq_f16 (__c, __lane)); | |
32791 | } | |
32792 | ||
49ab9992 | 32793 | __extension__ extern __inline float16x4_t |
32794 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32795 | vfms_n_f16 (float16x4_t __a, float16x4_t __b, float16_t __c) |
32796 | { | |
32797 | return vfms_f16 (__a, __b, vdup_n_f16 (__c)); | |
32798 | } | |
32799 | ||
49ab9992 | 32800 | __extension__ extern __inline float16x8_t |
32801 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32802 | vfmsq_n_f16 (float16x8_t __a, float16x8_t __b, float16_t __c) |
32803 | { | |
32804 | return vfmsq_f16 (__a, __b, vdupq_n_f16 (__c)); | |
32805 | } | |
32806 | ||
49ab9992 | 32807 | __extension__ extern __inline float16_t |
32808 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5d4ed563 | 32809 | vmulh_lane_f16 (float16_t __a, float16x4_t __b, const int __lane) |
32810 | { | |
32811 | return __a * __aarch64_vget_lane_any (__b, __lane); | |
32812 | } | |
32813 | ||
49ab9992 | 32814 | __extension__ extern __inline float16x4_t |
32815 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32816 | vmul_lane_f16 (float16x4_t __a, float16x4_t __b, const int __lane) |
32817 | { | |
32818 | return vmul_f16 (__a, vdup_n_f16 (__aarch64_vget_lane_any (__b, __lane))); | |
32819 | } | |
32820 | ||
49ab9992 | 32821 | __extension__ extern __inline float16x8_t |
32822 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32823 | vmulq_lane_f16 (float16x8_t __a, float16x4_t __b, const int __lane) |
32824 | { | |
32825 | return vmulq_f16 (__a, vdupq_n_f16 (__aarch64_vget_lane_any (__b, __lane))); | |
32826 | } | |
32827 | ||
49ab9992 | 32828 | __extension__ extern __inline float16_t |
32829 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5d4ed563 | 32830 | vmulh_laneq_f16 (float16_t __a, float16x8_t __b, const int __lane) |
32831 | { | |
32832 | return __a * __aarch64_vget_lane_any (__b, __lane); | |
32833 | } | |
32834 | ||
49ab9992 | 32835 | __extension__ extern __inline float16x4_t |
32836 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32837 | vmul_laneq_f16 (float16x4_t __a, float16x8_t __b, const int __lane) |
32838 | { | |
32839 | return vmul_f16 (__a, vdup_n_f16 (__aarch64_vget_lane_any (__b, __lane))); | |
32840 | } | |
32841 | ||
49ab9992 | 32842 | __extension__ extern __inline float16x8_t |
32843 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32844 | vmulq_laneq_f16 (float16x8_t __a, float16x8_t __b, const int __lane) |
32845 | { | |
32846 | return vmulq_f16 (__a, vdupq_n_f16 (__aarch64_vget_lane_any (__b, __lane))); | |
32847 | } | |
32848 | ||
49ab9992 | 32849 | __extension__ extern __inline float16x4_t |
32850 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32851 | vmul_n_f16 (float16x4_t __a, float16_t __b) |
32852 | { | |
32853 | return vmul_lane_f16 (__a, vdup_n_f16 (__b), 0); | |
32854 | } | |
32855 | ||
49ab9992 | 32856 | __extension__ extern __inline float16x8_t |
32857 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32858 | vmulq_n_f16 (float16x8_t __a, float16_t __b) |
32859 | { | |
32860 | return vmulq_laneq_f16 (__a, vdupq_n_f16 (__b), 0); | |
32861 | } | |
32862 | ||
49ab9992 | 32863 | __extension__ extern __inline float16_t |
32864 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5d4ed563 | 32865 | vmulxh_lane_f16 (float16_t __a, float16x4_t __b, const int __lane) |
32866 | { | |
32867 | return vmulxh_f16 (__a, __aarch64_vget_lane_any (__b, __lane)); | |
32868 | } | |
32869 | ||
49ab9992 | 32870 | __extension__ extern __inline float16x4_t |
32871 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32872 | vmulx_lane_f16 (float16x4_t __a, float16x4_t __b, const int __lane) |
32873 | { | |
32874 | return vmulx_f16 (__a, __aarch64_vdup_lane_f16 (__b, __lane)); | |
32875 | } | |
32876 | ||
49ab9992 | 32877 | __extension__ extern __inline float16x8_t |
32878 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32879 | vmulxq_lane_f16 (float16x8_t __a, float16x4_t __b, const int __lane) |
32880 | { | |
32881 | return vmulxq_f16 (__a, __aarch64_vdupq_lane_f16 (__b, __lane)); | |
32882 | } | |
32883 | ||
49ab9992 | 32884 | __extension__ extern __inline float16_t |
32885 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
5d4ed563 | 32886 | vmulxh_laneq_f16 (float16_t __a, float16x8_t __b, const int __lane) |
32887 | { | |
32888 | return vmulxh_f16 (__a, __aarch64_vget_lane_any (__b, __lane)); | |
32889 | } | |
32890 | ||
49ab9992 | 32891 | __extension__ extern __inline float16x4_t |
32892 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32893 | vmulx_laneq_f16 (float16x4_t __a, float16x8_t __b, const int __lane) |
32894 | { | |
32895 | return vmulx_f16 (__a, __aarch64_vdup_laneq_f16 (__b, __lane)); | |
32896 | } | |
32897 | ||
49ab9992 | 32898 | __extension__ extern __inline float16x8_t |
32899 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32900 | vmulxq_laneq_f16 (float16x8_t __a, float16x8_t __b, const int __lane) |
32901 | { | |
32902 | return vmulxq_f16 (__a, __aarch64_vdupq_laneq_f16 (__b, __lane)); | |
32903 | } | |
32904 | ||
49ab9992 | 32905 | __extension__ extern __inline float16x4_t |
32906 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32907 | vmulx_n_f16 (float16x4_t __a, float16_t __b) |
32908 | { | |
32909 | return vmulx_f16 (__a, vdup_n_f16 (__b)); | |
32910 | } | |
32911 | ||
49ab9992 | 32912 | __extension__ extern __inline float16x8_t |
32913 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
f16ee469 | 32914 | vmulxq_n_f16 (float16x8_t __a, float16_t __b) |
32915 | { | |
32916 | return vmulxq_f16 (__a, vdupq_n_f16 (__b)); | |
32917 | } | |
32918 | ||
86d96b25 | 32919 | /* ARMv8.2-A FP16 reduction vector intrinsics. */ |
32920 | ||
49ab9992 | 32921 | __extension__ extern __inline float16_t |
32922 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
86d96b25 | 32923 | vmaxv_f16 (float16x4_t __a) |
32924 | { | |
32925 | return __builtin_aarch64_reduc_smax_nan_scal_v4hf (__a); | |
32926 | } | |
32927 | ||
49ab9992 | 32928 | __extension__ extern __inline float16_t |
32929 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
86d96b25 | 32930 | vmaxvq_f16 (float16x8_t __a) |
32931 | { | |
32932 | return __builtin_aarch64_reduc_smax_nan_scal_v8hf (__a); | |
32933 | } | |
32934 | ||
49ab9992 | 32935 | __extension__ extern __inline float16_t |
32936 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
86d96b25 | 32937 | vminv_f16 (float16x4_t __a) |
32938 | { | |
32939 | return __builtin_aarch64_reduc_smin_nan_scal_v4hf (__a); | |
32940 | } | |
32941 | ||
49ab9992 | 32942 | __extension__ extern __inline float16_t |
32943 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
86d96b25 | 32944 | vminvq_f16 (float16x8_t __a) |
32945 | { | |
32946 | return __builtin_aarch64_reduc_smin_nan_scal_v8hf (__a); | |
32947 | } | |
32948 | ||
49ab9992 | 32949 | __extension__ extern __inline float16_t |
32950 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
86d96b25 | 32951 | vmaxnmv_f16 (float16x4_t __a) |
32952 | { | |
32953 | return __builtin_aarch64_reduc_smax_scal_v4hf (__a); | |
32954 | } | |
32955 | ||
49ab9992 | 32956 | __extension__ extern __inline float16_t |
32957 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
86d96b25 | 32958 | vmaxnmvq_f16 (float16x8_t __a) |
32959 | { | |
32960 | return __builtin_aarch64_reduc_smax_scal_v8hf (__a); | |
32961 | } | |
32962 | ||
49ab9992 | 32963 | __extension__ extern __inline float16_t |
32964 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
86d96b25 | 32965 | vminnmv_f16 (float16x4_t __a) |
32966 | { | |
32967 | return __builtin_aarch64_reduc_smin_scal_v4hf (__a); | |
32968 | } | |
32969 | ||
49ab9992 | 32970 | __extension__ extern __inline float16_t |
32971 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
86d96b25 | 32972 | vminnmvq_f16 (float16x8_t __a) |
32973 | { | |
32974 | return __builtin_aarch64_reduc_smin_scal_v8hf (__a); | |
32975 | } | |
32976 | ||
3249cb09 | 32977 | #pragma GCC pop_options |
32978 | ||
4ee97fcf | 32979 | /* AdvSIMD Dot Product intrinsics. */ |
32980 | ||
32981 | #pragma GCC push_options | |
32982 | #pragma GCC target ("arch=armv8.2-a+dotprod") | |
32983 | ||
32984 | __extension__ extern __inline uint32x2_t | |
32985 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
32986 | vdot_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b) | |
32987 | { | |
32988 | return __builtin_aarch64_udotv8qi_uuuu (__r, __a, __b); | |
32989 | } | |
32990 | ||
32991 | __extension__ extern __inline uint32x4_t | |
32992 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
32993 | vdotq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b) | |
32994 | { | |
32995 | return __builtin_aarch64_udotv16qi_uuuu (__r, __a, __b); | |
32996 | } | |
32997 | ||
32998 | __extension__ extern __inline int32x2_t | |
32999 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33000 | vdot_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b) | |
33001 | { | |
33002 | return __builtin_aarch64_sdotv8qi (__r, __a, __b); | |
33003 | } | |
33004 | ||
33005 | __extension__ extern __inline int32x4_t | |
33006 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33007 | vdotq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b) | |
33008 | { | |
33009 | return __builtin_aarch64_sdotv16qi (__r, __a, __b); | |
33010 | } | |
33011 | ||
33012 | __extension__ extern __inline uint32x2_t | |
33013 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33014 | vdot_lane_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b, const int __index) | |
33015 | { | |
33016 | return __builtin_aarch64_udot_lanev8qi_uuuus (__r, __a, __b, __index); | |
33017 | } | |
33018 | ||
33019 | __extension__ extern __inline uint32x2_t | |
33020 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33021 | vdot_laneq_u32 (uint32x2_t __r, uint8x8_t __a, uint8x16_t __b, | |
33022 | const int __index) | |
33023 | { | |
33024 | return __builtin_aarch64_udot_laneqv8qi_uuuus (__r, __a, __b, __index); | |
33025 | } | |
33026 | ||
33027 | __extension__ extern __inline uint32x4_t | |
33028 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33029 | vdotq_lane_u32 (uint32x4_t __r, uint8x16_t __a, uint8x8_t __b, | |
33030 | const int __index) | |
33031 | { | |
33032 | return __builtin_aarch64_udot_lanev16qi_uuuus (__r, __a, __b, __index); | |
33033 | } | |
33034 | ||
33035 | __extension__ extern __inline uint32x4_t | |
33036 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33037 | vdotq_laneq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b, | |
33038 | const int __index) | |
33039 | { | |
33040 | return __builtin_aarch64_udot_laneqv16qi_uuuus (__r, __a, __b, __index); | |
33041 | } | |
33042 | ||
33043 | __extension__ extern __inline int32x2_t | |
33044 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33045 | vdot_lane_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b, const int __index) | |
33046 | { | |
33047 | return __builtin_aarch64_sdot_lanev8qi (__r, __a, __b, __index); | |
33048 | } | |
33049 | ||
33050 | __extension__ extern __inline int32x2_t | |
33051 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33052 | vdot_laneq_s32 (int32x2_t __r, int8x8_t __a, int8x16_t __b, const int __index) | |
33053 | { | |
33054 | return __builtin_aarch64_sdot_laneqv8qi (__r, __a, __b, __index); | |
33055 | } | |
33056 | ||
33057 | __extension__ extern __inline int32x4_t | |
33058 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33059 | vdotq_lane_s32 (int32x4_t __r, int8x16_t __a, int8x8_t __b, const int __index) | |
33060 | { | |
33061 | return __builtin_aarch64_sdot_lanev16qi (__r, __a, __b, __index); | |
33062 | } | |
33063 | ||
33064 | __extension__ extern __inline int32x4_t | |
33065 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33066 | vdotq_laneq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b, const int __index) | |
33067 | { | |
33068 | return __builtin_aarch64_sdot_laneqv16qi (__r, __a, __b, __index); | |
33069 | } | |
33070 | #pragma GCC pop_options | |
33071 | ||
24f7a05b | 33072 | #pragma GCC push_options |
33073 | #pragma GCC target(("arch=armv8.2-a+sm4")) | |
33074 | ||
33075 | __extension__ extern __inline uint32x4_t | |
33076 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33077 | vsm3ss1q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) | |
33078 | { | |
33079 | return __builtin_aarch64_sm3ss1qv4si_uuuu (__a, __b, __c); | |
33080 | } | |
33081 | ||
33082 | __extension__ extern __inline uint32x4_t | |
33083 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33084 | vsm3tt1aq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) | |
33085 | { | |
33086 | return __builtin_aarch64_sm3tt1aqv4si_uuuus (__a, __b, __c, __imm2); | |
33087 | } | |
33088 | ||
33089 | __extension__ extern __inline uint32x4_t | |
33090 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33091 | vsm3tt1bq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) | |
33092 | { | |
33093 | return __builtin_aarch64_sm3tt1bqv4si_uuuus (__a, __b, __c, __imm2); | |
33094 | } | |
33095 | ||
33096 | __extension__ extern __inline uint32x4_t | |
33097 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33098 | vsm3tt2aq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) | |
33099 | { | |
33100 | return __builtin_aarch64_sm3tt2aqv4si_uuuus (__a, __b, __c, __imm2); | |
33101 | } | |
33102 | ||
33103 | __extension__ extern __inline uint32x4_t | |
33104 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33105 | vsm3tt2bq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) | |
33106 | { | |
33107 | return __builtin_aarch64_sm3tt2bqv4si_uuuus (__a, __b, __c, __imm2); | |
33108 | } | |
33109 | ||
33110 | __extension__ extern __inline uint32x4_t | |
33111 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33112 | vsm3partw1q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) | |
33113 | { | |
33114 | return __builtin_aarch64_sm3partw1qv4si_uuuu (__a, __b, __c); | |
33115 | } | |
33116 | __extension__ extern __inline uint32x4_t | |
33117 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33118 | vsm3partw2q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) | |
33119 | { | |
33120 | return __builtin_aarch64_sm3partw2qv4si_uuuu (__a, __b, __c); | |
33121 | } | |
33122 | ||
33123 | __extension__ extern __inline uint32x4_t | |
33124 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33125 | vsm4eq_u32 (uint32x4_t __a, uint32x4_t __b) | |
33126 | { | |
33127 | return __builtin_aarch64_sm4eqv4si_uuu (__a, __b); | |
33128 | } | |
33129 | ||
33130 | __extension__ extern __inline uint32x4_t | |
33131 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33132 | vsm4ekeyq_u32 (uint32x4_t __a, uint32x4_t __b) | |
33133 | { | |
33134 | return __builtin_aarch64_sm4ekeyqv4si_uuu (__a, __b); | |
33135 | } | |
33136 | ||
33137 | #pragma GCC pop_options | |
33138 | ||
33139 | #pragma GCC push_options | |
33140 | #pragma GCC target(("arch=armv8.2-a+crypto")) | |
33141 | ||
33142 | __extension__ extern __inline uint64x2_t | |
33143 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33144 | vsha512hq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) | |
33145 | { | |
33146 | return __builtin_aarch64_crypto_sha512hqv2di_uuuu (__a, __b, __c); | |
33147 | } | |
33148 | ||
33149 | __extension__ extern __inline uint64x2_t | |
33150 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33151 | vsha512h2q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) | |
33152 | { | |
33153 | return __builtin_aarch64_crypto_sha512h2qv2di_uuuu (__a, __b, __c); | |
33154 | } | |
33155 | ||
33156 | __extension__ extern __inline uint64x2_t | |
33157 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33158 | vsha512su0q_u64 (uint64x2_t __a, uint64x2_t __b) | |
33159 | { | |
33160 | return __builtin_aarch64_crypto_sha512su0qv2di_uuu (__a, __b); | |
33161 | } | |
33162 | ||
33163 | __extension__ extern __inline uint64x2_t | |
33164 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33165 | vsha512su1q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) | |
33166 | { | |
33167 | return __builtin_aarch64_crypto_sha512su1qv2di_uuuu (__a, __b, __c); | |
33168 | } | |
33169 | ||
f9ff1f0a | 33170 | __extension__ extern __inline uint8x16_t |
33171 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33172 | veor3q_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c) | |
33173 | { | |
33174 | return __builtin_aarch64_eor3qv16qi_uuuu (__a, __b, __c); | |
33175 | } | |
33176 | ||
24f7a05b | 33177 | __extension__ extern __inline uint16x8_t |
33178 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33179 | veor3q_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) | |
33180 | { | |
33181 | return __builtin_aarch64_eor3qv8hi_uuuu (__a, __b, __c); | |
33182 | } | |
33183 | ||
f9ff1f0a | 33184 | __extension__ extern __inline uint32x4_t |
33185 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33186 | veor3q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) | |
33187 | { | |
33188 | return __builtin_aarch64_eor3qv4si_uuuu (__a, __b, __c); | |
33189 | } | |
33190 | ||
33191 | __extension__ extern __inline uint64x2_t | |
33192 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33193 | veor3q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) | |
33194 | { | |
33195 | return __builtin_aarch64_eor3qv2di_uuuu (__a, __b, __c); | |
33196 | } | |
33197 | ||
33198 | ||
33199 | __extension__ extern __inline int8x16_t | |
33200 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33201 | veor3q_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c) | |
33202 | { | |
33203 | return __builtin_aarch64_eor3qv16qi (__a, __b, __c); | |
33204 | } | |
33205 | ||
33206 | __extension__ extern __inline int16x8_t | |
33207 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33208 | veor3q_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) | |
33209 | { | |
33210 | return __builtin_aarch64_eor3qv8hi (__a, __b, __c); | |
33211 | } | |
33212 | ||
33213 | __extension__ extern __inline int32x4_t | |
33214 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33215 | veor3q_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) | |
33216 | { | |
33217 | return __builtin_aarch64_eor3qv4si (__a, __b, __c); | |
33218 | } | |
33219 | ||
33220 | __extension__ extern __inline int64x2_t | |
33221 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33222 | veor3q_s64 (int64x2_t __a, int64x2_t __b, int64x2_t __c) | |
33223 | { | |
33224 | return __builtin_aarch64_eor3qv2di (__a, __b, __c); | |
33225 | } | |
33226 | ||
24f7a05b | 33227 | __extension__ extern __inline uint64x2_t |
33228 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33229 | vrax1q_u64 (uint64x2_t __a, uint64x2_t __b) | |
33230 | { | |
33231 | return __builtin_aarch64_rax1qv2di_uuu (__a, __b); | |
33232 | } | |
33233 | ||
33234 | __extension__ extern __inline uint64x2_t | |
33235 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33236 | vxarq_u64 (uint64x2_t __a, uint64x2_t __b, const int imm6) | |
33237 | { | |
33238 | return __builtin_aarch64_xarqv2di_uuus (__a, __b,imm6); | |
33239 | } | |
33240 | ||
f9ff1f0a | 33241 | __extension__ extern __inline uint8x16_t |
33242 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33243 | vbcaxq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c) | |
33244 | { | |
33245 | return __builtin_aarch64_bcaxqv16qi_uuuu (__a, __b, __c); | |
33246 | } | |
33247 | ||
24f7a05b | 33248 | __extension__ extern __inline uint16x8_t |
33249 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33250 | vbcaxq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) | |
33251 | { | |
33252 | return __builtin_aarch64_bcaxqv8hi_uuuu (__a, __b, __c); | |
33253 | } | |
f9ff1f0a | 33254 | |
33255 | __extension__ extern __inline uint32x4_t | |
33256 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33257 | vbcaxq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) | |
33258 | { | |
33259 | return __builtin_aarch64_bcaxqv4si_uuuu (__a, __b, __c); | |
33260 | } | |
33261 | ||
33262 | __extension__ extern __inline uint64x2_t | |
33263 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33264 | vbcaxq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) | |
33265 | { | |
33266 | return __builtin_aarch64_bcaxqv2di_uuuu (__a, __b, __c); | |
33267 | } | |
33268 | ||
33269 | __extension__ extern __inline int8x16_t | |
33270 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33271 | vbcaxq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c) | |
33272 | { | |
33273 | return __builtin_aarch64_bcaxqv16qi (__a, __b, __c); | |
33274 | } | |
33275 | ||
33276 | __extension__ extern __inline int16x8_t | |
33277 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33278 | vbcaxq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) | |
33279 | { | |
33280 | return __builtin_aarch64_bcaxqv8hi (__a, __b, __c); | |
33281 | } | |
33282 | ||
33283 | __extension__ extern __inline int32x4_t | |
33284 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33285 | vbcaxq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) | |
33286 | { | |
33287 | return __builtin_aarch64_bcaxqv4si (__a, __b, __c); | |
33288 | } | |
33289 | ||
33290 | __extension__ extern __inline int64x2_t | |
33291 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33292 | vbcaxq_s64 (int64x2_t __a, int64x2_t __b, int64x2_t __c) | |
33293 | { | |
33294 | return __builtin_aarch64_bcaxqv2di (__a, __b, __c); | |
33295 | } | |
33296 | ||
33297 | ||
24f7a05b | 33298 | #pragma GCC pop_options |
33299 | ||
33300 | #pragma GCC push_options | |
33301 | #pragma GCC target(("arch=armv8.2-a+fp16fml")) | |
33302 | ||
33303 | __extension__ extern __inline float32x2_t | |
33304 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33305 | vfmlal_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b) | |
33306 | { | |
33307 | return __builtin_aarch64_fmlal_lowv2sf (__r, __a, __b); | |
33308 | } | |
33309 | ||
33310 | __extension__ extern __inline float32x2_t | |
33311 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33312 | vfmlsl_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b) | |
33313 | { | |
33314 | return __builtin_aarch64_fmlsl_lowv2sf (__r, __a, __b); | |
33315 | } | |
33316 | ||
33317 | __extension__ extern __inline float32x4_t | |
33318 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33319 | vfmlalq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b) | |
33320 | { | |
33321 | return __builtin_aarch64_fmlalq_lowv4sf (__r, __a, __b); | |
33322 | } | |
33323 | ||
33324 | __extension__ extern __inline float32x4_t | |
33325 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33326 | vfmlslq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b) | |
33327 | { | |
33328 | return __builtin_aarch64_fmlslq_lowv4sf (__r, __a, __b); | |
33329 | } | |
33330 | ||
33331 | __extension__ extern __inline float32x2_t | |
33332 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33333 | vfmlal_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b) | |
33334 | { | |
33335 | return __builtin_aarch64_fmlal_highv2sf (__r, __a, __b); | |
33336 | } | |
33337 | ||
33338 | __extension__ extern __inline float32x2_t | |
33339 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33340 | vfmlsl_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b) | |
33341 | { | |
33342 | return __builtin_aarch64_fmlsl_highv2sf (__r, __a, __b); | |
33343 | } | |
33344 | ||
33345 | __extension__ extern __inline float32x4_t | |
33346 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33347 | vfmlalq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b) | |
33348 | { | |
33349 | return __builtin_aarch64_fmlalq_highv4sf (__r, __a, __b); | |
33350 | } | |
33351 | ||
33352 | __extension__ extern __inline float32x4_t | |
33353 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33354 | vfmlslq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b) | |
33355 | { | |
33356 | return __builtin_aarch64_fmlslq_highv4sf (__r, __a, __b); | |
33357 | } | |
33358 | ||
33359 | __extension__ extern __inline float32x2_t | |
33360 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33361 | vfmlal_lane_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, | |
33362 | const int __lane) | |
33363 | { | |
33364 | return __builtin_aarch64_fmlal_lane_lowv2sf (__r, __a, __b, __lane); | |
33365 | } | |
33366 | ||
33367 | __extension__ extern __inline float32x2_t | |
33368 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33369 | vfmlsl_lane_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, | |
33370 | const int __lane) | |
33371 | { | |
33372 | return __builtin_aarch64_fmlsl_lane_lowv2sf (__r, __a, __b, __lane); | |
33373 | } | |
33374 | ||
33375 | __extension__ extern __inline float32x2_t | |
33376 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33377 | vfmlal_laneq_low_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, | |
33378 | const int __lane) | |
33379 | { | |
33380 | return __builtin_aarch64_fmlal_laneq_lowv2sf (__r, __a, __b, __lane); | |
33381 | } | |
33382 | ||
33383 | __extension__ extern __inline float32x2_t | |
33384 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33385 | vfmlsl_laneq_low_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, | |
33386 | const int __lane) | |
33387 | { | |
33388 | return __builtin_aarch64_fmlsl_laneq_lowv2sf (__r, __a, __b, __lane); | |
33389 | } | |
33390 | ||
33391 | __extension__ extern __inline float32x4_t | |
33392 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33393 | vfmlalq_lane_low_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, | |
33394 | const int __lane) | |
33395 | { | |
33396 | return __builtin_aarch64_fmlalq_lane_lowv4sf (__r, __a, __b, __lane); | |
33397 | } | |
33398 | ||
33399 | __extension__ extern __inline float32x4_t | |
33400 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33401 | vfmlslq_lane_low_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, | |
33402 | const int __lane) | |
33403 | { | |
33404 | return __builtin_aarch64_fmlslq_lane_lowv4sf (__r, __a, __b, __lane); | |
33405 | } | |
33406 | ||
33407 | __extension__ extern __inline float32x4_t | |
33408 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33409 | vfmlalq_laneq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, | |
33410 | const int __lane) | |
33411 | { | |
33412 | return __builtin_aarch64_fmlalq_laneq_lowv4sf (__r, __a, __b, __lane); | |
33413 | } | |
33414 | ||
33415 | __extension__ extern __inline float32x4_t | |
33416 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33417 | vfmlslq_laneq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, | |
33418 | const int __lane) | |
33419 | { | |
33420 | return __builtin_aarch64_fmlslq_laneq_lowv4sf (__r, __a, __b, __lane); | |
33421 | } | |
33422 | ||
33423 | __extension__ extern __inline float32x2_t | |
33424 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33425 | vfmlal_lane_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, | |
33426 | const int __lane) | |
33427 | { | |
33428 | return __builtin_aarch64_fmlal_lane_highv2sf (__r, __a, __b, __lane); | |
33429 | } | |
33430 | ||
33431 | __extension__ extern __inline float32x2_t | |
33432 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33433 | vfmlsl_lane_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, | |
33434 | const int __lane) | |
33435 | { | |
33436 | return __builtin_aarch64_fmlsl_lane_highv2sf (__r, __a, __b, __lane); | |
33437 | } | |
33438 | ||
33439 | __extension__ extern __inline float32x2_t | |
33440 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33441 | vfmlal_laneq_high_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, | |
33442 | const int __lane) | |
33443 | { | |
33444 | return __builtin_aarch64_fmlal_laneq_highv2sf (__r, __a, __b, __lane); | |
33445 | } | |
33446 | ||
33447 | __extension__ extern __inline float32x2_t | |
33448 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33449 | vfmlsl_laneq_high_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, | |
33450 | const int __lane) | |
33451 | { | |
33452 | return __builtin_aarch64_fmlsl_laneq_highv2sf (__r, __a, __b, __lane); | |
33453 | } | |
33454 | ||
33455 | __extension__ extern __inline float32x4_t | |
33456 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33457 | vfmlalq_lane_high_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, | |
33458 | const int __lane) | |
33459 | { | |
33460 | return __builtin_aarch64_fmlalq_lane_highv4sf (__r, __a, __b, __lane); | |
33461 | } | |
33462 | ||
33463 | __extension__ extern __inline float32x4_t | |
33464 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33465 | vfmlslq_lane_high_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, | |
33466 | const int __lane) | |
33467 | { | |
33468 | return __builtin_aarch64_fmlslq_lane_highv4sf (__r, __a, __b, __lane); | |
33469 | } | |
33470 | ||
33471 | __extension__ extern __inline float32x4_t | |
33472 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33473 | vfmlalq_laneq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, | |
33474 | const int __lane) | |
33475 | { | |
33476 | return __builtin_aarch64_fmlalq_laneq_highv4sf (__r, __a, __b, __lane); | |
33477 | } | |
33478 | ||
33479 | __extension__ extern __inline float32x4_t | |
33480 | __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33481 | vfmlslq_laneq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, | |
33482 | const int __lane) | |
33483 | { | |
33484 | return __builtin_aarch64_fmlslq_laneq_highv4sf (__r, __a, __b, __lane); | |
33485 | } | |
33486 | ||
33487 | #pragma GCC pop_options | |
33488 | ||
5e7bd7ac | 33489 | #undef __aarch64_vget_lane_any |
5e7bd7ac | 33490 | |
2d67c34c | 33491 | #undef __aarch64_vdup_lane_any |
7d8a6c0e | 33492 | #undef __aarch64_vdup_lane_f16 |
2d67c34c | 33493 | #undef __aarch64_vdup_lane_f32 |
33494 | #undef __aarch64_vdup_lane_f64 | |
33495 | #undef __aarch64_vdup_lane_p8 | |
33496 | #undef __aarch64_vdup_lane_p16 | |
33497 | #undef __aarch64_vdup_lane_s8 | |
33498 | #undef __aarch64_vdup_lane_s16 | |
33499 | #undef __aarch64_vdup_lane_s32 | |
33500 | #undef __aarch64_vdup_lane_s64 | |
33501 | #undef __aarch64_vdup_lane_u8 | |
33502 | #undef __aarch64_vdup_lane_u16 | |
33503 | #undef __aarch64_vdup_lane_u32 | |
33504 | #undef __aarch64_vdup_lane_u64 | |
7d8a6c0e | 33505 | #undef __aarch64_vdup_laneq_f16 |
2d67c34c | 33506 | #undef __aarch64_vdup_laneq_f32 |
33507 | #undef __aarch64_vdup_laneq_f64 | |
33508 | #undef __aarch64_vdup_laneq_p8 | |
33509 | #undef __aarch64_vdup_laneq_p16 | |
33510 | #undef __aarch64_vdup_laneq_s8 | |
33511 | #undef __aarch64_vdup_laneq_s16 | |
33512 | #undef __aarch64_vdup_laneq_s32 | |
33513 | #undef __aarch64_vdup_laneq_s64 | |
33514 | #undef __aarch64_vdup_laneq_u8 | |
33515 | #undef __aarch64_vdup_laneq_u16 | |
33516 | #undef __aarch64_vdup_laneq_u32 | |
33517 | #undef __aarch64_vdup_laneq_u64 | |
7d8a6c0e | 33518 | #undef __aarch64_vdupq_lane_f16 |
2d67c34c | 33519 | #undef __aarch64_vdupq_lane_f32 |
33520 | #undef __aarch64_vdupq_lane_f64 | |
33521 | #undef __aarch64_vdupq_lane_p8 | |
33522 | #undef __aarch64_vdupq_lane_p16 | |
33523 | #undef __aarch64_vdupq_lane_s8 | |
33524 | #undef __aarch64_vdupq_lane_s16 | |
33525 | #undef __aarch64_vdupq_lane_s32 | |
33526 | #undef __aarch64_vdupq_lane_s64 | |
33527 | #undef __aarch64_vdupq_lane_u8 | |
33528 | #undef __aarch64_vdupq_lane_u16 | |
33529 | #undef __aarch64_vdupq_lane_u32 | |
33530 | #undef __aarch64_vdupq_lane_u64 | |
7d8a6c0e | 33531 | #undef __aarch64_vdupq_laneq_f16 |
2d67c34c | 33532 | #undef __aarch64_vdupq_laneq_f32 |
33533 | #undef __aarch64_vdupq_laneq_f64 | |
33534 | #undef __aarch64_vdupq_laneq_p8 | |
33535 | #undef __aarch64_vdupq_laneq_p16 | |
33536 | #undef __aarch64_vdupq_laneq_s8 | |
33537 | #undef __aarch64_vdupq_laneq_s16 | |
33538 | #undef __aarch64_vdupq_laneq_s32 | |
33539 | #undef __aarch64_vdupq_laneq_s64 | |
33540 | #undef __aarch64_vdupq_laneq_u8 | |
33541 | #undef __aarch64_vdupq_laneq_u16 | |
33542 | #undef __aarch64_vdupq_laneq_u32 | |
33543 | #undef __aarch64_vdupq_laneq_u64 | |
33544 | ||
1ed5a048 | 33545 | #endif |