]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/aarch64/arm_neon.h
Update copyright years.
[thirdparty/gcc.git] / gcc / config / aarch64 / arm_neon.h
CommitLineData
43e9d192
IB
1/* ARM NEON intrinsics include file.
2
99dee823 3 Copyright (C) 2011-2021 Free Software Foundation, Inc.
43e9d192
IB
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
e4ea20c8
KT
30#pragma GCC push_options
31#pragma GCC target ("+nothing+simd")
2a62514f 32
43e9d192
IB
33#include <stdint.h>
34
dc8d7a0f
TB
35#define __AARCH64_UINT64_C(__C) ((uint64_t) __C)
36#define __AARCH64_INT64_C(__C) ((int64_t) __C)
37
f9d53c27
TB
38typedef __Int8x8_t int8x8_t;
39typedef __Int16x4_t int16x4_t;
40typedef __Int32x2_t int32x2_t;
41typedef __Int64x1_t int64x1_t;
71a11456 42typedef __Float16x4_t float16x4_t;
f9d53c27
TB
43typedef __Float32x2_t float32x2_t;
44typedef __Poly8x8_t poly8x8_t;
45typedef __Poly16x4_t poly16x4_t;
46typedef __Uint8x8_t uint8x8_t;
47typedef __Uint16x4_t uint16x4_t;
48typedef __Uint32x2_t uint32x2_t;
49typedef __Float64x1_t float64x1_t;
50typedef __Uint64x1_t uint64x1_t;
51typedef __Int8x16_t int8x16_t;
52typedef __Int16x8_t int16x8_t;
53typedef __Int32x4_t int32x4_t;
54typedef __Int64x2_t int64x2_t;
71a11456 55typedef __Float16x8_t float16x8_t;
f9d53c27
TB
56typedef __Float32x4_t float32x4_t;
57typedef __Float64x2_t float64x2_t;
58typedef __Poly8x16_t poly8x16_t;
59typedef __Poly16x8_t poly16x8_t;
60typedef __Poly64x2_t poly64x2_t;
159b8724 61typedef __Poly64x1_t poly64x1_t;
f9d53c27
TB
62typedef __Uint8x16_t uint8x16_t;
63typedef __Uint16x8_t uint16x8_t;
64typedef __Uint32x4_t uint32x4_t;
65typedef __Uint64x2_t uint64x2_t;
66
67typedef __Poly8_t poly8_t;
68typedef __Poly16_t poly16_t;
69typedef __Poly64_t poly64_t;
70typedef __Poly128_t poly128_t;
43e9d192 71
71a11456 72typedef __fp16 float16_t;
43e9d192
IB
73typedef float float32_t;
74typedef double float64_t;
43e9d192 75
abbe1ed2
SMW
76typedef __Bfloat16x4_t bfloat16x4_t;
77typedef __Bfloat16x8_t bfloat16x8_t;
78
e603cd43
MI
79typedef struct bfloat16x4x2_t
80{
81 bfloat16x4_t val[2];
82} bfloat16x4x2_t;
83
84typedef struct bfloat16x8x2_t
85{
86 bfloat16x8_t val[2];
87} bfloat16x8x2_t;
88
89typedef struct bfloat16x4x3_t
90{
91 bfloat16x4_t val[3];
92} bfloat16x4x3_t;
93
94typedef struct bfloat16x8x3_t
95{
96 bfloat16x8_t val[3];
97} bfloat16x8x3_t;
98
99typedef struct bfloat16x4x4_t
100{
101 bfloat16x4_t val[4];
102} bfloat16x4x4_t;
103
104typedef struct bfloat16x8x4_t
105{
106 bfloat16x8_t val[4];
107} bfloat16x8x4_t;
108
43e9d192
IB
109typedef struct int8x8x2_t
110{
111 int8x8_t val[2];
112} int8x8x2_t;
113
114typedef struct int8x16x2_t
115{
116 int8x16_t val[2];
117} int8x16x2_t;
118
119typedef struct int16x4x2_t
120{
121 int16x4_t val[2];
122} int16x4x2_t;
123
124typedef struct int16x8x2_t
125{
126 int16x8_t val[2];
127} int16x8x2_t;
128
129typedef struct int32x2x2_t
130{
131 int32x2_t val[2];
132} int32x2x2_t;
133
134typedef struct int32x4x2_t
135{
136 int32x4_t val[2];
137} int32x4x2_t;
138
139typedef struct int64x1x2_t
140{
141 int64x1_t val[2];
142} int64x1x2_t;
143
144typedef struct int64x2x2_t
145{
146 int64x2_t val[2];
147} int64x2x2_t;
148
149typedef struct uint8x8x2_t
150{
151 uint8x8_t val[2];
152} uint8x8x2_t;
153
154typedef struct uint8x16x2_t
155{
156 uint8x16_t val[2];
157} uint8x16x2_t;
158
159typedef struct uint16x4x2_t
160{
161 uint16x4_t val[2];
162} uint16x4x2_t;
163
164typedef struct uint16x8x2_t
165{
166 uint16x8_t val[2];
167} uint16x8x2_t;
168
169typedef struct uint32x2x2_t
170{
171 uint32x2_t val[2];
172} uint32x2x2_t;
173
174typedef struct uint32x4x2_t
175{
176 uint32x4_t val[2];
177} uint32x4x2_t;
178
179typedef struct uint64x1x2_t
180{
181 uint64x1_t val[2];
182} uint64x1x2_t;
183
184typedef struct uint64x2x2_t
185{
186 uint64x2_t val[2];
187} uint64x2x2_t;
188
7c369485
AL
189typedef struct float16x4x2_t
190{
191 float16x4_t val[2];
192} float16x4x2_t;
193
194typedef struct float16x8x2_t
195{
196 float16x8_t val[2];
197} float16x8x2_t;
198
43e9d192
IB
199typedef struct float32x2x2_t
200{
201 float32x2_t val[2];
202} float32x2x2_t;
203
204typedef struct float32x4x2_t
205{
206 float32x4_t val[2];
207} float32x4x2_t;
208
209typedef struct float64x2x2_t
210{
211 float64x2_t val[2];
212} float64x2x2_t;
213
214typedef struct float64x1x2_t
215{
216 float64x1_t val[2];
217} float64x1x2_t;
218
219typedef struct poly8x8x2_t
220{
221 poly8x8_t val[2];
222} poly8x8x2_t;
223
224typedef struct poly8x16x2_t
225{
226 poly8x16_t val[2];
227} poly8x16x2_t;
228
229typedef struct poly16x4x2_t
230{
231 poly16x4_t val[2];
232} poly16x4x2_t;
233
234typedef struct poly16x8x2_t
235{
236 poly16x8_t val[2];
237} poly16x8x2_t;
238
159b8724
TC
239typedef struct poly64x1x2_t
240{
241 poly64x1_t val[2];
242} poly64x1x2_t;
243
244typedef struct poly64x1x3_t
245{
246 poly64x1_t val[3];
247} poly64x1x3_t;
248
249typedef struct poly64x1x4_t
250{
251 poly64x1_t val[4];
252} poly64x1x4_t;
253
254typedef struct poly64x2x2_t
255{
256 poly64x2_t val[2];
257} poly64x2x2_t;
258
259typedef struct poly64x2x3_t
260{
261 poly64x2_t val[3];
262} poly64x2x3_t;
263
264typedef struct poly64x2x4_t
265{
266 poly64x2_t val[4];
267} poly64x2x4_t;
268
43e9d192
IB
269typedef struct int8x8x3_t
270{
271 int8x8_t val[3];
272} int8x8x3_t;
273
274typedef struct int8x16x3_t
275{
276 int8x16_t val[3];
277} int8x16x3_t;
278
279typedef struct int16x4x3_t
280{
281 int16x4_t val[3];
282} int16x4x3_t;
283
284typedef struct int16x8x3_t
285{
286 int16x8_t val[3];
287} int16x8x3_t;
288
289typedef struct int32x2x3_t
290{
291 int32x2_t val[3];
292} int32x2x3_t;
293
294typedef struct int32x4x3_t
295{
296 int32x4_t val[3];
297} int32x4x3_t;
298
299typedef struct int64x1x3_t
300{
301 int64x1_t val[3];
302} int64x1x3_t;
303
304typedef struct int64x2x3_t
305{
306 int64x2_t val[3];
307} int64x2x3_t;
308
309typedef struct uint8x8x3_t
310{
311 uint8x8_t val[3];
312} uint8x8x3_t;
313
314typedef struct uint8x16x3_t
315{
316 uint8x16_t val[3];
317} uint8x16x3_t;
318
319typedef struct uint16x4x3_t
320{
321 uint16x4_t val[3];
322} uint16x4x3_t;
323
324typedef struct uint16x8x3_t
325{
326 uint16x8_t val[3];
327} uint16x8x3_t;
328
329typedef struct uint32x2x3_t
330{
331 uint32x2_t val[3];
332} uint32x2x3_t;
333
334typedef struct uint32x4x3_t
335{
336 uint32x4_t val[3];
337} uint32x4x3_t;
338
339typedef struct uint64x1x3_t
340{
341 uint64x1_t val[3];
342} uint64x1x3_t;
343
344typedef struct uint64x2x3_t
345{
346 uint64x2_t val[3];
347} uint64x2x3_t;
348
7c369485
AL
349typedef struct float16x4x3_t
350{
351 float16x4_t val[3];
352} float16x4x3_t;
353
354typedef struct float16x8x3_t
355{
356 float16x8_t val[3];
357} float16x8x3_t;
358
43e9d192
IB
359typedef struct float32x2x3_t
360{
361 float32x2_t val[3];
362} float32x2x3_t;
363
364typedef struct float32x4x3_t
365{
366 float32x4_t val[3];
367} float32x4x3_t;
368
369typedef struct float64x2x3_t
370{
371 float64x2_t val[3];
372} float64x2x3_t;
373
374typedef struct float64x1x3_t
375{
376 float64x1_t val[3];
377} float64x1x3_t;
378
379typedef struct poly8x8x3_t
380{
381 poly8x8_t val[3];
382} poly8x8x3_t;
383
384typedef struct poly8x16x3_t
385{
386 poly8x16_t val[3];
387} poly8x16x3_t;
388
389typedef struct poly16x4x3_t
390{
391 poly16x4_t val[3];
392} poly16x4x3_t;
393
394typedef struct poly16x8x3_t
395{
396 poly16x8_t val[3];
397} poly16x8x3_t;
398
399typedef struct int8x8x4_t
400{
401 int8x8_t val[4];
402} int8x8x4_t;
403
404typedef struct int8x16x4_t
405{
406 int8x16_t val[4];
407} int8x16x4_t;
408
409typedef struct int16x4x4_t
410{
411 int16x4_t val[4];
412} int16x4x4_t;
413
414typedef struct int16x8x4_t
415{
416 int16x8_t val[4];
417} int16x8x4_t;
418
419typedef struct int32x2x4_t
420{
421 int32x2_t val[4];
422} int32x2x4_t;
423
424typedef struct int32x4x4_t
425{
426 int32x4_t val[4];
427} int32x4x4_t;
428
429typedef struct int64x1x4_t
430{
431 int64x1_t val[4];
432} int64x1x4_t;
433
434typedef struct int64x2x4_t
435{
436 int64x2_t val[4];
437} int64x2x4_t;
438
439typedef struct uint8x8x4_t
440{
441 uint8x8_t val[4];
442} uint8x8x4_t;
443
444typedef struct uint8x16x4_t
445{
446 uint8x16_t val[4];
447} uint8x16x4_t;
448
449typedef struct uint16x4x4_t
450{
451 uint16x4_t val[4];
452} uint16x4x4_t;
453
454typedef struct uint16x8x4_t
455{
456 uint16x8_t val[4];
457} uint16x8x4_t;
458
459typedef struct uint32x2x4_t
460{
461 uint32x2_t val[4];
462} uint32x2x4_t;
463
464typedef struct uint32x4x4_t
465{
466 uint32x4_t val[4];
467} uint32x4x4_t;
468
469typedef struct uint64x1x4_t
470{
471 uint64x1_t val[4];
472} uint64x1x4_t;
473
474typedef struct uint64x2x4_t
475{
476 uint64x2_t val[4];
477} uint64x2x4_t;
478
7c369485
AL
479typedef struct float16x4x4_t
480{
481 float16x4_t val[4];
482} float16x4x4_t;
483
484typedef struct float16x8x4_t
485{
486 float16x8_t val[4];
487} float16x8x4_t;
488
43e9d192
IB
489typedef struct float32x2x4_t
490{
491 float32x2_t val[4];
492} float32x2x4_t;
493
494typedef struct float32x4x4_t
495{
496 float32x4_t val[4];
497} float32x4x4_t;
498
499typedef struct float64x2x4_t
500{
501 float64x2_t val[4];
502} float64x2x4_t;
503
504typedef struct float64x1x4_t
505{
506 float64x1_t val[4];
507} float64x1x4_t;
508
509typedef struct poly8x8x4_t
510{
511 poly8x8_t val[4];
512} poly8x8x4_t;
513
514typedef struct poly8x16x4_t
515{
516 poly8x16_t val[4];
517} poly8x16x4_t;
518
519typedef struct poly16x4x4_t
520{
521 poly16x4_t val[4];
522} poly16x4x4_t;
523
524typedef struct poly16x8x4_t
525{
526 poly16x8_t val[4];
527} poly16x8x4_t;
528
91bd4114 529/* __aarch64_vdup_lane internal macros. */
ed225d0c
AL
530#define __aarch64_vdup_lane_any(__size, __q, __a, __b) \
531 vdup##__q##_n_##__size (__aarch64_vget_lane_any (__a, __b))
91bd4114 532
358decd5
JW
533#define __aarch64_vdup_lane_f16(__a, __b) \
534 __aarch64_vdup_lane_any (f16, , __a, __b)
91bd4114 535#define __aarch64_vdup_lane_f32(__a, __b) \
ed225d0c 536 __aarch64_vdup_lane_any (f32, , __a, __b)
c6a29a09 537#define __aarch64_vdup_lane_f64(__a, __b) \
ed225d0c 538 __aarch64_vdup_lane_any (f64, , __a, __b)
91bd4114 539#define __aarch64_vdup_lane_p8(__a, __b) \
ed225d0c 540 __aarch64_vdup_lane_any (p8, , __a, __b)
91bd4114 541#define __aarch64_vdup_lane_p16(__a, __b) \
ed225d0c 542 __aarch64_vdup_lane_any (p16, , __a, __b)
159b8724
TC
543#define __aarch64_vdup_lane_p64(__a, __b) \
544 __aarch64_vdup_lane_any (p64, , __a, __b)
91bd4114 545#define __aarch64_vdup_lane_s8(__a, __b) \
ed225d0c 546 __aarch64_vdup_lane_any (s8, , __a, __b)
91bd4114 547#define __aarch64_vdup_lane_s16(__a, __b) \
ed225d0c 548 __aarch64_vdup_lane_any (s16, , __a, __b)
91bd4114 549#define __aarch64_vdup_lane_s32(__a, __b) \
ed225d0c 550 __aarch64_vdup_lane_any (s32, , __a, __b)
096c59be 551#define __aarch64_vdup_lane_s64(__a, __b) \
ed225d0c 552 __aarch64_vdup_lane_any (s64, , __a, __b)
91bd4114 553#define __aarch64_vdup_lane_u8(__a, __b) \
ed225d0c 554 __aarch64_vdup_lane_any (u8, , __a, __b)
91bd4114 555#define __aarch64_vdup_lane_u16(__a, __b) \
ed225d0c 556 __aarch64_vdup_lane_any (u16, , __a, __b)
91bd4114 557#define __aarch64_vdup_lane_u32(__a, __b) \
ed225d0c 558 __aarch64_vdup_lane_any (u32, , __a, __b)
096c59be 559#define __aarch64_vdup_lane_u64(__a, __b) \
ed225d0c 560 __aarch64_vdup_lane_any (u64, , __a, __b)
91bd4114
JG
561
562/* __aarch64_vdup_laneq internal macros. */
358decd5
JW
563#define __aarch64_vdup_laneq_f16(__a, __b) \
564 __aarch64_vdup_lane_any (f16, , __a, __b)
91bd4114 565#define __aarch64_vdup_laneq_f32(__a, __b) \
ed225d0c 566 __aarch64_vdup_lane_any (f32, , __a, __b)
91bd4114 567#define __aarch64_vdup_laneq_f64(__a, __b) \
ed225d0c 568 __aarch64_vdup_lane_any (f64, , __a, __b)
91bd4114 569#define __aarch64_vdup_laneq_p8(__a, __b) \
ed225d0c 570 __aarch64_vdup_lane_any (p8, , __a, __b)
91bd4114 571#define __aarch64_vdup_laneq_p16(__a, __b) \
ed225d0c 572 __aarch64_vdup_lane_any (p16, , __a, __b)
159b8724
TC
573#define __aarch64_vdup_laneq_p64(__a, __b) \
574 __aarch64_vdup_lane_any (p64, , __a, __b)
91bd4114 575#define __aarch64_vdup_laneq_s8(__a, __b) \
ed225d0c 576 __aarch64_vdup_lane_any (s8, , __a, __b)
91bd4114 577#define __aarch64_vdup_laneq_s16(__a, __b) \
ed225d0c 578 __aarch64_vdup_lane_any (s16, , __a, __b)
91bd4114 579#define __aarch64_vdup_laneq_s32(__a, __b) \
ed225d0c 580 __aarch64_vdup_lane_any (s32, , __a, __b)
91bd4114 581#define __aarch64_vdup_laneq_s64(__a, __b) \
ed225d0c 582 __aarch64_vdup_lane_any (s64, , __a, __b)
91bd4114 583#define __aarch64_vdup_laneq_u8(__a, __b) \
ed225d0c 584 __aarch64_vdup_lane_any (u8, , __a, __b)
91bd4114 585#define __aarch64_vdup_laneq_u16(__a, __b) \
ed225d0c 586 __aarch64_vdup_lane_any (u16, , __a, __b)
91bd4114 587#define __aarch64_vdup_laneq_u32(__a, __b) \
ed225d0c 588 __aarch64_vdup_lane_any (u32, , __a, __b)
91bd4114 589#define __aarch64_vdup_laneq_u64(__a, __b) \
ed225d0c 590 __aarch64_vdup_lane_any (u64, , __a, __b)
91bd4114
JG
591
592/* __aarch64_vdupq_lane internal macros. */
358decd5
JW
593#define __aarch64_vdupq_lane_f16(__a, __b) \
594 __aarch64_vdup_lane_any (f16, q, __a, __b)
91bd4114 595#define __aarch64_vdupq_lane_f32(__a, __b) \
ed225d0c 596 __aarch64_vdup_lane_any (f32, q, __a, __b)
c6a29a09 597#define __aarch64_vdupq_lane_f64(__a, __b) \
ed225d0c 598 __aarch64_vdup_lane_any (f64, q, __a, __b)
91bd4114 599#define __aarch64_vdupq_lane_p8(__a, __b) \
ed225d0c 600 __aarch64_vdup_lane_any (p8, q, __a, __b)
91bd4114 601#define __aarch64_vdupq_lane_p16(__a, __b) \
ed225d0c 602 __aarch64_vdup_lane_any (p16, q, __a, __b)
159b8724
TC
603#define __aarch64_vdupq_lane_p64(__a, __b) \
604 __aarch64_vdup_lane_any (p64, q, __a, __b)
91bd4114 605#define __aarch64_vdupq_lane_s8(__a, __b) \
ed225d0c 606 __aarch64_vdup_lane_any (s8, q, __a, __b)
91bd4114 607#define __aarch64_vdupq_lane_s16(__a, __b) \
ed225d0c 608 __aarch64_vdup_lane_any (s16, q, __a, __b)
91bd4114 609#define __aarch64_vdupq_lane_s32(__a, __b) \
ed225d0c 610 __aarch64_vdup_lane_any (s32, q, __a, __b)
096c59be 611#define __aarch64_vdupq_lane_s64(__a, __b) \
ed225d0c 612 __aarch64_vdup_lane_any (s64, q, __a, __b)
91bd4114 613#define __aarch64_vdupq_lane_u8(__a, __b) \
ed225d0c 614 __aarch64_vdup_lane_any (u8, q, __a, __b)
91bd4114 615#define __aarch64_vdupq_lane_u16(__a, __b) \
ed225d0c 616 __aarch64_vdup_lane_any (u16, q, __a, __b)
91bd4114 617#define __aarch64_vdupq_lane_u32(__a, __b) \
ed225d0c 618 __aarch64_vdup_lane_any (u32, q, __a, __b)
096c59be 619#define __aarch64_vdupq_lane_u64(__a, __b) \
ed225d0c 620 __aarch64_vdup_lane_any (u64, q, __a, __b)
91bd4114
JG
621
622/* __aarch64_vdupq_laneq internal macros. */
358decd5
JW
623#define __aarch64_vdupq_laneq_f16(__a, __b) \
624 __aarch64_vdup_lane_any (f16, q, __a, __b)
91bd4114 625#define __aarch64_vdupq_laneq_f32(__a, __b) \
ed225d0c 626 __aarch64_vdup_lane_any (f32, q, __a, __b)
91bd4114 627#define __aarch64_vdupq_laneq_f64(__a, __b) \
ed225d0c 628 __aarch64_vdup_lane_any (f64, q, __a, __b)
91bd4114 629#define __aarch64_vdupq_laneq_p8(__a, __b) \
ed225d0c 630 __aarch64_vdup_lane_any (p8, q, __a, __b)
91bd4114 631#define __aarch64_vdupq_laneq_p16(__a, __b) \
ed225d0c 632 __aarch64_vdup_lane_any (p16, q, __a, __b)
159b8724
TC
633#define __aarch64_vdupq_laneq_p64(__a, __b) \
634 __aarch64_vdup_lane_any (p64, q, __a, __b)
91bd4114 635#define __aarch64_vdupq_laneq_s8(__a, __b) \
ed225d0c 636 __aarch64_vdup_lane_any (s8, q, __a, __b)
91bd4114 637#define __aarch64_vdupq_laneq_s16(__a, __b) \
ed225d0c 638 __aarch64_vdup_lane_any (s16, q, __a, __b)
91bd4114 639#define __aarch64_vdupq_laneq_s32(__a, __b) \
ed225d0c 640 __aarch64_vdup_lane_any (s32, q, __a, __b)
91bd4114 641#define __aarch64_vdupq_laneq_s64(__a, __b) \
ed225d0c 642 __aarch64_vdup_lane_any (s64, q, __a, __b)
91bd4114 643#define __aarch64_vdupq_laneq_u8(__a, __b) \
ed225d0c 644 __aarch64_vdup_lane_any (u8, q, __a, __b)
91bd4114 645#define __aarch64_vdupq_laneq_u16(__a, __b) \
ed225d0c 646 __aarch64_vdup_lane_any (u16, q, __a, __b)
91bd4114 647#define __aarch64_vdupq_laneq_u32(__a, __b) \
ed225d0c 648 __aarch64_vdup_lane_any (u32, q, __a, __b)
91bd4114 649#define __aarch64_vdupq_laneq_u64(__a, __b) \
ed225d0c 650 __aarch64_vdup_lane_any (u64, q, __a, __b)
91bd4114 651
2310e29f
AL
652/* Internal macro for lane indices. */
653
654#define __AARCH64_NUM_LANES(__v) (sizeof (__v) / sizeof (__v[0]))
661fce82 655#define __AARCH64_LANE_CHECK(__vec, __idx) \
9c4f25cc 656 __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __idx)
fdaddc1b 657
fdaddc1b
AL
658/* For big-endian, GCC's vector indices are the opposite way around
659 to the architectural lane indices used by Neon intrinsics. */
2310e29f
AL
660#ifdef __AARCH64EB__
661#define __aarch64_lane(__vec, __idx) (__AARCH64_NUM_LANES (__vec) - 1 - __idx)
fdaddc1b 662#else
2310e29f 663#define __aarch64_lane(__vec, __idx) __idx
fdaddc1b
AL
664#endif
665
ed225d0c
AL
666/* vget_lane internal macro. */
667#define __aarch64_vget_lane_any(__vec, __index) \
668 __extension__ \
669 ({ \
670 __AARCH64_LANE_CHECK (__vec, __index); \
671 __vec[__aarch64_lane (__vec, __index)]; \
672 })
fdaddc1b 673
ed225d0c 674/* vset_lane and vld1_lane internal macro. */
2310e29f
AL
675#define __aarch64_vset_lane_any(__elem, __vec, __index) \
676 __extension__ \
677 ({ \
661fce82 678 __AARCH64_LANE_CHECK (__vec, __index); \
2310e29f
AL
679 __vec[__aarch64_lane (__vec, __index)] = __elem; \
680 __vec; \
681 })
fdaddc1b 682
66adb8eb 683/* vadd */
a063e204
TC
684__extension__ extern __inline int8x8_t
685__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
686vadd_s8 (int8x8_t __a, int8x8_t __b)
687{
688 return __a + __b;
689}
690
a063e204
TC
691__extension__ extern __inline int16x4_t
692__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
693vadd_s16 (int16x4_t __a, int16x4_t __b)
694{
695 return __a + __b;
696}
697
a063e204
TC
698__extension__ extern __inline int32x2_t
699__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
700vadd_s32 (int32x2_t __a, int32x2_t __b)
701{
702 return __a + __b;
703}
704
a063e204
TC
705__extension__ extern __inline float32x2_t
706__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
707vadd_f32 (float32x2_t __a, float32x2_t __b)
708{
709 return __a + __b;
710}
711
a063e204
TC
712__extension__ extern __inline float64x1_t
713__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bed9bae4
AV
714vadd_f64 (float64x1_t __a, float64x1_t __b)
715{
716 return __a + __b;
717}
718
a063e204
TC
719__extension__ extern __inline uint8x8_t
720__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
721vadd_u8 (uint8x8_t __a, uint8x8_t __b)
722{
723 return __a + __b;
724}
725
a063e204
TC
726__extension__ extern __inline uint16x4_t
727__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
728vadd_u16 (uint16x4_t __a, uint16x4_t __b)
729{
730 return __a + __b;
731}
732
a063e204
TC
733__extension__ extern __inline uint32x2_t
734__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
735vadd_u32 (uint32x2_t __a, uint32x2_t __b)
736{
737 return __a + __b;
738}
739
a063e204
TC
740__extension__ extern __inline int64x1_t
741__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
742vadd_s64 (int64x1_t __a, int64x1_t __b)
743{
744 return __a + __b;
745}
746
a063e204
TC
747__extension__ extern __inline uint64x1_t
748__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
749vadd_u64 (uint64x1_t __a, uint64x1_t __b)
750{
751 return __a + __b;
752}
753
a063e204
TC
754__extension__ extern __inline int8x16_t
755__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
756vaddq_s8 (int8x16_t __a, int8x16_t __b)
757{
758 return __a + __b;
759}
760
a063e204
TC
761__extension__ extern __inline int16x8_t
762__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
763vaddq_s16 (int16x8_t __a, int16x8_t __b)
764{
765 return __a + __b;
766}
767
a063e204
TC
768__extension__ extern __inline int32x4_t
769__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
770vaddq_s32 (int32x4_t __a, int32x4_t __b)
771{
772 return __a + __b;
773}
774
a063e204
TC
775__extension__ extern __inline int64x2_t
776__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
777vaddq_s64 (int64x2_t __a, int64x2_t __b)
778{
779 return __a + __b;
780}
781
a063e204
TC
782__extension__ extern __inline float32x4_t
783__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
784vaddq_f32 (float32x4_t __a, float32x4_t __b)
785{
786 return __a + __b;
787}
788
a063e204
TC
789__extension__ extern __inline float64x2_t
790__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
791vaddq_f64 (float64x2_t __a, float64x2_t __b)
792{
793 return __a + __b;
794}
795
a063e204
TC
796__extension__ extern __inline uint8x16_t
797__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
798vaddq_u8 (uint8x16_t __a, uint8x16_t __b)
799{
800 return __a + __b;
801}
802
a063e204
TC
803__extension__ extern __inline uint16x8_t
804__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
805vaddq_u16 (uint16x8_t __a, uint16x8_t __b)
806{
807 return __a + __b;
808}
809
a063e204
TC
810__extension__ extern __inline uint32x4_t
811__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
812vaddq_u32 (uint32x4_t __a, uint32x4_t __b)
813{
814 return __a + __b;
815}
816
a063e204
TC
817__extension__ extern __inline uint64x2_t
818__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
819vaddq_u64 (uint64x2_t __a, uint64x2_t __b)
820{
821 return __a + __b;
822}
823
a063e204
TC
824__extension__ extern __inline int16x8_t
825__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
826vaddl_s8 (int8x8_t __a, int8x8_t __b)
827{
828 return (int16x8_t) __builtin_aarch64_saddlv8qi (__a, __b);
829}
830
a063e204
TC
831__extension__ extern __inline int32x4_t
832__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
833vaddl_s16 (int16x4_t __a, int16x4_t __b)
834{
835 return (int32x4_t) __builtin_aarch64_saddlv4hi (__a, __b);
836}
837
a063e204
TC
838__extension__ extern __inline int64x2_t
839__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
840vaddl_s32 (int32x2_t __a, int32x2_t __b)
841{
842 return (int64x2_t) __builtin_aarch64_saddlv2si (__a, __b);
843}
844
a063e204
TC
845__extension__ extern __inline uint16x8_t
846__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
847vaddl_u8 (uint8x8_t __a, uint8x8_t __b)
848{
849 return (uint16x8_t) __builtin_aarch64_uaddlv8qi ((int8x8_t) __a,
850 (int8x8_t) __b);
851}
852
a063e204
TC
853__extension__ extern __inline uint32x4_t
854__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
855vaddl_u16 (uint16x4_t __a, uint16x4_t __b)
856{
857 return (uint32x4_t) __builtin_aarch64_uaddlv4hi ((int16x4_t) __a,
858 (int16x4_t) __b);
859}
860
a063e204
TC
861__extension__ extern __inline uint64x2_t
862__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
863vaddl_u32 (uint32x2_t __a, uint32x2_t __b)
864{
865 return (uint64x2_t) __builtin_aarch64_uaddlv2si ((int32x2_t) __a,
866 (int32x2_t) __b);
867}
868
a063e204
TC
869__extension__ extern __inline int16x8_t
870__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
871vaddl_high_s8 (int8x16_t __a, int8x16_t __b)
872{
873 return (int16x8_t) __builtin_aarch64_saddl2v16qi (__a, __b);
874}
875
a063e204
TC
876__extension__ extern __inline int32x4_t
877__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
878vaddl_high_s16 (int16x8_t __a, int16x8_t __b)
879{
880 return (int32x4_t) __builtin_aarch64_saddl2v8hi (__a, __b);
881}
882
a063e204
TC
883__extension__ extern __inline int64x2_t
884__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
885vaddl_high_s32 (int32x4_t __a, int32x4_t __b)
886{
887 return (int64x2_t) __builtin_aarch64_saddl2v4si (__a, __b);
888}
889
a063e204
TC
890__extension__ extern __inline uint16x8_t
891__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
892vaddl_high_u8 (uint8x16_t __a, uint8x16_t __b)
893{
894 return (uint16x8_t) __builtin_aarch64_uaddl2v16qi ((int8x16_t) __a,
895 (int8x16_t) __b);
896}
897
a063e204
TC
898__extension__ extern __inline uint32x4_t
899__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
900vaddl_high_u16 (uint16x8_t __a, uint16x8_t __b)
901{
902 return (uint32x4_t) __builtin_aarch64_uaddl2v8hi ((int16x8_t) __a,
903 (int16x8_t) __b);
904}
905
a063e204
TC
906__extension__ extern __inline uint64x2_t
907__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
908vaddl_high_u32 (uint32x4_t __a, uint32x4_t __b)
909{
910 return (uint64x2_t) __builtin_aarch64_uaddl2v4si ((int32x4_t) __a,
911 (int32x4_t) __b);
912}
913
a063e204
TC
914__extension__ extern __inline int16x8_t
915__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
916vaddw_s8 (int16x8_t __a, int8x8_t __b)
917{
918 return (int16x8_t) __builtin_aarch64_saddwv8qi (__a, __b);
919}
920
a063e204
TC
921__extension__ extern __inline int32x4_t
922__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
923vaddw_s16 (int32x4_t __a, int16x4_t __b)
924{
925 return (int32x4_t) __builtin_aarch64_saddwv4hi (__a, __b);
926}
927
a063e204
TC
928__extension__ extern __inline int64x2_t
929__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
930vaddw_s32 (int64x2_t __a, int32x2_t __b)
931{
932 return (int64x2_t) __builtin_aarch64_saddwv2si (__a, __b);
933}
934
a063e204
TC
935__extension__ extern __inline uint16x8_t
936__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
937vaddw_u8 (uint16x8_t __a, uint8x8_t __b)
938{
939 return (uint16x8_t) __builtin_aarch64_uaddwv8qi ((int16x8_t) __a,
940 (int8x8_t) __b);
941}
942
a063e204
TC
943__extension__ extern __inline uint32x4_t
944__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
945vaddw_u16 (uint32x4_t __a, uint16x4_t __b)
946{
947 return (uint32x4_t) __builtin_aarch64_uaddwv4hi ((int32x4_t) __a,
948 (int16x4_t) __b);
949}
950
a063e204
TC
951__extension__ extern __inline uint64x2_t
952__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
953vaddw_u32 (uint64x2_t __a, uint32x2_t __b)
954{
955 return (uint64x2_t) __builtin_aarch64_uaddwv2si ((int64x2_t) __a,
956 (int32x2_t) __b);
957}
958
a063e204
TC
959__extension__ extern __inline int16x8_t
960__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
961vaddw_high_s8 (int16x8_t __a, int8x16_t __b)
962{
963 return (int16x8_t) __builtin_aarch64_saddw2v16qi (__a, __b);
964}
965
a063e204
TC
966__extension__ extern __inline int32x4_t
967__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
968vaddw_high_s16 (int32x4_t __a, int16x8_t __b)
969{
970 return (int32x4_t) __builtin_aarch64_saddw2v8hi (__a, __b);
971}
972
a063e204
TC
973__extension__ extern __inline int64x2_t
974__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
975vaddw_high_s32 (int64x2_t __a, int32x4_t __b)
976{
977 return (int64x2_t) __builtin_aarch64_saddw2v4si (__a, __b);
978}
979
a063e204
TC
980__extension__ extern __inline uint16x8_t
981__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
982vaddw_high_u8 (uint16x8_t __a, uint8x16_t __b)
983{
984 return (uint16x8_t) __builtin_aarch64_uaddw2v16qi ((int16x8_t) __a,
985 (int8x16_t) __b);
986}
987
a063e204
TC
988__extension__ extern __inline uint32x4_t
989__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
990vaddw_high_u16 (uint32x4_t __a, uint16x8_t __b)
991{
992 return (uint32x4_t) __builtin_aarch64_uaddw2v8hi ((int32x4_t) __a,
993 (int16x8_t) __b);
994}
995
a063e204
TC
996__extension__ extern __inline uint64x2_t
997__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
998vaddw_high_u32 (uint64x2_t __a, uint32x4_t __b)
999{
1000 return (uint64x2_t) __builtin_aarch64_uaddw2v4si ((int64x2_t) __a,
1001 (int32x4_t) __b);
1002}
1003
a063e204
TC
1004__extension__ extern __inline int8x8_t
1005__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1006vhadd_s8 (int8x8_t __a, int8x8_t __b)
1007{
1008 return (int8x8_t) __builtin_aarch64_shaddv8qi (__a, __b);
1009}
1010
a063e204
TC
1011__extension__ extern __inline int16x4_t
1012__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1013vhadd_s16 (int16x4_t __a, int16x4_t __b)
1014{
1015 return (int16x4_t) __builtin_aarch64_shaddv4hi (__a, __b);
1016}
1017
a063e204
TC
1018__extension__ extern __inline int32x2_t
1019__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1020vhadd_s32 (int32x2_t __a, int32x2_t __b)
1021{
1022 return (int32x2_t) __builtin_aarch64_shaddv2si (__a, __b);
1023}
1024
a063e204
TC
1025__extension__ extern __inline uint8x8_t
1026__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1027vhadd_u8 (uint8x8_t __a, uint8x8_t __b)
1028{
1029 return (uint8x8_t) __builtin_aarch64_uhaddv8qi ((int8x8_t) __a,
1030 (int8x8_t) __b);
1031}
1032
a063e204
TC
1033__extension__ extern __inline uint16x4_t
1034__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1035vhadd_u16 (uint16x4_t __a, uint16x4_t __b)
1036{
1037 return (uint16x4_t) __builtin_aarch64_uhaddv4hi ((int16x4_t) __a,
1038 (int16x4_t) __b);
1039}
1040
a063e204
TC
1041__extension__ extern __inline uint32x2_t
1042__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1043vhadd_u32 (uint32x2_t __a, uint32x2_t __b)
1044{
1045 return (uint32x2_t) __builtin_aarch64_uhaddv2si ((int32x2_t) __a,
1046 (int32x2_t) __b);
1047}
1048
a063e204
TC
1049__extension__ extern __inline int8x16_t
1050__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1051vhaddq_s8 (int8x16_t __a, int8x16_t __b)
1052{
1053 return (int8x16_t) __builtin_aarch64_shaddv16qi (__a, __b);
1054}
1055
a063e204
TC
1056__extension__ extern __inline int16x8_t
1057__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1058vhaddq_s16 (int16x8_t __a, int16x8_t __b)
1059{
1060 return (int16x8_t) __builtin_aarch64_shaddv8hi (__a, __b);
1061}
1062
a063e204
TC
1063__extension__ extern __inline int32x4_t
1064__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1065vhaddq_s32 (int32x4_t __a, int32x4_t __b)
1066{
1067 return (int32x4_t) __builtin_aarch64_shaddv4si (__a, __b);
1068}
1069
a063e204
TC
1070__extension__ extern __inline uint8x16_t
1071__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1072vhaddq_u8 (uint8x16_t __a, uint8x16_t __b)
1073{
1074 return (uint8x16_t) __builtin_aarch64_uhaddv16qi ((int8x16_t) __a,
1075 (int8x16_t) __b);
1076}
1077
a063e204
TC
1078__extension__ extern __inline uint16x8_t
1079__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1080vhaddq_u16 (uint16x8_t __a, uint16x8_t __b)
1081{
1082 return (uint16x8_t) __builtin_aarch64_uhaddv8hi ((int16x8_t) __a,
1083 (int16x8_t) __b);
1084}
1085
a063e204
TC
1086__extension__ extern __inline uint32x4_t
1087__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1088vhaddq_u32 (uint32x4_t __a, uint32x4_t __b)
1089{
1090 return (uint32x4_t) __builtin_aarch64_uhaddv4si ((int32x4_t) __a,
1091 (int32x4_t) __b);
1092}
1093
a063e204
TC
1094__extension__ extern __inline int8x8_t
1095__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1096vrhadd_s8 (int8x8_t __a, int8x8_t __b)
1097{
1098 return (int8x8_t) __builtin_aarch64_srhaddv8qi (__a, __b);
1099}
1100
a063e204
TC
1101__extension__ extern __inline int16x4_t
1102__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1103vrhadd_s16 (int16x4_t __a, int16x4_t __b)
1104{
1105 return (int16x4_t) __builtin_aarch64_srhaddv4hi (__a, __b);
1106}
1107
a063e204
TC
1108__extension__ extern __inline int32x2_t
1109__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1110vrhadd_s32 (int32x2_t __a, int32x2_t __b)
1111{
1112 return (int32x2_t) __builtin_aarch64_srhaddv2si (__a, __b);
1113}
1114
a063e204
TC
1115__extension__ extern __inline uint8x8_t
1116__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1117vrhadd_u8 (uint8x8_t __a, uint8x8_t __b)
1118{
1119 return (uint8x8_t) __builtin_aarch64_urhaddv8qi ((int8x8_t) __a,
1120 (int8x8_t) __b);
1121}
1122
a063e204
TC
1123__extension__ extern __inline uint16x4_t
1124__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1125vrhadd_u16 (uint16x4_t __a, uint16x4_t __b)
1126{
1127 return (uint16x4_t) __builtin_aarch64_urhaddv4hi ((int16x4_t) __a,
1128 (int16x4_t) __b);
1129}
1130
a063e204
TC
1131__extension__ extern __inline uint32x2_t
1132__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1133vrhadd_u32 (uint32x2_t __a, uint32x2_t __b)
1134{
1135 return (uint32x2_t) __builtin_aarch64_urhaddv2si ((int32x2_t) __a,
1136 (int32x2_t) __b);
1137}
1138
a063e204
TC
1139__extension__ extern __inline int8x16_t
1140__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1141vrhaddq_s8 (int8x16_t __a, int8x16_t __b)
1142{
1143 return (int8x16_t) __builtin_aarch64_srhaddv16qi (__a, __b);
1144}
1145
a063e204
TC
1146__extension__ extern __inline int16x8_t
1147__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1148vrhaddq_s16 (int16x8_t __a, int16x8_t __b)
1149{
1150 return (int16x8_t) __builtin_aarch64_srhaddv8hi (__a, __b);
1151}
1152
a063e204
TC
1153__extension__ extern __inline int32x4_t
1154__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1155vrhaddq_s32 (int32x4_t __a, int32x4_t __b)
1156{
1157 return (int32x4_t) __builtin_aarch64_srhaddv4si (__a, __b);
1158}
1159
a063e204
TC
1160__extension__ extern __inline uint8x16_t
1161__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1162vrhaddq_u8 (uint8x16_t __a, uint8x16_t __b)
1163{
1164 return (uint8x16_t) __builtin_aarch64_urhaddv16qi ((int8x16_t) __a,
1165 (int8x16_t) __b);
1166}
1167
a063e204
TC
1168__extension__ extern __inline uint16x8_t
1169__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1170vrhaddq_u16 (uint16x8_t __a, uint16x8_t __b)
1171{
1172 return (uint16x8_t) __builtin_aarch64_urhaddv8hi ((int16x8_t) __a,
1173 (int16x8_t) __b);
1174}
1175
a063e204
TC
1176__extension__ extern __inline uint32x4_t
1177__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1178vrhaddq_u32 (uint32x4_t __a, uint32x4_t __b)
1179{
1180 return (uint32x4_t) __builtin_aarch64_urhaddv4si ((int32x4_t) __a,
1181 (int32x4_t) __b);
1182}
1183
a063e204
TC
1184__extension__ extern __inline int8x8_t
1185__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1186vaddhn_s16 (int16x8_t __a, int16x8_t __b)
1187{
1188 return (int8x8_t) __builtin_aarch64_addhnv8hi (__a, __b);
1189}
1190
a063e204
TC
1191__extension__ extern __inline int16x4_t
1192__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1193vaddhn_s32 (int32x4_t __a, int32x4_t __b)
1194{
1195 return (int16x4_t) __builtin_aarch64_addhnv4si (__a, __b);
1196}
1197
a063e204
TC
1198__extension__ extern __inline int32x2_t
1199__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1200vaddhn_s64 (int64x2_t __a, int64x2_t __b)
1201{
1202 return (int32x2_t) __builtin_aarch64_addhnv2di (__a, __b);
1203}
1204
a063e204
TC
1205__extension__ extern __inline uint8x8_t
1206__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1207vaddhn_u16 (uint16x8_t __a, uint16x8_t __b)
1208{
1209 return (uint8x8_t) __builtin_aarch64_addhnv8hi ((int16x8_t) __a,
1210 (int16x8_t) __b);
1211}
1212
a063e204
TC
1213__extension__ extern __inline uint16x4_t
1214__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1215vaddhn_u32 (uint32x4_t __a, uint32x4_t __b)
1216{
1217 return (uint16x4_t) __builtin_aarch64_addhnv4si ((int32x4_t) __a,
1218 (int32x4_t) __b);
1219}
1220
a063e204
TC
1221__extension__ extern __inline uint32x2_t
1222__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1223vaddhn_u64 (uint64x2_t __a, uint64x2_t __b)
1224{
1225 return (uint32x2_t) __builtin_aarch64_addhnv2di ((int64x2_t) __a,
1226 (int64x2_t) __b);
1227}
1228
a063e204
TC
1229__extension__ extern __inline int8x8_t
1230__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1231vraddhn_s16 (int16x8_t __a, int16x8_t __b)
1232{
1233 return (int8x8_t) __builtin_aarch64_raddhnv8hi (__a, __b);
1234}
1235
a063e204
TC
1236__extension__ extern __inline int16x4_t
1237__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1238vraddhn_s32 (int32x4_t __a, int32x4_t __b)
1239{
1240 return (int16x4_t) __builtin_aarch64_raddhnv4si (__a, __b);
1241}
1242
a063e204
TC
1243__extension__ extern __inline int32x2_t
1244__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1245vraddhn_s64 (int64x2_t __a, int64x2_t __b)
1246{
1247 return (int32x2_t) __builtin_aarch64_raddhnv2di (__a, __b);
1248}
1249
a063e204
TC
1250__extension__ extern __inline uint8x8_t
1251__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1252vraddhn_u16 (uint16x8_t __a, uint16x8_t __b)
1253{
1254 return (uint8x8_t) __builtin_aarch64_raddhnv8hi ((int16x8_t) __a,
1255 (int16x8_t) __b);
1256}
1257
a063e204
TC
1258__extension__ extern __inline uint16x4_t
1259__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1260vraddhn_u32 (uint32x4_t __a, uint32x4_t __b)
1261{
1262 return (uint16x4_t) __builtin_aarch64_raddhnv4si ((int32x4_t) __a,
1263 (int32x4_t) __b);
1264}
1265
a063e204
TC
1266__extension__ extern __inline uint32x2_t
1267__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1268vraddhn_u64 (uint64x2_t __a, uint64x2_t __b)
1269{
1270 return (uint32x2_t) __builtin_aarch64_raddhnv2di ((int64x2_t) __a,
1271 (int64x2_t) __b);
1272}
1273
a063e204
TC
1274__extension__ extern __inline int8x16_t
1275__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1276vaddhn_high_s16 (int8x8_t __a, int16x8_t __b, int16x8_t __c)
1277{
1278 return (int8x16_t) __builtin_aarch64_addhn2v8hi (__a, __b, __c);
1279}
1280
a063e204
TC
1281__extension__ extern __inline int16x8_t
1282__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1283vaddhn_high_s32 (int16x4_t __a, int32x4_t __b, int32x4_t __c)
1284{
1285 return (int16x8_t) __builtin_aarch64_addhn2v4si (__a, __b, __c);
1286}
1287
a063e204
TC
1288__extension__ extern __inline int32x4_t
1289__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1290vaddhn_high_s64 (int32x2_t __a, int64x2_t __b, int64x2_t __c)
1291{
1292 return (int32x4_t) __builtin_aarch64_addhn2v2di (__a, __b, __c);
1293}
1294
a063e204
TC
1295__extension__ extern __inline uint8x16_t
1296__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1297vaddhn_high_u16 (uint8x8_t __a, uint16x8_t __b, uint16x8_t __c)
1298{
1299 return (uint8x16_t) __builtin_aarch64_addhn2v8hi ((int8x8_t) __a,
1300 (int16x8_t) __b,
1301 (int16x8_t) __c);
1302}
1303
a063e204
TC
1304__extension__ extern __inline uint16x8_t
1305__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1306vaddhn_high_u32 (uint16x4_t __a, uint32x4_t __b, uint32x4_t __c)
1307{
1308 return (uint16x8_t) __builtin_aarch64_addhn2v4si ((int16x4_t) __a,
1309 (int32x4_t) __b,
1310 (int32x4_t) __c);
1311}
1312
a063e204
TC
1313__extension__ extern __inline uint32x4_t
1314__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1315vaddhn_high_u64 (uint32x2_t __a, uint64x2_t __b, uint64x2_t __c)
1316{
1317 return (uint32x4_t) __builtin_aarch64_addhn2v2di ((int32x2_t) __a,
1318 (int64x2_t) __b,
1319 (int64x2_t) __c);
1320}
1321
a063e204
TC
1322__extension__ extern __inline int8x16_t
1323__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1324vraddhn_high_s16 (int8x8_t __a, int16x8_t __b, int16x8_t __c)
1325{
1326 return (int8x16_t) __builtin_aarch64_raddhn2v8hi (__a, __b, __c);
1327}
1328
a063e204
TC
1329__extension__ extern __inline int16x8_t
1330__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1331vraddhn_high_s32 (int16x4_t __a, int32x4_t __b, int32x4_t __c)
1332{
1333 return (int16x8_t) __builtin_aarch64_raddhn2v4si (__a, __b, __c);
1334}
1335
a063e204
TC
1336__extension__ extern __inline int32x4_t
1337__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1338vraddhn_high_s64 (int32x2_t __a, int64x2_t __b, int64x2_t __c)
1339{
1340 return (int32x4_t) __builtin_aarch64_raddhn2v2di (__a, __b, __c);
1341}
1342
a063e204
TC
1343__extension__ extern __inline uint8x16_t
1344__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1345vraddhn_high_u16 (uint8x8_t __a, uint16x8_t __b, uint16x8_t __c)
1346{
1347 return (uint8x16_t) __builtin_aarch64_raddhn2v8hi ((int8x8_t) __a,
1348 (int16x8_t) __b,
1349 (int16x8_t) __c);
1350}
1351
a063e204
TC
1352__extension__ extern __inline uint16x8_t
1353__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1354vraddhn_high_u32 (uint16x4_t __a, uint32x4_t __b, uint32x4_t __c)
1355{
1356 return (uint16x8_t) __builtin_aarch64_raddhn2v4si ((int16x4_t) __a,
1357 (int32x4_t) __b,
1358 (int32x4_t) __c);
1359}
1360
a063e204
TC
1361__extension__ extern __inline uint32x4_t
1362__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1363vraddhn_high_u64 (uint32x2_t __a, uint64x2_t __b, uint64x2_t __c)
1364{
1365 return (uint32x4_t) __builtin_aarch64_raddhn2v2di ((int32x2_t) __a,
1366 (int64x2_t) __b,
1367 (int64x2_t) __c);
1368}
1369
a063e204
TC
1370__extension__ extern __inline float32x2_t
1371__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1372vdiv_f32 (float32x2_t __a, float32x2_t __b)
1373{
1374 return __a / __b;
1375}
1376
a063e204
TC
1377__extension__ extern __inline float64x1_t
1378__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7f3d8b19
AV
1379vdiv_f64 (float64x1_t __a, float64x1_t __b)
1380{
1381 return __a / __b;
1382}
1383
a063e204
TC
1384__extension__ extern __inline float32x4_t
1385__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1386vdivq_f32 (float32x4_t __a, float32x4_t __b)
1387{
1388 return __a / __b;
1389}
1390
a063e204
TC
1391__extension__ extern __inline float64x2_t
1392__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1393vdivq_f64 (float64x2_t __a, float64x2_t __b)
1394{
1395 return __a / __b;
1396}
1397
a063e204
TC
1398__extension__ extern __inline int8x8_t
1399__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1400vmul_s8 (int8x8_t __a, int8x8_t __b)
1401{
1402 return __a * __b;
1403}
1404
a063e204
TC
1405__extension__ extern __inline int16x4_t
1406__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1407vmul_s16 (int16x4_t __a, int16x4_t __b)
1408{
1409 return __a * __b;
1410}
1411
a063e204
TC
1412__extension__ extern __inline int32x2_t
1413__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1414vmul_s32 (int32x2_t __a, int32x2_t __b)
1415{
1416 return __a * __b;
1417}
1418
a063e204
TC
1419__extension__ extern __inline float32x2_t
1420__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1421vmul_f32 (float32x2_t __a, float32x2_t __b)
1422{
1423 return __a * __b;
1424}
1425
a063e204
TC
1426__extension__ extern __inline float64x1_t
1427__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ada5287e
KT
1428vmul_f64 (float64x1_t __a, float64x1_t __b)
1429{
1430 return __a * __b;
1431}
1432
a063e204
TC
1433__extension__ extern __inline uint8x8_t
1434__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1435vmul_u8 (uint8x8_t __a, uint8x8_t __b)
1436{
1437 return __a * __b;
1438}
1439
a063e204
TC
1440__extension__ extern __inline uint16x4_t
1441__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1442vmul_u16 (uint16x4_t __a, uint16x4_t __b)
1443{
1444 return __a * __b;
1445}
1446
a063e204
TC
1447__extension__ extern __inline uint32x2_t
1448__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1449vmul_u32 (uint32x2_t __a, uint32x2_t __b)
1450{
1451 return __a * __b;
1452}
1453
a063e204
TC
1454__extension__ extern __inline poly8x8_t
1455__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1456vmul_p8 (poly8x8_t __a, poly8x8_t __b)
1457{
1458 return (poly8x8_t) __builtin_aarch64_pmulv8qi ((int8x8_t) __a,
1459 (int8x8_t) __b);
1460}
1461
a063e204
TC
1462__extension__ extern __inline int8x16_t
1463__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1464vmulq_s8 (int8x16_t __a, int8x16_t __b)
1465{
1466 return __a * __b;
1467}
1468
a063e204
TC
1469__extension__ extern __inline int16x8_t
1470__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1471vmulq_s16 (int16x8_t __a, int16x8_t __b)
1472{
1473 return __a * __b;
1474}
1475
a063e204
TC
1476__extension__ extern __inline int32x4_t
1477__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1478vmulq_s32 (int32x4_t __a, int32x4_t __b)
1479{
1480 return __a * __b;
1481}
1482
a063e204
TC
1483__extension__ extern __inline float32x4_t
1484__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1485vmulq_f32 (float32x4_t __a, float32x4_t __b)
1486{
1487 return __a * __b;
1488}
1489
a063e204
TC
1490__extension__ extern __inline float64x2_t
1491__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1492vmulq_f64 (float64x2_t __a, float64x2_t __b)
1493{
1494 return __a * __b;
1495}
1496
a063e204
TC
1497__extension__ extern __inline uint8x16_t
1498__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1499vmulq_u8 (uint8x16_t __a, uint8x16_t __b)
1500{
1501 return __a * __b;
1502}
1503
a063e204
TC
1504__extension__ extern __inline uint16x8_t
1505__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1506vmulq_u16 (uint16x8_t __a, uint16x8_t __b)
1507{
1508 return __a * __b;
1509}
1510
a063e204
TC
1511__extension__ extern __inline uint32x4_t
1512__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1513vmulq_u32 (uint32x4_t __a, uint32x4_t __b)
1514{
1515 return __a * __b;
1516}
1517
a063e204
TC
1518__extension__ extern __inline poly8x16_t
1519__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1520vmulq_p8 (poly8x16_t __a, poly8x16_t __b)
1521{
1522 return (poly8x16_t) __builtin_aarch64_pmulv16qi ((int8x16_t) __a,
1523 (int8x16_t) __b);
1524}
1525
a063e204
TC
1526__extension__ extern __inline int8x8_t
1527__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1528vand_s8 (int8x8_t __a, int8x8_t __b)
1529{
1530 return __a & __b;
1531}
1532
a063e204
TC
1533__extension__ extern __inline int16x4_t
1534__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1535vand_s16 (int16x4_t __a, int16x4_t __b)
1536{
1537 return __a & __b;
1538}
1539
a063e204
TC
1540__extension__ extern __inline int32x2_t
1541__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1542vand_s32 (int32x2_t __a, int32x2_t __b)
1543{
1544 return __a & __b;
1545}
1546
a063e204
TC
1547__extension__ extern __inline uint8x8_t
1548__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1549vand_u8 (uint8x8_t __a, uint8x8_t __b)
1550{
1551 return __a & __b;
1552}
1553
a063e204
TC
1554__extension__ extern __inline uint16x4_t
1555__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1556vand_u16 (uint16x4_t __a, uint16x4_t __b)
1557{
1558 return __a & __b;
1559}
1560
a063e204
TC
1561__extension__ extern __inline uint32x2_t
1562__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1563vand_u32 (uint32x2_t __a, uint32x2_t __b)
1564{
1565 return __a & __b;
1566}
1567
a063e204
TC
1568__extension__ extern __inline int64x1_t
1569__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1570vand_s64 (int64x1_t __a, int64x1_t __b)
1571{
1572 return __a & __b;
1573}
1574
a063e204
TC
1575__extension__ extern __inline uint64x1_t
1576__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1577vand_u64 (uint64x1_t __a, uint64x1_t __b)
1578{
1579 return __a & __b;
1580}
1581
a063e204
TC
1582__extension__ extern __inline int8x16_t
1583__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1584vandq_s8 (int8x16_t __a, int8x16_t __b)
1585{
1586 return __a & __b;
1587}
1588
a063e204
TC
1589__extension__ extern __inline int16x8_t
1590__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1591vandq_s16 (int16x8_t __a, int16x8_t __b)
1592{
1593 return __a & __b;
1594}
1595
a063e204
TC
1596__extension__ extern __inline int32x4_t
1597__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1598vandq_s32 (int32x4_t __a, int32x4_t __b)
1599{
1600 return __a & __b;
1601}
1602
a063e204
TC
1603__extension__ extern __inline int64x2_t
1604__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1605vandq_s64 (int64x2_t __a, int64x2_t __b)
1606{
1607 return __a & __b;
1608}
1609
a063e204
TC
1610__extension__ extern __inline uint8x16_t
1611__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1612vandq_u8 (uint8x16_t __a, uint8x16_t __b)
1613{
1614 return __a & __b;
1615}
1616
a063e204
TC
1617__extension__ extern __inline uint16x8_t
1618__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1619vandq_u16 (uint16x8_t __a, uint16x8_t __b)
1620{
1621 return __a & __b;
1622}
1623
a063e204
TC
1624__extension__ extern __inline uint32x4_t
1625__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1626vandq_u32 (uint32x4_t __a, uint32x4_t __b)
1627{
1628 return __a & __b;
1629}
1630
a063e204
TC
1631__extension__ extern __inline uint64x2_t
1632__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1633vandq_u64 (uint64x2_t __a, uint64x2_t __b)
1634{
1635 return __a & __b;
1636}
1637
a063e204
TC
1638__extension__ extern __inline int8x8_t
1639__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1640vorr_s8 (int8x8_t __a, int8x8_t __b)
1641{
1642 return __a | __b;
1643}
1644
a063e204
TC
1645__extension__ extern __inline int16x4_t
1646__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1647vorr_s16 (int16x4_t __a, int16x4_t __b)
1648{
1649 return __a | __b;
1650}
1651
a063e204
TC
1652__extension__ extern __inline int32x2_t
1653__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1654vorr_s32 (int32x2_t __a, int32x2_t __b)
1655{
1656 return __a | __b;
1657}
1658
a063e204
TC
1659__extension__ extern __inline uint8x8_t
1660__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1661vorr_u8 (uint8x8_t __a, uint8x8_t __b)
1662{
1663 return __a | __b;
1664}
1665
a063e204
TC
1666__extension__ extern __inline uint16x4_t
1667__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1668vorr_u16 (uint16x4_t __a, uint16x4_t __b)
1669{
1670 return __a | __b;
1671}
1672
a063e204
TC
1673__extension__ extern __inline uint32x2_t
1674__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1675vorr_u32 (uint32x2_t __a, uint32x2_t __b)
1676{
1677 return __a | __b;
1678}
1679
a063e204
TC
1680__extension__ extern __inline int64x1_t
1681__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1682vorr_s64 (int64x1_t __a, int64x1_t __b)
1683{
1684 return __a | __b;
1685}
1686
a063e204
TC
1687__extension__ extern __inline uint64x1_t
1688__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1689vorr_u64 (uint64x1_t __a, uint64x1_t __b)
1690{
1691 return __a | __b;
1692}
1693
a063e204
TC
1694__extension__ extern __inline int8x16_t
1695__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1696vorrq_s8 (int8x16_t __a, int8x16_t __b)
1697{
1698 return __a | __b;
1699}
1700
a063e204
TC
1701__extension__ extern __inline int16x8_t
1702__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1703vorrq_s16 (int16x8_t __a, int16x8_t __b)
1704{
1705 return __a | __b;
1706}
1707
a063e204
TC
1708__extension__ extern __inline int32x4_t
1709__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1710vorrq_s32 (int32x4_t __a, int32x4_t __b)
1711{
1712 return __a | __b;
1713}
1714
a063e204
TC
1715__extension__ extern __inline int64x2_t
1716__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1717vorrq_s64 (int64x2_t __a, int64x2_t __b)
1718{
1719 return __a | __b;
1720}
1721
a063e204
TC
1722__extension__ extern __inline uint8x16_t
1723__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1724vorrq_u8 (uint8x16_t __a, uint8x16_t __b)
1725{
1726 return __a | __b;
1727}
1728
a063e204
TC
1729__extension__ extern __inline uint16x8_t
1730__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1731vorrq_u16 (uint16x8_t __a, uint16x8_t __b)
1732{
1733 return __a | __b;
1734}
1735
a063e204
TC
1736__extension__ extern __inline uint32x4_t
1737__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1738vorrq_u32 (uint32x4_t __a, uint32x4_t __b)
1739{
1740 return __a | __b;
1741}
1742
a063e204
TC
1743__extension__ extern __inline uint64x2_t
1744__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1745vorrq_u64 (uint64x2_t __a, uint64x2_t __b)
1746{
1747 return __a | __b;
1748}
1749
a063e204
TC
1750__extension__ extern __inline int8x8_t
1751__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1752veor_s8 (int8x8_t __a, int8x8_t __b)
1753{
1754 return __a ^ __b;
1755}
1756
a063e204
TC
1757__extension__ extern __inline int16x4_t
1758__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1759veor_s16 (int16x4_t __a, int16x4_t __b)
1760{
1761 return __a ^ __b;
1762}
1763
a063e204
TC
1764__extension__ extern __inline int32x2_t
1765__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1766veor_s32 (int32x2_t __a, int32x2_t __b)
1767{
1768 return __a ^ __b;
1769}
1770
a063e204
TC
1771__extension__ extern __inline uint8x8_t
1772__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1773veor_u8 (uint8x8_t __a, uint8x8_t __b)
1774{
1775 return __a ^ __b;
1776}
1777
a063e204
TC
1778__extension__ extern __inline uint16x4_t
1779__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1780veor_u16 (uint16x4_t __a, uint16x4_t __b)
1781{
1782 return __a ^ __b;
1783}
1784
a063e204
TC
1785__extension__ extern __inline uint32x2_t
1786__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1787veor_u32 (uint32x2_t __a, uint32x2_t __b)
1788{
1789 return __a ^ __b;
1790}
1791
a063e204
TC
1792__extension__ extern __inline int64x1_t
1793__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1794veor_s64 (int64x1_t __a, int64x1_t __b)
1795{
1796 return __a ^ __b;
1797}
1798
a063e204
TC
1799__extension__ extern __inline uint64x1_t
1800__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1801veor_u64 (uint64x1_t __a, uint64x1_t __b)
1802{
1803 return __a ^ __b;
1804}
1805
a063e204
TC
1806__extension__ extern __inline int8x16_t
1807__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1808veorq_s8 (int8x16_t __a, int8x16_t __b)
1809{
1810 return __a ^ __b;
1811}
1812
a063e204
TC
1813__extension__ extern __inline int16x8_t
1814__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1815veorq_s16 (int16x8_t __a, int16x8_t __b)
1816{
1817 return __a ^ __b;
1818}
1819
a063e204
TC
1820__extension__ extern __inline int32x4_t
1821__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1822veorq_s32 (int32x4_t __a, int32x4_t __b)
1823{
1824 return __a ^ __b;
1825}
1826
a063e204
TC
1827__extension__ extern __inline int64x2_t
1828__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1829veorq_s64 (int64x2_t __a, int64x2_t __b)
1830{
1831 return __a ^ __b;
1832}
1833
a063e204
TC
1834__extension__ extern __inline uint8x16_t
1835__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1836veorq_u8 (uint8x16_t __a, uint8x16_t __b)
1837{
1838 return __a ^ __b;
1839}
1840
a063e204
TC
1841__extension__ extern __inline uint16x8_t
1842__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1843veorq_u16 (uint16x8_t __a, uint16x8_t __b)
1844{
1845 return __a ^ __b;
1846}
1847
a063e204
TC
1848__extension__ extern __inline uint32x4_t
1849__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1850veorq_u32 (uint32x4_t __a, uint32x4_t __b)
1851{
1852 return __a ^ __b;
1853}
1854
a063e204
TC
1855__extension__ extern __inline uint64x2_t
1856__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1857veorq_u64 (uint64x2_t __a, uint64x2_t __b)
1858{
1859 return __a ^ __b;
1860}
1861
a063e204
TC
1862__extension__ extern __inline int8x8_t
1863__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1864vbic_s8 (int8x8_t __a, int8x8_t __b)
1865{
1866 return __a & ~__b;
1867}
1868
a063e204
TC
1869__extension__ extern __inline int16x4_t
1870__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1871vbic_s16 (int16x4_t __a, int16x4_t __b)
1872{
1873 return __a & ~__b;
1874}
1875
a063e204
TC
1876__extension__ extern __inline int32x2_t
1877__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1878vbic_s32 (int32x2_t __a, int32x2_t __b)
1879{
1880 return __a & ~__b;
1881}
1882
a063e204
TC
1883__extension__ extern __inline uint8x8_t
1884__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1885vbic_u8 (uint8x8_t __a, uint8x8_t __b)
1886{
1887 return __a & ~__b;
1888}
1889
a063e204
TC
1890__extension__ extern __inline uint16x4_t
1891__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1892vbic_u16 (uint16x4_t __a, uint16x4_t __b)
1893{
1894 return __a & ~__b;
1895}
1896
a063e204
TC
1897__extension__ extern __inline uint32x2_t
1898__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1899vbic_u32 (uint32x2_t __a, uint32x2_t __b)
1900{
1901 return __a & ~__b;
1902}
1903
a063e204
TC
1904__extension__ extern __inline int64x1_t
1905__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1906vbic_s64 (int64x1_t __a, int64x1_t __b)
1907{
1908 return __a & ~__b;
1909}
1910
a063e204
TC
1911__extension__ extern __inline uint64x1_t
1912__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1913vbic_u64 (uint64x1_t __a, uint64x1_t __b)
1914{
1915 return __a & ~__b;
1916}
1917
a063e204
TC
1918__extension__ extern __inline int8x16_t
1919__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1920vbicq_s8 (int8x16_t __a, int8x16_t __b)
1921{
1922 return __a & ~__b;
1923}
1924
a063e204
TC
1925__extension__ extern __inline int16x8_t
1926__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1927vbicq_s16 (int16x8_t __a, int16x8_t __b)
1928{
1929 return __a & ~__b;
1930}
1931
a063e204
TC
1932__extension__ extern __inline int32x4_t
1933__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1934vbicq_s32 (int32x4_t __a, int32x4_t __b)
1935{
1936 return __a & ~__b;
1937}
1938
a063e204
TC
1939__extension__ extern __inline int64x2_t
1940__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1941vbicq_s64 (int64x2_t __a, int64x2_t __b)
1942{
1943 return __a & ~__b;
1944}
1945
a063e204
TC
1946__extension__ extern __inline uint8x16_t
1947__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1948vbicq_u8 (uint8x16_t __a, uint8x16_t __b)
1949{
1950 return __a & ~__b;
1951}
1952
a063e204
TC
1953__extension__ extern __inline uint16x8_t
1954__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1955vbicq_u16 (uint16x8_t __a, uint16x8_t __b)
1956{
1957 return __a & ~__b;
1958}
1959
a063e204
TC
1960__extension__ extern __inline uint32x4_t
1961__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1962vbicq_u32 (uint32x4_t __a, uint32x4_t __b)
1963{
1964 return __a & ~__b;
1965}
1966
a063e204
TC
1967__extension__ extern __inline uint64x2_t
1968__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1969vbicq_u64 (uint64x2_t __a, uint64x2_t __b)
1970{
1971 return __a & ~__b;
1972}
1973
a063e204
TC
1974__extension__ extern __inline int8x8_t
1975__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1976vorn_s8 (int8x8_t __a, int8x8_t __b)
1977{
1978 return __a | ~__b;
1979}
1980
a063e204
TC
1981__extension__ extern __inline int16x4_t
1982__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1983vorn_s16 (int16x4_t __a, int16x4_t __b)
1984{
1985 return __a | ~__b;
1986}
1987
a063e204
TC
1988__extension__ extern __inline int32x2_t
1989__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1990vorn_s32 (int32x2_t __a, int32x2_t __b)
1991{
1992 return __a | ~__b;
1993}
1994
a063e204
TC
1995__extension__ extern __inline uint8x8_t
1996__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
1997vorn_u8 (uint8x8_t __a, uint8x8_t __b)
1998{
1999 return __a | ~__b;
2000}
2001
a063e204
TC
2002__extension__ extern __inline uint16x4_t
2003__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2004vorn_u16 (uint16x4_t __a, uint16x4_t __b)
2005{
2006 return __a | ~__b;
2007}
2008
a063e204
TC
2009__extension__ extern __inline uint32x2_t
2010__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2011vorn_u32 (uint32x2_t __a, uint32x2_t __b)
2012{
2013 return __a | ~__b;
2014}
2015
a063e204
TC
2016__extension__ extern __inline int64x1_t
2017__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2018vorn_s64 (int64x1_t __a, int64x1_t __b)
2019{
2020 return __a | ~__b;
2021}
2022
a063e204
TC
2023__extension__ extern __inline uint64x1_t
2024__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2025vorn_u64 (uint64x1_t __a, uint64x1_t __b)
2026{
2027 return __a | ~__b;
2028}
2029
a063e204
TC
2030__extension__ extern __inline int8x16_t
2031__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2032vornq_s8 (int8x16_t __a, int8x16_t __b)
2033{
2034 return __a | ~__b;
2035}
2036
a063e204
TC
2037__extension__ extern __inline int16x8_t
2038__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2039vornq_s16 (int16x8_t __a, int16x8_t __b)
2040{
2041 return __a | ~__b;
2042}
2043
a063e204
TC
2044__extension__ extern __inline int32x4_t
2045__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2046vornq_s32 (int32x4_t __a, int32x4_t __b)
2047{
2048 return __a | ~__b;
2049}
2050
a063e204
TC
2051__extension__ extern __inline int64x2_t
2052__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2053vornq_s64 (int64x2_t __a, int64x2_t __b)
2054{
2055 return __a | ~__b;
2056}
2057
a063e204
TC
2058__extension__ extern __inline uint8x16_t
2059__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2060vornq_u8 (uint8x16_t __a, uint8x16_t __b)
2061{
2062 return __a | ~__b;
2063}
2064
a063e204
TC
2065__extension__ extern __inline uint16x8_t
2066__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2067vornq_u16 (uint16x8_t __a, uint16x8_t __b)
2068{
2069 return __a | ~__b;
2070}
2071
a063e204
TC
2072__extension__ extern __inline uint32x4_t
2073__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2074vornq_u32 (uint32x4_t __a, uint32x4_t __b)
2075{
2076 return __a | ~__b;
2077}
2078
a063e204
TC
2079__extension__ extern __inline uint64x2_t
2080__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2081vornq_u64 (uint64x2_t __a, uint64x2_t __b)
2082{
2083 return __a | ~__b;
2084}
2085
a063e204
TC
2086__extension__ extern __inline int8x8_t
2087__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2088vsub_s8 (int8x8_t __a, int8x8_t __b)
2089{
2090 return __a - __b;
2091}
2092
a063e204
TC
2093__extension__ extern __inline int16x4_t
2094__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2095vsub_s16 (int16x4_t __a, int16x4_t __b)
2096{
2097 return __a - __b;
2098}
2099
a063e204
TC
2100__extension__ extern __inline int32x2_t
2101__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2102vsub_s32 (int32x2_t __a, int32x2_t __b)
2103{
2104 return __a - __b;
2105}
2106
a063e204
TC
2107__extension__ extern __inline float32x2_t
2108__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2109vsub_f32 (float32x2_t __a, float32x2_t __b)
2110{
2111 return __a - __b;
2112}
2113
a063e204
TC
2114__extension__ extern __inline float64x1_t
2115__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bed9bae4
AV
2116vsub_f64 (float64x1_t __a, float64x1_t __b)
2117{
2118 return __a - __b;
2119}
2120
a063e204
TC
2121__extension__ extern __inline uint8x8_t
2122__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2123vsub_u8 (uint8x8_t __a, uint8x8_t __b)
2124{
2125 return __a - __b;
2126}
2127
a063e204
TC
2128__extension__ extern __inline uint16x4_t
2129__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2130vsub_u16 (uint16x4_t __a, uint16x4_t __b)
2131{
2132 return __a - __b;
2133}
2134
a063e204
TC
2135__extension__ extern __inline uint32x2_t
2136__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2137vsub_u32 (uint32x2_t __a, uint32x2_t __b)
2138{
2139 return __a - __b;
2140}
2141
a063e204
TC
2142__extension__ extern __inline int64x1_t
2143__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2144vsub_s64 (int64x1_t __a, int64x1_t __b)
2145{
2146 return __a - __b;
2147}
2148
a063e204
TC
2149__extension__ extern __inline uint64x1_t
2150__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2151vsub_u64 (uint64x1_t __a, uint64x1_t __b)
2152{
2153 return __a - __b;
2154}
2155
a063e204
TC
2156__extension__ extern __inline int8x16_t
2157__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2158vsubq_s8 (int8x16_t __a, int8x16_t __b)
2159{
2160 return __a - __b;
2161}
2162
a063e204
TC
2163__extension__ extern __inline int16x8_t
2164__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2165vsubq_s16 (int16x8_t __a, int16x8_t __b)
2166{
2167 return __a - __b;
2168}
2169
a063e204
TC
2170__extension__ extern __inline int32x4_t
2171__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2172vsubq_s32 (int32x4_t __a, int32x4_t __b)
2173{
2174 return __a - __b;
2175}
2176
a063e204
TC
2177__extension__ extern __inline int64x2_t
2178__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2179vsubq_s64 (int64x2_t __a, int64x2_t __b)
2180{
2181 return __a - __b;
2182}
2183
a063e204
TC
2184__extension__ extern __inline float32x4_t
2185__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2186vsubq_f32 (float32x4_t __a, float32x4_t __b)
2187{
2188 return __a - __b;
2189}
2190
a063e204
TC
2191__extension__ extern __inline float64x2_t
2192__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2193vsubq_f64 (float64x2_t __a, float64x2_t __b)
2194{
2195 return __a - __b;
2196}
2197
a063e204
TC
2198__extension__ extern __inline uint8x16_t
2199__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2200vsubq_u8 (uint8x16_t __a, uint8x16_t __b)
2201{
2202 return __a - __b;
2203}
2204
a063e204
TC
2205__extension__ extern __inline uint16x8_t
2206__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2207vsubq_u16 (uint16x8_t __a, uint16x8_t __b)
2208{
2209 return __a - __b;
2210}
2211
a063e204
TC
2212__extension__ extern __inline uint32x4_t
2213__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2214vsubq_u32 (uint32x4_t __a, uint32x4_t __b)
2215{
2216 return __a - __b;
2217}
2218
a063e204
TC
2219__extension__ extern __inline uint64x2_t
2220__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2221vsubq_u64 (uint64x2_t __a, uint64x2_t __b)
2222{
2223 return __a - __b;
2224}
2225
a063e204
TC
2226__extension__ extern __inline int16x8_t
2227__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2228vsubl_s8 (int8x8_t __a, int8x8_t __b)
2229{
2230 return (int16x8_t) __builtin_aarch64_ssublv8qi (__a, __b);
2231}
2232
a063e204
TC
2233__extension__ extern __inline int32x4_t
2234__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2235vsubl_s16 (int16x4_t __a, int16x4_t __b)
2236{
2237 return (int32x4_t) __builtin_aarch64_ssublv4hi (__a, __b);
2238}
2239
a063e204
TC
2240__extension__ extern __inline int64x2_t
2241__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2242vsubl_s32 (int32x2_t __a, int32x2_t __b)
2243{
2244 return (int64x2_t) __builtin_aarch64_ssublv2si (__a, __b);
2245}
2246
a063e204
TC
2247__extension__ extern __inline uint16x8_t
2248__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2249vsubl_u8 (uint8x8_t __a, uint8x8_t __b)
2250{
2251 return (uint16x8_t) __builtin_aarch64_usublv8qi ((int8x8_t) __a,
2252 (int8x8_t) __b);
2253}
2254
a063e204
TC
2255__extension__ extern __inline uint32x4_t
2256__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2257vsubl_u16 (uint16x4_t __a, uint16x4_t __b)
2258{
2259 return (uint32x4_t) __builtin_aarch64_usublv4hi ((int16x4_t) __a,
2260 (int16x4_t) __b);
2261}
2262
a063e204
TC
2263__extension__ extern __inline uint64x2_t
2264__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2265vsubl_u32 (uint32x2_t __a, uint32x2_t __b)
2266{
2267 return (uint64x2_t) __builtin_aarch64_usublv2si ((int32x2_t) __a,
2268 (int32x2_t) __b);
2269}
2270
a063e204
TC
2271__extension__ extern __inline int16x8_t
2272__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2273vsubl_high_s8 (int8x16_t __a, int8x16_t __b)
2274{
2275 return (int16x8_t) __builtin_aarch64_ssubl2v16qi (__a, __b);
2276}
2277
a063e204
TC
2278__extension__ extern __inline int32x4_t
2279__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2280vsubl_high_s16 (int16x8_t __a, int16x8_t __b)
2281{
2282 return (int32x4_t) __builtin_aarch64_ssubl2v8hi (__a, __b);
2283}
2284
a063e204
TC
2285__extension__ extern __inline int64x2_t
2286__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2287vsubl_high_s32 (int32x4_t __a, int32x4_t __b)
2288{
2289 return (int64x2_t) __builtin_aarch64_ssubl2v4si (__a, __b);
2290}
2291
a063e204
TC
2292__extension__ extern __inline uint16x8_t
2293__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2294vsubl_high_u8 (uint8x16_t __a, uint8x16_t __b)
2295{
2296 return (uint16x8_t) __builtin_aarch64_usubl2v16qi ((int8x16_t) __a,
2297 (int8x16_t) __b);
2298}
2299
a063e204
TC
2300__extension__ extern __inline uint32x4_t
2301__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2302vsubl_high_u16 (uint16x8_t __a, uint16x8_t __b)
2303{
2304 return (uint32x4_t) __builtin_aarch64_usubl2v8hi ((int16x8_t) __a,
2305 (int16x8_t) __b);
2306}
2307
a063e204
TC
2308__extension__ extern __inline uint64x2_t
2309__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2310vsubl_high_u32 (uint32x4_t __a, uint32x4_t __b)
2311{
2312 return (uint64x2_t) __builtin_aarch64_usubl2v4si ((int32x4_t) __a,
2313 (int32x4_t) __b);
2314}
2315
a063e204
TC
2316__extension__ extern __inline int16x8_t
2317__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2318vsubw_s8 (int16x8_t __a, int8x8_t __b)
2319{
2320 return (int16x8_t) __builtin_aarch64_ssubwv8qi (__a, __b);
2321}
2322
a063e204
TC
2323__extension__ extern __inline int32x4_t
2324__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2325vsubw_s16 (int32x4_t __a, int16x4_t __b)
2326{
2327 return (int32x4_t) __builtin_aarch64_ssubwv4hi (__a, __b);
2328}
2329
a063e204
TC
2330__extension__ extern __inline int64x2_t
2331__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2332vsubw_s32 (int64x2_t __a, int32x2_t __b)
2333{
2334 return (int64x2_t) __builtin_aarch64_ssubwv2si (__a, __b);
2335}
2336
a063e204
TC
2337__extension__ extern __inline uint16x8_t
2338__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2339vsubw_u8 (uint16x8_t __a, uint8x8_t __b)
2340{
2341 return (uint16x8_t) __builtin_aarch64_usubwv8qi ((int16x8_t) __a,
2342 (int8x8_t) __b);
2343}
2344
a063e204
TC
2345__extension__ extern __inline uint32x4_t
2346__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2347vsubw_u16 (uint32x4_t __a, uint16x4_t __b)
2348{
2349 return (uint32x4_t) __builtin_aarch64_usubwv4hi ((int32x4_t) __a,
2350 (int16x4_t) __b);
2351}
2352
a063e204
TC
2353__extension__ extern __inline uint64x2_t
2354__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2355vsubw_u32 (uint64x2_t __a, uint32x2_t __b)
2356{
2357 return (uint64x2_t) __builtin_aarch64_usubwv2si ((int64x2_t) __a,
2358 (int32x2_t) __b);
2359}
2360
a063e204
TC
2361__extension__ extern __inline int16x8_t
2362__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2363vsubw_high_s8 (int16x8_t __a, int8x16_t __b)
2364{
2365 return (int16x8_t) __builtin_aarch64_ssubw2v16qi (__a, __b);
2366}
2367
a063e204
TC
2368__extension__ extern __inline int32x4_t
2369__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2370vsubw_high_s16 (int32x4_t __a, int16x8_t __b)
2371{
2372 return (int32x4_t) __builtin_aarch64_ssubw2v8hi (__a, __b);
2373}
2374
a063e204
TC
2375__extension__ extern __inline int64x2_t
2376__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2377vsubw_high_s32 (int64x2_t __a, int32x4_t __b)
2378{
2379 return (int64x2_t) __builtin_aarch64_ssubw2v4si (__a, __b);
2380}
2381
a063e204
TC
2382__extension__ extern __inline uint16x8_t
2383__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2384vsubw_high_u8 (uint16x8_t __a, uint8x16_t __b)
2385{
2386 return (uint16x8_t) __builtin_aarch64_usubw2v16qi ((int16x8_t) __a,
2387 (int8x16_t) __b);
2388}
2389
a063e204
TC
2390__extension__ extern __inline uint32x4_t
2391__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2392vsubw_high_u16 (uint32x4_t __a, uint16x8_t __b)
2393{
2394 return (uint32x4_t) __builtin_aarch64_usubw2v8hi ((int32x4_t) __a,
2395 (int16x8_t) __b);
2396}
2397
a063e204
TC
2398__extension__ extern __inline uint64x2_t
2399__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2400vsubw_high_u32 (uint64x2_t __a, uint32x4_t __b)
2401{
2402 return (uint64x2_t) __builtin_aarch64_usubw2v4si ((int64x2_t) __a,
2403 (int32x4_t) __b);
2404}
2405
a063e204
TC
2406__extension__ extern __inline int8x8_t
2407__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2408vqadd_s8 (int8x8_t __a, int8x8_t __b)
2409{
2410 return (int8x8_t) __builtin_aarch64_sqaddv8qi (__a, __b);
2411}
2412
a063e204
TC
2413__extension__ extern __inline int16x4_t
2414__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2415vqadd_s16 (int16x4_t __a, int16x4_t __b)
2416{
2417 return (int16x4_t) __builtin_aarch64_sqaddv4hi (__a, __b);
2418}
2419
a063e204
TC
2420__extension__ extern __inline int32x2_t
2421__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2422vqadd_s32 (int32x2_t __a, int32x2_t __b)
2423{
2424 return (int32x2_t) __builtin_aarch64_sqaddv2si (__a, __b);
2425}
2426
a063e204
TC
2427__extension__ extern __inline int64x1_t
2428__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2429vqadd_s64 (int64x1_t __a, int64x1_t __b)
2430{
096c59be 2431 return (int64x1_t) {__builtin_aarch64_sqadddi (__a[0], __b[0])};
43e9d192
IB
2432}
2433
a063e204
TC
2434__extension__ extern __inline uint8x8_t
2435__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2436vqadd_u8 (uint8x8_t __a, uint8x8_t __b)
2437{
de10bcce 2438 return __builtin_aarch64_uqaddv8qi_uuu (__a, __b);
43e9d192
IB
2439}
2440
a063e204
TC
2441__extension__ extern __inline int8x8_t
2442__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2443vhsub_s8 (int8x8_t __a, int8x8_t __b)
2444{
2445 return (int8x8_t)__builtin_aarch64_shsubv8qi (__a, __b);
2446}
2447
a063e204
TC
2448__extension__ extern __inline int16x4_t
2449__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2450vhsub_s16 (int16x4_t __a, int16x4_t __b)
2451{
2452 return (int16x4_t) __builtin_aarch64_shsubv4hi (__a, __b);
2453}
2454
a063e204
TC
2455__extension__ extern __inline int32x2_t
2456__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2457vhsub_s32 (int32x2_t __a, int32x2_t __b)
2458{
2459 return (int32x2_t) __builtin_aarch64_shsubv2si (__a, __b);
2460}
2461
a063e204
TC
2462__extension__ extern __inline uint8x8_t
2463__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2464vhsub_u8 (uint8x8_t __a, uint8x8_t __b)
2465{
2466 return (uint8x8_t) __builtin_aarch64_uhsubv8qi ((int8x8_t) __a,
2467 (int8x8_t) __b);
2468}
2469
a063e204
TC
2470__extension__ extern __inline uint16x4_t
2471__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2472vhsub_u16 (uint16x4_t __a, uint16x4_t __b)
2473{
2474 return (uint16x4_t) __builtin_aarch64_uhsubv4hi ((int16x4_t) __a,
2475 (int16x4_t) __b);
2476}
2477
a063e204
TC
2478__extension__ extern __inline uint32x2_t
2479__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2480vhsub_u32 (uint32x2_t __a, uint32x2_t __b)
2481{
2482 return (uint32x2_t) __builtin_aarch64_uhsubv2si ((int32x2_t) __a,
2483 (int32x2_t) __b);
2484}
2485
a063e204
TC
2486__extension__ extern __inline int8x16_t
2487__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2488vhsubq_s8 (int8x16_t __a, int8x16_t __b)
2489{
2490 return (int8x16_t) __builtin_aarch64_shsubv16qi (__a, __b);
2491}
2492
a063e204
TC
2493__extension__ extern __inline int16x8_t
2494__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2495vhsubq_s16 (int16x8_t __a, int16x8_t __b)
2496{
2497 return (int16x8_t) __builtin_aarch64_shsubv8hi (__a, __b);
2498}
2499
a063e204
TC
2500__extension__ extern __inline int32x4_t
2501__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2502vhsubq_s32 (int32x4_t __a, int32x4_t __b)
2503{
2504 return (int32x4_t) __builtin_aarch64_shsubv4si (__a, __b);
2505}
2506
a063e204
TC
2507__extension__ extern __inline uint8x16_t
2508__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2509vhsubq_u8 (uint8x16_t __a, uint8x16_t __b)
2510{
2511 return (uint8x16_t) __builtin_aarch64_uhsubv16qi ((int8x16_t) __a,
2512 (int8x16_t) __b);
2513}
2514
a063e204
TC
2515__extension__ extern __inline uint16x8_t
2516__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2517vhsubq_u16 (uint16x8_t __a, uint16x8_t __b)
2518{
2519 return (uint16x8_t) __builtin_aarch64_uhsubv8hi ((int16x8_t) __a,
2520 (int16x8_t) __b);
2521}
2522
a063e204
TC
2523__extension__ extern __inline uint32x4_t
2524__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2525vhsubq_u32 (uint32x4_t __a, uint32x4_t __b)
2526{
2527 return (uint32x4_t) __builtin_aarch64_uhsubv4si ((int32x4_t) __a,
2528 (int32x4_t) __b);
2529}
2530
a063e204
TC
2531__extension__ extern __inline int8x8_t
2532__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2533vsubhn_s16 (int16x8_t __a, int16x8_t __b)
2534{
2535 return (int8x8_t) __builtin_aarch64_subhnv8hi (__a, __b);
2536}
2537
a063e204
TC
2538__extension__ extern __inline int16x4_t
2539__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2540vsubhn_s32 (int32x4_t __a, int32x4_t __b)
2541{
2542 return (int16x4_t) __builtin_aarch64_subhnv4si (__a, __b);
2543}
2544
a063e204
TC
2545__extension__ extern __inline int32x2_t
2546__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2547vsubhn_s64 (int64x2_t __a, int64x2_t __b)
2548{
2549 return (int32x2_t) __builtin_aarch64_subhnv2di (__a, __b);
2550}
2551
a063e204
TC
2552__extension__ extern __inline uint8x8_t
2553__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2554vsubhn_u16 (uint16x8_t __a, uint16x8_t __b)
2555{
2556 return (uint8x8_t) __builtin_aarch64_subhnv8hi ((int16x8_t) __a,
2557 (int16x8_t) __b);
2558}
2559
a063e204
TC
2560__extension__ extern __inline uint16x4_t
2561__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2562vsubhn_u32 (uint32x4_t __a, uint32x4_t __b)
2563{
2564 return (uint16x4_t) __builtin_aarch64_subhnv4si ((int32x4_t) __a,
2565 (int32x4_t) __b);
2566}
2567
a063e204
TC
2568__extension__ extern __inline uint32x2_t
2569__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2570vsubhn_u64 (uint64x2_t __a, uint64x2_t __b)
2571{
2572 return (uint32x2_t) __builtin_aarch64_subhnv2di ((int64x2_t) __a,
2573 (int64x2_t) __b);
2574}
2575
a063e204
TC
2576__extension__ extern __inline int8x8_t
2577__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2578vrsubhn_s16 (int16x8_t __a, int16x8_t __b)
2579{
2580 return (int8x8_t) __builtin_aarch64_rsubhnv8hi (__a, __b);
2581}
2582
a063e204
TC
2583__extension__ extern __inline int16x4_t
2584__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2585vrsubhn_s32 (int32x4_t __a, int32x4_t __b)
2586{
2587 return (int16x4_t) __builtin_aarch64_rsubhnv4si (__a, __b);
2588}
2589
a063e204
TC
2590__extension__ extern __inline int32x2_t
2591__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2592vrsubhn_s64 (int64x2_t __a, int64x2_t __b)
2593{
2594 return (int32x2_t) __builtin_aarch64_rsubhnv2di (__a, __b);
2595}
2596
a063e204
TC
2597__extension__ extern __inline uint8x8_t
2598__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2599vrsubhn_u16 (uint16x8_t __a, uint16x8_t __b)
2600{
2601 return (uint8x8_t) __builtin_aarch64_rsubhnv8hi ((int16x8_t) __a,
2602 (int16x8_t) __b);
2603}
2604
a063e204
TC
2605__extension__ extern __inline uint16x4_t
2606__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2607vrsubhn_u32 (uint32x4_t __a, uint32x4_t __b)
2608{
2609 return (uint16x4_t) __builtin_aarch64_rsubhnv4si ((int32x4_t) __a,
2610 (int32x4_t) __b);
2611}
2612
a063e204
TC
2613__extension__ extern __inline uint32x2_t
2614__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2615vrsubhn_u64 (uint64x2_t __a, uint64x2_t __b)
2616{
2617 return (uint32x2_t) __builtin_aarch64_rsubhnv2di ((int64x2_t) __a,
2618 (int64x2_t) __b);
2619}
2620
a063e204
TC
2621__extension__ extern __inline int8x16_t
2622__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2623vrsubhn_high_s16 (int8x8_t __a, int16x8_t __b, int16x8_t __c)
2624{
2625 return (int8x16_t) __builtin_aarch64_rsubhn2v8hi (__a, __b, __c);
2626}
2627
a063e204
TC
2628__extension__ extern __inline int16x8_t
2629__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2630vrsubhn_high_s32 (int16x4_t __a, int32x4_t __b, int32x4_t __c)
2631{
2632 return (int16x8_t) __builtin_aarch64_rsubhn2v4si (__a, __b, __c);
2633}
2634
a063e204
TC
2635__extension__ extern __inline int32x4_t
2636__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2637vrsubhn_high_s64 (int32x2_t __a, int64x2_t __b, int64x2_t __c)
2638{
2639 return (int32x4_t) __builtin_aarch64_rsubhn2v2di (__a, __b, __c);
2640}
2641
a063e204
TC
2642__extension__ extern __inline uint8x16_t
2643__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2644vrsubhn_high_u16 (uint8x8_t __a, uint16x8_t __b, uint16x8_t __c)
2645{
2646 return (uint8x16_t) __builtin_aarch64_rsubhn2v8hi ((int8x8_t) __a,
2647 (int16x8_t) __b,
2648 (int16x8_t) __c);
2649}
2650
a063e204
TC
2651__extension__ extern __inline uint16x8_t
2652__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2653vrsubhn_high_u32 (uint16x4_t __a, uint32x4_t __b, uint32x4_t __c)
2654{
2655 return (uint16x8_t) __builtin_aarch64_rsubhn2v4si ((int16x4_t) __a,
2656 (int32x4_t) __b,
2657 (int32x4_t) __c);
2658}
2659
a063e204
TC
2660__extension__ extern __inline uint32x4_t
2661__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2662vrsubhn_high_u64 (uint32x2_t __a, uint64x2_t __b, uint64x2_t __c)
2663{
2664 return (uint32x4_t) __builtin_aarch64_rsubhn2v2di ((int32x2_t) __a,
2665 (int64x2_t) __b,
2666 (int64x2_t) __c);
2667}
2668
a063e204
TC
2669__extension__ extern __inline int8x16_t
2670__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2671vsubhn_high_s16 (int8x8_t __a, int16x8_t __b, int16x8_t __c)
2672{
2673 return (int8x16_t) __builtin_aarch64_subhn2v8hi (__a, __b, __c);
2674}
2675
a063e204
TC
2676__extension__ extern __inline int16x8_t
2677__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2678vsubhn_high_s32 (int16x4_t __a, int32x4_t __b, int32x4_t __c)
2679{
2680 return (int16x8_t) __builtin_aarch64_subhn2v4si (__a, __b, __c);;
2681}
2682
a063e204
TC
2683__extension__ extern __inline int32x4_t
2684__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2685vsubhn_high_s64 (int32x2_t __a, int64x2_t __b, int64x2_t __c)
2686{
2687 return (int32x4_t) __builtin_aarch64_subhn2v2di (__a, __b, __c);
2688}
2689
a063e204
TC
2690__extension__ extern __inline uint8x16_t
2691__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2692vsubhn_high_u16 (uint8x8_t __a, uint16x8_t __b, uint16x8_t __c)
2693{
2694 return (uint8x16_t) __builtin_aarch64_subhn2v8hi ((int8x8_t) __a,
2695 (int16x8_t) __b,
2696 (int16x8_t) __c);
2697}
2698
a063e204
TC
2699__extension__ extern __inline uint16x8_t
2700__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2701vsubhn_high_u32 (uint16x4_t __a, uint32x4_t __b, uint32x4_t __c)
2702{
2703 return (uint16x8_t) __builtin_aarch64_subhn2v4si ((int16x4_t) __a,
2704 (int32x4_t) __b,
2705 (int32x4_t) __c);
2706}
2707
a063e204
TC
2708__extension__ extern __inline uint32x4_t
2709__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
2710vsubhn_high_u64 (uint32x2_t __a, uint64x2_t __b, uint64x2_t __c)
2711{
2712 return (uint32x4_t) __builtin_aarch64_subhn2v2di ((int32x2_t) __a,
2713 (int64x2_t) __b,
2714 (int64x2_t) __c);
2715}
2716
a063e204
TC
2717__extension__ extern __inline uint16x4_t
2718__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2719vqadd_u16 (uint16x4_t __a, uint16x4_t __b)
2720{
de10bcce 2721 return __builtin_aarch64_uqaddv4hi_uuu (__a, __b);
43e9d192
IB
2722}
2723
a063e204
TC
2724__extension__ extern __inline uint32x2_t
2725__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2726vqadd_u32 (uint32x2_t __a, uint32x2_t __b)
2727{
de10bcce 2728 return __builtin_aarch64_uqaddv2si_uuu (__a, __b);
43e9d192
IB
2729}
2730
a063e204
TC
2731__extension__ extern __inline uint64x1_t
2732__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2733vqadd_u64 (uint64x1_t __a, uint64x1_t __b)
2734{
096c59be 2735 return (uint64x1_t) {__builtin_aarch64_uqadddi_uuu (__a[0], __b[0])};
43e9d192
IB
2736}
2737
a063e204
TC
2738__extension__ extern __inline int8x16_t
2739__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2740vqaddq_s8 (int8x16_t __a, int8x16_t __b)
2741{
2742 return (int8x16_t) __builtin_aarch64_sqaddv16qi (__a, __b);
2743}
2744
a063e204
TC
2745__extension__ extern __inline int16x8_t
2746__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2747vqaddq_s16 (int16x8_t __a, int16x8_t __b)
2748{
2749 return (int16x8_t) __builtin_aarch64_sqaddv8hi (__a, __b);
2750}
2751
a063e204
TC
2752__extension__ extern __inline int32x4_t
2753__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2754vqaddq_s32 (int32x4_t __a, int32x4_t __b)
2755{
2756 return (int32x4_t) __builtin_aarch64_sqaddv4si (__a, __b);
2757}
2758
a063e204
TC
2759__extension__ extern __inline int64x2_t
2760__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2761vqaddq_s64 (int64x2_t __a, int64x2_t __b)
2762{
2763 return (int64x2_t) __builtin_aarch64_sqaddv2di (__a, __b);
2764}
2765
a063e204
TC
2766__extension__ extern __inline uint8x16_t
2767__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2768vqaddq_u8 (uint8x16_t __a, uint8x16_t __b)
2769{
de10bcce 2770 return __builtin_aarch64_uqaddv16qi_uuu (__a, __b);
43e9d192
IB
2771}
2772
a063e204
TC
2773__extension__ extern __inline uint16x8_t
2774__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2775vqaddq_u16 (uint16x8_t __a, uint16x8_t __b)
2776{
de10bcce 2777 return __builtin_aarch64_uqaddv8hi_uuu (__a, __b);
43e9d192
IB
2778}
2779
a063e204
TC
2780__extension__ extern __inline uint32x4_t
2781__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2782vqaddq_u32 (uint32x4_t __a, uint32x4_t __b)
2783{
de10bcce 2784 return __builtin_aarch64_uqaddv4si_uuu (__a, __b);
43e9d192
IB
2785}
2786
a063e204
TC
2787__extension__ extern __inline uint64x2_t
2788__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2789vqaddq_u64 (uint64x2_t __a, uint64x2_t __b)
2790{
de10bcce 2791 return __builtin_aarch64_uqaddv2di_uuu (__a, __b);
43e9d192
IB
2792}
2793
a063e204
TC
2794__extension__ extern __inline int8x8_t
2795__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2796vqsub_s8 (int8x8_t __a, int8x8_t __b)
2797{
2798 return (int8x8_t) __builtin_aarch64_sqsubv8qi (__a, __b);
2799}
2800
a063e204
TC
2801__extension__ extern __inline int16x4_t
2802__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2803vqsub_s16 (int16x4_t __a, int16x4_t __b)
2804{
2805 return (int16x4_t) __builtin_aarch64_sqsubv4hi (__a, __b);
2806}
2807
a063e204
TC
2808__extension__ extern __inline int32x2_t
2809__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2810vqsub_s32 (int32x2_t __a, int32x2_t __b)
2811{
2812 return (int32x2_t) __builtin_aarch64_sqsubv2si (__a, __b);
2813}
2814
a063e204
TC
2815__extension__ extern __inline int64x1_t
2816__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2817vqsub_s64 (int64x1_t __a, int64x1_t __b)
2818{
096c59be 2819 return (int64x1_t) {__builtin_aarch64_sqsubdi (__a[0], __b[0])};
43e9d192
IB
2820}
2821
a063e204
TC
2822__extension__ extern __inline uint8x8_t
2823__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2824vqsub_u8 (uint8x8_t __a, uint8x8_t __b)
2825{
de10bcce 2826 return __builtin_aarch64_uqsubv8qi_uuu (__a, __b);
43e9d192
IB
2827}
2828
a063e204
TC
2829__extension__ extern __inline uint16x4_t
2830__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2831vqsub_u16 (uint16x4_t __a, uint16x4_t __b)
2832{
de10bcce 2833 return __builtin_aarch64_uqsubv4hi_uuu (__a, __b);
43e9d192
IB
2834}
2835
a063e204
TC
2836__extension__ extern __inline uint32x2_t
2837__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2838vqsub_u32 (uint32x2_t __a, uint32x2_t __b)
2839{
de10bcce 2840 return __builtin_aarch64_uqsubv2si_uuu (__a, __b);
43e9d192
IB
2841}
2842
a063e204
TC
2843__extension__ extern __inline uint64x1_t
2844__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2845vqsub_u64 (uint64x1_t __a, uint64x1_t __b)
2846{
096c59be 2847 return (uint64x1_t) {__builtin_aarch64_uqsubdi_uuu (__a[0], __b[0])};
43e9d192
IB
2848}
2849
a063e204
TC
2850__extension__ extern __inline int8x16_t
2851__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2852vqsubq_s8 (int8x16_t __a, int8x16_t __b)
2853{
2854 return (int8x16_t) __builtin_aarch64_sqsubv16qi (__a, __b);
2855}
2856
a063e204
TC
2857__extension__ extern __inline int16x8_t
2858__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2859vqsubq_s16 (int16x8_t __a, int16x8_t __b)
2860{
2861 return (int16x8_t) __builtin_aarch64_sqsubv8hi (__a, __b);
2862}
2863
a063e204
TC
2864__extension__ extern __inline int32x4_t
2865__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2866vqsubq_s32 (int32x4_t __a, int32x4_t __b)
2867{
2868 return (int32x4_t) __builtin_aarch64_sqsubv4si (__a, __b);
2869}
2870
a063e204
TC
2871__extension__ extern __inline int64x2_t
2872__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2873vqsubq_s64 (int64x2_t __a, int64x2_t __b)
2874{
2875 return (int64x2_t) __builtin_aarch64_sqsubv2di (__a, __b);
2876}
2877
a063e204
TC
2878__extension__ extern __inline uint8x16_t
2879__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2880vqsubq_u8 (uint8x16_t __a, uint8x16_t __b)
2881{
de10bcce 2882 return __builtin_aarch64_uqsubv16qi_uuu (__a, __b);
43e9d192
IB
2883}
2884
a063e204
TC
2885__extension__ extern __inline uint16x8_t
2886__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2887vqsubq_u16 (uint16x8_t __a, uint16x8_t __b)
2888{
de10bcce 2889 return __builtin_aarch64_uqsubv8hi_uuu (__a, __b);
43e9d192
IB
2890}
2891
a063e204
TC
2892__extension__ extern __inline uint32x4_t
2893__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2894vqsubq_u32 (uint32x4_t __a, uint32x4_t __b)
2895{
de10bcce 2896 return __builtin_aarch64_uqsubv4si_uuu (__a, __b);
43e9d192
IB
2897}
2898
a063e204
TC
2899__extension__ extern __inline uint64x2_t
2900__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2901vqsubq_u64 (uint64x2_t __a, uint64x2_t __b)
2902{
de10bcce 2903 return __builtin_aarch64_uqsubv2di_uuu (__a, __b);
43e9d192
IB
2904}
2905
a063e204
TC
2906__extension__ extern __inline int8x8_t
2907__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2908vqneg_s8 (int8x8_t __a)
2909{
2910 return (int8x8_t) __builtin_aarch64_sqnegv8qi (__a);
2911}
2912
a063e204
TC
2913__extension__ extern __inline int16x4_t
2914__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2915vqneg_s16 (int16x4_t __a)
2916{
2917 return (int16x4_t) __builtin_aarch64_sqnegv4hi (__a);
2918}
2919
a063e204
TC
2920__extension__ extern __inline int32x2_t
2921__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2922vqneg_s32 (int32x2_t __a)
2923{
2924 return (int32x2_t) __builtin_aarch64_sqnegv2si (__a);
2925}
2926
a063e204
TC
2927__extension__ extern __inline int64x1_t
2928__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9551c7ec
AV
2929vqneg_s64 (int64x1_t __a)
2930{
096c59be 2931 return (int64x1_t) {__builtin_aarch64_sqnegdi (__a[0])};
9551c7ec
AV
2932}
2933
a063e204
TC
2934__extension__ extern __inline int8x16_t
2935__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2936vqnegq_s8 (int8x16_t __a)
2937{
2938 return (int8x16_t) __builtin_aarch64_sqnegv16qi (__a);
2939}
2940
a063e204
TC
2941__extension__ extern __inline int16x8_t
2942__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2943vqnegq_s16 (int16x8_t __a)
2944{
2945 return (int16x8_t) __builtin_aarch64_sqnegv8hi (__a);
2946}
2947
a063e204
TC
2948__extension__ extern __inline int32x4_t
2949__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2950vqnegq_s32 (int32x4_t __a)
2951{
2952 return (int32x4_t) __builtin_aarch64_sqnegv4si (__a);
2953}
2954
a063e204
TC
2955__extension__ extern __inline int8x8_t
2956__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2957vqabs_s8 (int8x8_t __a)
2958{
2959 return (int8x8_t) __builtin_aarch64_sqabsv8qi (__a);
2960}
2961
a063e204
TC
2962__extension__ extern __inline int16x4_t
2963__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2964vqabs_s16 (int16x4_t __a)
2965{
2966 return (int16x4_t) __builtin_aarch64_sqabsv4hi (__a);
2967}
2968
a063e204
TC
2969__extension__ extern __inline int32x2_t
2970__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2971vqabs_s32 (int32x2_t __a)
2972{
2973 return (int32x2_t) __builtin_aarch64_sqabsv2si (__a);
2974}
2975
a063e204
TC
2976__extension__ extern __inline int64x1_t
2977__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9551c7ec
AV
2978vqabs_s64 (int64x1_t __a)
2979{
096c59be 2980 return (int64x1_t) {__builtin_aarch64_sqabsdi (__a[0])};
9551c7ec
AV
2981}
2982
a063e204
TC
2983__extension__ extern __inline int8x16_t
2984__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2985vqabsq_s8 (int8x16_t __a)
2986{
2987 return (int8x16_t) __builtin_aarch64_sqabsv16qi (__a);
2988}
2989
a063e204
TC
2990__extension__ extern __inline int16x8_t
2991__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2992vqabsq_s16 (int16x8_t __a)
2993{
2994 return (int16x8_t) __builtin_aarch64_sqabsv8hi (__a);
2995}
2996
a063e204
TC
2997__extension__ extern __inline int32x4_t
2998__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
2999vqabsq_s32 (int32x4_t __a)
3000{
3001 return (int32x4_t) __builtin_aarch64_sqabsv4si (__a);
3002}
3003
a063e204
TC
3004__extension__ extern __inline int16x4_t
3005__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3006vqdmulh_s16 (int16x4_t __a, int16x4_t __b)
3007{
3008 return (int16x4_t) __builtin_aarch64_sqdmulhv4hi (__a, __b);
3009}
3010
a063e204
TC
3011__extension__ extern __inline int32x2_t
3012__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3013vqdmulh_s32 (int32x2_t __a, int32x2_t __b)
3014{
3015 return (int32x2_t) __builtin_aarch64_sqdmulhv2si (__a, __b);
3016}
3017
a063e204
TC
3018__extension__ extern __inline int16x8_t
3019__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3020vqdmulhq_s16 (int16x8_t __a, int16x8_t __b)
3021{
3022 return (int16x8_t) __builtin_aarch64_sqdmulhv8hi (__a, __b);
3023}
3024
a063e204
TC
3025__extension__ extern __inline int32x4_t
3026__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3027vqdmulhq_s32 (int32x4_t __a, int32x4_t __b)
3028{
3029 return (int32x4_t) __builtin_aarch64_sqdmulhv4si (__a, __b);
3030}
3031
a063e204
TC
3032__extension__ extern __inline int16x4_t
3033__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3034vqrdmulh_s16 (int16x4_t __a, int16x4_t __b)
3035{
3036 return (int16x4_t) __builtin_aarch64_sqrdmulhv4hi (__a, __b);
3037}
3038
a063e204
TC
3039__extension__ extern __inline int32x2_t
3040__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3041vqrdmulh_s32 (int32x2_t __a, int32x2_t __b)
3042{
3043 return (int32x2_t) __builtin_aarch64_sqrdmulhv2si (__a, __b);
3044}
3045
a063e204
TC
3046__extension__ extern __inline int16x8_t
3047__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3048vqrdmulhq_s16 (int16x8_t __a, int16x8_t __b)
3049{
3050 return (int16x8_t) __builtin_aarch64_sqrdmulhv8hi (__a, __b);
3051}
3052
a063e204
TC
3053__extension__ extern __inline int32x4_t
3054__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3055vqrdmulhq_s32 (int32x4_t __a, int32x4_t __b)
3056{
3057 return (int32x4_t) __builtin_aarch64_sqrdmulhv4si (__a, __b);
3058}
3059
a063e204
TC
3060__extension__ extern __inline int8x8_t
3061__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3062vcreate_s8 (uint64_t __a)
3063{
3064 return (int8x8_t) __a;
3065}
3066
a063e204
TC
3067__extension__ extern __inline int16x4_t
3068__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3069vcreate_s16 (uint64_t __a)
3070{
3071 return (int16x4_t) __a;
3072}
3073
a063e204
TC
3074__extension__ extern __inline int32x2_t
3075__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3076vcreate_s32 (uint64_t __a)
3077{
3078 return (int32x2_t) __a;
3079}
3080
a063e204
TC
3081__extension__ extern __inline int64x1_t
3082__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3083vcreate_s64 (uint64_t __a)
3084{
096c59be 3085 return (int64x1_t) {__a};
43e9d192
IB
3086}
3087
a063e204
TC
3088__extension__ extern __inline float16x4_t
3089__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7c369485
AL
3090vcreate_f16 (uint64_t __a)
3091{
3092 return (float16x4_t) __a;
3093}
3094
a063e204
TC
3095__extension__ extern __inline float32x2_t
3096__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3097vcreate_f32 (uint64_t __a)
3098{
3099 return (float32x2_t) __a;
3100}
3101
a063e204
TC
3102__extension__ extern __inline uint8x8_t
3103__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3104vcreate_u8 (uint64_t __a)
3105{
3106 return (uint8x8_t) __a;
3107}
3108
a063e204
TC
3109__extension__ extern __inline uint16x4_t
3110__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3111vcreate_u16 (uint64_t __a)
3112{
3113 return (uint16x4_t) __a;
3114}
3115
a063e204
TC
3116__extension__ extern __inline uint32x2_t
3117__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3118vcreate_u32 (uint64_t __a)
3119{
3120 return (uint32x2_t) __a;
3121}
3122
a063e204
TC
3123__extension__ extern __inline uint64x1_t
3124__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3125vcreate_u64 (uint64_t __a)
3126{
096c59be 3127 return (uint64x1_t) {__a};
43e9d192
IB
3128}
3129
a063e204
TC
3130__extension__ extern __inline float64x1_t
3131__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3132vcreate_f64 (uint64_t __a)
3133{
544009d3 3134 return (float64x1_t) __a;
43e9d192
IB
3135}
3136
a063e204
TC
3137__extension__ extern __inline poly8x8_t
3138__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3139vcreate_p8 (uint64_t __a)
3140{
3141 return (poly8x8_t) __a;
3142}
3143
a063e204
TC
3144__extension__ extern __inline poly16x4_t
3145__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3146vcreate_p16 (uint64_t __a)
3147{
3148 return (poly16x4_t) __a;
3149}
3150
159b8724
TC
3151__extension__ extern __inline poly64x1_t
3152__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3153vcreate_p64 (uint64_t __a)
3154{
3155 return (poly64x1_t) __a;
3156}
3157
66adb8eb
JG
3158/* vget_lane */
3159
a063e204
TC
3160__extension__ extern __inline float16_t
3161__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
71a11456
AL
3162vget_lane_f16 (float16x4_t __a, const int __b)
3163{
3164 return __aarch64_vget_lane_any (__a, __b);
3165}
3166
a063e204
TC
3167__extension__ extern __inline float32_t
3168__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
66adb8eb
JG
3169vget_lane_f32 (float32x2_t __a, const int __b)
3170{
ed225d0c 3171 return __aarch64_vget_lane_any (__a, __b);
66adb8eb
JG
3172}
3173
a063e204
TC
3174__extension__ extern __inline float64_t
3175__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
66adb8eb
JG
3176vget_lane_f64 (float64x1_t __a, const int __b)
3177{
ed225d0c 3178 return __aarch64_vget_lane_any (__a, __b);
66adb8eb
JG
3179}
3180
a063e204
TC
3181__extension__ extern __inline poly8_t
3182__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
66adb8eb
JG
3183vget_lane_p8 (poly8x8_t __a, const int __b)
3184{
ed225d0c 3185 return __aarch64_vget_lane_any (__a, __b);
66adb8eb
JG
3186}
3187
a063e204
TC
3188__extension__ extern __inline poly16_t
3189__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
66adb8eb
JG
3190vget_lane_p16 (poly16x4_t __a, const int __b)
3191{
ed225d0c 3192 return __aarch64_vget_lane_any (__a, __b);
66adb8eb
JG
3193}
3194
159b8724
TC
3195__extension__ extern __inline poly64_t
3196__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3197vget_lane_p64 (poly64x1_t __a, const int __b)
3198{
3199 return __aarch64_vget_lane_any (__a, __b);
3200}
3201
a063e204
TC
3202__extension__ extern __inline int8_t
3203__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3204vget_lane_s8 (int8x8_t __a, const int __b)
3205{
ed225d0c 3206 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3207}
3208
a063e204
TC
3209__extension__ extern __inline int16_t
3210__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3211vget_lane_s16 (int16x4_t __a, const int __b)
3212{
ed225d0c 3213 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3214}
3215
a063e204
TC
3216__extension__ extern __inline int32_t
3217__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3218vget_lane_s32 (int32x2_t __a, const int __b)
3219{
ed225d0c 3220 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3221}
3222
a063e204
TC
3223__extension__ extern __inline int64_t
3224__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
66adb8eb 3225vget_lane_s64 (int64x1_t __a, const int __b)
43e9d192 3226{
ed225d0c 3227 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3228}
3229
a063e204
TC
3230__extension__ extern __inline uint8_t
3231__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3232vget_lane_u8 (uint8x8_t __a, const int __b)
3233{
ed225d0c 3234 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3235}
3236
a063e204
TC
3237__extension__ extern __inline uint16_t
3238__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3239vget_lane_u16 (uint16x4_t __a, const int __b)
3240{
ed225d0c 3241 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3242}
3243
a063e204
TC
3244__extension__ extern __inline uint32_t
3245__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3246vget_lane_u32 (uint32x2_t __a, const int __b)
3247{
ed225d0c 3248 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3249}
3250
a063e204
TC
3251__extension__ extern __inline uint64_t
3252__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
66adb8eb 3253vget_lane_u64 (uint64x1_t __a, const int __b)
43e9d192 3254{
ed225d0c 3255 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3256}
3257
66adb8eb
JG
3258/* vgetq_lane */
3259
a063e204
TC
3260__extension__ extern __inline float16_t
3261__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
71a11456
AL
3262vgetq_lane_f16 (float16x8_t __a, const int __b)
3263{
3264 return __aarch64_vget_lane_any (__a, __b);
3265}
3266
a063e204
TC
3267__extension__ extern __inline float32_t
3268__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
66adb8eb 3269vgetq_lane_f32 (float32x4_t __a, const int __b)
43e9d192 3270{
ed225d0c 3271 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3272}
3273
a063e204
TC
3274__extension__ extern __inline float64_t
3275__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
66adb8eb 3276vgetq_lane_f64 (float64x2_t __a, const int __b)
43e9d192 3277{
ed225d0c 3278 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3279}
3280
a063e204
TC
3281__extension__ extern __inline poly8_t
3282__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
66adb8eb
JG
3283vgetq_lane_p8 (poly8x16_t __a, const int __b)
3284{
ed225d0c 3285 return __aarch64_vget_lane_any (__a, __b);
66adb8eb
JG
3286}
3287
a063e204
TC
3288__extension__ extern __inline poly16_t
3289__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
66adb8eb 3290vgetq_lane_p16 (poly16x8_t __a, const int __b)
43e9d192 3291{
ed225d0c 3292 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3293}
3294
159b8724
TC
3295__extension__ extern __inline poly64_t
3296__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3297vgetq_lane_p64 (poly64x2_t __a, const int __b)
3298{
3299 return __aarch64_vget_lane_any (__a, __b);
3300}
3301
a063e204
TC
3302__extension__ extern __inline int8_t
3303__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3304vgetq_lane_s8 (int8x16_t __a, const int __b)
3305{
ed225d0c 3306 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3307}
3308
a063e204
TC
3309__extension__ extern __inline int16_t
3310__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3311vgetq_lane_s16 (int16x8_t __a, const int __b)
3312{
ed225d0c 3313 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3314}
3315
a063e204
TC
3316__extension__ extern __inline int32_t
3317__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3318vgetq_lane_s32 (int32x4_t __a, const int __b)
3319{
ed225d0c 3320 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3321}
3322
a063e204
TC
3323__extension__ extern __inline int64_t
3324__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
66adb8eb 3325vgetq_lane_s64 (int64x2_t __a, const int __b)
43e9d192 3326{
ed225d0c 3327 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3328}
3329
a063e204
TC
3330__extension__ extern __inline uint8_t
3331__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3332vgetq_lane_u8 (uint8x16_t __a, const int __b)
3333{
ed225d0c 3334 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3335}
3336
a063e204
TC
3337__extension__ extern __inline uint16_t
3338__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3339vgetq_lane_u16 (uint16x8_t __a, const int __b)
3340{
ed225d0c 3341 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3342}
3343
a063e204
TC
3344__extension__ extern __inline uint32_t
3345__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3346vgetq_lane_u32 (uint32x4_t __a, const int __b)
3347{
ed225d0c 3348 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3349}
3350
a063e204
TC
3351__extension__ extern __inline uint64_t
3352__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3353vgetq_lane_u64 (uint64x2_t __a, const int __b)
3354{
ed225d0c 3355 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
3356}
3357
66adb8eb
JG
3358/* vreinterpret */
3359
a063e204
TC
3360__extension__ extern __inline poly8x8_t
3361__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
3362vreinterpret_p8_f16 (float16x4_t __a)
3363{
3364 return (poly8x8_t) __a;
3365}
3366
a063e204
TC
3367__extension__ extern __inline poly8x8_t
3368__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
3369vreinterpret_p8_f64 (float64x1_t __a)
3370{
bc138f7b 3371 return (poly8x8_t) __a;
bcd48995
AV
3372}
3373
a063e204
TC
3374__extension__ extern __inline poly8x8_t
3375__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3376vreinterpret_p8_s8 (int8x8_t __a)
3377{
0bf3afc1 3378 return (poly8x8_t) __a;
43e9d192
IB
3379}
3380
a063e204
TC
3381__extension__ extern __inline poly8x8_t
3382__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3383vreinterpret_p8_s16 (int16x4_t __a)
3384{
0bf3afc1 3385 return (poly8x8_t) __a;
43e9d192
IB
3386}
3387
a063e204
TC
3388__extension__ extern __inline poly8x8_t
3389__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3390vreinterpret_p8_s32 (int32x2_t __a)
3391{
0bf3afc1 3392 return (poly8x8_t) __a;
43e9d192
IB
3393}
3394
a063e204
TC
3395__extension__ extern __inline poly8x8_t
3396__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3397vreinterpret_p8_s64 (int64x1_t __a)
3398{
0bf3afc1 3399 return (poly8x8_t) __a;
43e9d192
IB
3400}
3401
a063e204
TC
3402__extension__ extern __inline poly8x8_t
3403__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3404vreinterpret_p8_f32 (float32x2_t __a)
3405{
0bf3afc1 3406 return (poly8x8_t) __a;
43e9d192
IB
3407}
3408
a063e204
TC
3409__extension__ extern __inline poly8x8_t
3410__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3411vreinterpret_p8_u8 (uint8x8_t __a)
3412{
0bf3afc1 3413 return (poly8x8_t) __a;
43e9d192
IB
3414}
3415
a063e204
TC
3416__extension__ extern __inline poly8x8_t
3417__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3418vreinterpret_p8_u16 (uint16x4_t __a)
3419{
0bf3afc1 3420 return (poly8x8_t) __a;
43e9d192
IB
3421}
3422
a063e204
TC
3423__extension__ extern __inline poly8x8_t
3424__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3425vreinterpret_p8_u32 (uint32x2_t __a)
3426{
0bf3afc1 3427 return (poly8x8_t) __a;
43e9d192
IB
3428}
3429
a063e204
TC
3430__extension__ extern __inline poly8x8_t
3431__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3432vreinterpret_p8_u64 (uint64x1_t __a)
3433{
0bf3afc1 3434 return (poly8x8_t) __a;
43e9d192
IB
3435}
3436
a063e204
TC
3437__extension__ extern __inline poly8x8_t
3438__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3439vreinterpret_p8_p16 (poly16x4_t __a)
3440{
0bf3afc1 3441 return (poly8x8_t) __a;
43e9d192
IB
3442}
3443
159b8724
TC
3444__extension__ extern __inline poly8x8_t
3445__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3446vreinterpret_p8_p64 (poly64x1_t __a)
3447{
3448 return (poly8x8_t) __a;
3449}
3450
a063e204
TC
3451__extension__ extern __inline poly8x16_t
3452__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
3453vreinterpretq_p8_f64 (float64x2_t __a)
3454{
3455 return (poly8x16_t) __a;
3456}
3457
a063e204
TC
3458__extension__ extern __inline poly8x16_t
3459__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3460vreinterpretq_p8_s8 (int8x16_t __a)
3461{
0bf3afc1 3462 return (poly8x16_t) __a;
43e9d192
IB
3463}
3464
a063e204
TC
3465__extension__ extern __inline poly8x16_t
3466__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3467vreinterpretq_p8_s16 (int16x8_t __a)
3468{
0bf3afc1 3469 return (poly8x16_t) __a;
43e9d192
IB
3470}
3471
a063e204
TC
3472__extension__ extern __inline poly8x16_t
3473__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3474vreinterpretq_p8_s32 (int32x4_t __a)
3475{
0bf3afc1 3476 return (poly8x16_t) __a;
43e9d192
IB
3477}
3478
a063e204
TC
3479__extension__ extern __inline poly8x16_t
3480__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3481vreinterpretq_p8_s64 (int64x2_t __a)
3482{
0bf3afc1 3483 return (poly8x16_t) __a;
43e9d192
IB
3484}
3485
a063e204
TC
3486__extension__ extern __inline poly8x16_t
3487__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
3488vreinterpretq_p8_f16 (float16x8_t __a)
3489{
3490 return (poly8x16_t) __a;
3491}
3492
a063e204
TC
3493__extension__ extern __inline poly8x16_t
3494__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3495vreinterpretq_p8_f32 (float32x4_t __a)
3496{
0bf3afc1 3497 return (poly8x16_t) __a;
43e9d192
IB
3498}
3499
a063e204
TC
3500__extension__ extern __inline poly8x16_t
3501__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3502vreinterpretq_p8_u8 (uint8x16_t __a)
3503{
0bf3afc1 3504 return (poly8x16_t) __a;
43e9d192
IB
3505}
3506
a063e204
TC
3507__extension__ extern __inline poly8x16_t
3508__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3509vreinterpretq_p8_u16 (uint16x8_t __a)
3510{
0bf3afc1 3511 return (poly8x16_t) __a;
43e9d192
IB
3512}
3513
a063e204
TC
3514__extension__ extern __inline poly8x16_t
3515__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3516vreinterpretq_p8_u32 (uint32x4_t __a)
3517{
0bf3afc1 3518 return (poly8x16_t) __a;
43e9d192
IB
3519}
3520
a063e204
TC
3521__extension__ extern __inline poly8x16_t
3522__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3523vreinterpretq_p8_u64 (uint64x2_t __a)
3524{
0bf3afc1 3525 return (poly8x16_t) __a;
43e9d192
IB
3526}
3527
a063e204
TC
3528__extension__ extern __inline poly8x16_t
3529__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3530vreinterpretq_p8_p16 (poly16x8_t __a)
3531{
0bf3afc1 3532 return (poly8x16_t) __a;
43e9d192
IB
3533}
3534
159b8724
TC
3535__extension__ extern __inline poly8x16_t
3536__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3537vreinterpretq_p8_p64 (poly64x2_t __a)
3538{
3539 return (poly8x16_t) __a;
3540}
3541
99b7a28d
TC
3542__extension__ extern __inline poly8x16_t
3543__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3544vreinterpretq_p8_p128 (poly128_t __a)
3545{
3546 return (poly8x16_t)__a;
3547}
3548
a063e204
TC
3549__extension__ extern __inline poly16x4_t
3550__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
3551vreinterpret_p16_f16 (float16x4_t __a)
3552{
3553 return (poly16x4_t) __a;
3554}
3555
a063e204
TC
3556__extension__ extern __inline poly16x4_t
3557__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
3558vreinterpret_p16_f64 (float64x1_t __a)
3559{
bc138f7b 3560 return (poly16x4_t) __a;
bcd48995
AV
3561}
3562
a063e204
TC
3563__extension__ extern __inline poly16x4_t
3564__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3565vreinterpret_p16_s8 (int8x8_t __a)
3566{
0bf3afc1 3567 return (poly16x4_t) __a;
43e9d192
IB
3568}
3569
a063e204
TC
3570__extension__ extern __inline poly16x4_t
3571__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3572vreinterpret_p16_s16 (int16x4_t __a)
3573{
0bf3afc1 3574 return (poly16x4_t) __a;
43e9d192
IB
3575}
3576
a063e204
TC
3577__extension__ extern __inline poly16x4_t
3578__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3579vreinterpret_p16_s32 (int32x2_t __a)
3580{
0bf3afc1 3581 return (poly16x4_t) __a;
43e9d192
IB
3582}
3583
a063e204
TC
3584__extension__ extern __inline poly16x4_t
3585__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3586vreinterpret_p16_s64 (int64x1_t __a)
3587{
0bf3afc1 3588 return (poly16x4_t) __a;
43e9d192
IB
3589}
3590
a063e204
TC
3591__extension__ extern __inline poly16x4_t
3592__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3593vreinterpret_p16_f32 (float32x2_t __a)
3594{
0bf3afc1 3595 return (poly16x4_t) __a;
43e9d192
IB
3596}
3597
a063e204
TC
3598__extension__ extern __inline poly16x4_t
3599__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3600vreinterpret_p16_u8 (uint8x8_t __a)
3601{
0bf3afc1 3602 return (poly16x4_t) __a;
43e9d192
IB
3603}
3604
a063e204
TC
3605__extension__ extern __inline poly16x4_t
3606__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3607vreinterpret_p16_u16 (uint16x4_t __a)
3608{
0bf3afc1 3609 return (poly16x4_t) __a;
43e9d192
IB
3610}
3611
a063e204
TC
3612__extension__ extern __inline poly16x4_t
3613__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3614vreinterpret_p16_u32 (uint32x2_t __a)
3615{
0bf3afc1 3616 return (poly16x4_t) __a;
43e9d192
IB
3617}
3618
a063e204
TC
3619__extension__ extern __inline poly16x4_t
3620__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3621vreinterpret_p16_u64 (uint64x1_t __a)
3622{
0bf3afc1 3623 return (poly16x4_t) __a;
43e9d192
IB
3624}
3625
a063e204
TC
3626__extension__ extern __inline poly16x4_t
3627__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3628vreinterpret_p16_p8 (poly8x8_t __a)
3629{
0bf3afc1 3630 return (poly16x4_t) __a;
43e9d192
IB
3631}
3632
159b8724
TC
3633__extension__ extern __inline poly16x4_t
3634__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3635vreinterpret_p16_p64 (poly64x1_t __a)
3636{
3637 return (poly16x4_t) __a;
3638}
3639
a063e204
TC
3640__extension__ extern __inline poly16x8_t
3641__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
3642vreinterpretq_p16_f64 (float64x2_t __a)
3643{
3644 return (poly16x8_t) __a;
3645}
3646
a063e204
TC
3647__extension__ extern __inline poly16x8_t
3648__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3649vreinterpretq_p16_s8 (int8x16_t __a)
3650{
0bf3afc1 3651 return (poly16x8_t) __a;
43e9d192
IB
3652}
3653
a063e204
TC
3654__extension__ extern __inline poly16x8_t
3655__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3656vreinterpretq_p16_s16 (int16x8_t __a)
3657{
0bf3afc1 3658 return (poly16x8_t) __a;
43e9d192
IB
3659}
3660
a063e204
TC
3661__extension__ extern __inline poly16x8_t
3662__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3663vreinterpretq_p16_s32 (int32x4_t __a)
3664{
0bf3afc1 3665 return (poly16x8_t) __a;
43e9d192
IB
3666}
3667
a063e204
TC
3668__extension__ extern __inline poly16x8_t
3669__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3670vreinterpretq_p16_s64 (int64x2_t __a)
3671{
0bf3afc1 3672 return (poly16x8_t) __a;
43e9d192
IB
3673}
3674
a063e204
TC
3675__extension__ extern __inline poly16x8_t
3676__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
3677vreinterpretq_p16_f16 (float16x8_t __a)
3678{
3679 return (poly16x8_t) __a;
3680}
3681
a063e204
TC
3682__extension__ extern __inline poly16x8_t
3683__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3684vreinterpretq_p16_f32 (float32x4_t __a)
3685{
0bf3afc1 3686 return (poly16x8_t) __a;
43e9d192
IB
3687}
3688
a063e204
TC
3689__extension__ extern __inline poly16x8_t
3690__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3691vreinterpretq_p16_u8 (uint8x16_t __a)
3692{
0bf3afc1 3693 return (poly16x8_t) __a;
43e9d192
IB
3694}
3695
a063e204
TC
3696__extension__ extern __inline poly16x8_t
3697__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3698vreinterpretq_p16_u16 (uint16x8_t __a)
3699{
0bf3afc1 3700 return (poly16x8_t) __a;
43e9d192
IB
3701}
3702
a063e204
TC
3703__extension__ extern __inline poly16x8_t
3704__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3705vreinterpretq_p16_u32 (uint32x4_t __a)
3706{
0bf3afc1 3707 return (poly16x8_t) __a;
43e9d192
IB
3708}
3709
a063e204
TC
3710__extension__ extern __inline poly16x8_t
3711__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3712vreinterpretq_p16_u64 (uint64x2_t __a)
3713{
0bf3afc1 3714 return (poly16x8_t) __a;
43e9d192
IB
3715}
3716
a063e204
TC
3717__extension__ extern __inline poly16x8_t
3718__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
3719vreinterpretq_p16_p8 (poly8x16_t __a)
3720{
0bf3afc1 3721 return (poly16x8_t) __a;
43e9d192
IB
3722}
3723
159b8724
TC
3724__extension__ extern __inline poly16x8_t
3725__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3726vreinterpretq_p16_p64 (poly64x2_t __a)
3727{
3728 return (poly16x8_t) __a;
3729}
3730
99b7a28d
TC
3731__extension__ extern __inline poly16x8_t
3732__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3733vreinterpretq_p16_p128 (poly128_t __a)
3734{
3735 return (poly16x8_t)__a;
3736}
3737
159b8724
TC
3738__extension__ extern __inline poly64x1_t
3739__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3740vreinterpret_p64_f16 (float16x4_t __a)
3741{
3742 return (poly64x1_t) __a;
3743}
3744
3745__extension__ extern __inline poly64x1_t
3746__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3747vreinterpret_p64_f64 (float64x1_t __a)
3748{
3749 return (poly64x1_t) __a;
3750}
3751
3752__extension__ extern __inline poly64x1_t
3753__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3754vreinterpret_p64_s8 (int8x8_t __a)
3755{
3756 return (poly64x1_t) __a;
3757}
3758
3759__extension__ extern __inline poly64x1_t
3760__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3761vreinterpret_p64_s16 (int16x4_t __a)
3762{
3763 return (poly64x1_t) __a;
3764}
3765
3766__extension__ extern __inline poly64x1_t
3767__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3768vreinterpret_p64_s32 (int32x2_t __a)
3769{
3770 return (poly64x1_t) __a;
3771}
3772
3773__extension__ extern __inline poly64x1_t
3774__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3775vreinterpret_p64_s64 (int64x1_t __a)
3776{
3777 return (poly64x1_t) __a;
3778}
3779
3780__extension__ extern __inline poly64x1_t
3781__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3782vreinterpret_p64_f32 (float32x2_t __a)
3783{
3784 return (poly64x1_t) __a;
3785}
3786
3787__extension__ extern __inline poly64x1_t
3788__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3789vreinterpret_p64_u8 (uint8x8_t __a)
3790{
3791 return (poly64x1_t) __a;
3792}
3793
3794__extension__ extern __inline poly64x1_t
3795__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3796vreinterpret_p64_u16 (uint16x4_t __a)
3797{
3798 return (poly64x1_t) __a;
3799}
3800
3801__extension__ extern __inline poly64x1_t
3802__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3803vreinterpret_p64_u32 (uint32x2_t __a)
3804{
3805 return (poly64x1_t) __a;
3806}
3807
3808__extension__ extern __inline poly64x1_t
3809__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3810vreinterpret_p64_u64 (uint64x1_t __a)
3811{
3812 return (poly64x1_t) __a;
3813}
3814
3815__extension__ extern __inline poly64x1_t
3816__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3817vreinterpret_p64_p8 (poly8x8_t __a)
3818{
3819 return (poly64x1_t) __a;
3820}
3821
99b7a28d
TC
3822__extension__ extern __inline poly64x1_t
3823__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3824vreinterpret_p64_p16 (poly16x4_t __a)
3825{
3826 return (poly64x1_t)__a;
3827}
3828
159b8724
TC
3829__extension__ extern __inline poly64x2_t
3830__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3831vreinterpretq_p64_f64 (float64x2_t __a)
3832{
3833 return (poly64x2_t) __a;
3834}
3835
3836__extension__ extern __inline poly64x2_t
3837__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3838vreinterpretq_p64_s8 (int8x16_t __a)
3839{
3840 return (poly64x2_t) __a;
3841}
3842
3843__extension__ extern __inline poly64x2_t
3844__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3845vreinterpretq_p64_s16 (int16x8_t __a)
3846{
3847 return (poly64x2_t) __a;
3848}
3849
3850__extension__ extern __inline poly64x2_t
3851__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3852vreinterpretq_p64_s32 (int32x4_t __a)
3853{
3854 return (poly64x2_t) __a;
3855}
3856
3857__extension__ extern __inline poly64x2_t
3858__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3859vreinterpretq_p64_s64 (int64x2_t __a)
3860{
3861 return (poly64x2_t) __a;
3862}
3863
3864__extension__ extern __inline poly64x2_t
3865__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3866vreinterpretq_p64_f16 (float16x8_t __a)
3867{
3868 return (poly64x2_t) __a;
3869}
3870
3871__extension__ extern __inline poly64x2_t
3872__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3873vreinterpretq_p64_f32 (float32x4_t __a)
3874{
3875 return (poly64x2_t) __a;
3876}
3877
99b7a28d
TC
3878__extension__ extern __inline poly64x2_t
3879__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3880vreinterpretq_p64_p128 (poly128_t __a)
3881{
3882 return (poly64x2_t)__a;
3883}
3884
159b8724
TC
3885__extension__ extern __inline poly64x2_t
3886__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3887vreinterpretq_p64_u8 (uint8x16_t __a)
3888{
3889 return (poly64x2_t) __a;
3890}
3891
3892__extension__ extern __inline poly64x2_t
3893__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3894vreinterpretq_p64_u16 (uint16x8_t __a)
3895{
3896 return (poly64x2_t) __a;
3897}
3898
99b7a28d
TC
3899__extension__ extern __inline poly64x2_t
3900__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3901vreinterpretq_p64_p16 (poly16x8_t __a)
3902{
3903 return (poly64x2_t)__a;
3904}
3905
159b8724
TC
3906__extension__ extern __inline poly64x2_t
3907__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3908vreinterpretq_p64_u32 (uint32x4_t __a)
3909{
3910 return (poly64x2_t) __a;
3911}
3912
3913__extension__ extern __inline poly64x2_t
3914__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3915vreinterpretq_p64_u64 (uint64x2_t __a)
3916{
3917 return (poly64x2_t) __a;
3918}
3919
3920__extension__ extern __inline poly64x2_t
3921__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3922vreinterpretq_p64_p8 (poly8x16_t __a)
3923{
3924 return (poly64x2_t) __a;
3925}
3926
99b7a28d
TC
3927__extension__ extern __inline poly128_t
3928__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3929vreinterpretq_p128_p8 (poly8x16_t __a)
3930{
3931 return (poly128_t)__a;
3932}
3933
3934__extension__ extern __inline poly128_t
3935__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3936vreinterpretq_p128_p16 (poly16x8_t __a)
3937{
3938 return (poly128_t)__a;
3939}
3940
3941__extension__ extern __inline poly128_t
3942__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3943vreinterpretq_p128_f16 (float16x8_t __a)
3944{
3945 return (poly128_t) __a;
3946}
3947
3948__extension__ extern __inline poly128_t
3949__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3950vreinterpretq_p128_f32 (float32x4_t __a)
3951{
3952 return (poly128_t)__a;
3953}
3954
3955__extension__ extern __inline poly128_t
3956__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3957vreinterpretq_p128_p64 (poly64x2_t __a)
3958{
3959 return (poly128_t)__a;
3960}
3961
3962__extension__ extern __inline poly128_t
3963__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3964vreinterpretq_p128_s64 (int64x2_t __a)
3965{
3966 return (poly128_t)__a;
3967}
3968
3969__extension__ extern __inline poly128_t
3970__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3971vreinterpretq_p128_u64 (uint64x2_t __a)
3972{
3973 return (poly128_t)__a;
3974}
3975
3976__extension__ extern __inline poly128_t
3977__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3978vreinterpretq_p128_s8 (int8x16_t __a)
3979{
3980 return (poly128_t)__a;
3981}
3982
3983__extension__ extern __inline poly128_t
3984__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3985vreinterpretq_p128_s16 (int16x8_t __a)
3986{
3987 return (poly128_t)__a;
3988}
3989
3990__extension__ extern __inline poly128_t
3991__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3992vreinterpretq_p128_s32 (int32x4_t __a)
3993{
3994 return (poly128_t)__a;
3995}
3996
3997__extension__ extern __inline poly128_t
3998__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3999vreinterpretq_p128_u8 (uint8x16_t __a)
4000{
4001 return (poly128_t)__a;
4002}
4003
4004__extension__ extern __inline poly128_t
4005__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4006vreinterpretq_p128_u16 (uint16x8_t __a)
4007{
4008 return (poly128_t)__a;
4009}
4010
4011__extension__ extern __inline poly128_t
4012__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4013vreinterpretq_p128_u32 (uint32x4_t __a)
4014{
4015 return (poly128_t)__a;
4016}
4017
a063e204
TC
4018__extension__ extern __inline float16x4_t
4019__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4020vreinterpret_f16_f64 (float64x1_t __a)
4021{
4022 return (float16x4_t) __a;
4023}
4024
a063e204
TC
4025__extension__ extern __inline float16x4_t
4026__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4027vreinterpret_f16_s8 (int8x8_t __a)
4028{
4029 return (float16x4_t) __a;
4030}
4031
a063e204
TC
4032__extension__ extern __inline float16x4_t
4033__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4034vreinterpret_f16_s16 (int16x4_t __a)
4035{
4036 return (float16x4_t) __a;
4037}
4038
a063e204
TC
4039__extension__ extern __inline float16x4_t
4040__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4041vreinterpret_f16_s32 (int32x2_t __a)
4042{
4043 return (float16x4_t) __a;
4044}
4045
a063e204
TC
4046__extension__ extern __inline float16x4_t
4047__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4048vreinterpret_f16_s64 (int64x1_t __a)
4049{
4050 return (float16x4_t) __a;
4051}
4052
a063e204
TC
4053__extension__ extern __inline float16x4_t
4054__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4055vreinterpret_f16_f32 (float32x2_t __a)
4056{
4057 return (float16x4_t) __a;
4058}
4059
a063e204
TC
4060__extension__ extern __inline float16x4_t
4061__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4062vreinterpret_f16_u8 (uint8x8_t __a)
4063{
4064 return (float16x4_t) __a;
4065}
4066
a063e204
TC
4067__extension__ extern __inline float16x4_t
4068__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4069vreinterpret_f16_u16 (uint16x4_t __a)
4070{
4071 return (float16x4_t) __a;
4072}
4073
a063e204
TC
4074__extension__ extern __inline float16x4_t
4075__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4076vreinterpret_f16_u32 (uint32x2_t __a)
4077{
4078 return (float16x4_t) __a;
4079}
4080
a063e204
TC
4081__extension__ extern __inline float16x4_t
4082__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4083vreinterpret_f16_u64 (uint64x1_t __a)
4084{
4085 return (float16x4_t) __a;
4086}
4087
a063e204
TC
4088__extension__ extern __inline float16x4_t
4089__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4090vreinterpret_f16_p8 (poly8x8_t __a)
4091{
4092 return (float16x4_t) __a;
4093}
4094
a063e204
TC
4095__extension__ extern __inline float16x4_t
4096__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4097vreinterpret_f16_p16 (poly16x4_t __a)
4098{
4099 return (float16x4_t) __a;
4100}
4101
159b8724
TC
4102__extension__ extern __inline float16x4_t
4103__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4104vreinterpret_f16_p64 (poly64x1_t __a)
4105{
4106 return (float16x4_t) __a;
4107}
4108
a063e204
TC
4109__extension__ extern __inline float16x8_t
4110__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4111vreinterpretq_f16_f64 (float64x2_t __a)
4112{
4113 return (float16x8_t) __a;
4114}
4115
a063e204
TC
4116__extension__ extern __inline float16x8_t
4117__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4118vreinterpretq_f16_s8 (int8x16_t __a)
4119{
4120 return (float16x8_t) __a;
4121}
4122
a063e204
TC
4123__extension__ extern __inline float16x8_t
4124__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4125vreinterpretq_f16_s16 (int16x8_t __a)
4126{
4127 return (float16x8_t) __a;
4128}
4129
a063e204
TC
4130__extension__ extern __inline float16x8_t
4131__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4132vreinterpretq_f16_s32 (int32x4_t __a)
4133{
4134 return (float16x8_t) __a;
4135}
4136
a063e204
TC
4137__extension__ extern __inline float16x8_t
4138__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4139vreinterpretq_f16_s64 (int64x2_t __a)
4140{
4141 return (float16x8_t) __a;
4142}
4143
a063e204
TC
4144__extension__ extern __inline float16x8_t
4145__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4146vreinterpretq_f16_f32 (float32x4_t __a)
4147{
4148 return (float16x8_t) __a;
4149}
4150
a063e204
TC
4151__extension__ extern __inline float16x8_t
4152__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4153vreinterpretq_f16_u8 (uint8x16_t __a)
4154{
4155 return (float16x8_t) __a;
4156}
4157
a063e204
TC
4158__extension__ extern __inline float16x8_t
4159__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4160vreinterpretq_f16_u16 (uint16x8_t __a)
4161{
4162 return (float16x8_t) __a;
4163}
4164
a063e204
TC
4165__extension__ extern __inline float16x8_t
4166__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4167vreinterpretq_f16_u32 (uint32x4_t __a)
4168{
4169 return (float16x8_t) __a;
4170}
4171
a063e204
TC
4172__extension__ extern __inline float16x8_t
4173__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4174vreinterpretq_f16_u64 (uint64x2_t __a)
4175{
4176 return (float16x8_t) __a;
4177}
4178
a063e204
TC
4179__extension__ extern __inline float16x8_t
4180__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4181vreinterpretq_f16_p8 (poly8x16_t __a)
4182{
4183 return (float16x8_t) __a;
4184}
4185
99b7a28d
TC
4186__extension__ extern __inline float16x8_t
4187__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4188vreinterpretq_f16_p128 (poly128_t __a)
4189{
4190 return (float16x8_t) __a;
4191}
4192
a063e204
TC
4193__extension__ extern __inline float16x8_t
4194__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4195vreinterpretq_f16_p16 (poly16x8_t __a)
4196{
4197 return (float16x8_t) __a;
4198}
4199
159b8724
TC
4200__extension__ extern __inline float16x8_t
4201__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4202vreinterpretq_f16_p64 (poly64x2_t __a)
4203{
4204 return (float16x8_t) __a;
4205}
4206
a063e204
TC
4207__extension__ extern __inline float32x2_t
4208__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4209vreinterpret_f32_f16 (float16x4_t __a)
4210{
4211 return (float32x2_t) __a;
4212}
4213
a063e204
TC
4214__extension__ extern __inline float32x2_t
4215__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4216vreinterpret_f32_f64 (float64x1_t __a)
4217{
bc138f7b 4218 return (float32x2_t) __a;
bcd48995
AV
4219}
4220
a063e204
TC
4221__extension__ extern __inline float32x2_t
4222__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4223vreinterpret_f32_s8 (int8x8_t __a)
4224{
0bf3afc1 4225 return (float32x2_t) __a;
43e9d192
IB
4226}
4227
a063e204
TC
4228__extension__ extern __inline float32x2_t
4229__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4230vreinterpret_f32_s16 (int16x4_t __a)
4231{
0bf3afc1 4232 return (float32x2_t) __a;
43e9d192
IB
4233}
4234
a063e204
TC
4235__extension__ extern __inline float32x2_t
4236__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4237vreinterpret_f32_s32 (int32x2_t __a)
4238{
0bf3afc1 4239 return (float32x2_t) __a;
43e9d192
IB
4240}
4241
a063e204
TC
4242__extension__ extern __inline float32x2_t
4243__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4244vreinterpret_f32_s64 (int64x1_t __a)
4245{
0bf3afc1 4246 return (float32x2_t) __a;
43e9d192
IB
4247}
4248
a063e204
TC
4249__extension__ extern __inline float32x2_t
4250__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4251vreinterpret_f32_u8 (uint8x8_t __a)
4252{
0bf3afc1 4253 return (float32x2_t) __a;
43e9d192
IB
4254}
4255
a063e204
TC
4256__extension__ extern __inline float32x2_t
4257__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4258vreinterpret_f32_u16 (uint16x4_t __a)
4259{
0bf3afc1 4260 return (float32x2_t) __a;
43e9d192
IB
4261}
4262
a063e204
TC
4263__extension__ extern __inline float32x2_t
4264__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4265vreinterpret_f32_u32 (uint32x2_t __a)
4266{
0bf3afc1 4267 return (float32x2_t) __a;
43e9d192
IB
4268}
4269
a063e204
TC
4270__extension__ extern __inline float32x2_t
4271__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4272vreinterpret_f32_u64 (uint64x1_t __a)
4273{
0bf3afc1 4274 return (float32x2_t) __a;
43e9d192
IB
4275}
4276
a063e204
TC
4277__extension__ extern __inline float32x2_t
4278__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4279vreinterpret_f32_p8 (poly8x8_t __a)
4280{
0bf3afc1 4281 return (float32x2_t) __a;
43e9d192
IB
4282}
4283
a063e204
TC
4284__extension__ extern __inline float32x2_t
4285__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4286vreinterpret_f32_p16 (poly16x4_t __a)
4287{
0bf3afc1 4288 return (float32x2_t) __a;
43e9d192
IB
4289}
4290
159b8724
TC
4291__extension__ extern __inline float32x2_t
4292__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4293vreinterpret_f32_p64 (poly64x1_t __a)
4294{
4295 return (float32x2_t) __a;
4296}
4297
a063e204
TC
4298__extension__ extern __inline float32x4_t
4299__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4300vreinterpretq_f32_f16 (float16x8_t __a)
4301{
4302 return (float32x4_t) __a;
4303}
4304
a063e204
TC
4305__extension__ extern __inline float32x4_t
4306__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4307vreinterpretq_f32_f64 (float64x2_t __a)
4308{
4309 return (float32x4_t) __a;
4310}
4311
a063e204
TC
4312__extension__ extern __inline float32x4_t
4313__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4314vreinterpretq_f32_s8 (int8x16_t __a)
4315{
0bf3afc1 4316 return (float32x4_t) __a;
43e9d192
IB
4317}
4318
a063e204
TC
4319__extension__ extern __inline float32x4_t
4320__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4321vreinterpretq_f32_s16 (int16x8_t __a)
4322{
0bf3afc1 4323 return (float32x4_t) __a;
43e9d192
IB
4324}
4325
a063e204
TC
4326__extension__ extern __inline float32x4_t
4327__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4328vreinterpretq_f32_s32 (int32x4_t __a)
4329{
0bf3afc1 4330 return (float32x4_t) __a;
43e9d192
IB
4331}
4332
a063e204
TC
4333__extension__ extern __inline float32x4_t
4334__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4335vreinterpretq_f32_s64 (int64x2_t __a)
4336{
0bf3afc1 4337 return (float32x4_t) __a;
43e9d192
IB
4338}
4339
a063e204
TC
4340__extension__ extern __inline float32x4_t
4341__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4342vreinterpretq_f32_u8 (uint8x16_t __a)
4343{
0bf3afc1 4344 return (float32x4_t) __a;
43e9d192
IB
4345}
4346
a063e204
TC
4347__extension__ extern __inline float32x4_t
4348__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4349vreinterpretq_f32_u16 (uint16x8_t __a)
4350{
0bf3afc1 4351 return (float32x4_t) __a;
43e9d192
IB
4352}
4353
a063e204
TC
4354__extension__ extern __inline float32x4_t
4355__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4356vreinterpretq_f32_u32 (uint32x4_t __a)
4357{
0bf3afc1 4358 return (float32x4_t) __a;
43e9d192
IB
4359}
4360
a063e204
TC
4361__extension__ extern __inline float32x4_t
4362__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4363vreinterpretq_f32_u64 (uint64x2_t __a)
4364{
0bf3afc1 4365 return (float32x4_t) __a;
43e9d192
IB
4366}
4367
a063e204
TC
4368__extension__ extern __inline float32x4_t
4369__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4370vreinterpretq_f32_p8 (poly8x16_t __a)
4371{
0bf3afc1 4372 return (float32x4_t) __a;
43e9d192
IB
4373}
4374
a063e204
TC
4375__extension__ extern __inline float32x4_t
4376__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4377vreinterpretq_f32_p16 (poly16x8_t __a)
4378{
0bf3afc1 4379 return (float32x4_t) __a;
43e9d192
IB
4380}
4381
159b8724
TC
4382__extension__ extern __inline float32x4_t
4383__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4384vreinterpretq_f32_p64 (poly64x2_t __a)
4385{
4386 return (float32x4_t) __a;
4387}
4388
99b7a28d
TC
4389__extension__ extern __inline float32x4_t
4390__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4391vreinterpretq_f32_p128 (poly128_t __a)
4392{
4393 return (float32x4_t)__a;
4394}
4395
4396
a063e204
TC
4397__extension__ extern __inline float64x1_t
4398__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4399vreinterpret_f64_f16 (float16x4_t __a)
4400{
4401 return (float64x1_t) __a;
4402}
4403
a063e204
TC
4404__extension__ extern __inline float64x1_t
4405__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4406vreinterpret_f64_f32 (float32x2_t __a)
4407{
bc138f7b 4408 return (float64x1_t) __a;
bcd48995
AV
4409}
4410
a063e204
TC
4411__extension__ extern __inline float64x1_t
4412__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4413vreinterpret_f64_p8 (poly8x8_t __a)
4414{
bc138f7b 4415 return (float64x1_t) __a;
bcd48995
AV
4416}
4417
a063e204
TC
4418__extension__ extern __inline float64x1_t
4419__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4420vreinterpret_f64_p16 (poly16x4_t __a)
4421{
bc138f7b 4422 return (float64x1_t) __a;
bcd48995
AV
4423}
4424
159b8724
TC
4425__extension__ extern __inline float64x1_t
4426__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4427vreinterpret_f64_p64 (poly64x1_t __a)
4428{
4429 return (float64x1_t) __a;
4430}
4431
a063e204
TC
4432__extension__ extern __inline float64x1_t
4433__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4434vreinterpret_f64_s8 (int8x8_t __a)
4435{
bc138f7b 4436 return (float64x1_t) __a;
bcd48995
AV
4437}
4438
a063e204
TC
4439__extension__ extern __inline float64x1_t
4440__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4441vreinterpret_f64_s16 (int16x4_t __a)
4442{
bc138f7b 4443 return (float64x1_t) __a;
bcd48995
AV
4444}
4445
a063e204
TC
4446__extension__ extern __inline float64x1_t
4447__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4448vreinterpret_f64_s32 (int32x2_t __a)
4449{
bc138f7b 4450 return (float64x1_t) __a;
bcd48995
AV
4451}
4452
a063e204
TC
4453__extension__ extern __inline float64x1_t
4454__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4455vreinterpret_f64_s64 (int64x1_t __a)
4456{
544009d3 4457 return (float64x1_t) __a;
bcd48995
AV
4458}
4459
a063e204
TC
4460__extension__ extern __inline float64x1_t
4461__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4462vreinterpret_f64_u8 (uint8x8_t __a)
4463{
bc138f7b 4464 return (float64x1_t) __a;
bcd48995
AV
4465}
4466
a063e204
TC
4467__extension__ extern __inline float64x1_t
4468__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4469vreinterpret_f64_u16 (uint16x4_t __a)
4470{
bc138f7b 4471 return (float64x1_t) __a;
bcd48995
AV
4472}
4473
a063e204
TC
4474__extension__ extern __inline float64x1_t
4475__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4476vreinterpret_f64_u32 (uint32x2_t __a)
4477{
bc138f7b 4478 return (float64x1_t) __a;
bcd48995
AV
4479}
4480
a063e204
TC
4481__extension__ extern __inline float64x1_t
4482__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4483vreinterpret_f64_u64 (uint64x1_t __a)
4484{
544009d3 4485 return (float64x1_t) __a;
bcd48995
AV
4486}
4487
a063e204
TC
4488__extension__ extern __inline float64x2_t
4489__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4490vreinterpretq_f64_f16 (float16x8_t __a)
4491{
4492 return (float64x2_t) __a;
4493}
4494
a063e204
TC
4495__extension__ extern __inline float64x2_t
4496__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4497vreinterpretq_f64_f32 (float32x4_t __a)
4498{
4499 return (float64x2_t) __a;
4500}
4501
a063e204
TC
4502__extension__ extern __inline float64x2_t
4503__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4504vreinterpretq_f64_p8 (poly8x16_t __a)
4505{
4506 return (float64x2_t) __a;
4507}
4508
a063e204
TC
4509__extension__ extern __inline float64x2_t
4510__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4511vreinterpretq_f64_p16 (poly16x8_t __a)
4512{
4513 return (float64x2_t) __a;
4514}
4515
159b8724
TC
4516__extension__ extern __inline float64x2_t
4517__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4518vreinterpretq_f64_p64 (poly64x2_t __a)
4519{
4520 return (float64x2_t) __a;
4521}
4522
a063e204
TC
4523__extension__ extern __inline float64x2_t
4524__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4525vreinterpretq_f64_s8 (int8x16_t __a)
4526{
4527 return (float64x2_t) __a;
4528}
4529
a063e204
TC
4530__extension__ extern __inline float64x2_t
4531__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4532vreinterpretq_f64_s16 (int16x8_t __a)
4533{
4534 return (float64x2_t) __a;
4535}
4536
a063e204
TC
4537__extension__ extern __inline float64x2_t
4538__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4539vreinterpretq_f64_s32 (int32x4_t __a)
4540{
4541 return (float64x2_t) __a;
4542}
4543
a063e204
TC
4544__extension__ extern __inline float64x2_t
4545__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4546vreinterpretq_f64_s64 (int64x2_t __a)
4547{
4548 return (float64x2_t) __a;
4549}
4550
a063e204
TC
4551__extension__ extern __inline float64x2_t
4552__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4553vreinterpretq_f64_u8 (uint8x16_t __a)
4554{
4555 return (float64x2_t) __a;
4556}
4557
a063e204
TC
4558__extension__ extern __inline float64x2_t
4559__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4560vreinterpretq_f64_u16 (uint16x8_t __a)
4561{
4562 return (float64x2_t) __a;
4563}
4564
a063e204
TC
4565__extension__ extern __inline float64x2_t
4566__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4567vreinterpretq_f64_u32 (uint32x4_t __a)
4568{
4569 return (float64x2_t) __a;
4570}
4571
a063e204
TC
4572__extension__ extern __inline float64x2_t
4573__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4574vreinterpretq_f64_u64 (uint64x2_t __a)
4575{
4576 return (float64x2_t) __a;
4577}
4578
a063e204
TC
4579__extension__ extern __inline int64x1_t
4580__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4581vreinterpret_s64_f16 (float16x4_t __a)
4582{
4583 return (int64x1_t) __a;
4584}
4585
a063e204
TC
4586__extension__ extern __inline int64x1_t
4587__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4588vreinterpret_s64_f64 (float64x1_t __a)
4589{
bc138f7b 4590 return (int64x1_t) __a;
bcd48995
AV
4591}
4592
a063e204
TC
4593__extension__ extern __inline int64x1_t
4594__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4595vreinterpret_s64_s8 (int8x8_t __a)
4596{
0bf3afc1 4597 return (int64x1_t) __a;
43e9d192
IB
4598}
4599
a063e204
TC
4600__extension__ extern __inline int64x1_t
4601__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4602vreinterpret_s64_s16 (int16x4_t __a)
4603{
0bf3afc1 4604 return (int64x1_t) __a;
43e9d192
IB
4605}
4606
a063e204
TC
4607__extension__ extern __inline int64x1_t
4608__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4609vreinterpret_s64_s32 (int32x2_t __a)
4610{
0bf3afc1 4611 return (int64x1_t) __a;
43e9d192
IB
4612}
4613
a063e204
TC
4614__extension__ extern __inline int64x1_t
4615__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4616vreinterpret_s64_f32 (float32x2_t __a)
4617{
0bf3afc1 4618 return (int64x1_t) __a;
43e9d192
IB
4619}
4620
a063e204
TC
4621__extension__ extern __inline int64x1_t
4622__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4623vreinterpret_s64_u8 (uint8x8_t __a)
4624{
0bf3afc1 4625 return (int64x1_t) __a;
43e9d192
IB
4626}
4627
a063e204
TC
4628__extension__ extern __inline int64x1_t
4629__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4630vreinterpret_s64_u16 (uint16x4_t __a)
4631{
0bf3afc1 4632 return (int64x1_t) __a;
43e9d192
IB
4633}
4634
a063e204
TC
4635__extension__ extern __inline int64x1_t
4636__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4637vreinterpret_s64_u32 (uint32x2_t __a)
4638{
0bf3afc1 4639 return (int64x1_t) __a;
43e9d192
IB
4640}
4641
a063e204
TC
4642__extension__ extern __inline int64x1_t
4643__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4644vreinterpret_s64_u64 (uint64x1_t __a)
4645{
0bf3afc1 4646 return (int64x1_t) __a;
43e9d192
IB
4647}
4648
a063e204
TC
4649__extension__ extern __inline int64x1_t
4650__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4651vreinterpret_s64_p8 (poly8x8_t __a)
4652{
0bf3afc1 4653 return (int64x1_t) __a;
43e9d192
IB
4654}
4655
a063e204
TC
4656__extension__ extern __inline int64x1_t
4657__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4658vreinterpret_s64_p16 (poly16x4_t __a)
4659{
0bf3afc1 4660 return (int64x1_t) __a;
43e9d192
IB
4661}
4662
159b8724
TC
4663__extension__ extern __inline int64x1_t
4664__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4665vreinterpret_s64_p64 (poly64x1_t __a)
4666{
4667 return (int64x1_t) __a;
4668}
4669
a063e204
TC
4670__extension__ extern __inline int64x2_t
4671__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4672vreinterpretq_s64_f64 (float64x2_t __a)
4673{
4674 return (int64x2_t) __a;
4675}
4676
a063e204
TC
4677__extension__ extern __inline int64x2_t
4678__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4679vreinterpretq_s64_s8 (int8x16_t __a)
4680{
0bf3afc1 4681 return (int64x2_t) __a;
43e9d192
IB
4682}
4683
a063e204
TC
4684__extension__ extern __inline int64x2_t
4685__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4686vreinterpretq_s64_s16 (int16x8_t __a)
4687{
0bf3afc1 4688 return (int64x2_t) __a;
43e9d192
IB
4689}
4690
a063e204
TC
4691__extension__ extern __inline int64x2_t
4692__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4693vreinterpretq_s64_s32 (int32x4_t __a)
4694{
0bf3afc1 4695 return (int64x2_t) __a;
43e9d192
IB
4696}
4697
a063e204
TC
4698__extension__ extern __inline int64x2_t
4699__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4700vreinterpretq_s64_f16 (float16x8_t __a)
4701{
4702 return (int64x2_t) __a;
4703}
4704
a063e204
TC
4705__extension__ extern __inline int64x2_t
4706__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4707vreinterpretq_s64_f32 (float32x4_t __a)
4708{
0bf3afc1 4709 return (int64x2_t) __a;
43e9d192
IB
4710}
4711
a063e204
TC
4712__extension__ extern __inline int64x2_t
4713__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4714vreinterpretq_s64_u8 (uint8x16_t __a)
4715{
0bf3afc1 4716 return (int64x2_t) __a;
43e9d192
IB
4717}
4718
a063e204
TC
4719__extension__ extern __inline int64x2_t
4720__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4721vreinterpretq_s64_u16 (uint16x8_t __a)
4722{
0bf3afc1 4723 return (int64x2_t) __a;
43e9d192
IB
4724}
4725
a063e204
TC
4726__extension__ extern __inline int64x2_t
4727__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4728vreinterpretq_s64_u32 (uint32x4_t __a)
4729{
0bf3afc1 4730 return (int64x2_t) __a;
43e9d192
IB
4731}
4732
a063e204
TC
4733__extension__ extern __inline int64x2_t
4734__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4735vreinterpretq_s64_u64 (uint64x2_t __a)
4736{
0bf3afc1 4737 return (int64x2_t) __a;
43e9d192
IB
4738}
4739
a063e204
TC
4740__extension__ extern __inline int64x2_t
4741__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4742vreinterpretq_s64_p8 (poly8x16_t __a)
4743{
0bf3afc1 4744 return (int64x2_t) __a;
43e9d192
IB
4745}
4746
a063e204
TC
4747__extension__ extern __inline int64x2_t
4748__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4749vreinterpretq_s64_p16 (poly16x8_t __a)
4750{
0bf3afc1 4751 return (int64x2_t) __a;
43e9d192
IB
4752}
4753
159b8724
TC
4754__extension__ extern __inline int64x2_t
4755__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4756vreinterpretq_s64_p64 (poly64x2_t __a)
4757{
4758 return (int64x2_t) __a;
4759}
4760
99b7a28d
TC
4761__extension__ extern __inline int64x2_t
4762__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4763vreinterpretq_s64_p128 (poly128_t __a)
4764{
4765 return (int64x2_t)__a;
4766}
4767
a063e204
TC
4768__extension__ extern __inline uint64x1_t
4769__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4770vreinterpret_u64_f16 (float16x4_t __a)
4771{
4772 return (uint64x1_t) __a;
4773}
4774
a063e204
TC
4775__extension__ extern __inline uint64x1_t
4776__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4777vreinterpret_u64_f64 (float64x1_t __a)
4778{
bc138f7b 4779 return (uint64x1_t) __a;
bcd48995
AV
4780}
4781
a063e204
TC
4782__extension__ extern __inline uint64x1_t
4783__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4784vreinterpret_u64_s8 (int8x8_t __a)
4785{
0bf3afc1 4786 return (uint64x1_t) __a;
43e9d192
IB
4787}
4788
a063e204
TC
4789__extension__ extern __inline uint64x1_t
4790__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4791vreinterpret_u64_s16 (int16x4_t __a)
4792{
0bf3afc1 4793 return (uint64x1_t) __a;
43e9d192
IB
4794}
4795
a063e204
TC
4796__extension__ extern __inline uint64x1_t
4797__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4798vreinterpret_u64_s32 (int32x2_t __a)
4799{
0bf3afc1 4800 return (uint64x1_t) __a;
43e9d192
IB
4801}
4802
a063e204
TC
4803__extension__ extern __inline uint64x1_t
4804__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4805vreinterpret_u64_s64 (int64x1_t __a)
4806{
0bf3afc1 4807 return (uint64x1_t) __a;
43e9d192
IB
4808}
4809
a063e204
TC
4810__extension__ extern __inline uint64x1_t
4811__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4812vreinterpret_u64_f32 (float32x2_t __a)
4813{
0bf3afc1 4814 return (uint64x1_t) __a;
43e9d192
IB
4815}
4816
a063e204
TC
4817__extension__ extern __inline uint64x1_t
4818__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4819vreinterpret_u64_u8 (uint8x8_t __a)
4820{
0bf3afc1 4821 return (uint64x1_t) __a;
43e9d192
IB
4822}
4823
a063e204
TC
4824__extension__ extern __inline uint64x1_t
4825__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4826vreinterpret_u64_u16 (uint16x4_t __a)
4827{
0bf3afc1 4828 return (uint64x1_t) __a;
43e9d192
IB
4829}
4830
a063e204
TC
4831__extension__ extern __inline uint64x1_t
4832__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4833vreinterpret_u64_u32 (uint32x2_t __a)
4834{
0bf3afc1 4835 return (uint64x1_t) __a;
43e9d192
IB
4836}
4837
a063e204
TC
4838__extension__ extern __inline uint64x1_t
4839__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4840vreinterpret_u64_p8 (poly8x8_t __a)
4841{
0bf3afc1 4842 return (uint64x1_t) __a;
43e9d192
IB
4843}
4844
a063e204
TC
4845__extension__ extern __inline uint64x1_t
4846__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4847vreinterpret_u64_p16 (poly16x4_t __a)
4848{
0bf3afc1 4849 return (uint64x1_t) __a;
43e9d192
IB
4850}
4851
159b8724
TC
4852__extension__ extern __inline uint64x1_t
4853__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4854vreinterpret_u64_p64 (poly64x1_t __a)
4855{
4856 return (uint64x1_t) __a;
4857}
4858
a063e204
TC
4859__extension__ extern __inline uint64x2_t
4860__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4861vreinterpretq_u64_f64 (float64x2_t __a)
4862{
4863 return (uint64x2_t) __a;
4864}
4865
a063e204
TC
4866__extension__ extern __inline uint64x2_t
4867__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4868vreinterpretq_u64_s8 (int8x16_t __a)
4869{
0bf3afc1 4870 return (uint64x2_t) __a;
43e9d192
IB
4871}
4872
a063e204
TC
4873__extension__ extern __inline uint64x2_t
4874__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4875vreinterpretq_u64_s16 (int16x8_t __a)
4876{
0bf3afc1 4877 return (uint64x2_t) __a;
43e9d192
IB
4878}
4879
a063e204
TC
4880__extension__ extern __inline uint64x2_t
4881__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4882vreinterpretq_u64_s32 (int32x4_t __a)
4883{
0bf3afc1 4884 return (uint64x2_t) __a;
43e9d192
IB
4885}
4886
a063e204
TC
4887__extension__ extern __inline uint64x2_t
4888__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4889vreinterpretq_u64_s64 (int64x2_t __a)
4890{
0bf3afc1 4891 return (uint64x2_t) __a;
43e9d192
IB
4892}
4893
a063e204
TC
4894__extension__ extern __inline uint64x2_t
4895__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4896vreinterpretq_u64_f16 (float16x8_t __a)
4897{
4898 return (uint64x2_t) __a;
4899}
4900
a063e204
TC
4901__extension__ extern __inline uint64x2_t
4902__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4903vreinterpretq_u64_f32 (float32x4_t __a)
4904{
0bf3afc1 4905 return (uint64x2_t) __a;
43e9d192
IB
4906}
4907
a063e204
TC
4908__extension__ extern __inline uint64x2_t
4909__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4910vreinterpretq_u64_u8 (uint8x16_t __a)
4911{
0bf3afc1 4912 return (uint64x2_t) __a;
43e9d192
IB
4913}
4914
a063e204
TC
4915__extension__ extern __inline uint64x2_t
4916__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4917vreinterpretq_u64_u16 (uint16x8_t __a)
4918{
0bf3afc1 4919 return (uint64x2_t) __a;
43e9d192
IB
4920}
4921
a063e204
TC
4922__extension__ extern __inline uint64x2_t
4923__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4924vreinterpretq_u64_u32 (uint32x4_t __a)
4925{
0bf3afc1 4926 return (uint64x2_t) __a;
43e9d192
IB
4927}
4928
a063e204
TC
4929__extension__ extern __inline uint64x2_t
4930__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4931vreinterpretq_u64_p8 (poly8x16_t __a)
4932{
0bf3afc1 4933 return (uint64x2_t) __a;
43e9d192
IB
4934}
4935
a063e204
TC
4936__extension__ extern __inline uint64x2_t
4937__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4938vreinterpretq_u64_p16 (poly16x8_t __a)
4939{
0bf3afc1 4940 return (uint64x2_t) __a;
43e9d192
IB
4941}
4942
159b8724
TC
4943__extension__ extern __inline uint64x2_t
4944__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4945vreinterpretq_u64_p64 (poly64x2_t __a)
4946{
4947 return (uint64x2_t) __a;
4948}
4949
99b7a28d
TC
4950__extension__ extern __inline uint64x2_t
4951__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
4952vreinterpretq_u64_p128 (poly128_t __a)
4953{
4954 return (uint64x2_t)__a;
4955}
4956
a063e204
TC
4957__extension__ extern __inline int8x8_t
4958__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
4959vreinterpret_s8_f16 (float16x4_t __a)
4960{
4961 return (int8x8_t) __a;
4962}
4963
a063e204
TC
4964__extension__ extern __inline int8x8_t
4965__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
4966vreinterpret_s8_f64 (float64x1_t __a)
4967{
bc138f7b 4968 return (int8x8_t) __a;
bcd48995
AV
4969}
4970
a063e204
TC
4971__extension__ extern __inline int8x8_t
4972__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4973vreinterpret_s8_s16 (int16x4_t __a)
4974{
0bf3afc1 4975 return (int8x8_t) __a;
43e9d192
IB
4976}
4977
a063e204
TC
4978__extension__ extern __inline int8x8_t
4979__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4980vreinterpret_s8_s32 (int32x2_t __a)
4981{
0bf3afc1 4982 return (int8x8_t) __a;
43e9d192
IB
4983}
4984
a063e204
TC
4985__extension__ extern __inline int8x8_t
4986__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4987vreinterpret_s8_s64 (int64x1_t __a)
4988{
0bf3afc1 4989 return (int8x8_t) __a;
43e9d192
IB
4990}
4991
a063e204
TC
4992__extension__ extern __inline int8x8_t
4993__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
4994vreinterpret_s8_f32 (float32x2_t __a)
4995{
0bf3afc1 4996 return (int8x8_t) __a;
43e9d192
IB
4997}
4998
a063e204
TC
4999__extension__ extern __inline int8x8_t
5000__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5001vreinterpret_s8_u8 (uint8x8_t __a)
5002{
0bf3afc1 5003 return (int8x8_t) __a;
43e9d192
IB
5004}
5005
a063e204
TC
5006__extension__ extern __inline int8x8_t
5007__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5008vreinterpret_s8_u16 (uint16x4_t __a)
5009{
0bf3afc1 5010 return (int8x8_t) __a;
43e9d192
IB
5011}
5012
a063e204
TC
5013__extension__ extern __inline int8x8_t
5014__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5015vreinterpret_s8_u32 (uint32x2_t __a)
5016{
0bf3afc1 5017 return (int8x8_t) __a;
43e9d192
IB
5018}
5019
a063e204
TC
5020__extension__ extern __inline int8x8_t
5021__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5022vreinterpret_s8_u64 (uint64x1_t __a)
5023{
0bf3afc1 5024 return (int8x8_t) __a;
43e9d192
IB
5025}
5026
a063e204
TC
5027__extension__ extern __inline int8x8_t
5028__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5029vreinterpret_s8_p8 (poly8x8_t __a)
5030{
0bf3afc1 5031 return (int8x8_t) __a;
43e9d192
IB
5032}
5033
a063e204
TC
5034__extension__ extern __inline int8x8_t
5035__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5036vreinterpret_s8_p16 (poly16x4_t __a)
5037{
0bf3afc1 5038 return (int8x8_t) __a;
43e9d192
IB
5039}
5040
159b8724
TC
5041__extension__ extern __inline int8x8_t
5042__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5043vreinterpret_s8_p64 (poly64x1_t __a)
5044{
5045 return (int8x8_t) __a;
5046}
5047
a063e204
TC
5048__extension__ extern __inline int8x16_t
5049__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
5050vreinterpretq_s8_f64 (float64x2_t __a)
5051{
5052 return (int8x16_t) __a;
5053}
5054
a063e204
TC
5055__extension__ extern __inline int8x16_t
5056__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5057vreinterpretq_s8_s16 (int16x8_t __a)
5058{
0bf3afc1 5059 return (int8x16_t) __a;
43e9d192
IB
5060}
5061
a063e204
TC
5062__extension__ extern __inline int8x16_t
5063__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5064vreinterpretq_s8_s32 (int32x4_t __a)
5065{
0bf3afc1 5066 return (int8x16_t) __a;
43e9d192
IB
5067}
5068
a063e204
TC
5069__extension__ extern __inline int8x16_t
5070__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5071vreinterpretq_s8_s64 (int64x2_t __a)
5072{
0bf3afc1 5073 return (int8x16_t) __a;
43e9d192
IB
5074}
5075
a063e204
TC
5076__extension__ extern __inline int8x16_t
5077__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
5078vreinterpretq_s8_f16 (float16x8_t __a)
5079{
5080 return (int8x16_t) __a;
5081}
5082
a063e204
TC
5083__extension__ extern __inline int8x16_t
5084__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5085vreinterpretq_s8_f32 (float32x4_t __a)
5086{
0bf3afc1 5087 return (int8x16_t) __a;
43e9d192
IB
5088}
5089
a063e204
TC
5090__extension__ extern __inline int8x16_t
5091__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5092vreinterpretq_s8_u8 (uint8x16_t __a)
5093{
0bf3afc1 5094 return (int8x16_t) __a;
43e9d192
IB
5095}
5096
a063e204
TC
5097__extension__ extern __inline int8x16_t
5098__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5099vreinterpretq_s8_u16 (uint16x8_t __a)
5100{
0bf3afc1 5101 return (int8x16_t) __a;
43e9d192
IB
5102}
5103
a063e204
TC
5104__extension__ extern __inline int8x16_t
5105__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5106vreinterpretq_s8_u32 (uint32x4_t __a)
5107{
0bf3afc1 5108 return (int8x16_t) __a;
43e9d192
IB
5109}
5110
a063e204
TC
5111__extension__ extern __inline int8x16_t
5112__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5113vreinterpretq_s8_u64 (uint64x2_t __a)
5114{
0bf3afc1 5115 return (int8x16_t) __a;
43e9d192
IB
5116}
5117
a063e204
TC
5118__extension__ extern __inline int8x16_t
5119__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5120vreinterpretq_s8_p8 (poly8x16_t __a)
5121{
0bf3afc1 5122 return (int8x16_t) __a;
43e9d192
IB
5123}
5124
a063e204
TC
5125__extension__ extern __inline int8x16_t
5126__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5127vreinterpretq_s8_p16 (poly16x8_t __a)
5128{
0bf3afc1 5129 return (int8x16_t) __a;
43e9d192
IB
5130}
5131
159b8724
TC
5132__extension__ extern __inline int8x16_t
5133__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5134vreinterpretq_s8_p64 (poly64x2_t __a)
5135{
5136 return (int8x16_t) __a;
5137}
5138
99b7a28d
TC
5139__extension__ extern __inline int8x16_t
5140__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5141vreinterpretq_s8_p128 (poly128_t __a)
5142{
5143 return (int8x16_t)__a;
5144}
5145
a063e204
TC
5146__extension__ extern __inline int16x4_t
5147__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
5148vreinterpret_s16_f16 (float16x4_t __a)
5149{
5150 return (int16x4_t) __a;
5151}
5152
a063e204
TC
5153__extension__ extern __inline int16x4_t
5154__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
5155vreinterpret_s16_f64 (float64x1_t __a)
5156{
bc138f7b 5157 return (int16x4_t) __a;
bcd48995
AV
5158}
5159
a063e204
TC
5160__extension__ extern __inline int16x4_t
5161__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5162vreinterpret_s16_s8 (int8x8_t __a)
5163{
0bf3afc1 5164 return (int16x4_t) __a;
43e9d192
IB
5165}
5166
a063e204
TC
5167__extension__ extern __inline int16x4_t
5168__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5169vreinterpret_s16_s32 (int32x2_t __a)
5170{
0bf3afc1 5171 return (int16x4_t) __a;
43e9d192
IB
5172}
5173
a063e204
TC
5174__extension__ extern __inline int16x4_t
5175__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5176vreinterpret_s16_s64 (int64x1_t __a)
5177{
0bf3afc1 5178 return (int16x4_t) __a;
43e9d192
IB
5179}
5180
a063e204
TC
5181__extension__ extern __inline int16x4_t
5182__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5183vreinterpret_s16_f32 (float32x2_t __a)
5184{
0bf3afc1 5185 return (int16x4_t) __a;
43e9d192
IB
5186}
5187
a063e204
TC
5188__extension__ extern __inline int16x4_t
5189__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5190vreinterpret_s16_u8 (uint8x8_t __a)
5191{
0bf3afc1 5192 return (int16x4_t) __a;
43e9d192
IB
5193}
5194
a063e204
TC
5195__extension__ extern __inline int16x4_t
5196__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5197vreinterpret_s16_u16 (uint16x4_t __a)
5198{
0bf3afc1 5199 return (int16x4_t) __a;
43e9d192
IB
5200}
5201
a063e204
TC
5202__extension__ extern __inline int16x4_t
5203__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5204vreinterpret_s16_u32 (uint32x2_t __a)
5205{
0bf3afc1 5206 return (int16x4_t) __a;
43e9d192
IB
5207}
5208
a063e204
TC
5209__extension__ extern __inline int16x4_t
5210__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5211vreinterpret_s16_u64 (uint64x1_t __a)
5212{
0bf3afc1 5213 return (int16x4_t) __a;
43e9d192
IB
5214}
5215
a063e204
TC
5216__extension__ extern __inline int16x4_t
5217__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5218vreinterpret_s16_p8 (poly8x8_t __a)
5219{
0bf3afc1 5220 return (int16x4_t) __a;
43e9d192
IB
5221}
5222
a063e204
TC
5223__extension__ extern __inline int16x4_t
5224__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5225vreinterpret_s16_p16 (poly16x4_t __a)
5226{
0bf3afc1 5227 return (int16x4_t) __a;
43e9d192
IB
5228}
5229
159b8724
TC
5230__extension__ extern __inline int16x4_t
5231__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5232vreinterpret_s16_p64 (poly64x1_t __a)
5233{
5234 return (int16x4_t) __a;
5235}
5236
a063e204
TC
5237__extension__ extern __inline int16x8_t
5238__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
5239vreinterpretq_s16_f64 (float64x2_t __a)
5240{
5241 return (int16x8_t) __a;
5242}
5243
a063e204
TC
5244__extension__ extern __inline int16x8_t
5245__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5246vreinterpretq_s16_s8 (int8x16_t __a)
5247{
0bf3afc1 5248 return (int16x8_t) __a;
43e9d192
IB
5249}
5250
a063e204
TC
5251__extension__ extern __inline int16x8_t
5252__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5253vreinterpretq_s16_s32 (int32x4_t __a)
5254{
0bf3afc1 5255 return (int16x8_t) __a;
43e9d192
IB
5256}
5257
a063e204
TC
5258__extension__ extern __inline int16x8_t
5259__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5260vreinterpretq_s16_s64 (int64x2_t __a)
5261{
0bf3afc1 5262 return (int16x8_t) __a;
43e9d192
IB
5263}
5264
a063e204
TC
5265__extension__ extern __inline int16x8_t
5266__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
5267vreinterpretq_s16_f16 (float16x8_t __a)
5268{
5269 return (int16x8_t) __a;
5270}
5271
a063e204
TC
5272__extension__ extern __inline int16x8_t
5273__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5274vreinterpretq_s16_f32 (float32x4_t __a)
5275{
0bf3afc1 5276 return (int16x8_t) __a;
43e9d192
IB
5277}
5278
a063e204
TC
5279__extension__ extern __inline int16x8_t
5280__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5281vreinterpretq_s16_u8 (uint8x16_t __a)
5282{
0bf3afc1 5283 return (int16x8_t) __a;
43e9d192
IB
5284}
5285
a063e204
TC
5286__extension__ extern __inline int16x8_t
5287__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5288vreinterpretq_s16_u16 (uint16x8_t __a)
5289{
0bf3afc1 5290 return (int16x8_t) __a;
43e9d192
IB
5291}
5292
a063e204
TC
5293__extension__ extern __inline int16x8_t
5294__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5295vreinterpretq_s16_u32 (uint32x4_t __a)
5296{
0bf3afc1 5297 return (int16x8_t) __a;
43e9d192
IB
5298}
5299
a063e204
TC
5300__extension__ extern __inline int16x8_t
5301__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5302vreinterpretq_s16_u64 (uint64x2_t __a)
5303{
0bf3afc1 5304 return (int16x8_t) __a;
43e9d192
IB
5305}
5306
a063e204
TC
5307__extension__ extern __inline int16x8_t
5308__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5309vreinterpretq_s16_p8 (poly8x16_t __a)
5310{
0bf3afc1 5311 return (int16x8_t) __a;
43e9d192
IB
5312}
5313
a063e204
TC
5314__extension__ extern __inline int16x8_t
5315__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5316vreinterpretq_s16_p16 (poly16x8_t __a)
5317{
0bf3afc1 5318 return (int16x8_t) __a;
43e9d192
IB
5319}
5320
159b8724
TC
5321__extension__ extern __inline int16x8_t
5322__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5323vreinterpretq_s16_p64 (poly64x2_t __a)
5324{
5325 return (int16x8_t) __a;
5326}
5327
99b7a28d
TC
5328__extension__ extern __inline int16x8_t
5329__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5330vreinterpretq_s16_p128 (poly128_t __a)
5331{
5332 return (int16x8_t)__a;
5333}
5334
a063e204
TC
5335__extension__ extern __inline int32x2_t
5336__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
5337vreinterpret_s32_f16 (float16x4_t __a)
5338{
5339 return (int32x2_t) __a;
5340}
5341
a063e204
TC
5342__extension__ extern __inline int32x2_t
5343__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
5344vreinterpret_s32_f64 (float64x1_t __a)
5345{
bc138f7b 5346 return (int32x2_t) __a;
bcd48995
AV
5347}
5348
a063e204
TC
5349__extension__ extern __inline int32x2_t
5350__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5351vreinterpret_s32_s8 (int8x8_t __a)
5352{
0bf3afc1 5353 return (int32x2_t) __a;
43e9d192
IB
5354}
5355
a063e204
TC
5356__extension__ extern __inline int32x2_t
5357__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5358vreinterpret_s32_s16 (int16x4_t __a)
5359{
0bf3afc1 5360 return (int32x2_t) __a;
43e9d192
IB
5361}
5362
a063e204
TC
5363__extension__ extern __inline int32x2_t
5364__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5365vreinterpret_s32_s64 (int64x1_t __a)
5366{
0bf3afc1 5367 return (int32x2_t) __a;
43e9d192
IB
5368}
5369
a063e204
TC
5370__extension__ extern __inline int32x2_t
5371__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5372vreinterpret_s32_f32 (float32x2_t __a)
5373{
0bf3afc1 5374 return (int32x2_t) __a;
43e9d192
IB
5375}
5376
a063e204
TC
5377__extension__ extern __inline int32x2_t
5378__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5379vreinterpret_s32_u8 (uint8x8_t __a)
5380{
0bf3afc1 5381 return (int32x2_t) __a;
43e9d192
IB
5382}
5383
a063e204
TC
5384__extension__ extern __inline int32x2_t
5385__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5386vreinterpret_s32_u16 (uint16x4_t __a)
5387{
0bf3afc1 5388 return (int32x2_t) __a;
43e9d192
IB
5389}
5390
a063e204
TC
5391__extension__ extern __inline int32x2_t
5392__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5393vreinterpret_s32_u32 (uint32x2_t __a)
5394{
0bf3afc1 5395 return (int32x2_t) __a;
43e9d192
IB
5396}
5397
a063e204
TC
5398__extension__ extern __inline int32x2_t
5399__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5400vreinterpret_s32_u64 (uint64x1_t __a)
5401{
0bf3afc1 5402 return (int32x2_t) __a;
43e9d192
IB
5403}
5404
a063e204
TC
5405__extension__ extern __inline int32x2_t
5406__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5407vreinterpret_s32_p8 (poly8x8_t __a)
5408{
0bf3afc1 5409 return (int32x2_t) __a;
43e9d192
IB
5410}
5411
a063e204
TC
5412__extension__ extern __inline int32x2_t
5413__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5414vreinterpret_s32_p16 (poly16x4_t __a)
5415{
0bf3afc1 5416 return (int32x2_t) __a;
43e9d192
IB
5417}
5418
159b8724
TC
5419__extension__ extern __inline int32x2_t
5420__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5421vreinterpret_s32_p64 (poly64x1_t __a)
5422{
5423 return (int32x2_t) __a;
5424}
5425
a063e204
TC
5426__extension__ extern __inline int32x4_t
5427__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
5428vreinterpretq_s32_f64 (float64x2_t __a)
5429{
5430 return (int32x4_t) __a;
5431}
5432
a063e204
TC
5433__extension__ extern __inline int32x4_t
5434__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5435vreinterpretq_s32_s8 (int8x16_t __a)
5436{
0bf3afc1 5437 return (int32x4_t) __a;
43e9d192
IB
5438}
5439
a063e204
TC
5440__extension__ extern __inline int32x4_t
5441__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5442vreinterpretq_s32_s16 (int16x8_t __a)
5443{
0bf3afc1 5444 return (int32x4_t) __a;
43e9d192
IB
5445}
5446
a063e204
TC
5447__extension__ extern __inline int32x4_t
5448__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5449vreinterpretq_s32_s64 (int64x2_t __a)
5450{
0bf3afc1 5451 return (int32x4_t) __a;
43e9d192
IB
5452}
5453
a063e204
TC
5454__extension__ extern __inline int32x4_t
5455__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
5456vreinterpretq_s32_f16 (float16x8_t __a)
5457{
5458 return (int32x4_t) __a;
5459}
5460
a063e204
TC
5461__extension__ extern __inline int32x4_t
5462__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5463vreinterpretq_s32_f32 (float32x4_t __a)
5464{
0bf3afc1 5465 return (int32x4_t) __a;
43e9d192
IB
5466}
5467
a063e204
TC
5468__extension__ extern __inline int32x4_t
5469__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5470vreinterpretq_s32_u8 (uint8x16_t __a)
5471{
0bf3afc1 5472 return (int32x4_t) __a;
43e9d192
IB
5473}
5474
a063e204
TC
5475__extension__ extern __inline int32x4_t
5476__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5477vreinterpretq_s32_u16 (uint16x8_t __a)
5478{
0bf3afc1 5479 return (int32x4_t) __a;
43e9d192
IB
5480}
5481
a063e204
TC
5482__extension__ extern __inline int32x4_t
5483__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5484vreinterpretq_s32_u32 (uint32x4_t __a)
5485{
0bf3afc1 5486 return (int32x4_t) __a;
43e9d192
IB
5487}
5488
a063e204
TC
5489__extension__ extern __inline int32x4_t
5490__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5491vreinterpretq_s32_u64 (uint64x2_t __a)
5492{
0bf3afc1 5493 return (int32x4_t) __a;
43e9d192
IB
5494}
5495
a063e204
TC
5496__extension__ extern __inline int32x4_t
5497__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5498vreinterpretq_s32_p8 (poly8x16_t __a)
5499{
0bf3afc1 5500 return (int32x4_t) __a;
43e9d192
IB
5501}
5502
a063e204
TC
5503__extension__ extern __inline int32x4_t
5504__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5505vreinterpretq_s32_p16 (poly16x8_t __a)
5506{
0bf3afc1 5507 return (int32x4_t) __a;
43e9d192
IB
5508}
5509
159b8724
TC
5510__extension__ extern __inline int32x4_t
5511__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5512vreinterpretq_s32_p64 (poly64x2_t __a)
5513{
5514 return (int32x4_t) __a;
5515}
5516
99b7a28d
TC
5517__extension__ extern __inline int32x4_t
5518__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5519vreinterpretq_s32_p128 (poly128_t __a)
5520{
5521 return (int32x4_t)__a;
5522}
5523
a063e204
TC
5524__extension__ extern __inline uint8x8_t
5525__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
5526vreinterpret_u8_f16 (float16x4_t __a)
5527{
5528 return (uint8x8_t) __a;
5529}
5530
a063e204
TC
5531__extension__ extern __inline uint8x8_t
5532__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
5533vreinterpret_u8_f64 (float64x1_t __a)
5534{
bc138f7b 5535 return (uint8x8_t) __a;
bcd48995
AV
5536}
5537
a063e204
TC
5538__extension__ extern __inline uint8x8_t
5539__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5540vreinterpret_u8_s8 (int8x8_t __a)
5541{
0bf3afc1 5542 return (uint8x8_t) __a;
43e9d192
IB
5543}
5544
a063e204
TC
5545__extension__ extern __inline uint8x8_t
5546__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5547vreinterpret_u8_s16 (int16x4_t __a)
5548{
0bf3afc1 5549 return (uint8x8_t) __a;
43e9d192
IB
5550}
5551
a063e204
TC
5552__extension__ extern __inline uint8x8_t
5553__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5554vreinterpret_u8_s32 (int32x2_t __a)
5555{
0bf3afc1 5556 return (uint8x8_t) __a;
43e9d192
IB
5557}
5558
a063e204
TC
5559__extension__ extern __inline uint8x8_t
5560__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5561vreinterpret_u8_s64 (int64x1_t __a)
5562{
0bf3afc1 5563 return (uint8x8_t) __a;
43e9d192
IB
5564}
5565
a063e204
TC
5566__extension__ extern __inline uint8x8_t
5567__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5568vreinterpret_u8_f32 (float32x2_t __a)
5569{
0bf3afc1 5570 return (uint8x8_t) __a;
43e9d192
IB
5571}
5572
a063e204
TC
5573__extension__ extern __inline uint8x8_t
5574__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5575vreinterpret_u8_u16 (uint16x4_t __a)
5576{
0bf3afc1 5577 return (uint8x8_t) __a;
43e9d192
IB
5578}
5579
a063e204
TC
5580__extension__ extern __inline uint8x8_t
5581__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5582vreinterpret_u8_u32 (uint32x2_t __a)
5583{
0bf3afc1 5584 return (uint8x8_t) __a;
43e9d192
IB
5585}
5586
a063e204
TC
5587__extension__ extern __inline uint8x8_t
5588__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5589vreinterpret_u8_u64 (uint64x1_t __a)
5590{
0bf3afc1 5591 return (uint8x8_t) __a;
43e9d192
IB
5592}
5593
a063e204
TC
5594__extension__ extern __inline uint8x8_t
5595__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5596vreinterpret_u8_p8 (poly8x8_t __a)
5597{
0bf3afc1 5598 return (uint8x8_t) __a;
43e9d192
IB
5599}
5600
a063e204
TC
5601__extension__ extern __inline uint8x8_t
5602__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5603vreinterpret_u8_p16 (poly16x4_t __a)
5604{
0bf3afc1 5605 return (uint8x8_t) __a;
43e9d192
IB
5606}
5607
159b8724
TC
5608__extension__ extern __inline uint8x8_t
5609__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5610vreinterpret_u8_p64 (poly64x1_t __a)
5611{
5612 return (uint8x8_t) __a;
5613}
5614
a063e204
TC
5615__extension__ extern __inline uint8x16_t
5616__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
5617vreinterpretq_u8_f64 (float64x2_t __a)
5618{
5619 return (uint8x16_t) __a;
5620}
5621
a063e204
TC
5622__extension__ extern __inline uint8x16_t
5623__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5624vreinterpretq_u8_s8 (int8x16_t __a)
5625{
0bf3afc1 5626 return (uint8x16_t) __a;
43e9d192
IB
5627}
5628
a063e204
TC
5629__extension__ extern __inline uint8x16_t
5630__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5631vreinterpretq_u8_s16 (int16x8_t __a)
5632{
0bf3afc1 5633 return (uint8x16_t) __a;
43e9d192
IB
5634}
5635
a063e204
TC
5636__extension__ extern __inline uint8x16_t
5637__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5638vreinterpretq_u8_s32 (int32x4_t __a)
5639{
0bf3afc1 5640 return (uint8x16_t) __a;
43e9d192
IB
5641}
5642
a063e204
TC
5643__extension__ extern __inline uint8x16_t
5644__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5645vreinterpretq_u8_s64 (int64x2_t __a)
5646{
0bf3afc1 5647 return (uint8x16_t) __a;
43e9d192
IB
5648}
5649
a063e204
TC
5650__extension__ extern __inline uint8x16_t
5651__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
5652vreinterpretq_u8_f16 (float16x8_t __a)
5653{
5654 return (uint8x16_t) __a;
5655}
5656
a063e204
TC
5657__extension__ extern __inline uint8x16_t
5658__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5659vreinterpretq_u8_f32 (float32x4_t __a)
5660{
0bf3afc1 5661 return (uint8x16_t) __a;
43e9d192
IB
5662}
5663
a063e204
TC
5664__extension__ extern __inline uint8x16_t
5665__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5666vreinterpretq_u8_u16 (uint16x8_t __a)
5667{
0bf3afc1 5668 return (uint8x16_t) __a;
43e9d192
IB
5669}
5670
a063e204
TC
5671__extension__ extern __inline uint8x16_t
5672__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5673vreinterpretq_u8_u32 (uint32x4_t __a)
5674{
0bf3afc1 5675 return (uint8x16_t) __a;
43e9d192
IB
5676}
5677
a063e204
TC
5678__extension__ extern __inline uint8x16_t
5679__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5680vreinterpretq_u8_u64 (uint64x2_t __a)
5681{
0bf3afc1 5682 return (uint8x16_t) __a;
43e9d192
IB
5683}
5684
a063e204
TC
5685__extension__ extern __inline uint8x16_t
5686__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5687vreinterpretq_u8_p8 (poly8x16_t __a)
5688{
0bf3afc1 5689 return (uint8x16_t) __a;
43e9d192
IB
5690}
5691
a063e204
TC
5692__extension__ extern __inline uint8x16_t
5693__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5694vreinterpretq_u8_p16 (poly16x8_t __a)
5695{
0bf3afc1 5696 return (uint8x16_t) __a;
43e9d192
IB
5697}
5698
159b8724
TC
5699__extension__ extern __inline uint8x16_t
5700__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5701vreinterpretq_u8_p64 (poly64x2_t __a)
5702{
5703 return (uint8x16_t) __a;
5704}
5705
99b7a28d
TC
5706__extension__ extern __inline uint8x16_t
5707__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5708vreinterpretq_u8_p128 (poly128_t __a)
5709{
5710 return (uint8x16_t)__a;
5711}
5712
a063e204
TC
5713__extension__ extern __inline uint16x4_t
5714__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
5715vreinterpret_u16_f16 (float16x4_t __a)
5716{
5717 return (uint16x4_t) __a;
5718}
5719
a063e204
TC
5720__extension__ extern __inline uint16x4_t
5721__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
5722vreinterpret_u16_f64 (float64x1_t __a)
5723{
bc138f7b 5724 return (uint16x4_t) __a;
bcd48995
AV
5725}
5726
a063e204
TC
5727__extension__ extern __inline uint16x4_t
5728__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5729vreinterpret_u16_s8 (int8x8_t __a)
5730{
0bf3afc1 5731 return (uint16x4_t) __a;
43e9d192
IB
5732}
5733
a063e204
TC
5734__extension__ extern __inline uint16x4_t
5735__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5736vreinterpret_u16_s16 (int16x4_t __a)
5737{
0bf3afc1 5738 return (uint16x4_t) __a;
43e9d192
IB
5739}
5740
a063e204
TC
5741__extension__ extern __inline uint16x4_t
5742__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5743vreinterpret_u16_s32 (int32x2_t __a)
5744{
0bf3afc1 5745 return (uint16x4_t) __a;
43e9d192
IB
5746}
5747
a063e204
TC
5748__extension__ extern __inline uint16x4_t
5749__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5750vreinterpret_u16_s64 (int64x1_t __a)
5751{
0bf3afc1 5752 return (uint16x4_t) __a;
43e9d192
IB
5753}
5754
a063e204
TC
5755__extension__ extern __inline uint16x4_t
5756__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5757vreinterpret_u16_f32 (float32x2_t __a)
5758{
0bf3afc1 5759 return (uint16x4_t) __a;
43e9d192
IB
5760}
5761
a063e204
TC
5762__extension__ extern __inline uint16x4_t
5763__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5764vreinterpret_u16_u8 (uint8x8_t __a)
5765{
0bf3afc1 5766 return (uint16x4_t) __a;
43e9d192
IB
5767}
5768
a063e204
TC
5769__extension__ extern __inline uint16x4_t
5770__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5771vreinterpret_u16_u32 (uint32x2_t __a)
5772{
0bf3afc1 5773 return (uint16x4_t) __a;
43e9d192
IB
5774}
5775
a063e204
TC
5776__extension__ extern __inline uint16x4_t
5777__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5778vreinterpret_u16_u64 (uint64x1_t __a)
5779{
0bf3afc1 5780 return (uint16x4_t) __a;
43e9d192
IB
5781}
5782
a063e204
TC
5783__extension__ extern __inline uint16x4_t
5784__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5785vreinterpret_u16_p8 (poly8x8_t __a)
5786{
0bf3afc1 5787 return (uint16x4_t) __a;
43e9d192
IB
5788}
5789
a063e204
TC
5790__extension__ extern __inline uint16x4_t
5791__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5792vreinterpret_u16_p16 (poly16x4_t __a)
5793{
0bf3afc1 5794 return (uint16x4_t) __a;
43e9d192
IB
5795}
5796
159b8724
TC
5797__extension__ extern __inline uint16x4_t
5798__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5799vreinterpret_u16_p64 (poly64x1_t __a)
5800{
5801 return (uint16x4_t) __a;
5802}
5803
a063e204
TC
5804__extension__ extern __inline uint16x8_t
5805__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
5806vreinterpretq_u16_f64 (float64x2_t __a)
5807{
5808 return (uint16x8_t) __a;
5809}
5810
a063e204
TC
5811__extension__ extern __inline uint16x8_t
5812__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5813vreinterpretq_u16_s8 (int8x16_t __a)
5814{
0bf3afc1 5815 return (uint16x8_t) __a;
43e9d192
IB
5816}
5817
a063e204
TC
5818__extension__ extern __inline uint16x8_t
5819__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5820vreinterpretq_u16_s16 (int16x8_t __a)
5821{
0bf3afc1 5822 return (uint16x8_t) __a;
43e9d192
IB
5823}
5824
a063e204
TC
5825__extension__ extern __inline uint16x8_t
5826__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5827vreinterpretq_u16_s32 (int32x4_t __a)
5828{
0bf3afc1 5829 return (uint16x8_t) __a;
43e9d192
IB
5830}
5831
a063e204
TC
5832__extension__ extern __inline uint16x8_t
5833__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5834vreinterpretq_u16_s64 (int64x2_t __a)
5835{
0bf3afc1 5836 return (uint16x8_t) __a;
43e9d192
IB
5837}
5838
a063e204
TC
5839__extension__ extern __inline uint16x8_t
5840__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
5841vreinterpretq_u16_f16 (float16x8_t __a)
5842{
5843 return (uint16x8_t) __a;
5844}
5845
a063e204
TC
5846__extension__ extern __inline uint16x8_t
5847__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5848vreinterpretq_u16_f32 (float32x4_t __a)
5849{
0bf3afc1 5850 return (uint16x8_t) __a;
43e9d192
IB
5851}
5852
a063e204
TC
5853__extension__ extern __inline uint16x8_t
5854__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5855vreinterpretq_u16_u8 (uint8x16_t __a)
5856{
0bf3afc1 5857 return (uint16x8_t) __a;
43e9d192
IB
5858}
5859
a063e204
TC
5860__extension__ extern __inline uint16x8_t
5861__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5862vreinterpretq_u16_u32 (uint32x4_t __a)
5863{
0bf3afc1 5864 return (uint16x8_t) __a;
43e9d192
IB
5865}
5866
a063e204
TC
5867__extension__ extern __inline uint16x8_t
5868__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5869vreinterpretq_u16_u64 (uint64x2_t __a)
5870{
0bf3afc1 5871 return (uint16x8_t) __a;
43e9d192
IB
5872}
5873
a063e204
TC
5874__extension__ extern __inline uint16x8_t
5875__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5876vreinterpretq_u16_p8 (poly8x16_t __a)
5877{
0bf3afc1 5878 return (uint16x8_t) __a;
43e9d192
IB
5879}
5880
a063e204
TC
5881__extension__ extern __inline uint16x8_t
5882__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5883vreinterpretq_u16_p16 (poly16x8_t __a)
5884{
0bf3afc1 5885 return (uint16x8_t) __a;
43e9d192
IB
5886}
5887
159b8724
TC
5888__extension__ extern __inline uint16x8_t
5889__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5890vreinterpretq_u16_p64 (poly64x2_t __a)
5891{
5892 return (uint16x8_t) __a;
5893}
5894
99b7a28d
TC
5895__extension__ extern __inline uint16x8_t
5896__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5897vreinterpretq_u16_p128 (poly128_t __a)
5898{
5899 return (uint16x8_t)__a;
5900}
5901
a063e204
TC
5902__extension__ extern __inline uint32x2_t
5903__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
5904vreinterpret_u32_f16 (float16x4_t __a)
5905{
5906 return (uint32x2_t) __a;
5907}
5908
a063e204
TC
5909__extension__ extern __inline uint32x2_t
5910__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
5911vreinterpret_u32_f64 (float64x1_t __a)
5912{
bc138f7b 5913 return (uint32x2_t) __a;
bcd48995
AV
5914}
5915
a063e204
TC
5916__extension__ extern __inline uint32x2_t
5917__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5918vreinterpret_u32_s8 (int8x8_t __a)
5919{
0bf3afc1 5920 return (uint32x2_t) __a;
43e9d192
IB
5921}
5922
a063e204
TC
5923__extension__ extern __inline uint32x2_t
5924__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5925vreinterpret_u32_s16 (int16x4_t __a)
5926{
0bf3afc1 5927 return (uint32x2_t) __a;
43e9d192
IB
5928}
5929
a063e204
TC
5930__extension__ extern __inline uint32x2_t
5931__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5932vreinterpret_u32_s32 (int32x2_t __a)
5933{
0bf3afc1 5934 return (uint32x2_t) __a;
43e9d192
IB
5935}
5936
a063e204
TC
5937__extension__ extern __inline uint32x2_t
5938__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5939vreinterpret_u32_s64 (int64x1_t __a)
5940{
0bf3afc1 5941 return (uint32x2_t) __a;
43e9d192
IB
5942}
5943
a063e204
TC
5944__extension__ extern __inline uint32x2_t
5945__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5946vreinterpret_u32_f32 (float32x2_t __a)
5947{
0bf3afc1 5948 return (uint32x2_t) __a;
43e9d192
IB
5949}
5950
a063e204
TC
5951__extension__ extern __inline uint32x2_t
5952__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5953vreinterpret_u32_u8 (uint8x8_t __a)
5954{
0bf3afc1 5955 return (uint32x2_t) __a;
43e9d192
IB
5956}
5957
a063e204
TC
5958__extension__ extern __inline uint32x2_t
5959__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5960vreinterpret_u32_u16 (uint16x4_t __a)
5961{
0bf3afc1 5962 return (uint32x2_t) __a;
43e9d192
IB
5963}
5964
a063e204
TC
5965__extension__ extern __inline uint32x2_t
5966__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5967vreinterpret_u32_u64 (uint64x1_t __a)
5968{
0bf3afc1 5969 return (uint32x2_t) __a;
43e9d192
IB
5970}
5971
a063e204
TC
5972__extension__ extern __inline uint32x2_t
5973__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5974vreinterpret_u32_p8 (poly8x8_t __a)
5975{
0bf3afc1 5976 return (uint32x2_t) __a;
43e9d192
IB
5977}
5978
a063e204
TC
5979__extension__ extern __inline uint32x2_t
5980__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
5981vreinterpret_u32_p16 (poly16x4_t __a)
5982{
0bf3afc1 5983 return (uint32x2_t) __a;
bcd48995
AV
5984}
5985
159b8724
TC
5986__extension__ extern __inline uint32x2_t
5987__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5988vreinterpret_u32_p64 (poly64x1_t __a)
5989{
5990 return (uint32x2_t) __a;
5991}
5992
a063e204
TC
5993__extension__ extern __inline uint32x4_t
5994__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bcd48995
AV
5995vreinterpretq_u32_f64 (float64x2_t __a)
5996{
5997 return (uint32x4_t) __a;
43e9d192
IB
5998}
5999
a063e204
TC
6000__extension__ extern __inline uint32x4_t
6001__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6002vreinterpretq_u32_s8 (int8x16_t __a)
6003{
0bf3afc1 6004 return (uint32x4_t) __a;
43e9d192
IB
6005}
6006
a063e204
TC
6007__extension__ extern __inline uint32x4_t
6008__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6009vreinterpretq_u32_s16 (int16x8_t __a)
6010{
0bf3afc1 6011 return (uint32x4_t) __a;
43e9d192
IB
6012}
6013
a063e204
TC
6014__extension__ extern __inline uint32x4_t
6015__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6016vreinterpretq_u32_s32 (int32x4_t __a)
6017{
0bf3afc1 6018 return (uint32x4_t) __a;
43e9d192
IB
6019}
6020
a063e204
TC
6021__extension__ extern __inline uint32x4_t
6022__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6023vreinterpretq_u32_s64 (int64x2_t __a)
6024{
0bf3afc1 6025 return (uint32x4_t) __a;
43e9d192
IB
6026}
6027
a063e204
TC
6028__extension__ extern __inline uint32x4_t
6029__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
6030vreinterpretq_u32_f16 (float16x8_t __a)
6031{
6032 return (uint32x4_t) __a;
6033}
6034
a063e204
TC
6035__extension__ extern __inline uint32x4_t
6036__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6037vreinterpretq_u32_f32 (float32x4_t __a)
6038{
0bf3afc1 6039 return (uint32x4_t) __a;
43e9d192
IB
6040}
6041
a063e204
TC
6042__extension__ extern __inline uint32x4_t
6043__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6044vreinterpretq_u32_u8 (uint8x16_t __a)
6045{
0bf3afc1 6046 return (uint32x4_t) __a;
43e9d192
IB
6047}
6048
a063e204
TC
6049__extension__ extern __inline uint32x4_t
6050__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6051vreinterpretq_u32_u16 (uint16x8_t __a)
6052{
0bf3afc1 6053 return (uint32x4_t) __a;
43e9d192
IB
6054}
6055
a063e204
TC
6056__extension__ extern __inline uint32x4_t
6057__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6058vreinterpretq_u32_u64 (uint64x2_t __a)
6059{
0bf3afc1 6060 return (uint32x4_t) __a;
43e9d192
IB
6061}
6062
a063e204
TC
6063__extension__ extern __inline uint32x4_t
6064__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6065vreinterpretq_u32_p8 (poly8x16_t __a)
6066{
0bf3afc1 6067 return (uint32x4_t) __a;
43e9d192
IB
6068}
6069
a063e204
TC
6070__extension__ extern __inline uint32x4_t
6071__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6072vreinterpretq_u32_p16 (poly16x8_t __a)
6073{
0bf3afc1 6074 return (uint32x4_t) __a;
43e9d192
IB
6075}
6076
159b8724
TC
6077__extension__ extern __inline uint32x4_t
6078__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6079vreinterpretq_u32_p64 (poly64x2_t __a)
6080{
6081 return (uint32x4_t) __a;
6082}
6083
99b7a28d
TC
6084__extension__ extern __inline uint32x4_t
6085__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6086vreinterpretq_u32_p128 (poly128_t __a)
6087{
6088 return (uint32x4_t)__a;
6089}
6090
65c98786
KT
6091__extension__ extern __inline float64x2_t
6092__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6093vreinterpretq_f64_p128 (poly128_t __a)
6094{
6095 return (float64x2_t) __a;
6096}
6097
6098__extension__ extern __inline poly128_t
6099__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6100vreinterpretq_p128_f64 (float64x2_t __a)
6101{
6102 return (poly128_t) __a;
6103}
6104
2310e29f
AL
6105/* vset_lane */
6106
a063e204
TC
6107__extension__ extern __inline float16x4_t
6108__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
71a11456
AL
6109vset_lane_f16 (float16_t __elem, float16x4_t __vec, const int __index)
6110{
6111 return __aarch64_vset_lane_any (__elem, __vec, __index);
6112}
6113
a063e204
TC
6114__extension__ extern __inline float32x2_t
6115__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6116vset_lane_f32 (float32_t __elem, float32x2_t __vec, const int __index)
6117{
6118 return __aarch64_vset_lane_any (__elem, __vec, __index);
6119}
6120
a063e204
TC
6121__extension__ extern __inline float64x1_t
6122__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6123vset_lane_f64 (float64_t __elem, float64x1_t __vec, const int __index)
6124{
6125 return __aarch64_vset_lane_any (__elem, __vec, __index);
6126}
6127
a063e204
TC
6128__extension__ extern __inline poly8x8_t
6129__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6130vset_lane_p8 (poly8_t __elem, poly8x8_t __vec, const int __index)
6131{
6132 return __aarch64_vset_lane_any (__elem, __vec, __index);
6133}
6134
a063e204
TC
6135__extension__ extern __inline poly16x4_t
6136__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6137vset_lane_p16 (poly16_t __elem, poly16x4_t __vec, const int __index)
6138{
6139 return __aarch64_vset_lane_any (__elem, __vec, __index);
6140}
6141
159b8724
TC
6142__extension__ extern __inline poly64x1_t
6143__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6144vset_lane_p64 (poly64_t __elem, poly64x1_t __vec, const int __index)
6145{
6146 return __aarch64_vset_lane_any (__elem, __vec, __index);
6147}
6148
a063e204
TC
6149__extension__ extern __inline int8x8_t
6150__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6151vset_lane_s8 (int8_t __elem, int8x8_t __vec, const int __index)
6152{
6153 return __aarch64_vset_lane_any (__elem, __vec, __index);
6154}
6155
a063e204
TC
6156__extension__ extern __inline int16x4_t
6157__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6158vset_lane_s16 (int16_t __elem, int16x4_t __vec, const int __index)
6159{
6160 return __aarch64_vset_lane_any (__elem, __vec, __index);
6161}
6162
a063e204
TC
6163__extension__ extern __inline int32x2_t
6164__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6165vset_lane_s32 (int32_t __elem, int32x2_t __vec, const int __index)
6166{
6167 return __aarch64_vset_lane_any (__elem, __vec, __index);
6168}
6169
a063e204
TC
6170__extension__ extern __inline int64x1_t
6171__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6172vset_lane_s64 (int64_t __elem, int64x1_t __vec, const int __index)
6173{
6174 return __aarch64_vset_lane_any (__elem, __vec, __index);
6175}
6176
a063e204
TC
6177__extension__ extern __inline uint8x8_t
6178__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6179vset_lane_u8 (uint8_t __elem, uint8x8_t __vec, const int __index)
6180{
6181 return __aarch64_vset_lane_any (__elem, __vec, __index);
6182}
6183
a063e204
TC
6184__extension__ extern __inline uint16x4_t
6185__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6186vset_lane_u16 (uint16_t __elem, uint16x4_t __vec, const int __index)
6187{
6188 return __aarch64_vset_lane_any (__elem, __vec, __index);
6189}
6190
a063e204
TC
6191__extension__ extern __inline uint32x2_t
6192__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6193vset_lane_u32 (uint32_t __elem, uint32x2_t __vec, const int __index)
6194{
6195 return __aarch64_vset_lane_any (__elem, __vec, __index);
6196}
6197
a063e204
TC
6198__extension__ extern __inline uint64x1_t
6199__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6200vset_lane_u64 (uint64_t __elem, uint64x1_t __vec, const int __index)
6201{
6202 return __aarch64_vset_lane_any (__elem, __vec, __index);
6203}
6204
6205/* vsetq_lane */
6206
a063e204
TC
6207__extension__ extern __inline float16x8_t
6208__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
71a11456
AL
6209vsetq_lane_f16 (float16_t __elem, float16x8_t __vec, const int __index)
6210{
6211 return __aarch64_vset_lane_any (__elem, __vec, __index);
6212}
6213
a063e204
TC
6214__extension__ extern __inline float32x4_t
6215__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6216vsetq_lane_f32 (float32_t __elem, float32x4_t __vec, const int __index)
6217{
6218 return __aarch64_vset_lane_any (__elem, __vec, __index);
6219}
6220
a063e204
TC
6221__extension__ extern __inline float64x2_t
6222__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6223vsetq_lane_f64 (float64_t __elem, float64x2_t __vec, const int __index)
6224{
6225 return __aarch64_vset_lane_any (__elem, __vec, __index);
6226}
6227
a063e204
TC
6228__extension__ extern __inline poly8x16_t
6229__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6230vsetq_lane_p8 (poly8_t __elem, poly8x16_t __vec, const int __index)
6231{
6232 return __aarch64_vset_lane_any (__elem, __vec, __index);
6233}
6234
159b8724
TC
6235__extension__ extern __inline poly16x8_t
6236__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6237vsetq_lane_p16 (poly16_t __elem, poly16x8_t __vec, const int __index)
6238{
6239 return __aarch64_vset_lane_any (__elem, __vec, __index);
6240}
6241
6242__extension__ extern __inline poly64x2_t
a063e204 6243__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
159b8724 6244vsetq_lane_p64 (poly64_t __elem, poly64x2_t __vec, const int __index)
2310e29f
AL
6245{
6246 return __aarch64_vset_lane_any (__elem, __vec, __index);
6247}
6248
a063e204
TC
6249__extension__ extern __inline int8x16_t
6250__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6251vsetq_lane_s8 (int8_t __elem, int8x16_t __vec, const int __index)
6252{
6253 return __aarch64_vset_lane_any (__elem, __vec, __index);
6254}
6255
a063e204
TC
6256__extension__ extern __inline int16x8_t
6257__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6258vsetq_lane_s16 (int16_t __elem, int16x8_t __vec, const int __index)
6259{
6260 return __aarch64_vset_lane_any (__elem, __vec, __index);
6261}
6262
a063e204
TC
6263__extension__ extern __inline int32x4_t
6264__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6265vsetq_lane_s32 (int32_t __elem, int32x4_t __vec, const int __index)
6266{
6267 return __aarch64_vset_lane_any (__elem, __vec, __index);
6268}
6269
a063e204
TC
6270__extension__ extern __inline int64x2_t
6271__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6272vsetq_lane_s64 (int64_t __elem, int64x2_t __vec, const int __index)
6273{
6274 return __aarch64_vset_lane_any (__elem, __vec, __index);
6275}
6276
a063e204
TC
6277__extension__ extern __inline uint8x16_t
6278__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6279vsetq_lane_u8 (uint8_t __elem, uint8x16_t __vec, const int __index)
6280{
6281 return __aarch64_vset_lane_any (__elem, __vec, __index);
6282}
6283
a063e204
TC
6284__extension__ extern __inline uint16x8_t
6285__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6286vsetq_lane_u16 (uint16_t __elem, uint16x8_t __vec, const int __index)
6287{
6288 return __aarch64_vset_lane_any (__elem, __vec, __index);
6289}
6290
a063e204
TC
6291__extension__ extern __inline uint32x4_t
6292__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6293vsetq_lane_u32 (uint32_t __elem, uint32x4_t __vec, const int __index)
6294{
6295 return __aarch64_vset_lane_any (__elem, __vec, __index);
6296}
6297
a063e204
TC
6298__extension__ extern __inline uint64x2_t
6299__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2310e29f
AL
6300vsetq_lane_u64 (uint64_t __elem, uint64x2_t __vec, const int __index)
6301{
6302 return __aarch64_vset_lane_any (__elem, __vec, __index);
6303}
6304
9116eb22
TB
6305#define __GET_LOW(__TYPE) \
6306 uint64x2_t tmp = vreinterpretq_u64_##__TYPE (__a); \
096c59be 6307 uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0)); \
9116eb22
TB
6308 return vreinterpret_##__TYPE##_u64 (lo);
6309
a063e204
TC
6310__extension__ extern __inline float16x4_t
6311__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
6312vget_low_f16 (float16x8_t __a)
6313{
6314 __GET_LOW (f16);
6315}
6316
a063e204
TC
6317__extension__ extern __inline float32x2_t
6318__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9116eb22
TB
6319vget_low_f32 (float32x4_t __a)
6320{
6321 __GET_LOW (f32);
6322}
6323
a063e204
TC
6324__extension__ extern __inline float64x1_t
6325__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9116eb22
TB
6326vget_low_f64 (float64x2_t __a)
6327{
c6a29a09 6328 return (float64x1_t) {vgetq_lane_f64 (__a, 0)};
9116eb22
TB
6329}
6330
a063e204
TC
6331__extension__ extern __inline poly8x8_t
6332__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9116eb22
TB
6333vget_low_p8 (poly8x16_t __a)
6334{
6335 __GET_LOW (p8);
6336}
6337
a063e204
TC
6338__extension__ extern __inline poly16x4_t
6339__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9116eb22
TB
6340vget_low_p16 (poly16x8_t __a)
6341{
6342 __GET_LOW (p16);
6343}
6344
159b8724
TC
6345__extension__ extern __inline poly64x1_t
6346__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6347vget_low_p64 (poly64x2_t __a)
6348{
6349 __GET_LOW (p64);
6350}
6351
a063e204
TC
6352__extension__ extern __inline int8x8_t
6353__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9116eb22
TB
6354vget_low_s8 (int8x16_t __a)
6355{
6356 __GET_LOW (s8);
6357}
6358
a063e204
TC
6359__extension__ extern __inline int16x4_t
6360__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9116eb22
TB
6361vget_low_s16 (int16x8_t __a)
6362{
6363 __GET_LOW (s16);
6364}
6365
a063e204
TC
6366__extension__ extern __inline int32x2_t
6367__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9116eb22
TB
6368vget_low_s32 (int32x4_t __a)
6369{
6370 __GET_LOW (s32);
6371}
6372
a063e204
TC
6373__extension__ extern __inline int64x1_t
6374__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9116eb22
TB
6375vget_low_s64 (int64x2_t __a)
6376{
096c59be 6377 __GET_LOW (s64);
9116eb22
TB
6378}
6379
a063e204
TC
6380__extension__ extern __inline uint8x8_t
6381__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9116eb22
TB
6382vget_low_u8 (uint8x16_t __a)
6383{
6384 __GET_LOW (u8);
6385}
6386
a063e204
TC
6387__extension__ extern __inline uint16x4_t
6388__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9116eb22
TB
6389vget_low_u16 (uint16x8_t __a)
6390{
6391 __GET_LOW (u16);
6392}
6393
a063e204
TC
6394__extension__ extern __inline uint32x2_t
6395__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9116eb22
TB
6396vget_low_u32 (uint32x4_t __a)
6397{
6398 __GET_LOW (u32);
6399}
6400
a063e204
TC
6401__extension__ extern __inline uint64x1_t
6402__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9116eb22
TB
6403vget_low_u64 (uint64x2_t __a)
6404{
096c59be 6405 return vcreate_u64 (vgetq_lane_u64 (__a, 0));
9116eb22
TB
6406}
6407
6408#undef __GET_LOW
6409
8684fa50
AL
6410#define __GET_HIGH(__TYPE) \
6411 uint64x2_t tmp = vreinterpretq_u64_##__TYPE (__a); \
6412 uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); \
6413 return vreinterpret_##__TYPE##_u64 (hi);
6414
a063e204
TC
6415__extension__ extern __inline float16x4_t
6416__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
6417vget_high_f16 (float16x8_t __a)
6418{
6419 __GET_HIGH (f16);
6420}
6421
a063e204
TC
6422__extension__ extern __inline float32x2_t
6423__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8684fa50
AL
6424vget_high_f32 (float32x4_t __a)
6425{
6426 __GET_HIGH (f32);
6427}
6428
a063e204
TC
6429__extension__ extern __inline float64x1_t
6430__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8684fa50
AL
6431vget_high_f64 (float64x2_t __a)
6432{
6433 __GET_HIGH (f64);
6434}
6435
a063e204
TC
6436__extension__ extern __inline poly8x8_t
6437__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8684fa50
AL
6438vget_high_p8 (poly8x16_t __a)
6439{
6440 __GET_HIGH (p8);
6441}
6442
a063e204
TC
6443__extension__ extern __inline poly16x4_t
6444__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8684fa50
AL
6445vget_high_p16 (poly16x8_t __a)
6446{
6447 __GET_HIGH (p16);
6448}
6449
159b8724
TC
6450__extension__ extern __inline poly64x1_t
6451__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6452vget_high_p64 (poly64x2_t __a)
6453{
6454 __GET_HIGH (p64);
6455}
6456
a063e204
TC
6457__extension__ extern __inline int8x8_t
6458__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8684fa50
AL
6459vget_high_s8 (int8x16_t __a)
6460{
6461 __GET_HIGH (s8);
6462}
6463
a063e204
TC
6464__extension__ extern __inline int16x4_t
6465__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8684fa50
AL
6466vget_high_s16 (int16x8_t __a)
6467{
6468 __GET_HIGH (s16);
6469}
6470
a063e204
TC
6471__extension__ extern __inline int32x2_t
6472__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8684fa50
AL
6473vget_high_s32 (int32x4_t __a)
6474{
6475 __GET_HIGH (s32);
6476}
6477
a063e204
TC
6478__extension__ extern __inline int64x1_t
6479__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8684fa50
AL
6480vget_high_s64 (int64x2_t __a)
6481{
6482 __GET_HIGH (s64);
6483}
6484
a063e204
TC
6485__extension__ extern __inline uint8x8_t
6486__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8684fa50
AL
6487vget_high_u8 (uint8x16_t __a)
6488{
6489 __GET_HIGH (u8);
6490}
6491
a063e204
TC
6492__extension__ extern __inline uint16x4_t
6493__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8684fa50
AL
6494vget_high_u16 (uint16x8_t __a)
6495{
6496 __GET_HIGH (u16);
6497}
6498
a063e204
TC
6499__extension__ extern __inline uint32x2_t
6500__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8684fa50
AL
6501vget_high_u32 (uint32x4_t __a)
6502{
6503 __GET_HIGH (u32);
6504}
6505
6506#undef __GET_HIGH
6507
a063e204
TC
6508__extension__ extern __inline uint64x1_t
6509__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8684fa50
AL
6510vget_high_u64 (uint64x2_t __a)
6511{
6512 return vcreate_u64 (vgetq_lane_u64 (__a, 1));
6513}
6514
a063e204
TC
6515__extension__ extern __inline int8x16_t
6516__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6517vcombine_s8 (int8x8_t __a, int8x8_t __b)
6518{
6519 return (int8x16_t) __builtin_aarch64_combinev8qi (__a, __b);
6520}
6521
a063e204
TC
6522__extension__ extern __inline int16x8_t
6523__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6524vcombine_s16 (int16x4_t __a, int16x4_t __b)
6525{
6526 return (int16x8_t) __builtin_aarch64_combinev4hi (__a, __b);
6527}
6528
a063e204
TC
6529__extension__ extern __inline int32x4_t
6530__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6531vcombine_s32 (int32x2_t __a, int32x2_t __b)
6532{
6533 return (int32x4_t) __builtin_aarch64_combinev2si (__a, __b);
6534}
6535
a063e204
TC
6536__extension__ extern __inline int64x2_t
6537__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6538vcombine_s64 (int64x1_t __a, int64x1_t __b)
6539{
096c59be 6540 return __builtin_aarch64_combinedi (__a[0], __b[0]);
43e9d192
IB
6541}
6542
a063e204
TC
6543__extension__ extern __inline float16x8_t
6544__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7c369485
AL
6545vcombine_f16 (float16x4_t __a, float16x4_t __b)
6546{
6547 return __builtin_aarch64_combinev4hf (__a, __b);
6548}
6549
a063e204
TC
6550__extension__ extern __inline float32x4_t
6551__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6552vcombine_f32 (float32x2_t __a, float32x2_t __b)
6553{
6554 return (float32x4_t) __builtin_aarch64_combinev2sf (__a, __b);
6555}
6556
a063e204
TC
6557__extension__ extern __inline uint8x16_t
6558__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6559vcombine_u8 (uint8x8_t __a, uint8x8_t __b)
6560{
6561 return (uint8x16_t) __builtin_aarch64_combinev8qi ((int8x8_t) __a,
6562 (int8x8_t) __b);
6563}
6564
a063e204
TC
6565__extension__ extern __inline uint16x8_t
6566__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6567vcombine_u16 (uint16x4_t __a, uint16x4_t __b)
6568{
6569 return (uint16x8_t) __builtin_aarch64_combinev4hi ((int16x4_t) __a,
6570 (int16x4_t) __b);
6571}
6572
a063e204
TC
6573__extension__ extern __inline uint32x4_t
6574__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6575vcombine_u32 (uint32x2_t __a, uint32x2_t __b)
6576{
6577 return (uint32x4_t) __builtin_aarch64_combinev2si ((int32x2_t) __a,
6578 (int32x2_t) __b);
6579}
6580
a063e204
TC
6581__extension__ extern __inline uint64x2_t
6582__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6583vcombine_u64 (uint64x1_t __a, uint64x1_t __b)
6584{
096c59be 6585 return (uint64x2_t) __builtin_aarch64_combinedi (__a[0], __b[0]);
43e9d192
IB
6586}
6587
a063e204
TC
6588__extension__ extern __inline float64x2_t
6589__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6590vcombine_f64 (float64x1_t __a, float64x1_t __b)
6591{
c6a29a09 6592 return __builtin_aarch64_combinedf (__a[0], __b[0]);
43e9d192
IB
6593}
6594
a063e204
TC
6595__extension__ extern __inline poly8x16_t
6596__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6597vcombine_p8 (poly8x8_t __a, poly8x8_t __b)
6598{
6599 return (poly8x16_t) __builtin_aarch64_combinev8qi ((int8x8_t) __a,
6600 (int8x8_t) __b);
6601}
6602
a063e204
TC
6603__extension__ extern __inline poly16x8_t
6604__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
6605vcombine_p16 (poly16x4_t __a, poly16x4_t __b)
6606{
6607 return (poly16x8_t) __builtin_aarch64_combinev4hi ((int16x4_t) __a,
6608 (int16x4_t) __b);
6609}
6610
159b8724
TC
6611__extension__ extern __inline poly64x2_t
6612__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6613vcombine_p64 (poly64x1_t __a, poly64x1_t __b)
6614{
6615 return (poly64x2_t) __builtin_aarch64_combinedi_ppp (__a[0], __b[0]);
6616}
6617
43e9d192
IB
6618/* Start of temporary inline asm implementations. */
6619
a063e204
TC
6620__extension__ extern __inline int8x8_t
6621__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6622vaba_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
43e9d192 6623{
9a3afc35 6624 int8x8_t __result;
43e9d192 6625 __asm__ ("saba %0.8b,%2.8b,%3.8b"
9a3afc35
KT
6626 : "=w"(__result)
6627 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6628 : /* No clobbers */);
9a3afc35 6629 return __result;
43e9d192
IB
6630}
6631
a063e204
TC
6632__extension__ extern __inline int16x4_t
6633__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6634vaba_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
43e9d192 6635{
9a3afc35 6636 int16x4_t __result;
43e9d192 6637 __asm__ ("saba %0.4h,%2.4h,%3.4h"
9a3afc35
KT
6638 : "=w"(__result)
6639 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6640 : /* No clobbers */);
9a3afc35 6641 return __result;
43e9d192
IB
6642}
6643
a063e204
TC
6644__extension__ extern __inline int32x2_t
6645__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6646vaba_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
43e9d192 6647{
9a3afc35 6648 int32x2_t __result;
43e9d192 6649 __asm__ ("saba %0.2s,%2.2s,%3.2s"
9a3afc35
KT
6650 : "=w"(__result)
6651 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6652 : /* No clobbers */);
9a3afc35 6653 return __result;
43e9d192
IB
6654}
6655
a063e204
TC
6656__extension__ extern __inline uint8x8_t
6657__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6658vaba_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
43e9d192 6659{
9a3afc35 6660 uint8x8_t __result;
43e9d192 6661 __asm__ ("uaba %0.8b,%2.8b,%3.8b"
9a3afc35
KT
6662 : "=w"(__result)
6663 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6664 : /* No clobbers */);
9a3afc35 6665 return __result;
43e9d192
IB
6666}
6667
a063e204
TC
6668__extension__ extern __inline uint16x4_t
6669__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6670vaba_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
43e9d192 6671{
9a3afc35 6672 uint16x4_t __result;
43e9d192 6673 __asm__ ("uaba %0.4h,%2.4h,%3.4h"
9a3afc35
KT
6674 : "=w"(__result)
6675 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6676 : /* No clobbers */);
9a3afc35 6677 return __result;
43e9d192
IB
6678}
6679
a063e204
TC
6680__extension__ extern __inline uint32x2_t
6681__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6682vaba_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
43e9d192 6683{
9a3afc35 6684 uint32x2_t __result;
43e9d192 6685 __asm__ ("uaba %0.2s,%2.2s,%3.2s"
9a3afc35
KT
6686 : "=w"(__result)
6687 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6688 : /* No clobbers */);
9a3afc35 6689 return __result;
43e9d192
IB
6690}
6691
a063e204
TC
6692__extension__ extern __inline int16x8_t
6693__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6694vabal_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)
43e9d192 6695{
9a3afc35 6696 int16x8_t __result;
43e9d192 6697 __asm__ ("sabal2 %0.8h,%2.16b,%3.16b"
9a3afc35
KT
6698 : "=w"(__result)
6699 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6700 : /* No clobbers */);
9a3afc35 6701 return __result;
43e9d192
IB
6702}
6703
a063e204
TC
6704__extension__ extern __inline int32x4_t
6705__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6706vabal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
43e9d192 6707{
9a3afc35 6708 int32x4_t __result;
43e9d192 6709 __asm__ ("sabal2 %0.4s,%2.8h,%3.8h"
9a3afc35
KT
6710 : "=w"(__result)
6711 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6712 : /* No clobbers */);
9a3afc35 6713 return __result;
43e9d192
IB
6714}
6715
a063e204
TC
6716__extension__ extern __inline int64x2_t
6717__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6718vabal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
43e9d192 6719{
9a3afc35 6720 int64x2_t __result;
43e9d192 6721 __asm__ ("sabal2 %0.2d,%2.4s,%3.4s"
9a3afc35
KT
6722 : "=w"(__result)
6723 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6724 : /* No clobbers */);
9a3afc35 6725 return __result;
43e9d192
IB
6726}
6727
a063e204
TC
6728__extension__ extern __inline uint16x8_t
6729__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6730vabal_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)
43e9d192 6731{
9a3afc35 6732 uint16x8_t __result;
43e9d192 6733 __asm__ ("uabal2 %0.8h,%2.16b,%3.16b"
9a3afc35
KT
6734 : "=w"(__result)
6735 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6736 : /* No clobbers */);
9a3afc35 6737 return __result;
43e9d192
IB
6738}
6739
a063e204
TC
6740__extension__ extern __inline uint32x4_t
6741__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6742vabal_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)
43e9d192 6743{
9a3afc35 6744 uint32x4_t __result;
43e9d192 6745 __asm__ ("uabal2 %0.4s,%2.8h,%3.8h"
9a3afc35
KT
6746 : "=w"(__result)
6747 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6748 : /* No clobbers */);
9a3afc35 6749 return __result;
43e9d192
IB
6750}
6751
a063e204
TC
6752__extension__ extern __inline uint64x2_t
6753__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6754vabal_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)
43e9d192 6755{
9a3afc35 6756 uint64x2_t __result;
43e9d192 6757 __asm__ ("uabal2 %0.2d,%2.4s,%3.4s"
9a3afc35
KT
6758 : "=w"(__result)
6759 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6760 : /* No clobbers */);
9a3afc35 6761 return __result;
43e9d192
IB
6762}
6763
a063e204
TC
6764__extension__ extern __inline int16x8_t
6765__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6766vabal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
43e9d192 6767{
9a3afc35 6768 int16x8_t __result;
43e9d192 6769 __asm__ ("sabal %0.8h,%2.8b,%3.8b"
9a3afc35
KT
6770 : "=w"(__result)
6771 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6772 : /* No clobbers */);
9a3afc35 6773 return __result;
43e9d192
IB
6774}
6775
a063e204
TC
6776__extension__ extern __inline int32x4_t
6777__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6778vabal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
43e9d192 6779{
9a3afc35 6780 int32x4_t __result;
43e9d192 6781 __asm__ ("sabal %0.4s,%2.4h,%3.4h"
9a3afc35
KT
6782 : "=w"(__result)
6783 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6784 : /* No clobbers */);
9a3afc35 6785 return __result;
43e9d192
IB
6786}
6787
a063e204
TC
6788__extension__ extern __inline int64x2_t
6789__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6790vabal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
43e9d192 6791{
9a3afc35 6792 int64x2_t __result;
43e9d192 6793 __asm__ ("sabal %0.2d,%2.2s,%3.2s"
9a3afc35
KT
6794 : "=w"(__result)
6795 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6796 : /* No clobbers */);
9a3afc35 6797 return __result;
43e9d192
IB
6798}
6799
a063e204
TC
6800__extension__ extern __inline uint16x8_t
6801__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6802vabal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
43e9d192 6803{
9a3afc35 6804 uint16x8_t __result;
43e9d192 6805 __asm__ ("uabal %0.8h,%2.8b,%3.8b"
9a3afc35
KT
6806 : "=w"(__result)
6807 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6808 : /* No clobbers */);
9a3afc35 6809 return __result;
43e9d192
IB
6810}
6811
a063e204
TC
6812__extension__ extern __inline uint32x4_t
6813__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6814vabal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
43e9d192 6815{
9a3afc35 6816 uint32x4_t __result;
43e9d192 6817 __asm__ ("uabal %0.4s,%2.4h,%3.4h"
9a3afc35
KT
6818 : "=w"(__result)
6819 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6820 : /* No clobbers */);
9a3afc35 6821 return __result;
43e9d192
IB
6822}
6823
a063e204
TC
6824__extension__ extern __inline uint64x2_t
6825__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6826vabal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
43e9d192 6827{
9a3afc35 6828 uint64x2_t __result;
43e9d192 6829 __asm__ ("uabal %0.2d,%2.2s,%3.2s"
9a3afc35
KT
6830 : "=w"(__result)
6831 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6832 : /* No clobbers */);
9a3afc35 6833 return __result;
43e9d192
IB
6834}
6835
a063e204
TC
6836__extension__ extern __inline int8x16_t
6837__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6838vabaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
43e9d192 6839{
9a3afc35 6840 int8x16_t __result;
43e9d192 6841 __asm__ ("saba %0.16b,%2.16b,%3.16b"
9a3afc35
KT
6842 : "=w"(__result)
6843 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6844 : /* No clobbers */);
9a3afc35 6845 return __result;
43e9d192
IB
6846}
6847
a063e204
TC
6848__extension__ extern __inline int16x8_t
6849__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6850vabaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
43e9d192 6851{
9a3afc35 6852 int16x8_t __result;
43e9d192 6853 __asm__ ("saba %0.8h,%2.8h,%3.8h"
9a3afc35
KT
6854 : "=w"(__result)
6855 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6856 : /* No clobbers */);
9a3afc35 6857 return __result;
43e9d192
IB
6858}
6859
a063e204
TC
6860__extension__ extern __inline int32x4_t
6861__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6862vabaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
43e9d192 6863{
9a3afc35 6864 int32x4_t __result;
43e9d192 6865 __asm__ ("saba %0.4s,%2.4s,%3.4s"
9a3afc35
KT
6866 : "=w"(__result)
6867 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6868 : /* No clobbers */);
9a3afc35 6869 return __result;
43e9d192
IB
6870}
6871
a063e204
TC
6872__extension__ extern __inline uint8x16_t
6873__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6874vabaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
43e9d192 6875{
9a3afc35 6876 uint8x16_t __result;
43e9d192 6877 __asm__ ("uaba %0.16b,%2.16b,%3.16b"
9a3afc35
KT
6878 : "=w"(__result)
6879 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6880 : /* No clobbers */);
9a3afc35 6881 return __result;
43e9d192
IB
6882}
6883
a063e204
TC
6884__extension__ extern __inline uint16x8_t
6885__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6886vabaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
43e9d192 6887{
9a3afc35 6888 uint16x8_t __result;
43e9d192 6889 __asm__ ("uaba %0.8h,%2.8h,%3.8h"
9a3afc35
KT
6890 : "=w"(__result)
6891 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6892 : /* No clobbers */);
9a3afc35 6893 return __result;
43e9d192
IB
6894}
6895
a063e204
TC
6896__extension__ extern __inline uint32x4_t
6897__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6898vabaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
43e9d192 6899{
9a3afc35 6900 uint32x4_t __result;
43e9d192 6901 __asm__ ("uaba %0.4s,%2.4s,%3.4s"
9a3afc35
KT
6902 : "=w"(__result)
6903 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 6904 : /* No clobbers */);
9a3afc35 6905 return __result;
43e9d192
IB
6906}
6907
a063e204
TC
6908__extension__ extern __inline int8x8_t
6909__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6910vabd_s8 (int8x8_t __a, int8x8_t __b)
43e9d192 6911{
9a3afc35 6912 int8x8_t __result;
43e9d192 6913 __asm__ ("sabd %0.8b, %1.8b, %2.8b"
9a3afc35
KT
6914 : "=w"(__result)
6915 : "w"(__a), "w"(__b)
43e9d192 6916 : /* No clobbers */);
9a3afc35 6917 return __result;
43e9d192
IB
6918}
6919
a063e204
TC
6920__extension__ extern __inline int16x4_t
6921__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6922vabd_s16 (int16x4_t __a, int16x4_t __b)
43e9d192 6923{
9a3afc35 6924 int16x4_t __result;
43e9d192 6925 __asm__ ("sabd %0.4h, %1.4h, %2.4h"
9a3afc35
KT
6926 : "=w"(__result)
6927 : "w"(__a), "w"(__b)
43e9d192 6928 : /* No clobbers */);
9a3afc35 6929 return __result;
43e9d192
IB
6930}
6931
a063e204
TC
6932__extension__ extern __inline int32x2_t
6933__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6934vabd_s32 (int32x2_t __a, int32x2_t __b)
43e9d192 6935{
9a3afc35 6936 int32x2_t __result;
43e9d192 6937 __asm__ ("sabd %0.2s, %1.2s, %2.2s"
9a3afc35
KT
6938 : "=w"(__result)
6939 : "w"(__a), "w"(__b)
43e9d192 6940 : /* No clobbers */);
9a3afc35 6941 return __result;
43e9d192
IB
6942}
6943
a063e204
TC
6944__extension__ extern __inline uint8x8_t
6945__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6946vabd_u8 (uint8x8_t __a, uint8x8_t __b)
43e9d192 6947{
9a3afc35 6948 uint8x8_t __result;
43e9d192 6949 __asm__ ("uabd %0.8b, %1.8b, %2.8b"
9a3afc35
KT
6950 : "=w"(__result)
6951 : "w"(__a), "w"(__b)
43e9d192 6952 : /* No clobbers */);
9a3afc35 6953 return __result;
43e9d192
IB
6954}
6955
a063e204
TC
6956__extension__ extern __inline uint16x4_t
6957__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6958vabd_u16 (uint16x4_t __a, uint16x4_t __b)
43e9d192 6959{
9a3afc35 6960 uint16x4_t __result;
43e9d192 6961 __asm__ ("uabd %0.4h, %1.4h, %2.4h"
9a3afc35
KT
6962 : "=w"(__result)
6963 : "w"(__a), "w"(__b)
43e9d192 6964 : /* No clobbers */);
9a3afc35 6965 return __result;
43e9d192
IB
6966}
6967
a063e204
TC
6968__extension__ extern __inline uint32x2_t
6969__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6970vabd_u32 (uint32x2_t __a, uint32x2_t __b)
43e9d192 6971{
9a3afc35 6972 uint32x2_t __result;
43e9d192 6973 __asm__ ("uabd %0.2s, %1.2s, %2.2s"
9a3afc35
KT
6974 : "=w"(__result)
6975 : "w"(__a), "w"(__b)
43e9d192 6976 : /* No clobbers */);
9a3afc35 6977 return __result;
43e9d192
IB
6978}
6979
a063e204
TC
6980__extension__ extern __inline int16x8_t
6981__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6982vabdl_high_s8 (int8x16_t __a, int8x16_t __b)
43e9d192 6983{
9a3afc35 6984 int16x8_t __result;
43e9d192 6985 __asm__ ("sabdl2 %0.8h,%1.16b,%2.16b"
9a3afc35
KT
6986 : "=w"(__result)
6987 : "w"(__a), "w"(__b)
43e9d192 6988 : /* No clobbers */);
9a3afc35 6989 return __result;
43e9d192
IB
6990}
6991
a063e204
TC
6992__extension__ extern __inline int32x4_t
6993__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 6994vabdl_high_s16 (int16x8_t __a, int16x8_t __b)
43e9d192 6995{
9a3afc35 6996 int32x4_t __result;
43e9d192 6997 __asm__ ("sabdl2 %0.4s,%1.8h,%2.8h"
9a3afc35
KT
6998 : "=w"(__result)
6999 : "w"(__a), "w"(__b)
43e9d192 7000 : /* No clobbers */);
9a3afc35 7001 return __result;
43e9d192
IB
7002}
7003
a063e204
TC
7004__extension__ extern __inline int64x2_t
7005__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7006vabdl_high_s32 (int32x4_t __a, int32x4_t __b)
43e9d192 7007{
9a3afc35 7008 int64x2_t __result;
43e9d192 7009 __asm__ ("sabdl2 %0.2d,%1.4s,%2.4s"
9a3afc35
KT
7010 : "=w"(__result)
7011 : "w"(__a), "w"(__b)
43e9d192 7012 : /* No clobbers */);
9a3afc35 7013 return __result;
43e9d192
IB
7014}
7015
a063e204
TC
7016__extension__ extern __inline uint16x8_t
7017__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7018vabdl_high_u8 (uint8x16_t __a, uint8x16_t __b)
43e9d192 7019{
9a3afc35 7020 uint16x8_t __result;
43e9d192 7021 __asm__ ("uabdl2 %0.8h,%1.16b,%2.16b"
9a3afc35
KT
7022 : "=w"(__result)
7023 : "w"(__a), "w"(__b)
43e9d192 7024 : /* No clobbers */);
9a3afc35 7025 return __result;
43e9d192
IB
7026}
7027
a063e204
TC
7028__extension__ extern __inline uint32x4_t
7029__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7030vabdl_high_u16 (uint16x8_t __a, uint16x8_t __b)
43e9d192 7031{
9a3afc35 7032 uint32x4_t __result;
43e9d192 7033 __asm__ ("uabdl2 %0.4s,%1.8h,%2.8h"
9a3afc35
KT
7034 : "=w"(__result)
7035 : "w"(__a), "w"(__b)
43e9d192 7036 : /* No clobbers */);
9a3afc35 7037 return __result;
43e9d192
IB
7038}
7039
a063e204
TC
7040__extension__ extern __inline uint64x2_t
7041__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7042vabdl_high_u32 (uint32x4_t __a, uint32x4_t __b)
43e9d192 7043{
9a3afc35 7044 uint64x2_t __result;
43e9d192 7045 __asm__ ("uabdl2 %0.2d,%1.4s,%2.4s"
9a3afc35
KT
7046 : "=w"(__result)
7047 : "w"(__a), "w"(__b)
43e9d192 7048 : /* No clobbers */);
9a3afc35 7049 return __result;
43e9d192
IB
7050}
7051
a063e204
TC
7052__extension__ extern __inline int16x8_t
7053__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7054vabdl_s8 (int8x8_t __a, int8x8_t __b)
43e9d192 7055{
9a3afc35 7056 int16x8_t __result;
43e9d192 7057 __asm__ ("sabdl %0.8h, %1.8b, %2.8b"
9a3afc35
KT
7058 : "=w"(__result)
7059 : "w"(__a), "w"(__b)
43e9d192 7060 : /* No clobbers */);
9a3afc35 7061 return __result;
43e9d192
IB
7062}
7063
a063e204
TC
7064__extension__ extern __inline int32x4_t
7065__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7066vabdl_s16 (int16x4_t __a, int16x4_t __b)
43e9d192 7067{
9a3afc35 7068 int32x4_t __result;
43e9d192 7069 __asm__ ("sabdl %0.4s, %1.4h, %2.4h"
9a3afc35
KT
7070 : "=w"(__result)
7071 : "w"(__a), "w"(__b)
43e9d192 7072 : /* No clobbers */);
9a3afc35 7073 return __result;
43e9d192
IB
7074}
7075
a063e204
TC
7076__extension__ extern __inline int64x2_t
7077__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7078vabdl_s32 (int32x2_t __a, int32x2_t __b)
43e9d192 7079{
9a3afc35 7080 int64x2_t __result;
43e9d192 7081 __asm__ ("sabdl %0.2d, %1.2s, %2.2s"
9a3afc35
KT
7082 : "=w"(__result)
7083 : "w"(__a), "w"(__b)
43e9d192 7084 : /* No clobbers */);
9a3afc35 7085 return __result;
43e9d192
IB
7086}
7087
a063e204
TC
7088__extension__ extern __inline uint16x8_t
7089__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7090vabdl_u8 (uint8x8_t __a, uint8x8_t __b)
43e9d192 7091{
9a3afc35 7092 uint16x8_t __result;
43e9d192 7093 __asm__ ("uabdl %0.8h, %1.8b, %2.8b"
9a3afc35
KT
7094 : "=w"(__result)
7095 : "w"(__a), "w"(__b)
43e9d192 7096 : /* No clobbers */);
9a3afc35 7097 return __result;
43e9d192
IB
7098}
7099
a063e204
TC
7100__extension__ extern __inline uint32x4_t
7101__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7102vabdl_u16 (uint16x4_t __a, uint16x4_t __b)
43e9d192 7103{
9a3afc35 7104 uint32x4_t __result;
43e9d192 7105 __asm__ ("uabdl %0.4s, %1.4h, %2.4h"
9a3afc35
KT
7106 : "=w"(__result)
7107 : "w"(__a), "w"(__b)
43e9d192 7108 : /* No clobbers */);
9a3afc35 7109 return __result;
43e9d192
IB
7110}
7111
a063e204
TC
7112__extension__ extern __inline uint64x2_t
7113__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7114vabdl_u32 (uint32x2_t __a, uint32x2_t __b)
43e9d192 7115{
9a3afc35 7116 uint64x2_t __result;
43e9d192 7117 __asm__ ("uabdl %0.2d, %1.2s, %2.2s"
9a3afc35
KT
7118 : "=w"(__result)
7119 : "w"(__a), "w"(__b)
43e9d192 7120 : /* No clobbers */);
9a3afc35 7121 return __result;
43e9d192
IB
7122}
7123
a063e204
TC
7124__extension__ extern __inline int8x16_t
7125__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7126vabdq_s8 (int8x16_t __a, int8x16_t __b)
43e9d192 7127{
9a3afc35 7128 int8x16_t __result;
43e9d192 7129 __asm__ ("sabd %0.16b, %1.16b, %2.16b"
9a3afc35
KT
7130 : "=w"(__result)
7131 : "w"(__a), "w"(__b)
43e9d192 7132 : /* No clobbers */);
9a3afc35 7133 return __result;
43e9d192
IB
7134}
7135
a063e204
TC
7136__extension__ extern __inline int16x8_t
7137__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7138vabdq_s16 (int16x8_t __a, int16x8_t __b)
43e9d192 7139{
9a3afc35 7140 int16x8_t __result;
43e9d192 7141 __asm__ ("sabd %0.8h, %1.8h, %2.8h"
9a3afc35
KT
7142 : "=w"(__result)
7143 : "w"(__a), "w"(__b)
43e9d192 7144 : /* No clobbers */);
9a3afc35 7145 return __result;
43e9d192
IB
7146}
7147
a063e204
TC
7148__extension__ extern __inline int32x4_t
7149__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7150vabdq_s32 (int32x4_t __a, int32x4_t __b)
43e9d192 7151{
9a3afc35 7152 int32x4_t __result;
43e9d192 7153 __asm__ ("sabd %0.4s, %1.4s, %2.4s"
9a3afc35
KT
7154 : "=w"(__result)
7155 : "w"(__a), "w"(__b)
43e9d192 7156 : /* No clobbers */);
9a3afc35 7157 return __result;
43e9d192
IB
7158}
7159
a063e204
TC
7160__extension__ extern __inline uint8x16_t
7161__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7162vabdq_u8 (uint8x16_t __a, uint8x16_t __b)
43e9d192 7163{
9a3afc35 7164 uint8x16_t __result;
43e9d192 7165 __asm__ ("uabd %0.16b, %1.16b, %2.16b"
9a3afc35
KT
7166 : "=w"(__result)
7167 : "w"(__a), "w"(__b)
43e9d192 7168 : /* No clobbers */);
9a3afc35 7169 return __result;
43e9d192
IB
7170}
7171
a063e204
TC
7172__extension__ extern __inline uint16x8_t
7173__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7174vabdq_u16 (uint16x8_t __a, uint16x8_t __b)
43e9d192 7175{
9a3afc35 7176 uint16x8_t __result;
43e9d192 7177 __asm__ ("uabd %0.8h, %1.8h, %2.8h"
9a3afc35
KT
7178 : "=w"(__result)
7179 : "w"(__a), "w"(__b)
43e9d192 7180 : /* No clobbers */);
9a3afc35 7181 return __result;
43e9d192
IB
7182}
7183
a063e204
TC
7184__extension__ extern __inline uint32x4_t
7185__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7186vabdq_u32 (uint32x4_t __a, uint32x4_t __b)
43e9d192 7187{
9a3afc35 7188 uint32x4_t __result;
43e9d192 7189 __asm__ ("uabd %0.4s, %1.4s, %2.4s"
9a3afc35
KT
7190 : "=w"(__result)
7191 : "w"(__a), "w"(__b)
43e9d192 7192 : /* No clobbers */);
9a3afc35 7193 return __result;
43e9d192
IB
7194}
7195
a063e204
TC
7196__extension__ extern __inline int16_t
7197__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7198vaddlv_s8 (int8x8_t __a)
43e9d192 7199{
9a3afc35 7200 int16_t __result;
43e9d192 7201 __asm__ ("saddlv %h0,%1.8b"
9a3afc35
KT
7202 : "=w"(__result)
7203 : "w"(__a)
43e9d192 7204 : /* No clobbers */);
9a3afc35 7205 return __result;
43e9d192
IB
7206}
7207
a063e204
TC
7208__extension__ extern __inline int32_t
7209__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7210vaddlv_s16 (int16x4_t __a)
43e9d192 7211{
9a3afc35 7212 int32_t __result;
43e9d192 7213 __asm__ ("saddlv %s0,%1.4h"
9a3afc35
KT
7214 : "=w"(__result)
7215 : "w"(__a)
43e9d192 7216 : /* No clobbers */);
9a3afc35 7217 return __result;
43e9d192
IB
7218}
7219
a063e204
TC
7220__extension__ extern __inline uint16_t
7221__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7222vaddlv_u8 (uint8x8_t __a)
43e9d192 7223{
9a3afc35 7224 uint16_t __result;
43e9d192 7225 __asm__ ("uaddlv %h0,%1.8b"
9a3afc35
KT
7226 : "=w"(__result)
7227 : "w"(__a)
43e9d192 7228 : /* No clobbers */);
9a3afc35 7229 return __result;
43e9d192
IB
7230}
7231
a063e204
TC
7232__extension__ extern __inline uint32_t
7233__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7234vaddlv_u16 (uint16x4_t __a)
43e9d192 7235{
9a3afc35 7236 uint32_t __result;
43e9d192 7237 __asm__ ("uaddlv %s0,%1.4h"
9a3afc35
KT
7238 : "=w"(__result)
7239 : "w"(__a)
43e9d192 7240 : /* No clobbers */);
9a3afc35 7241 return __result;
43e9d192
IB
7242}
7243
a063e204
TC
7244__extension__ extern __inline int16_t
7245__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7246vaddlvq_s8 (int8x16_t __a)
43e9d192 7247{
9a3afc35 7248 int16_t __result;
43e9d192 7249 __asm__ ("saddlv %h0,%1.16b"
9a3afc35
KT
7250 : "=w"(__result)
7251 : "w"(__a)
43e9d192 7252 : /* No clobbers */);
9a3afc35 7253 return __result;
43e9d192
IB
7254}
7255
a063e204
TC
7256__extension__ extern __inline int32_t
7257__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7258vaddlvq_s16 (int16x8_t __a)
43e9d192 7259{
9a3afc35 7260 int32_t __result;
43e9d192 7261 __asm__ ("saddlv %s0,%1.8h"
9a3afc35
KT
7262 : "=w"(__result)
7263 : "w"(__a)
43e9d192 7264 : /* No clobbers */);
9a3afc35 7265 return __result;
43e9d192
IB
7266}
7267
a063e204
TC
7268__extension__ extern __inline int64_t
7269__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7270vaddlvq_s32 (int32x4_t __a)
43e9d192 7271{
9a3afc35 7272 int64_t __result;
43e9d192 7273 __asm__ ("saddlv %d0,%1.4s"
9a3afc35
KT
7274 : "=w"(__result)
7275 : "w"(__a)
43e9d192 7276 : /* No clobbers */);
9a3afc35 7277 return __result;
43e9d192
IB
7278}
7279
a063e204
TC
7280__extension__ extern __inline uint16_t
7281__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7282vaddlvq_u8 (uint8x16_t __a)
43e9d192 7283{
9a3afc35 7284 uint16_t __result;
43e9d192 7285 __asm__ ("uaddlv %h0,%1.16b"
9a3afc35
KT
7286 : "=w"(__result)
7287 : "w"(__a)
43e9d192 7288 : /* No clobbers */);
9a3afc35 7289 return __result;
43e9d192
IB
7290}
7291
a063e204
TC
7292__extension__ extern __inline uint32_t
7293__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7294vaddlvq_u16 (uint16x8_t __a)
43e9d192 7295{
9a3afc35 7296 uint32_t __result;
43e9d192 7297 __asm__ ("uaddlv %s0,%1.8h"
9a3afc35
KT
7298 : "=w"(__result)
7299 : "w"(__a)
43e9d192 7300 : /* No clobbers */);
9a3afc35 7301 return __result;
43e9d192
IB
7302}
7303
a063e204
TC
7304__extension__ extern __inline uint64_t
7305__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7306vaddlvq_u32 (uint32x4_t __a)
43e9d192 7307{
9a3afc35 7308 uint64_t __result;
43e9d192 7309 __asm__ ("uaddlv %d0,%1.4s"
9a3afc35
KT
7310 : "=w"(__result)
7311 : "w"(__a)
43e9d192 7312 : /* No clobbers */);
9a3afc35 7313 return __result;
43e9d192
IB
7314}
7315
a063e204
TC
7316__extension__ extern __inline float32x2_t
7317__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7318vcvtx_f32_f64 (float64x2_t __a)
43e9d192 7319{
9a3afc35 7320 float32x2_t __result;
47934dc4 7321 __asm__ ("fcvtxn %0.2s,%1.2d"
9a3afc35
KT
7322 : "=w"(__result)
7323 : "w"(__a)
43e9d192 7324 : /* No clobbers */);
9a3afc35 7325 return __result;
43e9d192
IB
7326}
7327
a063e204
TC
7328__extension__ extern __inline float32x4_t
7329__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7330vcvtx_high_f32_f64 (float32x2_t __a, float64x2_t __b)
43e9d192 7331{
9a3afc35 7332 float32x4_t __result;
47934dc4 7333 __asm__ ("fcvtxn2 %0.4s,%1.2d"
9a3afc35
KT
7334 : "=w"(__result)
7335 : "w" (__b), "0"(__a)
43e9d192 7336 : /* No clobbers */);
9a3afc35 7337 return __result;
43e9d192
IB
7338}
7339
a063e204
TC
7340__extension__ extern __inline float32_t
7341__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7342vcvtxd_f32_f64 (float64_t __a)
43e9d192 7343{
9a3afc35 7344 float32_t __result;
47934dc4 7345 __asm__ ("fcvtxn %s0,%d1"
9a3afc35
KT
7346 : "=w"(__result)
7347 : "w"(__a)
43e9d192 7348 : /* No clobbers */);
9a3afc35 7349 return __result;
43e9d192
IB
7350}
7351
a063e204
TC
7352__extension__ extern __inline float32x2_t
7353__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7354vmla_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)
91bd4114 7355{
9a3afc35
KT
7356 float32x2_t __result;
7357 float32x2_t __t1;
91bd4114 7358 __asm__ ("fmul %1.2s, %3.2s, %4.s[0]; fadd %0.2s, %0.2s, %1.2s"
9a3afc35
KT
7359 : "=w"(__result), "=w"(__t1)
7360 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7361 : /* No clobbers */);
9a3afc35 7362 return __result;
43e9d192
IB
7363}
7364
a063e204
TC
7365__extension__ extern __inline int16x4_t
7366__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7367vmla_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c)
43e9d192 7368{
9a3afc35 7369 int16x4_t __result;
91bd4114 7370 __asm__ ("mla %0.4h,%2.4h,%3.h[0]"
9a3afc35
KT
7371 : "=w"(__result)
7372 : "0"(__a), "w"(__b), "x"(__c)
91bd4114 7373 : /* No clobbers */);
9a3afc35 7374 return __result;
43e9d192
IB
7375}
7376
a063e204
TC
7377__extension__ extern __inline int32x2_t
7378__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7379vmla_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c)
43e9d192 7380{
9a3afc35 7381 int32x2_t __result;
91bd4114 7382 __asm__ ("mla %0.2s,%2.2s,%3.s[0]"
9a3afc35
KT
7383 : "=w"(__result)
7384 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7385 : /* No clobbers */);
9a3afc35 7386 return __result;
43e9d192
IB
7387}
7388
a063e204
TC
7389__extension__ extern __inline uint16x4_t
7390__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7391vmla_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c)
43e9d192 7392{
9a3afc35 7393 uint16x4_t __result;
91bd4114 7394 __asm__ ("mla %0.4h,%2.4h,%3.h[0]"
9a3afc35
KT
7395 : "=w"(__result)
7396 : "0"(__a), "w"(__b), "x"(__c)
91bd4114 7397 : /* No clobbers */);
9a3afc35 7398 return __result;
43e9d192
IB
7399}
7400
a063e204
TC
7401__extension__ extern __inline uint32x2_t
7402__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7403vmla_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c)
43e9d192 7404{
9a3afc35 7405 uint32x2_t __result;
91bd4114 7406 __asm__ ("mla %0.2s,%2.2s,%3.s[0]"
9a3afc35
KT
7407 : "=w"(__result)
7408 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7409 : /* No clobbers */);
9a3afc35 7410 return __result;
43e9d192
IB
7411}
7412
a063e204
TC
7413__extension__ extern __inline int8x8_t
7414__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7415vmla_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
43e9d192 7416{
9a3afc35 7417 int8x8_t __result;
91bd4114 7418 __asm__ ("mla %0.8b, %2.8b, %3.8b"
9a3afc35
KT
7419 : "=w"(__result)
7420 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7421 : /* No clobbers */);
9a3afc35 7422 return __result;
43e9d192
IB
7423}
7424
a063e204
TC
7425__extension__ extern __inline int16x4_t
7426__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7427vmla_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
43e9d192 7428{
9a3afc35 7429 int16x4_t __result;
91bd4114 7430 __asm__ ("mla %0.4h, %2.4h, %3.4h"
9a3afc35
KT
7431 : "=w"(__result)
7432 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7433 : /* No clobbers */);
9a3afc35 7434 return __result;
43e9d192
IB
7435}
7436
a063e204
TC
7437__extension__ extern __inline int32x2_t
7438__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7439vmla_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
91bd4114 7440{
9a3afc35 7441 int32x2_t __result;
91bd4114 7442 __asm__ ("mla %0.2s, %2.2s, %3.2s"
9a3afc35
KT
7443 : "=w"(__result)
7444 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7445 : /* No clobbers */);
9a3afc35 7446 return __result;
91bd4114
JG
7447}
7448
a063e204
TC
7449__extension__ extern __inline uint8x8_t
7450__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7451vmla_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
91bd4114 7452{
9a3afc35 7453 uint8x8_t __result;
91bd4114 7454 __asm__ ("mla %0.8b, %2.8b, %3.8b"
9a3afc35
KT
7455 : "=w"(__result)
7456 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7457 : /* No clobbers */);
9a3afc35 7458 return __result;
91bd4114
JG
7459}
7460
a063e204
TC
7461__extension__ extern __inline uint16x4_t
7462__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7463vmla_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
91bd4114 7464{
9a3afc35 7465 uint16x4_t __result;
91bd4114 7466 __asm__ ("mla %0.4h, %2.4h, %3.4h"
9a3afc35
KT
7467 : "=w"(__result)
7468 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7469 : /* No clobbers */);
9a3afc35 7470 return __result;
91bd4114
JG
7471}
7472
a063e204
TC
7473__extension__ extern __inline uint32x2_t
7474__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7475vmla_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
91bd4114 7476{
9a3afc35 7477 uint32x2_t __result;
91bd4114 7478 __asm__ ("mla %0.2s, %2.2s, %3.2s"
9a3afc35
KT
7479 : "=w"(__result)
7480 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7481 : /* No clobbers */);
9a3afc35 7482 return __result;
91bd4114
JG
7483}
7484
7485#define vmlal_high_lane_s16(a, b, c, d) \
43e9d192
IB
7486 __extension__ \
7487 ({ \
ec454483 7488 int16x4_t c_ = (c); \
91bd4114
JG
7489 int16x8_t b_ = (b); \
7490 int32x4_t a_ = (a); \
7491 int32x4_t result; \
7492 __asm__ ("smlal2 %0.4s, %2.8h, %3.h[%4]" \
43e9d192 7493 : "=w"(result) \
1c83b673 7494 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
43e9d192
IB
7495 : /* No clobbers */); \
7496 result; \
7497 })
7498
91bd4114 7499#define vmlal_high_lane_s32(a, b, c, d) \
43e9d192
IB
7500 __extension__ \
7501 ({ \
ec454483 7502 int32x2_t c_ = (c); \
91bd4114
JG
7503 int32x4_t b_ = (b); \
7504 int64x2_t a_ = (a); \
7505 int64x2_t result; \
7506 __asm__ ("smlal2 %0.2d, %2.4s, %3.s[%4]" \
43e9d192 7507 : "=w"(result) \
91bd4114 7508 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
43e9d192
IB
7509 : /* No clobbers */); \
7510 result; \
7511 })
7512
91bd4114 7513#define vmlal_high_lane_u16(a, b, c, d) \
43e9d192
IB
7514 __extension__ \
7515 ({ \
ec454483 7516 uint16x4_t c_ = (c); \
91bd4114
JG
7517 uint16x8_t b_ = (b); \
7518 uint32x4_t a_ = (a); \
7519 uint32x4_t result; \
7520 __asm__ ("umlal2 %0.4s, %2.8h, %3.h[%4]" \
43e9d192 7521 : "=w"(result) \
1c83b673 7522 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
43e9d192
IB
7523 : /* No clobbers */); \
7524 result; \
7525 })
7526
91bd4114 7527#define vmlal_high_lane_u32(a, b, c, d) \
43e9d192
IB
7528 __extension__ \
7529 ({ \
ec454483 7530 uint32x2_t c_ = (c); \
91bd4114
JG
7531 uint32x4_t b_ = (b); \
7532 uint64x2_t a_ = (a); \
7533 uint64x2_t result; \
7534 __asm__ ("umlal2 %0.2d, %2.4s, %3.s[%4]" \
43e9d192 7535 : "=w"(result) \
91bd4114 7536 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
43e9d192
IB
7537 : /* No clobbers */); \
7538 result; \
7539 })
7540
91bd4114 7541#define vmlal_high_laneq_s16(a, b, c, d) \
43e9d192
IB
7542 __extension__ \
7543 ({ \
91bd4114
JG
7544 int16x8_t c_ = (c); \
7545 int16x8_t b_ = (b); \
7546 int32x4_t a_ = (a); \
7547 int32x4_t result; \
7548 __asm__ ("smlal2 %0.4s, %2.8h, %3.h[%4]" \
43e9d192 7549 : "=w"(result) \
1c83b673 7550 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
43e9d192
IB
7551 : /* No clobbers */); \
7552 result; \
7553 })
7554
91bd4114 7555#define vmlal_high_laneq_s32(a, b, c, d) \
43e9d192
IB
7556 __extension__ \
7557 ({ \
91bd4114 7558 int32x4_t c_ = (c); \
43e9d192 7559 int32x4_t b_ = (b); \
91bd4114 7560 int64x2_t a_ = (a); \
43e9d192 7561 int64x2_t result; \
91bd4114 7562 __asm__ ("smlal2 %0.2d, %2.4s, %3.s[%4]" \
43e9d192 7563 : "=w"(result) \
91bd4114 7564 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
43e9d192
IB
7565 : /* No clobbers */); \
7566 result; \
7567 })
7568
91bd4114 7569#define vmlal_high_laneq_u16(a, b, c, d) \
43e9d192
IB
7570 __extension__ \
7571 ({ \
91bd4114 7572 uint16x8_t c_ = (c); \
43e9d192 7573 uint16x8_t b_ = (b); \
91bd4114 7574 uint32x4_t a_ = (a); \
43e9d192 7575 uint32x4_t result; \
91bd4114 7576 __asm__ ("umlal2 %0.4s, %2.8h, %3.h[%4]" \
43e9d192 7577 : "=w"(result) \
1c83b673 7578 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
43e9d192
IB
7579 : /* No clobbers */); \
7580 result; \
7581 })
7582
91bd4114 7583#define vmlal_high_laneq_u32(a, b, c, d) \
43e9d192
IB
7584 __extension__ \
7585 ({ \
91bd4114
JG
7586 uint32x4_t c_ = (c); \
7587 uint32x4_t b_ = (b); \
7588 uint64x2_t a_ = (a); \
43e9d192 7589 uint64x2_t result; \
91bd4114 7590 __asm__ ("umlal2 %0.2d, %2.4s, %3.s[%4]" \
43e9d192 7591 : "=w"(result) \
43e9d192
IB
7592 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7593 : /* No clobbers */); \
7594 result; \
7595 })
7596
a063e204
TC
7597__extension__ extern __inline int32x4_t
7598__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7599vmlal_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)
91bd4114 7600{
9a3afc35 7601 int32x4_t __result;
91bd4114 7602 __asm__ ("smlal2 %0.4s,%2.8h,%3.h[0]"
9a3afc35
KT
7603 : "=w"(__result)
7604 : "0"(__a), "w"(__b), "x"(__c)
91bd4114 7605 : /* No clobbers */);
9a3afc35 7606 return __result;
91bd4114
JG
7607}
7608
a063e204
TC
7609__extension__ extern __inline int64x2_t
7610__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7611vmlal_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)
91bd4114 7612{
9a3afc35 7613 int64x2_t __result;
91bd4114 7614 __asm__ ("smlal2 %0.2d,%2.4s,%3.s[0]"
9a3afc35
KT
7615 : "=w"(__result)
7616 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7617 : /* No clobbers */);
9a3afc35 7618 return __result;
91bd4114
JG
7619}
7620
a063e204
TC
7621__extension__ extern __inline uint32x4_t
7622__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7623vmlal_high_n_u16 (uint32x4_t __a, uint16x8_t __b, uint16_t __c)
91bd4114 7624{
9a3afc35 7625 uint32x4_t __result;
91bd4114 7626 __asm__ ("umlal2 %0.4s,%2.8h,%3.h[0]"
9a3afc35
KT
7627 : "=w"(__result)
7628 : "0"(__a), "w"(__b), "x"(__c)
91bd4114 7629 : /* No clobbers */);
9a3afc35 7630 return __result;
91bd4114
JG
7631}
7632
a063e204
TC
7633__extension__ extern __inline uint64x2_t
7634__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7635vmlal_high_n_u32 (uint64x2_t __a, uint32x4_t __b, uint32_t __c)
91bd4114 7636{
9a3afc35 7637 uint64x2_t __result;
91bd4114 7638 __asm__ ("umlal2 %0.2d,%2.4s,%3.s[0]"
9a3afc35
KT
7639 : "=w"(__result)
7640 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7641 : /* No clobbers */);
9a3afc35 7642 return __result;
91bd4114
JG
7643}
7644
a063e204
TC
7645__extension__ extern __inline int16x8_t
7646__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7647vmlal_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)
91bd4114 7648{
9a3afc35 7649 int16x8_t __result;
91bd4114 7650 __asm__ ("smlal2 %0.8h,%2.16b,%3.16b"
9a3afc35
KT
7651 : "=w"(__result)
7652 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7653 : /* No clobbers */);
9a3afc35 7654 return __result;
91bd4114
JG
7655}
7656
a063e204
TC
7657__extension__ extern __inline int32x4_t
7658__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7659vmlal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
91bd4114 7660{
9a3afc35 7661 int32x4_t __result;
91bd4114 7662 __asm__ ("smlal2 %0.4s,%2.8h,%3.8h"
9a3afc35
KT
7663 : "=w"(__result)
7664 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7665 : /* No clobbers */);
9a3afc35 7666 return __result;
91bd4114
JG
7667}
7668
a063e204
TC
7669__extension__ extern __inline int64x2_t
7670__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7671vmlal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
91bd4114 7672{
9a3afc35 7673 int64x2_t __result;
91bd4114 7674 __asm__ ("smlal2 %0.2d,%2.4s,%3.4s"
9a3afc35
KT
7675 : "=w"(__result)
7676 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7677 : /* No clobbers */);
9a3afc35 7678 return __result;
91bd4114
JG
7679}
7680
a063e204
TC
7681__extension__ extern __inline uint16x8_t
7682__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7683vmlal_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)
91bd4114 7684{
9a3afc35 7685 uint16x8_t __result;
91bd4114 7686 __asm__ ("umlal2 %0.8h,%2.16b,%3.16b"
9a3afc35
KT
7687 : "=w"(__result)
7688 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7689 : /* No clobbers */);
9a3afc35 7690 return __result;
91bd4114
JG
7691}
7692
a063e204
TC
7693__extension__ extern __inline uint32x4_t
7694__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7695vmlal_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)
91bd4114 7696{
9a3afc35 7697 uint32x4_t __result;
91bd4114 7698 __asm__ ("umlal2 %0.4s,%2.8h,%3.8h"
9a3afc35
KT
7699 : "=w"(__result)
7700 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7701 : /* No clobbers */);
9a3afc35 7702 return __result;
91bd4114
JG
7703}
7704
a063e204
TC
7705__extension__ extern __inline uint64x2_t
7706__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7707vmlal_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)
91bd4114 7708{
9a3afc35 7709 uint64x2_t __result;
91bd4114 7710 __asm__ ("umlal2 %0.2d,%2.4s,%3.4s"
9a3afc35
KT
7711 : "=w"(__result)
7712 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 7713 : /* No clobbers */);
9a3afc35 7714 return __result;
91bd4114
JG
7715}
7716
0b839322
WD
7717__extension__ extern __inline int32x4_t
7718__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7719vmlal_lane_s16 (int32x4_t __acc, int16x4_t __a, int16x4_t __b, const int __c)
7720{
7721 return __builtin_aarch64_vec_smlal_lane_v4hi (__acc, __a, __b, __c);
7722}
43e9d192 7723
0b839322
WD
7724__extension__ extern __inline int64x2_t
7725__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7726vmlal_lane_s32 (int64x2_t __acc, int32x2_t __a, int32x2_t __b, const int __c)
7727{
7728 return __builtin_aarch64_vec_smlal_lane_v2si (__acc, __a, __b, __c);
7729}
43e9d192 7730
0b839322
WD
7731__extension__ extern __inline uint32x4_t
7732__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7733vmlal_lane_u16 (uint32x4_t __acc, uint16x4_t __a, uint16x4_t __b, const int __c)
7734{
7735 return __builtin_aarch64_vec_umlal_lane_v4hi_uuuus (__acc, __a, __b, __c);
7736}
43e9d192 7737
0b839322
WD
7738__extension__ extern __inline uint64x2_t
7739__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7740vmlal_lane_u32 (uint64x2_t __acc, uint32x2_t __a, uint32x2_t __b, const int __c)
7741{
7742 return __builtin_aarch64_vec_umlal_lane_v2si_uuuus (__acc, __a, __b, __c);
7743}
43e9d192 7744
0b839322
WD
7745__extension__ extern __inline int32x4_t
7746__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7747vmlal_laneq_s16 (int32x4_t __acc, int16x4_t __a, int16x8_t __b, const int __c)
7748{
7749 return __builtin_aarch64_vec_smlal_laneq_v4hi (__acc, __a, __b, __c);
7750}
43e9d192 7751
0b839322
WD
7752__extension__ extern __inline int64x2_t
7753__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7754vmlal_laneq_s32 (int64x2_t __acc, int32x2_t __a, int32x4_t __b, const int __c)
7755{
7756 return __builtin_aarch64_vec_smlal_laneq_v2si (__acc, __a, __b, __c);
7757}
43e9d192 7758
0b839322
WD
7759__extension__ extern __inline uint32x4_t
7760__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7761vmlal_laneq_u16 (uint32x4_t __acc, uint16x4_t __a, uint16x8_t __b, const int __c)
7762{
7763 return __builtin_aarch64_vec_umlal_laneq_v4hi_uuuus (__acc, __a, __b, __c);
7764}
43e9d192 7765
0b839322
WD
7766__extension__ extern __inline uint64x2_t
7767__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7768vmlal_laneq_u32 (uint64x2_t __acc, uint32x2_t __a, uint32x4_t __b, const int __c)
7769{
7770 return __builtin_aarch64_vec_umlal_laneq_v2si_uuuus (__acc, __a, __b, __c);
7771}
43e9d192 7772
a063e204
TC
7773__extension__ extern __inline int32x4_t
7774__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7775vmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
43e9d192 7776{
9a3afc35 7777 int32x4_t __result;
91bd4114 7778 __asm__ ("smlal %0.4s,%2.4h,%3.h[0]"
9a3afc35
KT
7779 : "=w"(__result)
7780 : "0"(__a), "w"(__b), "x"(__c)
43e9d192 7781 : /* No clobbers */);
9a3afc35 7782 return __result;
43e9d192
IB
7783}
7784
a063e204
TC
7785__extension__ extern __inline int64x2_t
7786__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7787vmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
43e9d192 7788{
9a3afc35 7789 int64x2_t __result;
91bd4114 7790 __asm__ ("smlal %0.2d,%2.2s,%3.s[0]"
9a3afc35
KT
7791 : "=w"(__result)
7792 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 7793 : /* No clobbers */);
9a3afc35 7794 return __result;
43e9d192
IB
7795}
7796
a063e204
TC
7797__extension__ extern __inline uint32x4_t
7798__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7799vmlal_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c)
43e9d192 7800{
9a3afc35 7801 uint32x4_t __result;
91bd4114 7802 __asm__ ("umlal %0.4s,%2.4h,%3.h[0]"
9a3afc35
KT
7803 : "=w"(__result)
7804 : "0"(__a), "w"(__b), "x"(__c)
43e9d192 7805 : /* No clobbers */);
9a3afc35 7806 return __result;
43e9d192
IB
7807}
7808
a063e204
TC
7809__extension__ extern __inline uint64x2_t
7810__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7811vmlal_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c)
43e9d192 7812{
9a3afc35 7813 uint64x2_t __result;
91bd4114 7814 __asm__ ("umlal %0.2d,%2.2s,%3.s[0]"
9a3afc35
KT
7815 : "=w"(__result)
7816 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 7817 : /* No clobbers */);
9a3afc35 7818 return __result;
43e9d192
IB
7819}
7820
a063e204
TC
7821__extension__ extern __inline int16x8_t
7822__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7823vmlal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
43e9d192 7824{
9a3afc35 7825 int16x8_t __result;
91bd4114 7826 __asm__ ("smlal %0.8h,%2.8b,%3.8b"
9a3afc35
KT
7827 : "=w"(__result)
7828 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 7829 : /* No clobbers */);
9a3afc35 7830 return __result;
43e9d192
IB
7831}
7832
a063e204
TC
7833__extension__ extern __inline int32x4_t
7834__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7835vmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
43e9d192 7836{
9a3afc35 7837 int32x4_t __result;
91bd4114 7838 __asm__ ("smlal %0.4s,%2.4h,%3.4h"
9a3afc35
KT
7839 : "=w"(__result)
7840 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 7841 : /* No clobbers */);
9a3afc35 7842 return __result;
43e9d192
IB
7843}
7844
a063e204
TC
7845__extension__ extern __inline int64x2_t
7846__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7847vmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
43e9d192 7848{
9a3afc35 7849 int64x2_t __result;
91bd4114 7850 __asm__ ("smlal %0.2d,%2.2s,%3.2s"
9a3afc35
KT
7851 : "=w"(__result)
7852 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 7853 : /* No clobbers */);
9a3afc35 7854 return __result;
43e9d192
IB
7855}
7856
a063e204
TC
7857__extension__ extern __inline uint16x8_t
7858__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7859vmlal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
43e9d192 7860{
9a3afc35 7861 uint16x8_t __result;
91bd4114 7862 __asm__ ("umlal %0.8h,%2.8b,%3.8b"
9a3afc35
KT
7863 : "=w"(__result)
7864 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 7865 : /* No clobbers */);
9a3afc35 7866 return __result;
43e9d192
IB
7867}
7868
a063e204
TC
7869__extension__ extern __inline uint32x4_t
7870__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7871vmlal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
43e9d192 7872{
9a3afc35 7873 uint32x4_t __result;
91bd4114 7874 __asm__ ("umlal %0.4s,%2.4h,%3.4h"
9a3afc35
KT
7875 : "=w"(__result)
7876 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 7877 : /* No clobbers */);
9a3afc35 7878 return __result;
43e9d192
IB
7879}
7880
a063e204
TC
7881__extension__ extern __inline uint64x2_t
7882__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7883vmlal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
43e9d192 7884{
9a3afc35 7885 uint64x2_t __result;
91bd4114 7886 __asm__ ("umlal %0.2d,%2.2s,%3.2s"
9a3afc35
KT
7887 : "=w"(__result)
7888 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 7889 : /* No clobbers */);
9a3afc35 7890 return __result;
43e9d192
IB
7891}
7892
a063e204
TC
7893__extension__ extern __inline float32x4_t
7894__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7895vmlaq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)
43e9d192 7896{
9a3afc35
KT
7897 float32x4_t __result;
7898 float32x4_t __t1;
91bd4114 7899 __asm__ ("fmul %1.4s, %3.4s, %4.s[0]; fadd %0.4s, %0.4s, %1.4s"
9a3afc35
KT
7900 : "=w"(__result), "=w"(__t1)
7901 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 7902 : /* No clobbers */);
9a3afc35 7903 return __result;
43e9d192
IB
7904}
7905
a063e204
TC
7906__extension__ extern __inline int16x8_t
7907__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7908vmlaq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c)
43e9d192 7909{
9a3afc35 7910 int16x8_t __result;
91bd4114 7911 __asm__ ("mla %0.8h,%2.8h,%3.h[0]"
9a3afc35
KT
7912 : "=w"(__result)
7913 : "0"(__a), "w"(__b), "x"(__c)
43e9d192 7914 : /* No clobbers */);
9a3afc35 7915 return __result;
43e9d192
IB
7916}
7917
a063e204
TC
7918__extension__ extern __inline int32x4_t
7919__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7920vmlaq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c)
43e9d192 7921{
9a3afc35 7922 int32x4_t __result;
91bd4114 7923 __asm__ ("mla %0.4s,%2.4s,%3.s[0]"
9a3afc35
KT
7924 : "=w"(__result)
7925 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 7926 : /* No clobbers */);
9a3afc35 7927 return __result;
43e9d192
IB
7928}
7929
a063e204
TC
7930__extension__ extern __inline uint16x8_t
7931__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7932vmlaq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c)
43e9d192 7933{
9a3afc35 7934 uint16x8_t __result;
91bd4114 7935 __asm__ ("mla %0.8h,%2.8h,%3.h[0]"
9a3afc35
KT
7936 : "=w"(__result)
7937 : "0"(__a), "w"(__b), "x"(__c)
43e9d192 7938 : /* No clobbers */);
9a3afc35 7939 return __result;
43e9d192
IB
7940}
7941
a063e204
TC
7942__extension__ extern __inline uint32x4_t
7943__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7944vmlaq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c)
43e9d192 7945{
9a3afc35 7946 uint32x4_t __result;
91bd4114 7947 __asm__ ("mla %0.4s,%2.4s,%3.s[0]"
9a3afc35
KT
7948 : "=w"(__result)
7949 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 7950 : /* No clobbers */);
9a3afc35 7951 return __result;
43e9d192
IB
7952}
7953
a063e204
TC
7954__extension__ extern __inline int8x16_t
7955__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7956vmlaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
43e9d192 7957{
9a3afc35 7958 int8x16_t __result;
91bd4114 7959 __asm__ ("mla %0.16b, %2.16b, %3.16b"
9a3afc35
KT
7960 : "=w"(__result)
7961 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 7962 : /* No clobbers */);
9a3afc35 7963 return __result;
43e9d192
IB
7964}
7965
a063e204
TC
7966__extension__ extern __inline int16x8_t
7967__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7968vmlaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
43e9d192 7969{
9a3afc35 7970 int16x8_t __result;
91bd4114 7971 __asm__ ("mla %0.8h, %2.8h, %3.8h"
9a3afc35
KT
7972 : "=w"(__result)
7973 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 7974 : /* No clobbers */);
9a3afc35 7975 return __result;
43e9d192
IB
7976}
7977
a063e204
TC
7978__extension__ extern __inline int32x4_t
7979__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7980vmlaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
43e9d192 7981{
9a3afc35 7982 int32x4_t __result;
91bd4114 7983 __asm__ ("mla %0.4s, %2.4s, %3.4s"
9a3afc35
KT
7984 : "=w"(__result)
7985 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 7986 : /* No clobbers */);
9a3afc35 7987 return __result;
43e9d192
IB
7988}
7989
a063e204
TC
7990__extension__ extern __inline uint8x16_t
7991__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 7992vmlaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
43e9d192 7993{
9a3afc35 7994 uint8x16_t __result;
828e70c1 7995 __asm__ ("mla %0.16b, %2.16b, %3.16b"
9a3afc35
KT
7996 : "=w"(__result)
7997 : "0"(__a), "w"(__b), "w"(__c)
828e70c1 7998 : /* No clobbers */);
9a3afc35 7999 return __result;
828e70c1 8000}
43e9d192 8001
a063e204
TC
8002__extension__ extern __inline uint16x8_t
8003__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8004vmlaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
828e70c1 8005{
9a3afc35 8006 uint16x8_t __result;
828e70c1 8007 __asm__ ("mla %0.8h, %2.8h, %3.8h"
9a3afc35
KT
8008 : "=w"(__result)
8009 : "0"(__a), "w"(__b), "w"(__c)
828e70c1 8010 : /* No clobbers */);
9a3afc35 8011 return __result;
828e70c1
JG
8012}
8013
a063e204
TC
8014__extension__ extern __inline uint32x4_t
8015__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8016vmlaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
828e70c1 8017{
9a3afc35 8018 uint32x4_t __result;
828e70c1 8019 __asm__ ("mla %0.4s, %2.4s, %3.4s"
9a3afc35
KT
8020 : "=w"(__result)
8021 : "0"(__a), "w"(__b), "w"(__c)
828e70c1 8022 : /* No clobbers */);
9a3afc35 8023 return __result;
828e70c1 8024}
43e9d192 8025
a063e204
TC
8026__extension__ extern __inline float32x2_t
8027__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8028vmls_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)
43e9d192 8029{
9a3afc35
KT
8030 float32x2_t __result;
8031 float32x2_t __t1;
91bd4114 8032 __asm__ ("fmul %1.2s, %3.2s, %4.s[0]; fsub %0.2s, %0.2s, %1.2s"
9a3afc35
KT
8033 : "=w"(__result), "=w"(__t1)
8034 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8035 : /* No clobbers */);
9a3afc35 8036 return __result;
43e9d192
IB
8037}
8038
a063e204
TC
8039__extension__ extern __inline int16x4_t
8040__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8041vmls_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c)
43e9d192 8042{
9a3afc35 8043 int16x4_t __result;
91bd4114 8044 __asm__ ("mls %0.4h, %2.4h, %3.h[0]"
9a3afc35
KT
8045 : "=w"(__result)
8046 : "0"(__a), "w"(__b), "x"(__c)
43e9d192 8047 : /* No clobbers */);
9a3afc35 8048 return __result;
43e9d192
IB
8049}
8050
a063e204
TC
8051__extension__ extern __inline int32x2_t
8052__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8053vmls_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c)
43e9d192 8054{
9a3afc35 8055 int32x2_t __result;
91bd4114 8056 __asm__ ("mls %0.2s, %2.2s, %3.s[0]"
9a3afc35
KT
8057 : "=w"(__result)
8058 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8059 : /* No clobbers */);
9a3afc35 8060 return __result;
43e9d192
IB
8061}
8062
a063e204
TC
8063__extension__ extern __inline uint16x4_t
8064__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8065vmls_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c)
43e9d192 8066{
9a3afc35 8067 uint16x4_t __result;
91bd4114 8068 __asm__ ("mls %0.4h, %2.4h, %3.h[0]"
9a3afc35
KT
8069 : "=w"(__result)
8070 : "0"(__a), "w"(__b), "x"(__c)
43e9d192 8071 : /* No clobbers */);
9a3afc35 8072 return __result;
43e9d192
IB
8073}
8074
a063e204
TC
8075__extension__ extern __inline uint32x2_t
8076__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8077vmls_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c)
43e9d192 8078{
9a3afc35 8079 uint32x2_t __result;
91bd4114 8080 __asm__ ("mls %0.2s, %2.2s, %3.s[0]"
9a3afc35
KT
8081 : "=w"(__result)
8082 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8083 : /* No clobbers */);
9a3afc35 8084 return __result;
43e9d192
IB
8085}
8086
a063e204
TC
8087__extension__ extern __inline int8x8_t
8088__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8089vmls_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
43e9d192 8090{
9a3afc35 8091 int8x8_t __result;
91bd4114 8092 __asm__ ("mls %0.8b,%2.8b,%3.8b"
9a3afc35
KT
8093 : "=w"(__result)
8094 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8095 : /* No clobbers */);
9a3afc35 8096 return __result;
43e9d192
IB
8097}
8098
a063e204
TC
8099__extension__ extern __inline int16x4_t
8100__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8101vmls_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
43e9d192 8102{
9a3afc35 8103 int16x4_t __result;
91bd4114 8104 __asm__ ("mls %0.4h,%2.4h,%3.4h"
9a3afc35
KT
8105 : "=w"(__result)
8106 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8107 : /* No clobbers */);
9a3afc35 8108 return __result;
43e9d192
IB
8109}
8110
a063e204
TC
8111__extension__ extern __inline int32x2_t
8112__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8113vmls_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
43e9d192 8114{
9a3afc35 8115 int32x2_t __result;
91bd4114 8116 __asm__ ("mls %0.2s,%2.2s,%3.2s"
9a3afc35
KT
8117 : "=w"(__result)
8118 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8119 : /* No clobbers */);
9a3afc35 8120 return __result;
43e9d192
IB
8121}
8122
a063e204
TC
8123__extension__ extern __inline uint8x8_t
8124__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8125vmls_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
43e9d192 8126{
9a3afc35 8127 uint8x8_t __result;
91bd4114 8128 __asm__ ("mls %0.8b,%2.8b,%3.8b"
9a3afc35
KT
8129 : "=w"(__result)
8130 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8131 : /* No clobbers */);
9a3afc35 8132 return __result;
43e9d192
IB
8133}
8134
a063e204
TC
8135__extension__ extern __inline uint16x4_t
8136__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8137vmls_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
43e9d192 8138{
9a3afc35 8139 uint16x4_t __result;
91bd4114 8140 __asm__ ("mls %0.4h,%2.4h,%3.4h"
9a3afc35
KT
8141 : "=w"(__result)
8142 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8143 : /* No clobbers */);
9a3afc35 8144 return __result;
43e9d192
IB
8145}
8146
a063e204
TC
8147__extension__ extern __inline uint32x2_t
8148__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8149vmls_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
91bd4114 8150{
9a3afc35 8151 uint32x2_t __result;
91bd4114 8152 __asm__ ("mls %0.2s,%2.2s,%3.2s"
9a3afc35
KT
8153 : "=w"(__result)
8154 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 8155 : /* No clobbers */);
9a3afc35 8156 return __result;
91bd4114 8157}
43e9d192 8158
91bd4114 8159#define vmlsl_high_lane_s16(a, b, c, d) \
43e9d192
IB
8160 __extension__ \
8161 ({ \
ec454483 8162 int16x4_t c_ = (c); \
43e9d192 8163 int16x8_t b_ = (b); \
91bd4114
JG
8164 int32x4_t a_ = (a); \
8165 int32x4_t result; \
8166 __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[%4]" \
43e9d192 8167 : "=w"(result) \
1c83b673 8168 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
43e9d192
IB
8169 : /* No clobbers */); \
8170 result; \
8171 })
8172
91bd4114 8173#define vmlsl_high_lane_s32(a, b, c, d) \
43e9d192
IB
8174 __extension__ \
8175 ({ \
ec454483 8176 int32x2_t c_ = (c); \
43e9d192 8177 int32x4_t b_ = (b); \
91bd4114
JG
8178 int64x2_t a_ = (a); \
8179 int64x2_t result; \
8180 __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[%4]" \
43e9d192
IB
8181 : "=w"(result) \
8182 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8183 : /* No clobbers */); \
8184 result; \
8185 })
8186
91bd4114 8187#define vmlsl_high_lane_u16(a, b, c, d) \
43e9d192
IB
8188 __extension__ \
8189 ({ \
ec454483 8190 uint16x4_t c_ = (c); \
43e9d192 8191 uint16x8_t b_ = (b); \
91bd4114
JG
8192 uint32x4_t a_ = (a); \
8193 uint32x4_t result; \
8194 __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[%4]" \
43e9d192 8195 : "=w"(result) \
1c83b673 8196 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
43e9d192
IB
8197 : /* No clobbers */); \
8198 result; \
8199 })
8200
91bd4114 8201#define vmlsl_high_lane_u32(a, b, c, d) \
43e9d192
IB
8202 __extension__ \
8203 ({ \
ec454483 8204 uint32x2_t c_ = (c); \
43e9d192 8205 uint32x4_t b_ = (b); \
91bd4114
JG
8206 uint64x2_t a_ = (a); \
8207 uint64x2_t result; \
8208 __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[%4]" \
43e9d192
IB
8209 : "=w"(result) \
8210 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8211 : /* No clobbers */); \
8212 result; \
8213 })
8214
91bd4114 8215#define vmlsl_high_laneq_s16(a, b, c, d) \
43e9d192
IB
8216 __extension__ \
8217 ({ \
8218 int16x8_t c_ = (c); \
8219 int16x8_t b_ = (b); \
91bd4114
JG
8220 int32x4_t a_ = (a); \
8221 int32x4_t result; \
8222 __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[%4]" \
43e9d192 8223 : "=w"(result) \
1c83b673 8224 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
43e9d192
IB
8225 : /* No clobbers */); \
8226 result; \
8227 })
8228
91bd4114 8229#define vmlsl_high_laneq_s32(a, b, c, d) \
43e9d192
IB
8230 __extension__ \
8231 ({ \
8232 int32x4_t c_ = (c); \
8233 int32x4_t b_ = (b); \
91bd4114
JG
8234 int64x2_t a_ = (a); \
8235 int64x2_t result; \
8236 __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[%4]" \
43e9d192
IB
8237 : "=w"(result) \
8238 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8239 : /* No clobbers */); \
8240 result; \
8241 })
8242
91bd4114 8243#define vmlsl_high_laneq_u16(a, b, c, d) \
43e9d192
IB
8244 __extension__ \
8245 ({ \
8246 uint16x8_t c_ = (c); \
8247 uint16x8_t b_ = (b); \
91bd4114
JG
8248 uint32x4_t a_ = (a); \
8249 uint32x4_t result; \
8250 __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[%4]" \
43e9d192 8251 : "=w"(result) \
1c83b673 8252 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
43e9d192
IB
8253 : /* No clobbers */); \
8254 result; \
8255 })
8256
91bd4114 8257#define vmlsl_high_laneq_u32(a, b, c, d) \
43e9d192
IB
8258 __extension__ \
8259 ({ \
8260 uint32x4_t c_ = (c); \
8261 uint32x4_t b_ = (b); \
91bd4114
JG
8262 uint64x2_t a_ = (a); \
8263 uint64x2_t result; \
8264 __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[%4]" \
43e9d192
IB
8265 : "=w"(result) \
8266 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8267 : /* No clobbers */); \
8268 result; \
8269 })
8270
a063e204
TC
8271__extension__ extern __inline int32x4_t
8272__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8273vmlsl_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)
43e9d192 8274{
9a3afc35 8275 int32x4_t __result;
91bd4114 8276 __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[0]"
9a3afc35
KT
8277 : "=w"(__result)
8278 : "0"(__a), "w"(__b), "x"(__c)
43e9d192 8279 : /* No clobbers */);
9a3afc35 8280 return __result;
43e9d192
IB
8281}
8282
a063e204
TC
8283__extension__ extern __inline int64x2_t
8284__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8285vmlsl_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)
43e9d192 8286{
9a3afc35 8287 int64x2_t __result;
91bd4114 8288 __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[0]"
9a3afc35
KT
8289 : "=w"(__result)
8290 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8291 : /* No clobbers */);
9a3afc35 8292 return __result;
43e9d192
IB
8293}
8294
a063e204
TC
8295__extension__ extern __inline uint32x4_t
8296__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8297vmlsl_high_n_u16 (uint32x4_t __a, uint16x8_t __b, uint16_t __c)
43e9d192 8298{
9a3afc35 8299 uint32x4_t __result;
91bd4114 8300 __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[0]"
9a3afc35
KT
8301 : "=w"(__result)
8302 : "0"(__a), "w"(__b), "x"(__c)
43e9d192 8303 : /* No clobbers */);
9a3afc35 8304 return __result;
43e9d192
IB
8305}
8306
a063e204
TC
8307__extension__ extern __inline uint64x2_t
8308__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8309vmlsl_high_n_u32 (uint64x2_t __a, uint32x4_t __b, uint32_t __c)
43e9d192 8310{
9a3afc35 8311 uint64x2_t __result;
91bd4114 8312 __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[0]"
9a3afc35
KT
8313 : "=w"(__result)
8314 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8315 : /* No clobbers */);
9a3afc35 8316 return __result;
43e9d192
IB
8317}
8318
a063e204
TC
8319__extension__ extern __inline int16x8_t
8320__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8321vmlsl_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)
43e9d192 8322{
9a3afc35 8323 int16x8_t __result;
91bd4114 8324 __asm__ ("smlsl2 %0.8h,%2.16b,%3.16b"
9a3afc35
KT
8325 : "=w"(__result)
8326 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8327 : /* No clobbers */);
9a3afc35 8328 return __result;
43e9d192
IB
8329}
8330
a063e204
TC
8331__extension__ extern __inline int32x4_t
8332__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8333vmlsl_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
43e9d192 8334{
9a3afc35 8335 int32x4_t __result;
91bd4114 8336 __asm__ ("smlsl2 %0.4s,%2.8h,%3.8h"
9a3afc35
KT
8337 : "=w"(__result)
8338 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8339 : /* No clobbers */);
9a3afc35 8340 return __result;
43e9d192
IB
8341}
8342
a063e204
TC
8343__extension__ extern __inline int64x2_t
8344__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8345vmlsl_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
43e9d192 8346{
9a3afc35 8347 int64x2_t __result;
91bd4114 8348 __asm__ ("smlsl2 %0.2d,%2.4s,%3.4s"
9a3afc35
KT
8349 : "=w"(__result)
8350 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8351 : /* No clobbers */);
9a3afc35 8352 return __result;
43e9d192
IB
8353}
8354
a063e204
TC
8355__extension__ extern __inline uint16x8_t
8356__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8357vmlsl_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)
43e9d192 8358{
9a3afc35 8359 uint16x8_t __result;
91bd4114 8360 __asm__ ("umlsl2 %0.8h,%2.16b,%3.16b"
9a3afc35
KT
8361 : "=w"(__result)
8362 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8363 : /* No clobbers */);
9a3afc35 8364 return __result;
43e9d192
IB
8365}
8366
a063e204
TC
8367__extension__ extern __inline uint32x4_t
8368__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8369vmlsl_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)
43e9d192 8370{
9a3afc35 8371 uint32x4_t __result;
91bd4114 8372 __asm__ ("umlsl2 %0.4s,%2.8h,%3.8h"
9a3afc35
KT
8373 : "=w"(__result)
8374 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8375 : /* No clobbers */);
9a3afc35 8376 return __result;
43e9d192
IB
8377}
8378
a063e204
TC
8379__extension__ extern __inline uint64x2_t
8380__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8381vmlsl_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)
91bd4114 8382{
9a3afc35 8383 uint64x2_t __result;
91bd4114 8384 __asm__ ("umlsl2 %0.2d,%2.4s,%3.4s"
9a3afc35
KT
8385 : "=w"(__result)
8386 : "0"(__a), "w"(__b), "w"(__c)
91bd4114 8387 : /* No clobbers */);
9a3afc35 8388 return __result;
91bd4114
JG
8389}
8390
8391#define vmlsl_lane_s16(a, b, c, d) \
43e9d192
IB
8392 __extension__ \
8393 ({ \
91bd4114
JG
8394 int16x4_t c_ = (c); \
8395 int16x4_t b_ = (b); \
8396 int32x4_t a_ = (a); \
8397 int32x4_t result; \
8398 __asm__ ("smlsl %0.4s, %2.4h, %3.h[%4]" \
8399 : "=w"(result) \
1c83b673 8400 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
43e9d192
IB
8401 : /* No clobbers */); \
8402 result; \
8403 })
8404
91bd4114 8405#define vmlsl_lane_s32(a, b, c, d) \
43e9d192
IB
8406 __extension__ \
8407 ({ \
91bd4114
JG
8408 int32x2_t c_ = (c); \
8409 int32x2_t b_ = (b); \
8410 int64x2_t a_ = (a); \
8411 int64x2_t result; \
8412 __asm__ ("smlsl %0.2d, %2.2s, %3.s[%4]" \
8413 : "=w"(result) \
8414 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8415 : /* No clobbers */); \
8416 result; \
8417 })
8418
8419#define vmlsl_lane_u16(a, b, c, d) \
8420 __extension__ \
8421 ({ \
8422 uint16x4_t c_ = (c); \
8423 uint16x4_t b_ = (b); \
8424 uint32x4_t a_ = (a); \
8425 uint32x4_t result; \
8426 __asm__ ("umlsl %0.4s, %2.4h, %3.h[%4]" \
8427 : "=w"(result) \
1c83b673 8428 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
91bd4114
JG
8429 : /* No clobbers */); \
8430 result; \
8431 })
8432
8433#define vmlsl_lane_u32(a, b, c, d) \
8434 __extension__ \
8435 ({ \
8436 uint32x2_t c_ = (c); \
8437 uint32x2_t b_ = (b); \
8438 uint64x2_t a_ = (a); \
8439 uint64x2_t result; \
8440 __asm__ ("umlsl %0.2d, %2.2s, %3.s[%4]" \
8441 : "=w"(result) \
8442 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8443 : /* No clobbers */); \
8444 result; \
8445 })
8446
8447#define vmlsl_laneq_s16(a, b, c, d) \
8448 __extension__ \
8449 ({ \
8450 int16x8_t c_ = (c); \
43e9d192 8451 int16x4_t b_ = (b); \
91bd4114
JG
8452 int32x4_t a_ = (a); \
8453 int32x4_t result; \
8454 __asm__ ("smlsl %0.4s, %2.4h, %3.h[%4]" \
43e9d192 8455 : "=w"(result) \
1c83b673 8456 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
43e9d192
IB
8457 : /* No clobbers */); \
8458 result; \
8459 })
8460
91bd4114 8461#define vmlsl_laneq_s32(a, b, c, d) \
43e9d192
IB
8462 __extension__ \
8463 ({ \
91bd4114 8464 int32x4_t c_ = (c); \
43e9d192 8465 int32x2_t b_ = (b); \
91bd4114
JG
8466 int64x2_t a_ = (a); \
8467 int64x2_t result; \
8468 __asm__ ("smlsl %0.2d, %2.2s, %3.s[%4]" \
43e9d192
IB
8469 : "=w"(result) \
8470 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8471 : /* No clobbers */); \
8472 result; \
8473 })
8474
91bd4114 8475#define vmlsl_laneq_u16(a, b, c, d) \
43e9d192
IB
8476 __extension__ \
8477 ({ \
91bd4114 8478 uint16x8_t c_ = (c); \
43e9d192 8479 uint16x4_t b_ = (b); \
91bd4114
JG
8480 uint32x4_t a_ = (a); \
8481 uint32x4_t result; \
8482 __asm__ ("umlsl %0.4s, %2.4h, %3.h[%4]" \
43e9d192 8483 : "=w"(result) \
1c83b673 8484 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
43e9d192
IB
8485 : /* No clobbers */); \
8486 result; \
8487 })
8488
91bd4114 8489#define vmlsl_laneq_u32(a, b, c, d) \
43e9d192
IB
8490 __extension__ \
8491 ({ \
91bd4114 8492 uint32x4_t c_ = (c); \
43e9d192 8493 uint32x2_t b_ = (b); \
91bd4114
JG
8494 uint64x2_t a_ = (a); \
8495 uint64x2_t result; \
8496 __asm__ ("umlsl %0.2d, %2.2s, %3.s[%4]" \
43e9d192
IB
8497 : "=w"(result) \
8498 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8499 : /* No clobbers */); \
8500 result; \
8501 })
8502
a063e204
TC
8503__extension__ extern __inline int32x4_t
8504__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8505vmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
43e9d192 8506{
9a3afc35 8507 int32x4_t __result;
91bd4114 8508 __asm__ ("smlsl %0.4s, %2.4h, %3.h[0]"
9a3afc35
KT
8509 : "=w"(__result)
8510 : "0"(__a), "w"(__b), "x"(__c)
43e9d192 8511 : /* No clobbers */);
9a3afc35 8512 return __result;
43e9d192
IB
8513}
8514
a063e204
TC
8515__extension__ extern __inline int64x2_t
8516__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8517vmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
43e9d192 8518{
9a3afc35 8519 int64x2_t __result;
91bd4114 8520 __asm__ ("smlsl %0.2d, %2.2s, %3.s[0]"
9a3afc35
KT
8521 : "=w"(__result)
8522 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8523 : /* No clobbers */);
9a3afc35 8524 return __result;
43e9d192
IB
8525}
8526
a063e204
TC
8527__extension__ extern __inline uint32x4_t
8528__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8529vmlsl_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c)
43e9d192 8530{
9a3afc35 8531 uint32x4_t __result;
91bd4114 8532 __asm__ ("umlsl %0.4s, %2.4h, %3.h[0]"
9a3afc35
KT
8533 : "=w"(__result)
8534 : "0"(__a), "w"(__b), "x"(__c)
43e9d192 8535 : /* No clobbers */);
9a3afc35 8536 return __result;
43e9d192
IB
8537}
8538
a063e204
TC
8539__extension__ extern __inline uint64x2_t
8540__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8541vmlsl_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c)
43e9d192 8542{
9a3afc35 8543 uint64x2_t __result;
91bd4114 8544 __asm__ ("umlsl %0.2d, %2.2s, %3.s[0]"
9a3afc35
KT
8545 : "=w"(__result)
8546 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8547 : /* No clobbers */);
9a3afc35 8548 return __result;
43e9d192
IB
8549}
8550
a063e204
TC
8551__extension__ extern __inline int16x8_t
8552__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8553vmlsl_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
43e9d192 8554{
9a3afc35 8555 int16x8_t __result;
91bd4114 8556 __asm__ ("smlsl %0.8h, %2.8b, %3.8b"
9a3afc35
KT
8557 : "=w"(__result)
8558 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8559 : /* No clobbers */);
9a3afc35 8560 return __result;
43e9d192
IB
8561}
8562
a063e204
TC
8563__extension__ extern __inline int32x4_t
8564__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8565vmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
43e9d192 8566{
9a3afc35 8567 int32x4_t __result;
91bd4114 8568 __asm__ ("smlsl %0.4s, %2.4h, %3.4h"
9a3afc35
KT
8569 : "=w"(__result)
8570 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8571 : /* No clobbers */);
9a3afc35 8572 return __result;
43e9d192
IB
8573}
8574
a063e204
TC
8575__extension__ extern __inline int64x2_t
8576__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8577vmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
43e9d192 8578{
9a3afc35 8579 int64x2_t __result;
91bd4114 8580 __asm__ ("smlsl %0.2d, %2.2s, %3.2s"
9a3afc35
KT
8581 : "=w"(__result)
8582 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8583 : /* No clobbers */);
9a3afc35 8584 return __result;
43e9d192
IB
8585}
8586
a063e204
TC
8587__extension__ extern __inline uint16x8_t
8588__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8589vmlsl_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
43e9d192 8590{
9a3afc35 8591 uint16x8_t __result;
91bd4114 8592 __asm__ ("umlsl %0.8h, %2.8b, %3.8b"
9a3afc35
KT
8593 : "=w"(__result)
8594 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8595 : /* No clobbers */);
9a3afc35 8596 return __result;
43e9d192
IB
8597}
8598
a063e204
TC
8599__extension__ extern __inline uint32x4_t
8600__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8601vmlsl_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
43e9d192 8602{
9a3afc35 8603 uint32x4_t __result;
91bd4114 8604 __asm__ ("umlsl %0.4s, %2.4h, %3.4h"
9a3afc35
KT
8605 : "=w"(__result)
8606 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8607 : /* No clobbers */);
9a3afc35 8608 return __result;
43e9d192
IB
8609}
8610
a063e204
TC
8611__extension__ extern __inline uint64x2_t
8612__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8613vmlsl_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
43e9d192 8614{
9a3afc35 8615 uint64x2_t __result;
91bd4114 8616 __asm__ ("umlsl %0.2d, %2.2s, %3.2s"
9a3afc35
KT
8617 : "=w"(__result)
8618 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8619 : /* No clobbers */);
9a3afc35 8620 return __result;
43e9d192
IB
8621}
8622
a063e204
TC
8623__extension__ extern __inline float32x4_t
8624__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8625vmlsq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)
43e9d192 8626{
9a3afc35
KT
8627 float32x4_t __result;
8628 float32x4_t __t1;
91bd4114 8629 __asm__ ("fmul %1.4s, %3.4s, %4.s[0]; fsub %0.4s, %0.4s, %1.4s"
9a3afc35
KT
8630 : "=w"(__result), "=w"(__t1)
8631 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8632 : /* No clobbers */);
9a3afc35 8633 return __result;
43e9d192
IB
8634}
8635
a063e204
TC
8636__extension__ extern __inline int16x8_t
8637__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8638vmlsq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c)
43e9d192 8639{
9a3afc35 8640 int16x8_t __result;
91bd4114 8641 __asm__ ("mls %0.8h, %2.8h, %3.h[0]"
9a3afc35
KT
8642 : "=w"(__result)
8643 : "0"(__a), "w"(__b), "x"(__c)
43e9d192 8644 : /* No clobbers */);
9a3afc35 8645 return __result;
43e9d192
IB
8646}
8647
a063e204
TC
8648__extension__ extern __inline int32x4_t
8649__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8650vmlsq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c)
43e9d192 8651{
9a3afc35 8652 int32x4_t __result;
91bd4114 8653 __asm__ ("mls %0.4s, %2.4s, %3.s[0]"
9a3afc35
KT
8654 : "=w"(__result)
8655 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8656 : /* No clobbers */);
9a3afc35 8657 return __result;
43e9d192
IB
8658}
8659
a063e204
TC
8660__extension__ extern __inline uint16x8_t
8661__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8662vmlsq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c)
43e9d192 8663{
9a3afc35 8664 uint16x8_t __result;
91bd4114 8665 __asm__ ("mls %0.8h, %2.8h, %3.h[0]"
9a3afc35
KT
8666 : "=w"(__result)
8667 : "0"(__a), "w"(__b), "x"(__c)
43e9d192 8668 : /* No clobbers */);
9a3afc35 8669 return __result;
43e9d192
IB
8670}
8671
a063e204
TC
8672__extension__ extern __inline uint32x4_t
8673__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8674vmlsq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c)
43e9d192 8675{
9a3afc35 8676 uint32x4_t __result;
91bd4114 8677 __asm__ ("mls %0.4s, %2.4s, %3.s[0]"
9a3afc35
KT
8678 : "=w"(__result)
8679 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8680 : /* No clobbers */);
9a3afc35 8681 return __result;
43e9d192
IB
8682}
8683
a063e204
TC
8684__extension__ extern __inline int8x16_t
8685__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8686vmlsq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
43e9d192 8687{
9a3afc35 8688 int8x16_t __result;
91bd4114 8689 __asm__ ("mls %0.16b,%2.16b,%3.16b"
9a3afc35
KT
8690 : "=w"(__result)
8691 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8692 : /* No clobbers */);
9a3afc35 8693 return __result;
43e9d192
IB
8694}
8695
a063e204
TC
8696__extension__ extern __inline int16x8_t
8697__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8698vmlsq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
43e9d192 8699{
9a3afc35 8700 int16x8_t __result;
91bd4114 8701 __asm__ ("mls %0.8h,%2.8h,%3.8h"
9a3afc35
KT
8702 : "=w"(__result)
8703 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8704 : /* No clobbers */);
9a3afc35 8705 return __result;
43e9d192
IB
8706}
8707
a063e204
TC
8708__extension__ extern __inline int32x4_t
8709__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8710vmlsq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
43e9d192 8711{
9a3afc35 8712 int32x4_t __result;
91bd4114 8713 __asm__ ("mls %0.4s,%2.4s,%3.4s"
9a3afc35
KT
8714 : "=w"(__result)
8715 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8716 : /* No clobbers */);
9a3afc35 8717 return __result;
43e9d192
IB
8718}
8719
a063e204
TC
8720__extension__ extern __inline uint8x16_t
8721__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8722vmlsq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
43e9d192 8723{
9a3afc35 8724 uint8x16_t __result;
91bd4114 8725 __asm__ ("mls %0.16b,%2.16b,%3.16b"
9a3afc35
KT
8726 : "=w"(__result)
8727 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8728 : /* No clobbers */);
9a3afc35 8729 return __result;
43e9d192
IB
8730}
8731
a063e204
TC
8732__extension__ extern __inline uint16x8_t
8733__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8734vmlsq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
43e9d192 8735{
9a3afc35 8736 uint16x8_t __result;
91bd4114 8737 __asm__ ("mls %0.8h,%2.8h,%3.8h"
9a3afc35
KT
8738 : "=w"(__result)
8739 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8740 : /* No clobbers */);
9a3afc35 8741 return __result;
43e9d192
IB
8742}
8743
a063e204
TC
8744__extension__ extern __inline uint32x4_t
8745__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8746vmlsq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
43e9d192 8747{
9a3afc35 8748 uint32x4_t __result;
91bd4114 8749 __asm__ ("mls %0.4s,%2.4s,%3.4s"
9a3afc35
KT
8750 : "=w"(__result)
8751 : "0"(__a), "w"(__b), "w"(__c)
43e9d192 8752 : /* No clobbers */);
9a3afc35 8753 return __result;
43e9d192
IB
8754}
8755
a063e204
TC
8756__extension__ extern __inline int16x8_t
8757__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8758vmovl_high_s8 (int8x16_t __a)
43e9d192 8759{
9a3afc35 8760 int16x8_t __result;
91bd4114 8761 __asm__ ("sshll2 %0.8h,%1.16b,#0"
9a3afc35
KT
8762 : "=w"(__result)
8763 : "w"(__a)
43e9d192 8764 : /* No clobbers */);
9a3afc35 8765 return __result;
43e9d192
IB
8766}
8767
a063e204
TC
8768__extension__ extern __inline int32x4_t
8769__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8770vmovl_high_s16 (int16x8_t __a)
43e9d192 8771{
9a3afc35 8772 int32x4_t __result;
91bd4114 8773 __asm__ ("sshll2 %0.4s,%1.8h,#0"
9a3afc35
KT
8774 : "=w"(__result)
8775 : "w"(__a)
91bd4114 8776 : /* No clobbers */);
9a3afc35 8777 return __result;
91bd4114
JG
8778}
8779
a063e204
TC
8780__extension__ extern __inline int64x2_t
8781__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8782vmovl_high_s32 (int32x4_t __a)
91bd4114 8783{
9a3afc35 8784 int64x2_t __result;
91bd4114 8785 __asm__ ("sshll2 %0.2d,%1.4s,#0"
9a3afc35
KT
8786 : "=w"(__result)
8787 : "w"(__a)
43e9d192 8788 : /* No clobbers */);
9a3afc35 8789 return __result;
43e9d192
IB
8790}
8791
a063e204
TC
8792__extension__ extern __inline uint16x8_t
8793__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8794vmovl_high_u8 (uint8x16_t __a)
43e9d192 8795{
9a3afc35 8796 uint16x8_t __result;
91bd4114 8797 __asm__ ("ushll2 %0.8h,%1.16b,#0"
9a3afc35
KT
8798 : "=w"(__result)
8799 : "w"(__a)
43e9d192 8800 : /* No clobbers */);
9a3afc35 8801 return __result;
43e9d192
IB
8802}
8803
a063e204
TC
8804__extension__ extern __inline uint32x4_t
8805__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8806vmovl_high_u16 (uint16x8_t __a)
43e9d192 8807{
9a3afc35 8808 uint32x4_t __result;
91bd4114 8809 __asm__ ("ushll2 %0.4s,%1.8h,#0"
9a3afc35
KT
8810 : "=w"(__result)
8811 : "w"(__a)
43e9d192 8812 : /* No clobbers */);
9a3afc35 8813 return __result;
43e9d192
IB
8814}
8815
a063e204
TC
8816__extension__ extern __inline uint64x2_t
8817__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8818vmovl_high_u32 (uint32x4_t __a)
43e9d192 8819{
9a3afc35 8820 uint64x2_t __result;
91bd4114 8821 __asm__ ("ushll2 %0.2d,%1.4s,#0"
9a3afc35
KT
8822 : "=w"(__result)
8823 : "w"(__a)
43e9d192 8824 : /* No clobbers */);
9a3afc35 8825 return __result;
43e9d192
IB
8826}
8827
a063e204
TC
8828__extension__ extern __inline int16x8_t
8829__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8830vmovl_s8 (int8x8_t __a)
43e9d192 8831{
9a3afc35 8832 int16x8_t __result;
91bd4114 8833 __asm__ ("sshll %0.8h,%1.8b,#0"
9a3afc35
KT
8834 : "=w"(__result)
8835 : "w"(__a)
43e9d192 8836 : /* No clobbers */);
9a3afc35 8837 return __result;
43e9d192
IB
8838}
8839
a063e204
TC
8840__extension__ extern __inline int32x4_t
8841__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8842vmovl_s16 (int16x4_t __a)
43e9d192 8843{
9a3afc35 8844 int32x4_t __result;
91bd4114 8845 __asm__ ("sshll %0.4s,%1.4h,#0"
9a3afc35
KT
8846 : "=w"(__result)
8847 : "w"(__a)
43e9d192 8848 : /* No clobbers */);
9a3afc35 8849 return __result;
43e9d192
IB
8850}
8851
a063e204
TC
8852__extension__ extern __inline int64x2_t
8853__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8854vmovl_s32 (int32x2_t __a)
43e9d192 8855{
9a3afc35 8856 int64x2_t __result;
43e9d192 8857 __asm__ ("sshll %0.2d,%1.2s,#0"
9a3afc35
KT
8858 : "=w"(__result)
8859 : "w"(__a)
43e9d192 8860 : /* No clobbers */);
9a3afc35 8861 return __result;
43e9d192
IB
8862}
8863
a063e204
TC
8864__extension__ extern __inline uint16x8_t
8865__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8866vmovl_u8 (uint8x8_t __a)
43e9d192 8867{
9a3afc35 8868 uint16x8_t __result;
43e9d192 8869 __asm__ ("ushll %0.8h,%1.8b,#0"
9a3afc35
KT
8870 : "=w"(__result)
8871 : "w"(__a)
43e9d192 8872 : /* No clobbers */);
9a3afc35 8873 return __result;
43e9d192
IB
8874}
8875
a063e204
TC
8876__extension__ extern __inline uint32x4_t
8877__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8878vmovl_u16 (uint16x4_t __a)
43e9d192 8879{
9a3afc35 8880 uint32x4_t __result;
43e9d192 8881 __asm__ ("ushll %0.4s,%1.4h,#0"
9a3afc35
KT
8882 : "=w"(__result)
8883 : "w"(__a)
43e9d192 8884 : /* No clobbers */);
9a3afc35 8885 return __result;
43e9d192
IB
8886}
8887
a063e204
TC
8888__extension__ extern __inline uint64x2_t
8889__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8890vmovl_u32 (uint32x2_t __a)
43e9d192 8891{
9a3afc35 8892 uint64x2_t __result;
43e9d192 8893 __asm__ ("ushll %0.2d,%1.2s,#0"
9a3afc35
KT
8894 : "=w"(__result)
8895 : "w"(__a)
43e9d192 8896 : /* No clobbers */);
9a3afc35 8897 return __result;
43e9d192
IB
8898}
8899
a063e204
TC
8900__extension__ extern __inline int8x16_t
8901__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8902vmovn_high_s16 (int8x8_t __a, int16x8_t __b)
43e9d192 8903{
9a3afc35 8904 int8x16_t __result = vcombine_s8 (__a, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
383f9b34 8905 __asm__ ("xtn2 %0.16b,%1.8h"
9a3afc35
KT
8906 : "+w"(__result)
8907 : "w"(__b)
43e9d192 8908 : /* No clobbers */);
9a3afc35 8909 return __result;
43e9d192
IB
8910}
8911
a063e204
TC
8912__extension__ extern __inline int16x8_t
8913__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8914vmovn_high_s32 (int16x4_t __a, int32x4_t __b)
43e9d192 8915{
9a3afc35 8916 int16x8_t __result = vcombine_s16 (__a, vcreate_s16 (__AARCH64_UINT64_C (0x0)));
383f9b34 8917 __asm__ ("xtn2 %0.8h,%1.4s"
9a3afc35
KT
8918 : "+w"(__result)
8919 : "w"(__b)
43e9d192 8920 : /* No clobbers */);
9a3afc35 8921 return __result;
43e9d192
IB
8922}
8923
a063e204
TC
8924__extension__ extern __inline int32x4_t
8925__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8926vmovn_high_s64 (int32x2_t __a, int64x2_t __b)
43e9d192 8927{
9a3afc35 8928 int32x4_t __result = vcombine_s32 (__a, vcreate_s32 (__AARCH64_UINT64_C (0x0)));
383f9b34 8929 __asm__ ("xtn2 %0.4s,%1.2d"
9a3afc35
KT
8930 : "+w"(__result)
8931 : "w"(__b)
43e9d192 8932 : /* No clobbers */);
9a3afc35 8933 return __result;
43e9d192
IB
8934}
8935
a063e204
TC
8936__extension__ extern __inline uint8x16_t
8937__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8938vmovn_high_u16 (uint8x8_t __a, uint16x8_t __b)
43e9d192 8939{
9a3afc35 8940 uint8x16_t __result = vcombine_u8 (__a, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
383f9b34 8941 __asm__ ("xtn2 %0.16b,%1.8h"
9a3afc35
KT
8942 : "+w"(__result)
8943 : "w"(__b)
43e9d192 8944 : /* No clobbers */);
9a3afc35 8945 return __result;
43e9d192
IB
8946}
8947
a063e204
TC
8948__extension__ extern __inline uint16x8_t
8949__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8950vmovn_high_u32 (uint16x4_t __a, uint32x4_t __b)
43e9d192 8951{
9a3afc35 8952 uint16x8_t __result = vcombine_u16 (__a, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
383f9b34 8953 __asm__ ("xtn2 %0.8h,%1.4s"
9a3afc35
KT
8954 : "+w"(__result)
8955 : "w"(__b)
43e9d192 8956 : /* No clobbers */);
9a3afc35 8957 return __result;
43e9d192
IB
8958}
8959
a063e204
TC
8960__extension__ extern __inline uint32x4_t
8961__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8962vmovn_high_u64 (uint32x2_t __a, uint64x2_t __b)
43e9d192 8963{
9a3afc35 8964 uint32x4_t __result = vcombine_u32 (__a, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
383f9b34 8965 __asm__ ("xtn2 %0.4s,%1.2d"
9a3afc35
KT
8966 : "+w"(__result)
8967 : "w"(__b)
43e9d192 8968 : /* No clobbers */);
9a3afc35 8969 return __result;
43e9d192
IB
8970}
8971
a063e204
TC
8972__extension__ extern __inline int8x8_t
8973__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8974vmovn_s16 (int16x8_t __a)
43e9d192 8975{
9a3afc35 8976 int8x8_t __result;
43e9d192 8977 __asm__ ("xtn %0.8b,%1.8h"
9a3afc35
KT
8978 : "=w"(__result)
8979 : "w"(__a)
43e9d192 8980 : /* No clobbers */);
9a3afc35 8981 return __result;
43e9d192
IB
8982}
8983
a063e204
TC
8984__extension__ extern __inline int16x4_t
8985__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8986vmovn_s32 (int32x4_t __a)
43e9d192 8987{
9a3afc35 8988 int16x4_t __result;
43e9d192 8989 __asm__ ("xtn %0.4h,%1.4s"
9a3afc35
KT
8990 : "=w"(__result)
8991 : "w"(__a)
43e9d192 8992 : /* No clobbers */);
9a3afc35 8993 return __result;
43e9d192
IB
8994}
8995
a063e204
TC
8996__extension__ extern __inline int32x2_t
8997__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 8998vmovn_s64 (int64x2_t __a)
43e9d192 8999{
9a3afc35 9000 int32x2_t __result;
43e9d192 9001 __asm__ ("xtn %0.2s,%1.2d"
9a3afc35
KT
9002 : "=w"(__result)
9003 : "w"(__a)
43e9d192 9004 : /* No clobbers */);
9a3afc35 9005 return __result;
43e9d192
IB
9006}
9007
a063e204
TC
9008__extension__ extern __inline uint8x8_t
9009__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9010vmovn_u16 (uint16x8_t __a)
43e9d192 9011{
9a3afc35 9012 uint8x8_t __result;
43e9d192 9013 __asm__ ("xtn %0.8b,%1.8h"
9a3afc35
KT
9014 : "=w"(__result)
9015 : "w"(__a)
43e9d192 9016 : /* No clobbers */);
9a3afc35 9017 return __result;
43e9d192
IB
9018}
9019
a063e204
TC
9020__extension__ extern __inline uint16x4_t
9021__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9022vmovn_u32 (uint32x4_t __a)
43e9d192 9023{
9a3afc35 9024 uint16x4_t __result;
43e9d192 9025 __asm__ ("xtn %0.4h,%1.4s"
9a3afc35
KT
9026 : "=w"(__result)
9027 : "w"(__a)
43e9d192 9028 : /* No clobbers */);
9a3afc35 9029 return __result;
43e9d192
IB
9030}
9031
a063e204
TC
9032__extension__ extern __inline uint32x2_t
9033__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9034vmovn_u64 (uint64x2_t __a)
43e9d192 9035{
9a3afc35 9036 uint32x2_t __result;
43e9d192 9037 __asm__ ("xtn %0.2s,%1.2d"
9a3afc35
KT
9038 : "=w"(__result)
9039 : "w"(__a)
43e9d192 9040 : /* No clobbers */);
9a3afc35 9041 return __result;
43e9d192
IB
9042}
9043
43e9d192
IB
9044#define vmull_high_lane_s16(a, b, c) \
9045 __extension__ \
9046 ({ \
dd57b790 9047 int16x4_t b_ = (b); \
43e9d192
IB
9048 int16x8_t a_ = (a); \
9049 int32x4_t result; \
9050 __asm__ ("smull2 %0.4s, %1.8h, %2.h[%3]" \
9051 : "=w"(result) \
1c83b673 9052 : "w"(a_), "x"(b_), "i"(c) \
43e9d192
IB
9053 : /* No clobbers */); \
9054 result; \
9055 })
9056
9057#define vmull_high_lane_s32(a, b, c) \
9058 __extension__ \
9059 ({ \
dd57b790 9060 int32x2_t b_ = (b); \
43e9d192
IB
9061 int32x4_t a_ = (a); \
9062 int64x2_t result; \
9063 __asm__ ("smull2 %0.2d, %1.4s, %2.s[%3]" \
9064 : "=w"(result) \
9065 : "w"(a_), "w"(b_), "i"(c) \
9066 : /* No clobbers */); \
9067 result; \
9068 })
9069
9070#define vmull_high_lane_u16(a, b, c) \
9071 __extension__ \
9072 ({ \
dd57b790 9073 uint16x4_t b_ = (b); \
43e9d192
IB
9074 uint16x8_t a_ = (a); \
9075 uint32x4_t result; \
9076 __asm__ ("umull2 %0.4s, %1.8h, %2.h[%3]" \
9077 : "=w"(result) \
1c83b673 9078 : "w"(a_), "x"(b_), "i"(c) \
43e9d192
IB
9079 : /* No clobbers */); \
9080 result; \
9081 })
9082
9083#define vmull_high_lane_u32(a, b, c) \
9084 __extension__ \
9085 ({ \
dd57b790 9086 uint32x2_t b_ = (b); \
43e9d192
IB
9087 uint32x4_t a_ = (a); \
9088 uint64x2_t result; \
9089 __asm__ ("umull2 %0.2d, %1.4s, %2.s[%3]" \
9090 : "=w"(result) \
9091 : "w"(a_), "w"(b_), "i"(c) \
9092 : /* No clobbers */); \
9093 result; \
9094 })
9095
9096#define vmull_high_laneq_s16(a, b, c) \
9097 __extension__ \
9098 ({ \
9099 int16x8_t b_ = (b); \
9100 int16x8_t a_ = (a); \
9101 int32x4_t result; \
9102 __asm__ ("smull2 %0.4s, %1.8h, %2.h[%3]" \
9103 : "=w"(result) \
1c83b673 9104 : "w"(a_), "x"(b_), "i"(c) \
43e9d192
IB
9105 : /* No clobbers */); \
9106 result; \
9107 })
9108
9109#define vmull_high_laneq_s32(a, b, c) \
9110 __extension__ \
9111 ({ \
9112 int32x4_t b_ = (b); \
9113 int32x4_t a_ = (a); \
9114 int64x2_t result; \
9115 __asm__ ("smull2 %0.2d, %1.4s, %2.s[%3]" \
9116 : "=w"(result) \
9117 : "w"(a_), "w"(b_), "i"(c) \
9118 : /* No clobbers */); \
9119 result; \
9120 })
9121
9122#define vmull_high_laneq_u16(a, b, c) \
9123 __extension__ \
9124 ({ \
9125 uint16x8_t b_ = (b); \
9126 uint16x8_t a_ = (a); \
9127 uint32x4_t result; \
9128 __asm__ ("umull2 %0.4s, %1.8h, %2.h[%3]" \
9129 : "=w"(result) \
1c83b673 9130 : "w"(a_), "x"(b_), "i"(c) \
43e9d192
IB
9131 : /* No clobbers */); \
9132 result; \
9133 })
9134
9135#define vmull_high_laneq_u32(a, b, c) \
9136 __extension__ \
9137 ({ \
9138 uint32x4_t b_ = (b); \
9139 uint32x4_t a_ = (a); \
9140 uint64x2_t result; \
9141 __asm__ ("umull2 %0.2d, %1.4s, %2.s[%3]" \
9142 : "=w"(result) \
9143 : "w"(a_), "w"(b_), "i"(c) \
9144 : /* No clobbers */); \
9145 result; \
9146 })
9147
a063e204
TC
9148__extension__ extern __inline int32x4_t
9149__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9150vmull_high_n_s16 (int16x8_t __a, int16_t __b)
43e9d192 9151{
9a3afc35 9152 int32x4_t __result;
43e9d192 9153 __asm__ ("smull2 %0.4s,%1.8h,%2.h[0]"
9a3afc35
KT
9154 : "=w"(__result)
9155 : "w"(__a), "x"(__b)
43e9d192 9156 : /* No clobbers */);
9a3afc35 9157 return __result;
43e9d192
IB
9158}
9159
a063e204
TC
9160__extension__ extern __inline int64x2_t
9161__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9162vmull_high_n_s32 (int32x4_t __a, int32_t __b)
43e9d192 9163{
9a3afc35 9164 int64x2_t __result;
43e9d192 9165 __asm__ ("smull2 %0.2d,%1.4s,%2.s[0]"
9a3afc35
KT
9166 : "=w"(__result)
9167 : "w"(__a), "w"(__b)
43e9d192 9168 : /* No clobbers */);
9a3afc35 9169 return __result;
43e9d192
IB
9170}
9171
a063e204
TC
9172__extension__ extern __inline uint32x4_t
9173__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9174vmull_high_n_u16 (uint16x8_t __a, uint16_t __b)
43e9d192 9175{
9a3afc35 9176 uint32x4_t __result;
43e9d192 9177 __asm__ ("umull2 %0.4s,%1.8h,%2.h[0]"
9a3afc35
KT
9178 : "=w"(__result)
9179 : "w"(__a), "x"(__b)
43e9d192 9180 : /* No clobbers */);
9a3afc35 9181 return __result;
43e9d192
IB
9182}
9183
a063e204
TC
9184__extension__ extern __inline uint64x2_t
9185__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9186vmull_high_n_u32 (uint32x4_t __a, uint32_t __b)
43e9d192 9187{
9a3afc35 9188 uint64x2_t __result;
43e9d192 9189 __asm__ ("umull2 %0.2d,%1.4s,%2.s[0]"
9a3afc35
KT
9190 : "=w"(__result)
9191 : "w"(__a), "w"(__b)
43e9d192 9192 : /* No clobbers */);
9a3afc35 9193 return __result;
43e9d192
IB
9194}
9195
a063e204
TC
9196__extension__ extern __inline poly16x8_t
9197__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9198vmull_high_p8 (poly8x16_t __a, poly8x16_t __b)
43e9d192 9199{
9a3afc35 9200 poly16x8_t __result;
43e9d192 9201 __asm__ ("pmull2 %0.8h,%1.16b,%2.16b"
9a3afc35
KT
9202 : "=w"(__result)
9203 : "w"(__a), "w"(__b)
43e9d192 9204 : /* No clobbers */);
9a3afc35 9205 return __result;
43e9d192
IB
9206}
9207
a063e204
TC
9208__extension__ extern __inline int16x8_t
9209__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9210vmull_high_s8 (int8x16_t __a, int8x16_t __b)
43e9d192 9211{
71c82d0e 9212 return __builtin_aarch64_vec_widen_smult_hi_v16qi (__a, __b);
43e9d192
IB
9213}
9214
a063e204
TC
9215__extension__ extern __inline int32x4_t
9216__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9217vmull_high_s16 (int16x8_t __a, int16x8_t __b)
43e9d192 9218{
71c82d0e 9219 return __builtin_aarch64_vec_widen_smult_hi_v8hi (__a, __b);
43e9d192
IB
9220}
9221
a063e204
TC
9222__extension__ extern __inline int64x2_t
9223__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9224vmull_high_s32 (int32x4_t __a, int32x4_t __b)
43e9d192 9225{
71c82d0e 9226 return __builtin_aarch64_vec_widen_smult_hi_v4si (__a, __b);
43e9d192
IB
9227}
9228
a063e204
TC
9229__extension__ extern __inline uint16x8_t
9230__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9231vmull_high_u8 (uint8x16_t __a, uint8x16_t __b)
43e9d192 9232{
71c82d0e 9233 return __builtin_aarch64_vec_widen_umult_hi_v16qi_uuu (__a, __b);
43e9d192
IB
9234}
9235
a063e204
TC
9236__extension__ extern __inline uint32x4_t
9237__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9238vmull_high_u16 (uint16x8_t __a, uint16x8_t __b)
43e9d192 9239{
71c82d0e 9240 return __builtin_aarch64_vec_widen_umult_hi_v8hi_uuu (__a, __b);
43e9d192
IB
9241}
9242
a063e204
TC
9243__extension__ extern __inline uint64x2_t
9244__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9245vmull_high_u32 (uint32x4_t __a, uint32x4_t __b)
43e9d192 9246{
71c82d0e 9247 return __builtin_aarch64_vec_widen_umult_hi_v4si_uuu (__a, __b);
43e9d192
IB
9248}
9249
0b839322
WD
9250__extension__ extern __inline int32x4_t
9251__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9252vmull_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)
9253{
9254 return __builtin_aarch64_vec_smult_lane_v4hi (__a, __b, __c);
9255}
43e9d192 9256
0b839322
WD
9257__extension__ extern __inline int64x2_t
9258__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9259vmull_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)
9260{
9261 return __builtin_aarch64_vec_smult_lane_v2si (__a, __b, __c);
9262}
43e9d192 9263
0b839322
WD
9264__extension__ extern __inline uint32x4_t
9265__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9266vmull_lane_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
9267{
9268 return __builtin_aarch64_vec_umult_lane_v4hi_uuus (__a, __b, __c);
9269}
43e9d192 9270
0b839322
WD
9271__extension__ extern __inline uint64x2_t
9272__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9273vmull_lane_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
9274{
9275 return __builtin_aarch64_vec_umult_lane_v2si_uuus (__a, __b, __c);
9276}
43e9d192 9277
0b839322
WD
9278__extension__ extern __inline int32x4_t
9279__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9280vmull_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __c)
9281{
9282 return __builtin_aarch64_vec_smult_laneq_v4hi (__a, __b, __c);
9283}
43e9d192 9284
0b839322
WD
9285__extension__ extern __inline int64x2_t
9286__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9287vmull_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __c)
9288{
9289 return __builtin_aarch64_vec_smult_laneq_v2si (__a, __b, __c);
9290}
43e9d192 9291
0b839322
WD
9292__extension__ extern __inline uint32x4_t
9293__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9294vmull_laneq_u16 (uint16x4_t __a, uint16x8_t __b, const int __c)
9295{
9296 return __builtin_aarch64_vec_umult_laneq_v4hi_uuus (__a, __b, __c);
9297}
43e9d192 9298
0b839322
WD
9299__extension__ extern __inline uint64x2_t
9300__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9301vmull_laneq_u32 (uint32x2_t __a, uint32x4_t __b, const int __c)
9302{
9303 return __builtin_aarch64_vec_umult_laneq_v2si_uuus (__a, __b, __c);
9304}
43e9d192 9305
a063e204
TC
9306__extension__ extern __inline int32x4_t
9307__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9308vmull_n_s16 (int16x4_t __a, int16_t __b)
43e9d192 9309{
9a3afc35 9310 int32x4_t __result;
43e9d192 9311 __asm__ ("smull %0.4s,%1.4h,%2.h[0]"
9a3afc35
KT
9312 : "=w"(__result)
9313 : "w"(__a), "x"(__b)
43e9d192 9314 : /* No clobbers */);
9a3afc35 9315 return __result;
43e9d192
IB
9316}
9317
a063e204
TC
9318__extension__ extern __inline int64x2_t
9319__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9320vmull_n_s32 (int32x2_t __a, int32_t __b)
43e9d192 9321{
9a3afc35 9322 int64x2_t __result;
43e9d192 9323 __asm__ ("smull %0.2d,%1.2s,%2.s[0]"
9a3afc35
KT
9324 : "=w"(__result)
9325 : "w"(__a), "w"(__b)
43e9d192 9326 : /* No clobbers */);
9a3afc35 9327 return __result;
43e9d192
IB
9328}
9329
a063e204
TC
9330__extension__ extern __inline uint32x4_t
9331__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9332vmull_n_u16 (uint16x4_t __a, uint16_t __b)
43e9d192 9333{
9a3afc35 9334 uint32x4_t __result;
43e9d192 9335 __asm__ ("umull %0.4s,%1.4h,%2.h[0]"
9a3afc35
KT
9336 : "=w"(__result)
9337 : "w"(__a), "x"(__b)
43e9d192 9338 : /* No clobbers */);
9a3afc35 9339 return __result;
43e9d192
IB
9340}
9341
a063e204
TC
9342__extension__ extern __inline uint64x2_t
9343__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9344vmull_n_u32 (uint32x2_t __a, uint32_t __b)
43e9d192 9345{
9a3afc35 9346 uint64x2_t __result;
43e9d192 9347 __asm__ ("umull %0.2d,%1.2s,%2.s[0]"
9a3afc35
KT
9348 : "=w"(__result)
9349 : "w"(__a), "w"(__b)
43e9d192 9350 : /* No clobbers */);
9a3afc35 9351 return __result;
43e9d192
IB
9352}
9353
a063e204
TC
9354__extension__ extern __inline poly16x8_t
9355__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9356vmull_p8 (poly8x8_t __a, poly8x8_t __b)
43e9d192 9357{
9a3afc35 9358 poly16x8_t __result;
43e9d192 9359 __asm__ ("pmull %0.8h, %1.8b, %2.8b"
9a3afc35
KT
9360 : "=w"(__result)
9361 : "w"(__a), "w"(__b)
43e9d192 9362 : /* No clobbers */);
9a3afc35 9363 return __result;
43e9d192
IB
9364}
9365
a063e204
TC
9366__extension__ extern __inline int16x8_t
9367__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9368vmull_s8 (int8x8_t __a, int8x8_t __b)
43e9d192 9369{
71c82d0e 9370 return __builtin_aarch64_intrinsic_vec_smult_lo_v8qi (__a, __b);
43e9d192
IB
9371}
9372
a063e204
TC
9373__extension__ extern __inline int32x4_t
9374__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9375vmull_s16 (int16x4_t __a, int16x4_t __b)
43e9d192 9376{
71c82d0e 9377 return __builtin_aarch64_intrinsic_vec_smult_lo_v4hi (__a, __b);
43e9d192
IB
9378}
9379
a063e204
TC
9380__extension__ extern __inline int64x2_t
9381__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9382vmull_s32 (int32x2_t __a, int32x2_t __b)
43e9d192 9383{
71c82d0e 9384 return __builtin_aarch64_intrinsic_vec_smult_lo_v2si (__a, __b);
43e9d192
IB
9385}
9386
a063e204
TC
9387__extension__ extern __inline uint16x8_t
9388__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9389vmull_u8 (uint8x8_t __a, uint8x8_t __b)
43e9d192 9390{
71c82d0e 9391 return __builtin_aarch64_intrinsic_vec_umult_lo_v8qi_uuu (__a, __b);
43e9d192
IB
9392}
9393
a063e204
TC
9394__extension__ extern __inline uint32x4_t
9395__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9396vmull_u16 (uint16x4_t __a, uint16x4_t __b)
43e9d192 9397{
71c82d0e 9398 return __builtin_aarch64_intrinsic_vec_umult_lo_v4hi_uuu (__a, __b);
43e9d192
IB
9399}
9400
a063e204
TC
9401__extension__ extern __inline uint64x2_t
9402__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9403vmull_u32 (uint32x2_t __a, uint32x2_t __b)
43e9d192 9404{
71c82d0e 9405 return __builtin_aarch64_intrinsic_vec_umult_lo_v2si_uuu (__a, __b);
43e9d192
IB
9406}
9407
a063e204
TC
9408__extension__ extern __inline int16x4_t
9409__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9410vpadal_s8 (int16x4_t __a, int8x8_t __b)
43e9d192 9411{
9a3afc35 9412 int16x4_t __result;
43e9d192 9413 __asm__ ("sadalp %0.4h,%2.8b"
9a3afc35
KT
9414 : "=w"(__result)
9415 : "0"(__a), "w"(__b)
43e9d192 9416 : /* No clobbers */);
9a3afc35 9417 return __result;
43e9d192
IB
9418}
9419
a063e204
TC
9420__extension__ extern __inline int32x2_t
9421__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9422vpadal_s16 (int32x2_t __a, int16x4_t __b)
43e9d192 9423{
9a3afc35 9424 int32x2_t __result;
43e9d192 9425 __asm__ ("sadalp %0.2s,%2.4h"
9a3afc35
KT
9426 : "=w"(__result)
9427 : "0"(__a), "w"(__b)
43e9d192 9428 : /* No clobbers */);
9a3afc35 9429 return __result;
43e9d192
IB
9430}
9431
a063e204
TC
9432__extension__ extern __inline int64x1_t
9433__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9434vpadal_s32 (int64x1_t __a, int32x2_t __b)
43e9d192 9435{
9a3afc35 9436 int64x1_t __result;
43e9d192 9437 __asm__ ("sadalp %0.1d,%2.2s"
9a3afc35
KT
9438 : "=w"(__result)
9439 : "0"(__a), "w"(__b)
43e9d192 9440 : /* No clobbers */);
9a3afc35 9441 return __result;
43e9d192
IB
9442}
9443
a063e204
TC
9444__extension__ extern __inline uint16x4_t
9445__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9446vpadal_u8 (uint16x4_t __a, uint8x8_t __b)
43e9d192 9447{
9a3afc35 9448 uint16x4_t __result;
43e9d192 9449 __asm__ ("uadalp %0.4h,%2.8b"
9a3afc35
KT
9450 : "=w"(__result)
9451 : "0"(__a), "w"(__b)
43e9d192 9452 : /* No clobbers */);
9a3afc35 9453 return __result;
43e9d192
IB
9454}
9455
a063e204
TC
9456__extension__ extern __inline uint32x2_t
9457__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9458vpadal_u16 (uint32x2_t __a, uint16x4_t __b)
43e9d192 9459{
9a3afc35 9460 uint32x2_t __result;
43e9d192 9461 __asm__ ("uadalp %0.2s,%2.4h"
9a3afc35
KT
9462 : "=w"(__result)
9463 : "0"(__a), "w"(__b)
43e9d192 9464 : /* No clobbers */);
9a3afc35 9465 return __result;
43e9d192
IB
9466}
9467
a063e204
TC
9468__extension__ extern __inline uint64x1_t
9469__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9470vpadal_u32 (uint64x1_t __a, uint32x2_t __b)
43e9d192 9471{
9a3afc35 9472 uint64x1_t __result;
43e9d192 9473 __asm__ ("uadalp %0.1d,%2.2s"
9a3afc35
KT
9474 : "=w"(__result)
9475 : "0"(__a), "w"(__b)
43e9d192 9476 : /* No clobbers */);
9a3afc35 9477 return __result;
43e9d192
IB
9478}
9479
a063e204
TC
9480__extension__ extern __inline int16x8_t
9481__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9482vpadalq_s8 (int16x8_t __a, int8x16_t __b)
43e9d192 9483{
9a3afc35 9484 int16x8_t __result;
43e9d192 9485 __asm__ ("sadalp %0.8h,%2.16b"
9a3afc35
KT
9486 : "=w"(__result)
9487 : "0"(__a), "w"(__b)
43e9d192 9488 : /* No clobbers */);
9a3afc35 9489 return __result;
43e9d192
IB
9490}
9491
a063e204
TC
9492__extension__ extern __inline int32x4_t
9493__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9494vpadalq_s16 (int32x4_t __a, int16x8_t __b)
43e9d192 9495{
9a3afc35 9496 int32x4_t __result;
43e9d192 9497 __asm__ ("sadalp %0.4s,%2.8h"
9a3afc35
KT
9498 : "=w"(__result)
9499 : "0"(__a), "w"(__b)
43e9d192 9500 : /* No clobbers */);
9a3afc35 9501 return __result;
43e9d192
IB
9502}
9503
a063e204
TC
9504__extension__ extern __inline int64x2_t
9505__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9506vpadalq_s32 (int64x2_t __a, int32x4_t __b)
43e9d192 9507{
9a3afc35 9508 int64x2_t __result;
43e9d192 9509 __asm__ ("sadalp %0.2d,%2.4s"
9a3afc35
KT
9510 : "=w"(__result)
9511 : "0"(__a), "w"(__b)
43e9d192 9512 : /* No clobbers */);
9a3afc35 9513 return __result;
43e9d192
IB
9514}
9515
a063e204
TC
9516__extension__ extern __inline uint16x8_t
9517__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9518vpadalq_u8 (uint16x8_t __a, uint8x16_t __b)
43e9d192 9519{
9a3afc35 9520 uint16x8_t __result;
43e9d192 9521 __asm__ ("uadalp %0.8h,%2.16b"
9a3afc35
KT
9522 : "=w"(__result)
9523 : "0"(__a), "w"(__b)
43e9d192 9524 : /* No clobbers */);
9a3afc35 9525 return __result;
43e9d192
IB
9526}
9527
a063e204
TC
9528__extension__ extern __inline uint32x4_t
9529__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9530vpadalq_u16 (uint32x4_t __a, uint16x8_t __b)
43e9d192 9531{
9a3afc35 9532 uint32x4_t __result;
43e9d192 9533 __asm__ ("uadalp %0.4s,%2.8h"
9a3afc35
KT
9534 : "=w"(__result)
9535 : "0"(__a), "w"(__b)
43e9d192 9536 : /* No clobbers */);
9a3afc35 9537 return __result;
43e9d192
IB
9538}
9539
a063e204
TC
9540__extension__ extern __inline uint64x2_t
9541__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9542vpadalq_u32 (uint64x2_t __a, uint32x4_t __b)
43e9d192 9543{
9a3afc35 9544 uint64x2_t __result;
43e9d192 9545 __asm__ ("uadalp %0.2d,%2.4s"
9a3afc35
KT
9546 : "=w"(__result)
9547 : "0"(__a), "w"(__b)
43e9d192 9548 : /* No clobbers */);
9a3afc35 9549 return __result;
43e9d192
IB
9550}
9551
a063e204
TC
9552__extension__ extern __inline int16x4_t
9553__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9554vpaddl_s8 (int8x8_t __a)
43e9d192 9555{
9a3afc35 9556 int16x4_t __result;
43e9d192 9557 __asm__ ("saddlp %0.4h,%1.8b"
9a3afc35
KT
9558 : "=w"(__result)
9559 : "w"(__a)
43e9d192 9560 : /* No clobbers */);
9a3afc35 9561 return __result;
43e9d192
IB
9562}
9563
a063e204
TC
9564__extension__ extern __inline int32x2_t
9565__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9566vpaddl_s16 (int16x4_t __a)
43e9d192 9567{
9a3afc35 9568 int32x2_t __result;
43e9d192 9569 __asm__ ("saddlp %0.2s,%1.4h"
9a3afc35
KT
9570 : "=w"(__result)
9571 : "w"(__a)
43e9d192 9572 : /* No clobbers */);
9a3afc35 9573 return __result;
43e9d192
IB
9574}
9575
a063e204
TC
9576__extension__ extern __inline int64x1_t
9577__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9578vpaddl_s32 (int32x2_t __a)
43e9d192 9579{
9a3afc35 9580 int64x1_t __result;
43e9d192 9581 __asm__ ("saddlp %0.1d,%1.2s"
9a3afc35
KT
9582 : "=w"(__result)
9583 : "w"(__a)
43e9d192 9584 : /* No clobbers */);
9a3afc35 9585 return __result;
43e9d192
IB
9586}
9587
a063e204
TC
9588__extension__ extern __inline uint16x4_t
9589__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9590vpaddl_u8 (uint8x8_t __a)
43e9d192 9591{
9a3afc35 9592 uint16x4_t __result;
43e9d192 9593 __asm__ ("uaddlp %0.4h,%1.8b"
9a3afc35
KT
9594 : "=w"(__result)
9595 : "w"(__a)
43e9d192 9596 : /* No clobbers */);
9a3afc35 9597 return __result;
43e9d192
IB
9598}
9599
a063e204
TC
9600__extension__ extern __inline uint32x2_t
9601__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9602vpaddl_u16 (uint16x4_t __a)
43e9d192 9603{
9a3afc35 9604 uint32x2_t __result;
43e9d192 9605 __asm__ ("uaddlp %0.2s,%1.4h"
9a3afc35
KT
9606 : "=w"(__result)
9607 : "w"(__a)
43e9d192 9608 : /* No clobbers */);
9a3afc35 9609 return __result;
43e9d192
IB
9610}
9611
a063e204
TC
9612__extension__ extern __inline uint64x1_t
9613__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9614vpaddl_u32 (uint32x2_t __a)
43e9d192 9615{
9a3afc35 9616 uint64x1_t __result;
43e9d192 9617 __asm__ ("uaddlp %0.1d,%1.2s"
9a3afc35
KT
9618 : "=w"(__result)
9619 : "w"(__a)
43e9d192 9620 : /* No clobbers */);
9a3afc35 9621 return __result;
43e9d192
IB
9622}
9623
a063e204
TC
9624__extension__ extern __inline int16x8_t
9625__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9626vpaddlq_s8 (int8x16_t __a)
43e9d192 9627{
9a3afc35 9628 int16x8_t __result;
43e9d192 9629 __asm__ ("saddlp %0.8h,%1.16b"
9a3afc35
KT
9630 : "=w"(__result)
9631 : "w"(__a)
43e9d192 9632 : /* No clobbers */);
9a3afc35 9633 return __result;
43e9d192
IB
9634}
9635
a063e204
TC
9636__extension__ extern __inline int32x4_t
9637__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9638vpaddlq_s16 (int16x8_t __a)
43e9d192 9639{
9a3afc35 9640 int32x4_t __result;
43e9d192 9641 __asm__ ("saddlp %0.4s,%1.8h"
9a3afc35
KT
9642 : "=w"(__result)
9643 : "w"(__a)
43e9d192 9644 : /* No clobbers */);
9a3afc35 9645 return __result;
43e9d192
IB
9646}
9647
a063e204
TC
9648__extension__ extern __inline int64x2_t
9649__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9650vpaddlq_s32 (int32x4_t __a)
43e9d192 9651{
9a3afc35 9652 int64x2_t __result;
43e9d192 9653 __asm__ ("saddlp %0.2d,%1.4s"
9a3afc35
KT
9654 : "=w"(__result)
9655 : "w"(__a)
43e9d192 9656 : /* No clobbers */);
9a3afc35 9657 return __result;
43e9d192
IB
9658}
9659
a063e204
TC
9660__extension__ extern __inline uint16x8_t
9661__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9662vpaddlq_u8 (uint8x16_t __a)
43e9d192 9663{
9a3afc35 9664 uint16x8_t __result;
43e9d192 9665 __asm__ ("uaddlp %0.8h,%1.16b"
9a3afc35
KT
9666 : "=w"(__result)
9667 : "w"(__a)
43e9d192 9668 : /* No clobbers */);
9a3afc35 9669 return __result;
43e9d192
IB
9670}
9671
a063e204
TC
9672__extension__ extern __inline uint32x4_t
9673__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9674vpaddlq_u16 (uint16x8_t __a)
43e9d192 9675{
9a3afc35 9676 uint32x4_t __result;
43e9d192 9677 __asm__ ("uaddlp %0.4s,%1.8h"
9a3afc35
KT
9678 : "=w"(__result)
9679 : "w"(__a)
43e9d192 9680 : /* No clobbers */);
9a3afc35 9681 return __result;
43e9d192
IB
9682}
9683
a063e204
TC
9684__extension__ extern __inline uint64x2_t
9685__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9686vpaddlq_u32 (uint32x4_t __a)
43e9d192 9687{
9a3afc35 9688 uint64x2_t __result;
43e9d192 9689 __asm__ ("uaddlp %0.2d,%1.4s"
9a3afc35
KT
9690 : "=w"(__result)
9691 : "w"(__a)
43e9d192 9692 : /* No clobbers */);
9a3afc35 9693 return __result;
43e9d192
IB
9694}
9695
a063e204
TC
9696__extension__ extern __inline int8x16_t
9697__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9698vpaddq_s8 (int8x16_t __a, int8x16_t __b)
43e9d192 9699{
9a3afc35 9700 int8x16_t __result;
43e9d192 9701 __asm__ ("addp %0.16b,%1.16b,%2.16b"
9a3afc35
KT
9702 : "=w"(__result)
9703 : "w"(__a), "w"(__b)
43e9d192 9704 : /* No clobbers */);
9a3afc35 9705 return __result;
43e9d192
IB
9706}
9707
a063e204
TC
9708__extension__ extern __inline int16x8_t
9709__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9710vpaddq_s16 (int16x8_t __a, int16x8_t __b)
43e9d192 9711{
9a3afc35 9712 int16x8_t __result;
43e9d192 9713 __asm__ ("addp %0.8h,%1.8h,%2.8h"
9a3afc35
KT
9714 : "=w"(__result)
9715 : "w"(__a), "w"(__b)
43e9d192 9716 : /* No clobbers */);
9a3afc35 9717 return __result;
43e9d192
IB
9718}
9719
a063e204
TC
9720__extension__ extern __inline int32x4_t
9721__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9722vpaddq_s32 (int32x4_t __a, int32x4_t __b)
43e9d192 9723{
9a3afc35 9724 int32x4_t __result;
43e9d192 9725 __asm__ ("addp %0.4s,%1.4s,%2.4s"
9a3afc35
KT
9726 : "=w"(__result)
9727 : "w"(__a), "w"(__b)
43e9d192 9728 : /* No clobbers */);
9a3afc35 9729 return __result;
43e9d192
IB
9730}
9731
a063e204
TC
9732__extension__ extern __inline int64x2_t
9733__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9734vpaddq_s64 (int64x2_t __a, int64x2_t __b)
43e9d192 9735{
9a3afc35 9736 int64x2_t __result;
43e9d192 9737 __asm__ ("addp %0.2d,%1.2d,%2.2d"
9a3afc35
KT
9738 : "=w"(__result)
9739 : "w"(__a), "w"(__b)
43e9d192 9740 : /* No clobbers */);
9a3afc35 9741 return __result;
43e9d192
IB
9742}
9743
a063e204
TC
9744__extension__ extern __inline uint8x16_t
9745__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9746vpaddq_u8 (uint8x16_t __a, uint8x16_t __b)
43e9d192 9747{
9a3afc35 9748 uint8x16_t __result;
43e9d192 9749 __asm__ ("addp %0.16b,%1.16b,%2.16b"
9a3afc35
KT
9750 : "=w"(__result)
9751 : "w"(__a), "w"(__b)
43e9d192 9752 : /* No clobbers */);
9a3afc35 9753 return __result;
43e9d192
IB
9754}
9755
a063e204
TC
9756__extension__ extern __inline uint16x8_t
9757__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9758vpaddq_u16 (uint16x8_t __a, uint16x8_t __b)
43e9d192 9759{
9a3afc35 9760 uint16x8_t __result;
43e9d192 9761 __asm__ ("addp %0.8h,%1.8h,%2.8h"
9a3afc35
KT
9762 : "=w"(__result)
9763 : "w"(__a), "w"(__b)
43e9d192 9764 : /* No clobbers */);
9a3afc35 9765 return __result;
43e9d192
IB
9766}
9767
a063e204
TC
9768__extension__ extern __inline uint32x4_t
9769__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9770vpaddq_u32 (uint32x4_t __a, uint32x4_t __b)
43e9d192 9771{
9a3afc35 9772 uint32x4_t __result;
43e9d192 9773 __asm__ ("addp %0.4s,%1.4s,%2.4s"
9a3afc35
KT
9774 : "=w"(__result)
9775 : "w"(__a), "w"(__b)
43e9d192 9776 : /* No clobbers */);
9a3afc35 9777 return __result;
43e9d192
IB
9778}
9779
a063e204
TC
9780__extension__ extern __inline uint64x2_t
9781__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9782vpaddq_u64 (uint64x2_t __a, uint64x2_t __b)
43e9d192 9783{
9a3afc35 9784 uint64x2_t __result;
43e9d192 9785 __asm__ ("addp %0.2d,%1.2d,%2.2d"
9a3afc35
KT
9786 : "=w"(__result)
9787 : "w"(__a), "w"(__b)
43e9d192 9788 : /* No clobbers */);
9a3afc35 9789 return __result;
43e9d192
IB
9790}
9791
a063e204
TC
9792__extension__ extern __inline int16x4_t
9793__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9794vqdmulh_n_s16 (int16x4_t __a, int16_t __b)
43e9d192 9795{
9a3afc35 9796 int16x4_t __result;
43e9d192 9797 __asm__ ("sqdmulh %0.4h,%1.4h,%2.h[0]"
9a3afc35
KT
9798 : "=w"(__result)
9799 : "w"(__a), "x"(__b)
43e9d192 9800 : /* No clobbers */);
9a3afc35 9801 return __result;
43e9d192
IB
9802}
9803
a063e204
TC
9804__extension__ extern __inline int32x2_t
9805__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9806vqdmulh_n_s32 (int32x2_t __a, int32_t __b)
43e9d192 9807{
9a3afc35 9808 int32x2_t __result;
43e9d192 9809 __asm__ ("sqdmulh %0.2s,%1.2s,%2.s[0]"
9a3afc35
KT
9810 : "=w"(__result)
9811 : "w"(__a), "w"(__b)
43e9d192 9812 : /* No clobbers */);
9a3afc35 9813 return __result;
43e9d192
IB
9814}
9815
a063e204
TC
9816__extension__ extern __inline int16x8_t
9817__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9818vqdmulhq_n_s16 (int16x8_t __a, int16_t __b)
43e9d192 9819{
9a3afc35 9820 int16x8_t __result;
43e9d192 9821 __asm__ ("sqdmulh %0.8h,%1.8h,%2.h[0]"
9a3afc35
KT
9822 : "=w"(__result)
9823 : "w"(__a), "x"(__b)
43e9d192 9824 : /* No clobbers */);
9a3afc35 9825 return __result;
43e9d192
IB
9826}
9827
a063e204
TC
9828__extension__ extern __inline int32x4_t
9829__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9830vqdmulhq_n_s32 (int32x4_t __a, int32_t __b)
43e9d192 9831{
9a3afc35 9832 int32x4_t __result;
43e9d192 9833 __asm__ ("sqdmulh %0.4s,%1.4s,%2.s[0]"
9a3afc35
KT
9834 : "=w"(__result)
9835 : "w"(__a), "w"(__b)
43e9d192 9836 : /* No clobbers */);
9a3afc35 9837 return __result;
43e9d192
IB
9838}
9839
a063e204
TC
9840__extension__ extern __inline int8x16_t
9841__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9842vqmovn_high_s16 (int8x8_t __a, int16x8_t __b)
43e9d192 9843{
9a3afc35 9844 int8x16_t __result = vcombine_s8 (__a, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
383f9b34 9845 __asm__ ("sqxtn2 %0.16b, %1.8h"
9a3afc35
KT
9846 : "+w"(__result)
9847 : "w"(__b)
43e9d192 9848 : /* No clobbers */);
9a3afc35 9849 return __result;
43e9d192
IB
9850}
9851
a063e204
TC
9852__extension__ extern __inline int16x8_t
9853__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9854vqmovn_high_s32 (int16x4_t __a, int32x4_t __b)
43e9d192 9855{
9a3afc35 9856 int16x8_t __result = vcombine_s16 (__a, vcreate_s16 (__AARCH64_UINT64_C (0x0)));
383f9b34 9857 __asm__ ("sqxtn2 %0.8h, %1.4s"
9a3afc35
KT
9858 : "+w"(__result)
9859 : "w"(__b)
43e9d192 9860 : /* No clobbers */);
9a3afc35 9861 return __result;
43e9d192
IB
9862}
9863
a063e204
TC
9864__extension__ extern __inline int32x4_t
9865__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9866vqmovn_high_s64 (int32x2_t __a, int64x2_t __b)
43e9d192 9867{
9a3afc35 9868 int32x4_t __result = vcombine_s32 (__a, vcreate_s32 (__AARCH64_UINT64_C (0x0)));
383f9b34 9869 __asm__ ("sqxtn2 %0.4s, %1.2d"
9a3afc35
KT
9870 : "+w"(__result)
9871 : "w"(__b)
43e9d192 9872 : /* No clobbers */);
9a3afc35 9873 return __result;
43e9d192
IB
9874}
9875
a063e204
TC
9876__extension__ extern __inline uint8x16_t
9877__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9878vqmovn_high_u16 (uint8x8_t __a, uint16x8_t __b)
43e9d192 9879{
9a3afc35 9880 uint8x16_t __result = vcombine_u8 (__a, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
383f9b34 9881 __asm__ ("uqxtn2 %0.16b, %1.8h"
9a3afc35
KT
9882 : "+w"(__result)
9883 : "w"(__b)
43e9d192 9884 : /* No clobbers */);
9a3afc35 9885 return __result;
43e9d192
IB
9886}
9887
a063e204
TC
9888__extension__ extern __inline uint16x8_t
9889__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9890vqmovn_high_u32 (uint16x4_t __a, uint32x4_t __b)
43e9d192 9891{
9a3afc35 9892 uint16x8_t __result = vcombine_u16 (__a, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
383f9b34 9893 __asm__ ("uqxtn2 %0.8h, %1.4s"
9a3afc35
KT
9894 : "+w"(__result)
9895 : "w"(__b)
43e9d192 9896 : /* No clobbers */);
9a3afc35 9897 return __result;
43e9d192
IB
9898}
9899
a063e204
TC
9900__extension__ extern __inline uint32x4_t
9901__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9902vqmovn_high_u64 (uint32x2_t __a, uint64x2_t __b)
43e9d192 9903{
9a3afc35 9904 uint32x4_t __result = vcombine_u32 (__a, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
383f9b34 9905 __asm__ ("uqxtn2 %0.4s, %1.2d"
9a3afc35
KT
9906 : "+w"(__result)
9907 : "w"(__b)
43e9d192 9908 : /* No clobbers */);
9a3afc35 9909 return __result;
43e9d192
IB
9910}
9911
a063e204
TC
9912__extension__ extern __inline uint8x16_t
9913__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9914vqmovun_high_s16 (uint8x8_t __a, int16x8_t __b)
43e9d192 9915{
9a3afc35 9916 uint8x16_t __result = vcombine_u8 (__a, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
383f9b34 9917 __asm__ ("sqxtun2 %0.16b, %1.8h"
9a3afc35
KT
9918 : "+w"(__result)
9919 : "w"(__b)
43e9d192 9920 : /* No clobbers */);
9a3afc35 9921 return __result;
43e9d192
IB
9922}
9923
a063e204
TC
9924__extension__ extern __inline uint16x8_t
9925__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9926vqmovun_high_s32 (uint16x4_t __a, int32x4_t __b)
43e9d192 9927{
9a3afc35 9928 uint16x8_t __result = vcombine_u16 (__a, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
383f9b34 9929 __asm__ ("sqxtun2 %0.8h, %1.4s"
9a3afc35
KT
9930 : "+w"(__result)
9931 : "w"(__b)
43e9d192 9932 : /* No clobbers */);
9a3afc35 9933 return __result;
43e9d192
IB
9934}
9935
a063e204
TC
9936__extension__ extern __inline uint32x4_t
9937__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9938vqmovun_high_s64 (uint32x2_t __a, int64x2_t __b)
43e9d192 9939{
9a3afc35 9940 uint32x4_t __result = vcombine_u32 (__a, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
383f9b34 9941 __asm__ ("sqxtun2 %0.4s, %1.2d"
9a3afc35
KT
9942 : "+w"(__result)
9943 : "w"(__b)
43e9d192 9944 : /* No clobbers */);
9a3afc35 9945 return __result;
43e9d192
IB
9946}
9947
a063e204
TC
9948__extension__ extern __inline int16x4_t
9949__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9950vqrdmulh_n_s16 (int16x4_t __a, int16_t __b)
43e9d192 9951{
9a3afc35 9952 int16x4_t __result;
43e9d192 9953 __asm__ ("sqrdmulh %0.4h,%1.4h,%2.h[0]"
9a3afc35
KT
9954 : "=w"(__result)
9955 : "w"(__a), "x"(__b)
43e9d192 9956 : /* No clobbers */);
9a3afc35 9957 return __result;
43e9d192
IB
9958}
9959
a063e204
TC
9960__extension__ extern __inline int32x2_t
9961__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9962vqrdmulh_n_s32 (int32x2_t __a, int32_t __b)
43e9d192 9963{
9a3afc35 9964 int32x2_t __result;
43e9d192 9965 __asm__ ("sqrdmulh %0.2s,%1.2s,%2.s[0]"
9a3afc35
KT
9966 : "=w"(__result)
9967 : "w"(__a), "w"(__b)
43e9d192 9968 : /* No clobbers */);
9a3afc35 9969 return __result;
43e9d192
IB
9970}
9971
a063e204
TC
9972__extension__ extern __inline int16x8_t
9973__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9974vqrdmulhq_n_s16 (int16x8_t __a, int16_t __b)
43e9d192 9975{
9a3afc35 9976 int16x8_t __result;
43e9d192 9977 __asm__ ("sqrdmulh %0.8h,%1.8h,%2.h[0]"
9a3afc35
KT
9978 : "=w"(__result)
9979 : "w"(__a), "x"(__b)
43e9d192 9980 : /* No clobbers */);
9a3afc35 9981 return __result;
43e9d192
IB
9982}
9983
a063e204
TC
9984__extension__ extern __inline int32x4_t
9985__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 9986vqrdmulhq_n_s32 (int32x4_t __a, int32_t __b)
43e9d192 9987{
9a3afc35 9988 int32x4_t __result;
43e9d192 9989 __asm__ ("sqrdmulh %0.4s,%1.4s,%2.s[0]"
9a3afc35
KT
9990 : "=w"(__result)
9991 : "w"(__a), "w"(__b)
43e9d192 9992 : /* No clobbers */);
9a3afc35 9993 return __result;
43e9d192
IB
9994}
9995
05f1883c
DC
9996__extension__ extern __inline int8x16_t
9997__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9998vqrshrn_high_n_s16 (int8x8_t __a, int16x8_t __b, const int __c)
9999{
10000 return __builtin_aarch64_sqrshrn2_nv8hi (__a, __b, __c);
10001}
43e9d192 10002
05f1883c
DC
10003__extension__ extern __inline int16x8_t
10004__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10005vqrshrn_high_n_s32 (int16x4_t __a, int32x4_t __b, const int __c)
10006{
10007 return __builtin_aarch64_sqrshrn2_nv4si (__a, __b, __c);
10008}
43e9d192 10009
05f1883c
DC
10010__extension__ extern __inline int32x4_t
10011__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10012vqrshrn_high_n_s64 (int32x2_t __a, int64x2_t __b, const int __c)
10013{
10014 return __builtin_aarch64_sqrshrn2_nv2di (__a, __b, __c);
10015}
43e9d192 10016
05f1883c
DC
10017__extension__ extern __inline uint8x16_t
10018__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10019vqrshrn_high_n_u16 (uint8x8_t __a, uint16x8_t __b, const int __c)
10020{
10021 return __builtin_aarch64_uqrshrn2_nv8hi_uuus (__a, __b, __c);
10022}
43e9d192 10023
05f1883c
DC
10024__extension__ extern __inline uint16x8_t
10025__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10026vqrshrn_high_n_u32 (uint16x4_t __a, uint32x4_t __b, const int __c)
10027{
10028 return __builtin_aarch64_uqrshrn2_nv4si_uuus (__a, __b, __c);
10029}
43e9d192 10030
05f1883c
DC
10031__extension__ extern __inline uint32x4_t
10032__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10033vqrshrn_high_n_u64 (uint32x2_t __a, uint64x2_t __b, const int __c)
10034{
10035 return __builtin_aarch64_uqrshrn2_nv2di_uuus (__a, __b, __c);
10036}
43e9d192 10037
05f1883c
DC
10038__extension__ extern __inline uint8x16_t
10039__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10040vqrshrun_high_n_s16 (uint8x8_t __a, int16x8_t __b, const int __c)
10041{
10042 return __builtin_aarch64_sqrshrun2_nv8hi_uuss (__a, __b, __c);
10043}
43e9d192 10044
05f1883c
DC
10045__extension__ extern __inline uint16x8_t
10046__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10047vqrshrun_high_n_s32 (uint16x4_t __a, int32x4_t __b, const int __c)
10048{
10049 return __builtin_aarch64_sqrshrun2_nv4si_uuss (__a, __b, __c);
10050}
43e9d192 10051
05f1883c
DC
10052__extension__ extern __inline uint32x4_t
10053__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10054vqrshrun_high_n_s64 (uint32x2_t __a, int64x2_t __b, const int __c)
10055{
10056 return __builtin_aarch64_sqrshrun2_nv2di_uuss (__a, __b, __c);
10057}
43e9d192 10058
05f1883c
DC
10059__extension__ extern __inline int8x16_t
10060__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10061vqshrn_high_n_s16 (int8x8_t __a, int16x8_t __b, const int __c)
10062{
10063 return __builtin_aarch64_sqshrn2_nv8hi (__a, __b, __c);
10064}
43e9d192 10065
05f1883c
DC
10066__extension__ extern __inline int16x8_t
10067__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10068vqshrn_high_n_s32 (int16x4_t __a, int32x4_t __b, const int __c)
10069{
10070 return __builtin_aarch64_sqshrn2_nv4si (__a, __b, __c);
10071}
43e9d192 10072
05f1883c
DC
10073__extension__ extern __inline int32x4_t
10074__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10075vqshrn_high_n_s64 (int32x2_t __a, int64x2_t __b, const int __c)
10076{
10077 return __builtin_aarch64_sqshrn2_nv2di (__a, __b, __c);
10078}
43e9d192 10079
05f1883c
DC
10080__extension__ extern __inline uint8x16_t
10081__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10082vqshrn_high_n_u16 (uint8x8_t __a, uint16x8_t __b, const int __c)
10083{
10084 return __builtin_aarch64_uqshrn2_nv8hi_uuus (__a, __b, __c);
10085}
43e9d192 10086
05f1883c
DC
10087__extension__ extern __inline uint16x8_t
10088__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10089vqshrn_high_n_u32 (uint16x4_t __a, uint32x4_t __b, const int __c)
10090{
10091 return __builtin_aarch64_uqshrn2_nv4si_uuus (__a, __b, __c);
10092}
43e9d192 10093
05f1883c
DC
10094__extension__ extern __inline uint32x4_t
10095__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10096vqshrn_high_n_u64 (uint32x2_t __a, uint64x2_t __b, const int __c)
10097{
10098 return __builtin_aarch64_uqshrn2_nv2di_uuus (__a, __b, __c);
10099}
43e9d192 10100
05f1883c
DC
10101__extension__ extern __inline uint8x16_t
10102__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10103vqshrun_high_n_s16 (uint8x8_t __a, int16x8_t __b, const int __c)
10104{
10105 return __builtin_aarch64_sqshrun2_nv8hi_uuss (__a, __b, __c);
10106}
43e9d192 10107
05f1883c
DC
10108__extension__ extern __inline uint16x8_t
10109__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10110vqshrun_high_n_s32 (uint16x4_t __a, int32x4_t __b, const int __c)
10111{
10112 return __builtin_aarch64_sqshrun2_nv4si_uuss (__a, __b, __c);
10113}
43e9d192 10114
05f1883c
DC
10115__extension__ extern __inline uint32x4_t
10116__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
10117vqshrun_high_n_s64 (uint32x2_t __a, int64x2_t __b, const int __c)
10118{
10119 return __builtin_aarch64_sqshrun2_nv2di_uuss (__a, __b, __c);
10120}
43e9d192 10121
43e9d192
IB
10122#define vrshrn_high_n_s16(a, b, c) \
10123 __extension__ \
10124 ({ \
10125 int16x8_t b_ = (b); \
10126 int8x8_t a_ = (a); \
10127 int8x16_t result = vcombine_s8 \
dc8d7a0f
TB
10128 (a_, vcreate_s8 \
10129 (__AARCH64_UINT64_C (0x0))); \
43e9d192
IB
10130 __asm__ ("rshrn2 %0.16b,%1.8h,#%2" \
10131 : "+w"(result) \
10132 : "w"(b_), "i"(c) \
10133 : /* No clobbers */); \
10134 result; \
10135 })
10136
10137#define vrshrn_high_n_s32(a, b, c) \
10138 __extension__ \
10139 ({ \
10140 int32x4_t b_ = (b); \
10141 int16x4_t a_ = (a); \
10142 int16x8_t result = vcombine_s16 \
dc8d7a0f
TB
10143 (a_, vcreate_s16 \
10144 (__AARCH64_UINT64_C (0x0))); \
43e9d192
IB
10145 __asm__ ("rshrn2 %0.8h,%1.4s,#%2" \
10146 : "+w"(result) \
10147 : "w"(b_), "i"(c) \
10148 : /* No clobbers */); \
10149 result; \
10150 })
10151
10152#define vrshrn_high_n_s64(a, b, c) \
10153 __extension__ \
10154 ({ \
10155 int64x2_t b_ = (b); \
10156 int32x2_t a_ = (a); \
10157 int32x4_t result = vcombine_s32 \
dc8d7a0f
TB
10158 (a_, vcreate_s32 \
10159 (__AARCH64_UINT64_C (0x0))); \
43e9d192
IB
10160 __asm__ ("rshrn2 %0.4s,%1.2d,#%2" \
10161 : "+w"(result) \
10162 : "w"(b_), "i"(c) \
10163 : /* No clobbers */); \
10164 result; \
10165 })
10166
10167#define vrshrn_high_n_u16(a, b, c) \
10168 __extension__ \
10169 ({ \
10170 uint16x8_t b_ = (b); \
10171 uint8x8_t a_ = (a); \
10172 uint8x16_t result = vcombine_u8 \
dc8d7a0f
TB
10173 (a_, vcreate_u8 \
10174 (__AARCH64_UINT64_C (0x0))); \
43e9d192
IB
10175 __asm__ ("rshrn2 %0.16b,%1.8h,#%2" \
10176 : "+w"(result) \
10177 : "w"(b_), "i"(c) \
10178 : /* No clobbers */); \
10179 result; \
10180 })
10181
10182#define vrshrn_high_n_u32(a, b, c) \
10183 __extension__ \
10184 ({ \
10185 uint32x4_t b_ = (b); \
10186 uint16x4_t a_ = (a); \
10187 uint16x8_t result = vcombine_u16 \
dc8d7a0f
TB
10188 (a_, vcreate_u16 \
10189 (__AARCH64_UINT64_C (0x0))); \
43e9d192
IB
10190 __asm__ ("rshrn2 %0.8h,%1.4s,#%2" \
10191 : "+w"(result) \
10192 : "w"(b_), "i"(c) \
10193 : /* No clobbers */); \
10194 result; \
10195 })
10196
10197#define vrshrn_high_n_u64(a, b, c) \
10198 __extension__ \
10199 ({ \
10200 uint64x2_t b_ = (b); \
10201 uint32x2_t a_ = (a); \
10202 uint32x4_t result = vcombine_u32 \
dc8d7a0f
TB
10203 (a_, vcreate_u32 \
10204 (__AARCH64_UINT64_C (0x0))); \
43e9d192
IB
10205 __asm__ ("rshrn2 %0.4s,%1.2d,#%2" \
10206 : "+w"(result) \
10207 : "w"(b_), "i"(c) \
10208 : /* No clobbers */); \
10209 result; \
10210 })
10211
10212#define vrshrn_n_s16(a, b) \
10213 __extension__ \
10214 ({ \
10215 int16x8_t a_ = (a); \
10216 int8x8_t result; \
10217 __asm__ ("rshrn %0.8b,%1.8h,%2" \
10218 : "=w"(result) \
10219 : "w"(a_), "i"(b) \
10220 : /* No clobbers */); \
10221 result; \
10222 })
10223
10224#define vrshrn_n_s32(a, b) \
10225 __extension__ \
10226 ({ \
10227 int32x4_t a_ = (a); \
10228 int16x4_t result; \
10229 __asm__ ("rshrn %0.4h,%1.4s,%2" \
10230 : "=w"(result) \
10231 : "w"(a_), "i"(b) \
10232 : /* No clobbers */); \
10233 result; \
10234 })
10235
10236#define vrshrn_n_s64(a, b) \
10237 __extension__ \
10238 ({ \
10239 int64x2_t a_ = (a); \
10240 int32x2_t result; \
10241 __asm__ ("rshrn %0.2s,%1.2d,%2" \
10242 : "=w"(result) \
10243 : "w"(a_), "i"(b) \
10244 : /* No clobbers */); \
10245 result; \
10246 })
10247
10248#define vrshrn_n_u16(a, b) \
10249 __extension__ \
10250 ({ \
10251 uint16x8_t a_ = (a); \
10252 uint8x8_t result; \
10253 __asm__ ("rshrn %0.8b,%1.8h,%2" \
10254 : "=w"(result) \
10255 : "w"(a_), "i"(b) \
10256 : /* No clobbers */); \
10257 result; \
10258 })
10259
10260#define vrshrn_n_u32(a, b) \
10261 __extension__ \
10262 ({ \
10263 uint32x4_t a_ = (a); \
10264 uint16x4_t result; \
10265 __asm__ ("rshrn %0.4h,%1.4s,%2" \
10266 : "=w"(result) \
10267 : "w"(a_), "i"(b) \
10268 : /* No clobbers */); \
10269 result; \
10270 })
10271
10272#define vrshrn_n_u64(a, b) \
10273 __extension__ \
10274 ({ \
10275 uint64x2_t a_ = (a); \
10276 uint32x2_t result; \
10277 __asm__ ("rshrn %0.2s,%1.2d,%2" \
10278 : "=w"(result) \
10279 : "w"(a_), "i"(b) \
10280 : /* No clobbers */); \
10281 result; \
10282 })
10283
a063e204
TC
10284__extension__ extern __inline uint32x2_t
10285__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 10286vrsqrte_u32 (uint32x2_t __a)
43e9d192 10287{
9a3afc35 10288 uint32x2_t __result;
43e9d192 10289 __asm__ ("ursqrte %0.2s,%1.2s"
9a3afc35
KT
10290 : "=w"(__result)
10291 : "w"(__a)
43e9d192 10292 : /* No clobbers */);
9a3afc35 10293 return __result;
43e9d192
IB
10294}
10295
a063e204
TC
10296__extension__ extern __inline uint32x4_t
10297__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 10298vrsqrteq_u32 (uint32x4_t __a)
43e9d192 10299{
9a3afc35 10300 uint32x4_t __result;
43e9d192 10301 __asm__ ("ursqrte %0.4s,%1.4s"
9a3afc35
KT
10302 : "=w"(__result)
10303 : "w"(__a)
43e9d192 10304 : /* No clobbers */);
9a3afc35 10305 return __result;
43e9d192
IB
10306}
10307
43e9d192
IB
10308#define vshrn_high_n_s16(a, b, c) \
10309 __extension__ \
10310 ({ \
10311 int16x8_t b_ = (b); \
10312 int8x8_t a_ = (a); \
10313 int8x16_t result = vcombine_s8 \
dc8d7a0f
TB
10314 (a_, vcreate_s8 \
10315 (__AARCH64_UINT64_C (0x0))); \
43e9d192
IB
10316 __asm__ ("shrn2 %0.16b,%1.8h,#%2" \
10317 : "+w"(result) \
10318 : "w"(b_), "i"(c) \
10319 : /* No clobbers */); \
10320 result; \
10321 })
10322
10323#define vshrn_high_n_s32(a, b, c) \
10324 __extension__ \
10325 ({ \
10326 int32x4_t b_ = (b); \
10327 int16x4_t a_ = (a); \
10328 int16x8_t result = vcombine_s16 \
dc8d7a0f
TB
10329 (a_, vcreate_s16 \
10330 (__AARCH64_UINT64_C (0x0))); \
43e9d192
IB
10331 __asm__ ("shrn2 %0.8h,%1.4s,#%2" \
10332 : "+w"(result) \
10333 : "w"(b_), "i"(c) \
10334 : /* No clobbers */); \
10335 result; \
10336 })
10337
10338#define vshrn_high_n_s64(a, b, c) \
10339 __extension__ \
10340 ({ \
10341 int64x2_t b_ = (b); \
10342 int32x2_t a_ = (a); \
10343 int32x4_t result = vcombine_s32 \
dc8d7a0f
TB
10344 (a_, vcreate_s32 \
10345 (__AARCH64_UINT64_C (0x0))); \
43e9d192
IB
10346 __asm__ ("shrn2 %0.4s,%1.2d,#%2" \
10347 : "+w"(result) \
10348 : "w"(b_), "i"(c) \
10349 : /* No clobbers */); \
10350 result; \
10351 })
10352
10353#define vshrn_high_n_u16(a, b, c) \
10354 __extension__ \
10355 ({ \
10356 uint16x8_t b_ = (b); \
10357 uint8x8_t a_ = (a); \
10358 uint8x16_t result = vcombine_u8 \
dc8d7a0f
TB
10359 (a_, vcreate_u8 \
10360 (__AARCH64_UINT64_C (0x0))); \
43e9d192
IB
10361 __asm__ ("shrn2 %0.16b,%1.8h,#%2" \
10362 : "+w"(result) \
10363 : "w"(b_), "i"(c) \
10364 : /* No clobbers */); \
10365 result; \
10366 })
10367
10368#define vshrn_high_n_u32(a, b, c) \
10369 __extension__ \
10370 ({ \
10371 uint32x4_t b_ = (b); \
10372 uint16x4_t a_ = (a); \
10373 uint16x8_t result = vcombine_u16 \
dc8d7a0f
TB
10374 (a_, vcreate_u16 \
10375 (__AARCH64_UINT64_C (0x0))); \
43e9d192
IB
10376 __asm__ ("shrn2 %0.8h,%1.4s,#%2" \
10377 : "+w"(result) \
10378 : "w"(b_), "i"(c) \
10379 : /* No clobbers */); \
10380 result; \
10381 })
10382
10383#define vshrn_high_n_u64(a, b, c) \
10384 __extension__ \
10385 ({ \
10386 uint64x2_t b_ = (b); \
10387 uint32x2_t a_ = (a); \
10388 uint32x4_t result = vcombine_u32 \
dc8d7a0f
TB
10389 (a_, vcreate_u32 \
10390 (__AARCH64_UINT64_C (0x0))); \
43e9d192
IB
10391 __asm__ ("shrn2 %0.4s,%1.2d,#%2" \
10392 : "+w"(result) \
10393 : "w"(b_), "i"(c) \
10394 : /* No clobbers */); \
10395 result; \
10396 })
10397
10398#define vshrn_n_s16(a, b) \
10399 __extension__ \
10400 ({ \
10401 int16x8_t a_ = (a); \
10402 int8x8_t result; \
10403 __asm__ ("shrn %0.8b,%1.8h,%2" \
10404 : "=w"(result) \
10405 : "w"(a_), "i"(b) \
10406 : /* No clobbers */); \
10407 result; \
10408 })
10409
10410#define vshrn_n_s32(a, b) \
10411 __extension__ \
10412 ({ \
10413 int32x4_t a_ = (a); \
10414 int16x4_t result; \
10415 __asm__ ("shrn %0.4h,%1.4s,%2" \
10416 : "=w"(result) \
10417 : "w"(a_), "i"(b) \
10418 : /* No clobbers */); \
10419 result; \
10420 })
10421
10422#define vshrn_n_s64(a, b) \
10423 __extension__ \
10424 ({ \
10425 int64x2_t a_ = (a); \
10426 int32x2_t result; \
10427 __asm__ ("shrn %0.2s,%1.2d,%2" \
10428 : "=w"(result) \
10429 : "w"(a_), "i"(b) \
10430 : /* No clobbers */); \
10431 result; \
10432 })
10433
10434#define vshrn_n_u16(a, b) \
10435 __extension__ \
10436 ({ \
10437 uint16x8_t a_ = (a); \
10438 uint8x8_t result; \
10439 __asm__ ("shrn %0.8b,%1.8h,%2" \
10440 : "=w"(result) \
10441 : "w"(a_), "i"(b) \
10442 : /* No clobbers */); \
10443 result; \
10444 })
10445
10446#define vshrn_n_u32(a, b) \
10447 __extension__ \
10448 ({ \
10449 uint32x4_t a_ = (a); \
10450 uint16x4_t result; \
10451 __asm__ ("shrn %0.4h,%1.4s,%2" \
10452 : "=w"(result) \
10453 : "w"(a_), "i"(b) \
10454 : /* No clobbers */); \
10455 result; \
10456 })
10457
10458#define vshrn_n_u64(a, b) \
10459 __extension__ \
10460 ({ \
10461 uint64x2_t a_ = (a); \
10462 uint32x2_t result; \
10463 __asm__ ("shrn %0.2s,%1.2d,%2" \
10464 : "=w"(result) \
10465 : "w"(a_), "i"(b) \
10466 : /* No clobbers */); \
10467 result; \
10468 })
10469
10470#define vsli_n_p8(a, b, c) \
10471 __extension__ \
10472 ({ \
10473 poly8x8_t b_ = (b); \
10474 poly8x8_t a_ = (a); \
10475 poly8x8_t result; \
10476 __asm__ ("sli %0.8b,%2.8b,%3" \
10477 : "=w"(result) \
10478 : "0"(a_), "w"(b_), "i"(c) \
10479 : /* No clobbers */); \
10480 result; \
10481 })
10482
10483#define vsli_n_p16(a, b, c) \
10484 __extension__ \
10485 ({ \
10486 poly16x4_t b_ = (b); \
10487 poly16x4_t a_ = (a); \
10488 poly16x4_t result; \
10489 __asm__ ("sli %0.4h,%2.4h,%3" \
10490 : "=w"(result) \
10491 : "0"(a_), "w"(b_), "i"(c) \
10492 : /* No clobbers */); \
10493 result; \
10494 })
10495
10496#define vsliq_n_p8(a, b, c) \
10497 __extension__ \
10498 ({ \
10499 poly8x16_t b_ = (b); \
10500 poly8x16_t a_ = (a); \
10501 poly8x16_t result; \
10502 __asm__ ("sli %0.16b,%2.16b,%3" \
10503 : "=w"(result) \
10504 : "0"(a_), "w"(b_), "i"(c) \
10505 : /* No clobbers */); \
10506 result; \
10507 })
10508
10509#define vsliq_n_p16(a, b, c) \
10510 __extension__ \
10511 ({ \
10512 poly16x8_t b_ = (b); \
10513 poly16x8_t a_ = (a); \
10514 poly16x8_t result; \
10515 __asm__ ("sli %0.8h,%2.8h,%3" \
10516 : "=w"(result) \
10517 : "0"(a_), "w"(b_), "i"(c) \
10518 : /* No clobbers */); \
10519 result; \
10520 })
10521
10522#define vsri_n_p8(a, b, c) \
10523 __extension__ \
10524 ({ \
10525 poly8x8_t b_ = (b); \
10526 poly8x8_t a_ = (a); \
10527 poly8x8_t result; \
10528 __asm__ ("sri %0.8b,%2.8b,%3" \
10529 : "=w"(result) \
10530 : "0"(a_), "w"(b_), "i"(c) \
10531 : /* No clobbers */); \
10532 result; \
10533 })
10534
10535#define vsri_n_p16(a, b, c) \
10536 __extension__ \
10537 ({ \
10538 poly16x4_t b_ = (b); \
10539 poly16x4_t a_ = (a); \
10540 poly16x4_t result; \
10541 __asm__ ("sri %0.4h,%2.4h,%3" \
10542 : "=w"(result) \
10543 : "0"(a_), "w"(b_), "i"(c) \
10544 : /* No clobbers */); \
10545 result; \
10546 })
10547
6383ff9f
TC
10548#define vsri_n_p64(a, b, c) \
10549 __extension__ \
10550 ({ \
10551 poly64x1_t b_ = (b); \
10552 poly64x1_t a_ = (a); \
10553 poly64x1_t result; \
10554 __asm__ ("sri %d0,%d2,%3" \
10555 : "=w"(result) \
10556 : "0"(a_), "w"(b_), "i"(c) \
10557 : /* No clobbers. */); \
10558 result; \
10559 })
10560
43e9d192
IB
10561#define vsriq_n_p8(a, b, c) \
10562 __extension__ \
10563 ({ \
10564 poly8x16_t b_ = (b); \
10565 poly8x16_t a_ = (a); \
10566 poly8x16_t result; \
10567 __asm__ ("sri %0.16b,%2.16b,%3" \
10568 : "=w"(result) \
10569 : "0"(a_), "w"(b_), "i"(c) \
10570 : /* No clobbers */); \
10571 result; \
10572 })
10573
10574#define vsriq_n_p16(a, b, c) \
10575 __extension__ \
10576 ({ \
10577 poly16x8_t b_ = (b); \
10578 poly16x8_t a_ = (a); \
10579 poly16x8_t result; \
10580 __asm__ ("sri %0.8h,%2.8h,%3" \
10581 : "=w"(result) \
10582 : "0"(a_), "w"(b_), "i"(c) \
10583 : /* No clobbers */); \
10584 result; \
10585 })
10586
6383ff9f
TC
10587#define vsriq_n_p64(a, b, c) \
10588 __extension__ \
10589 ({ \
10590 poly64x2_t b_ = (b); \
10591 poly64x2_t a_ = (a); \
10592 poly64x2_t result; \
10593 __asm__ ("sri %0.2d,%2.2d,%3" \
10594 : "=w"(result) \
10595 : "0"(a_), "w"(b_), "i"(c) \
10596 : /* No clobbers. */); \
10597 result; \
10598 })
10599
a063e204
TC
10600__extension__ extern __inline uint8x8_t
10601__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 10602vtst_p8 (poly8x8_t __a, poly8x8_t __b)
43e9d192 10603{
9a3afc35 10604 return (uint8x8_t) ((((uint8x8_t) __a) & ((uint8x8_t) __b))
052ef81d 10605 != 0);
43e9d192
IB
10606}
10607
a063e204
TC
10608__extension__ extern __inline uint16x4_t
10609__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 10610vtst_p16 (poly16x4_t __a, poly16x4_t __b)
43e9d192 10611{
9a3afc35 10612 return (uint16x4_t) ((((uint16x4_t) __a) & ((uint16x4_t) __b))
052ef81d
CL
10613 != 0);
10614}
10615
10616__extension__ extern __inline uint64x1_t
10617__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 10618vtst_p64 (poly64x1_t __a, poly64x1_t __b)
052ef81d 10619{
9a3afc35 10620 return (uint64x1_t) ((__a & __b) != __AARCH64_INT64_C (0));
43e9d192
IB
10621}
10622
a063e204
TC
10623__extension__ extern __inline uint8x16_t
10624__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 10625vtstq_p8 (poly8x16_t __a, poly8x16_t __b)
43e9d192 10626{
9a3afc35 10627 return (uint8x16_t) ((((uint8x16_t) __a) & ((uint8x16_t) __b))
052ef81d 10628 != 0);
43e9d192
IB
10629}
10630
a063e204
TC
10631__extension__ extern __inline uint16x8_t
10632__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 10633vtstq_p16 (poly16x8_t __a, poly16x8_t __b)
43e9d192 10634{
9a3afc35 10635 return (uint16x8_t) ((((uint16x8_t) __a) & ((uint16x8_t) __b))
052ef81d
CL
10636 != 0);
10637}
10638
10639__extension__ extern __inline uint64x2_t
10640__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 10641vtstq_p64 (poly64x2_t __a, poly64x2_t __b)
052ef81d 10642{
9a3afc35 10643 return (uint64x2_t) ((((uint64x2_t) __a) & ((uint64x2_t) __b))
052ef81d 10644 != __AARCH64_INT64_C (0));
43e9d192 10645}
43e9d192 10646
43e9d192
IB
10647/* End of temporary inline asm implementations. */
10648
10649/* Start of temporary inline asm for vldn, vstn and friends. */
10650
10651/* Create struct element types for duplicating loads.
10652
10653 Create 2 element structures of:
10654
10655 +------+----+----+----+----+
10656 | | 8 | 16 | 32 | 64 |
10657 +------+----+----+----+----+
10658 |int | Y | Y | N | N |
10659 +------+----+----+----+----+
10660 |uint | Y | Y | N | N |
10661 +------+----+----+----+----+
7c369485 10662 |float | - | Y | N | N |
43e9d192
IB
10663 +------+----+----+----+----+
10664 |poly | Y | Y | - | - |
10665 +------+----+----+----+----+
10666
10667 Create 3 element structures of:
10668
10669 +------+----+----+----+----+
10670 | | 8 | 16 | 32 | 64 |
10671 +------+----+----+----+----+
10672 |int | Y | Y | Y | Y |
10673 +------+----+----+----+----+
10674 |uint | Y | Y | Y | Y |
10675 +------+----+----+----+----+
7c369485 10676 |float | - | Y | Y | Y |
43e9d192
IB
10677 +------+----+----+----+----+
10678 |poly | Y | Y | - | - |
10679 +------+----+----+----+----+
10680
10681 Create 4 element structures of:
10682
10683 +------+----+----+----+----+
10684 | | 8 | 16 | 32 | 64 |
10685 +------+----+----+----+----+
10686 |int | Y | N | N | Y |
10687 +------+----+----+----+----+
10688 |uint | Y | N | N | Y |
10689 +------+----+----+----+----+
7c369485 10690 |float | - | N | N | Y |
43e9d192
IB
10691 +------+----+----+----+----+
10692 |poly | Y | N | - | - |
10693 +------+----+----+----+----+
10694
10695 This is required for casting memory reference. */
10696#define __STRUCTN(t, sz, nelem) \
10697 typedef struct t ## sz ## x ## nelem ## _t { \
10698 t ## sz ## _t val[nelem]; \
10699 } t ## sz ## x ## nelem ## _t;
10700
10701/* 2-element structs. */
10702__STRUCTN (int, 8, 2)
10703__STRUCTN (int, 16, 2)
10704__STRUCTN (uint, 8, 2)
10705__STRUCTN (uint, 16, 2)
7c369485 10706__STRUCTN (float, 16, 2)
43e9d192
IB
10707__STRUCTN (poly, 8, 2)
10708__STRUCTN (poly, 16, 2)
10709/* 3-element structs. */
10710__STRUCTN (int, 8, 3)
10711__STRUCTN (int, 16, 3)
10712__STRUCTN (int, 32, 3)
10713__STRUCTN (int, 64, 3)
10714__STRUCTN (uint, 8, 3)
10715__STRUCTN (uint, 16, 3)
10716__STRUCTN (uint, 32, 3)
10717__STRUCTN (uint, 64, 3)
7c369485 10718__STRUCTN (float, 16, 3)
43e9d192
IB
10719__STRUCTN (float, 32, 3)
10720__STRUCTN (float, 64, 3)
10721__STRUCTN (poly, 8, 3)
10722__STRUCTN (poly, 16, 3)
10723/* 4-element structs. */
10724__STRUCTN (int, 8, 4)
10725__STRUCTN (int, 64, 4)
10726__STRUCTN (uint, 8, 4)
10727__STRUCTN (uint, 64, 4)
10728__STRUCTN (poly, 8, 4)
10729__STRUCTN (float, 64, 4)
10730#undef __STRUCTN
10731
91bd4114 10732
4d0a0237
CB
10733#define __ST2_LANE_FUNC(intype, largetype, ptrtype, mode, \
10734 qmode, ptr_mode, funcsuffix, signedtype) \
a063e204
TC
10735__extension__ extern __inline void \
10736__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \
ba081b77
JG
10737vst2_lane_ ## funcsuffix (ptrtype *__ptr, \
10738 intype __b, const int __c) \
10739{ \
10740 __builtin_aarch64_simd_oi __o; \
10741 largetype __temp; \
10742 __temp.val[0] \
10743 = vcombine_##funcsuffix (__b.val[0], \
10744 vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \
10745 __temp.val[1] \
10746 = vcombine_##funcsuffix (__b.val[1], \
10747 vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \
4d0a0237
CB
10748 __o = __builtin_aarch64_set_qregoi##qmode (__o, \
10749 (signedtype) __temp.val[0], 0); \
10750 __o = __builtin_aarch64_set_qregoi##qmode (__o, \
10751 (signedtype) __temp.val[1], 1); \
ba081b77
JG
10752 __builtin_aarch64_st2_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \
10753 __ptr, __o, __c); \
10754}
10755
7c369485
AL
10756__ST2_LANE_FUNC (float16x4x2_t, float16x8x2_t, float16_t, v4hf, v8hf, hf, f16,
10757 float16x8_t)
4d0a0237 10758__ST2_LANE_FUNC (float32x2x2_t, float32x4x2_t, float32_t, v2sf, v4sf, sf, f32,
ba081b77 10759 float32x4_t)
4d0a0237 10760__ST2_LANE_FUNC (float64x1x2_t, float64x2x2_t, float64_t, df, v2df, df, f64,
ba081b77 10761 float64x2_t)
4d0a0237
CB
10762__ST2_LANE_FUNC (poly8x8x2_t, poly8x16x2_t, poly8_t, v8qi, v16qi, qi, p8,
10763 int8x16_t)
10764__ST2_LANE_FUNC (poly16x4x2_t, poly16x8x2_t, poly16_t, v4hi, v8hi, hi, p16,
ba081b77 10765 int16x8_t)
159b8724
TC
10766__ST2_LANE_FUNC (poly64x1x2_t, poly64x2x2_t, poly64_t, di, v2di_ssps, di, p64,
10767 poly64x2_t)
4d0a0237
CB
10768__ST2_LANE_FUNC (int8x8x2_t, int8x16x2_t, int8_t, v8qi, v16qi, qi, s8,
10769 int8x16_t)
10770__ST2_LANE_FUNC (int16x4x2_t, int16x8x2_t, int16_t, v4hi, v8hi, hi, s16,
ba081b77 10771 int16x8_t)
4d0a0237 10772__ST2_LANE_FUNC (int32x2x2_t, int32x4x2_t, int32_t, v2si, v4si, si, s32,
ba081b77 10773 int32x4_t)
4d0a0237
CB
10774__ST2_LANE_FUNC (int64x1x2_t, int64x2x2_t, int64_t, di, v2di, di, s64,
10775 int64x2_t)
10776__ST2_LANE_FUNC (uint8x8x2_t, uint8x16x2_t, uint8_t, v8qi, v16qi, qi, u8,
10777 int8x16_t)
10778__ST2_LANE_FUNC (uint16x4x2_t, uint16x8x2_t, uint16_t, v4hi, v8hi, hi, u16,
10779 int16x8_t)
10780__ST2_LANE_FUNC (uint32x2x2_t, uint32x4x2_t, uint32_t, v2si, v4si, si, u32,
10781 int32x4_t)
10782__ST2_LANE_FUNC (uint64x1x2_t, uint64x2x2_t, uint64_t, di, v2di, di, u64,
ba081b77
JG
10783 int64x2_t)
10784
292c812a 10785#define __ST2Q_LANE_FUNC(intype, ptrtype, mode, ptr_mode, funcsuffix) \
a063e204
TC
10786__extension__ extern __inline void \
10787__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \
ba081b77
JG
10788vst2q_lane_ ## funcsuffix (ptrtype *__ptr, \
10789 intype __b, const int __c) \
10790{ \
10791 union { intype __i; \
10792 __builtin_aarch64_simd_oi __o; } __temp = { __b }; \
10793 __builtin_aarch64_st2_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \
10794 __ptr, __temp.__o, __c); \
10795}
10796
292c812a
AC
10797__ST2Q_LANE_FUNC (float16x8x2_t, float16_t, v8hf, hf, f16)
10798__ST2Q_LANE_FUNC (float32x4x2_t, float32_t, v4sf, sf, f32)
10799__ST2Q_LANE_FUNC (float64x2x2_t, float64_t, v2df, df, f64)
10800__ST2Q_LANE_FUNC (poly8x16x2_t, poly8_t, v16qi, qi, p8)
10801__ST2Q_LANE_FUNC (poly16x8x2_t, poly16_t, v8hi, hi, p16)
10802__ST2Q_LANE_FUNC (poly64x2x2_t, poly64_t, v2di, di, p64)
10803__ST2Q_LANE_FUNC (int8x16x2_t, int8_t, v16qi, qi, s8)
10804__ST2Q_LANE_FUNC (int16x8x2_t, int16_t, v8hi, hi, s16)
10805__ST2Q_LANE_FUNC (int32x4x2_t, int32_t, v4si, si, s32)
10806__ST2Q_LANE_FUNC (int64x2x2_t, int64_t, v2di, di, s64)
10807__ST2Q_LANE_FUNC (uint8x16x2_t, uint8_t, v16qi, qi, u8)
10808__ST2Q_LANE_FUNC (uint16x8x2_t, uint16_t, v8hi, hi, u16)
10809__ST2Q_LANE_FUNC (uint32x4x2_t, uint32_t, v4si, si, u32)
10810__ST2Q_LANE_FUNC (uint64x2x2_t, uint64_t, v2di, di, u64)
ba081b77 10811
4d0a0237
CB
10812#define __ST3_LANE_FUNC(intype, largetype, ptrtype, mode, \
10813 qmode, ptr_mode, funcsuffix, signedtype) \
a063e204
TC
10814__extension__ extern __inline void \
10815__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \
ba081b77
JG
10816vst3_lane_ ## funcsuffix (ptrtype *__ptr, \
10817 intype __b, const int __c) \
10818{ \
10819 __builtin_aarch64_simd_ci __o; \
10820 largetype __temp; \
10821 __temp.val[0] \
10822 = vcombine_##funcsuffix (__b.val[0], \
10823 vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \
10824 __temp.val[1] \
10825 = vcombine_##funcsuffix (__b.val[1], \
10826 vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \
10827 __temp.val[2] \
10828 = vcombine_##funcsuffix (__b.val[2], \
10829 vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \
4d0a0237
CB
10830 __o = __builtin_aarch64_set_qregci##qmode (__o, \
10831 (signedtype) __temp.val[0], 0); \
10832 __o = __builtin_aarch64_set_qregci##qmode (__o, \
10833 (signedtype) __temp.val[1], 1); \
10834 __o = __builtin_aarch64_set_qregci##qmode (__o, \
10835 (signedtype) __temp.val[2], 2); \
ba081b77
JG
10836 __builtin_aarch64_st3_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \
10837 __ptr, __o, __c); \
10838}
10839
7c369485
AL
10840__ST3_LANE_FUNC (float16x4x3_t, float16x8x3_t, float16_t, v4hf, v8hf, hf, f16,
10841 float16x8_t)
4d0a0237 10842__ST3_LANE_FUNC (float32x2x3_t, float32x4x3_t, float32_t, v2sf, v4sf, sf, f32,
ba081b77 10843 float32x4_t)
4d0a0237 10844__ST3_LANE_FUNC (float64x1x3_t, float64x2x3_t, float64_t, df, v2df, df, f64,
ba081b77 10845 float64x2_t)
4d0a0237
CB
10846__ST3_LANE_FUNC (poly8x8x3_t, poly8x16x3_t, poly8_t, v8qi, v16qi, qi, p8,
10847 int8x16_t)
10848__ST3_LANE_FUNC (poly16x4x3_t, poly16x8x3_t, poly16_t, v4hi, v8hi, hi, p16,
10849 int16x8_t)
159b8724
TC
10850__ST3_LANE_FUNC (poly64x1x3_t, poly64x2x3_t, poly64_t, di, v2di_ssps, di, p64,
10851 poly64x2_t)
4d0a0237
CB
10852__ST3_LANE_FUNC (int8x8x3_t, int8x16x3_t, int8_t, v8qi, v16qi, qi, s8,
10853 int8x16_t)
10854__ST3_LANE_FUNC (int16x4x3_t, int16x8x3_t, int16_t, v4hi, v8hi, hi, s16,
ba081b77 10855 int16x8_t)
4d0a0237
CB
10856__ST3_LANE_FUNC (int32x2x3_t, int32x4x3_t, int32_t, v2si, v4si, si, s32,
10857 int32x4_t)
10858__ST3_LANE_FUNC (int64x1x3_t, int64x2x3_t, int64_t, di, v2di, di, s64,
10859 int64x2_t)
10860__ST3_LANE_FUNC (uint8x8x3_t, uint8x16x3_t, uint8_t, v8qi, v16qi, qi, u8,
10861 int8x16_t)
10862__ST3_LANE_FUNC (uint16x4x3_t, uint16x8x3_t, uint16_t, v4hi, v8hi, hi, u16,
ba081b77 10863 int16x8_t)
4d0a0237 10864__ST3_LANE_FUNC (uint32x2x3_t, uint32x4x3_t, uint32_t, v2si, v4si, si, u32,
ba081b77 10865 int32x4_t)
4d0a0237 10866__ST3_LANE_FUNC (uint64x1x3_t, uint64x2x3_t, uint64_t, di, v2di, di, u64,
ba081b77
JG
10867 int64x2_t)
10868
292c812a 10869#define __ST3Q_LANE_FUNC(intype, ptrtype, mode, ptr_mode, funcsuffix) \
a063e204
TC
10870__extension__ extern __inline void \
10871__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \
ba081b77
JG
10872vst3q_lane_ ## funcsuffix (ptrtype *__ptr, \
10873 intype __b, const int __c) \
10874{ \
10875 union { intype __i; \
10876 __builtin_aarch64_simd_ci __o; } __temp = { __b }; \
10877 __builtin_aarch64_st3_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \
10878 __ptr, __temp.__o, __c); \
10879}
10880
292c812a
AC
10881__ST3Q_LANE_FUNC (float16x8x3_t, float16_t, v8hf, hf, f16)
10882__ST3Q_LANE_FUNC (float32x4x3_t, float32_t, v4sf, sf, f32)
10883__ST3Q_LANE_FUNC (float64x2x3_t, float64_t, v2df, df, f64)
10884__ST3Q_LANE_FUNC (poly8x16x3_t, poly8_t, v16qi, qi, p8)
10885__ST3Q_LANE_FUNC (poly16x8x3_t, poly16_t, v8hi, hi, p16)
10886__ST3Q_LANE_FUNC (poly64x2x3_t, poly64_t, v2di, di, p64)
10887__ST3Q_LANE_FUNC (int8x16x3_t, int8_t, v16qi, qi, s8)
10888__ST3Q_LANE_FUNC (int16x8x3_t, int16_t, v8hi, hi, s16)
10889__ST3Q_LANE_FUNC (int32x4x3_t, int32_t, v4si, si, s32)
10890__ST3Q_LANE_FUNC (int64x2x3_t, int64_t, v2di, di, s64)
10891__ST3Q_LANE_FUNC (uint8x16x3_t, uint8_t, v16qi, qi, u8)
10892__ST3Q_LANE_FUNC (uint16x8x3_t, uint16_t, v8hi, hi, u16)
10893__ST3Q_LANE_FUNC (uint32x4x3_t, uint32_t, v4si, si, u32)
10894__ST3Q_LANE_FUNC (uint64x2x3_t, uint64_t, v2di, di, u64)
ba081b77 10895
4d0a0237
CB
10896#define __ST4_LANE_FUNC(intype, largetype, ptrtype, mode, \
10897 qmode, ptr_mode, funcsuffix, signedtype) \
a063e204
TC
10898__extension__ extern __inline void \
10899__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \
ba081b77
JG
10900vst4_lane_ ## funcsuffix (ptrtype *__ptr, \
10901 intype __b, const int __c) \
10902{ \
10903 __builtin_aarch64_simd_xi __o; \
10904 largetype __temp; \
10905 __temp.val[0] \
10906 = vcombine_##funcsuffix (__b.val[0], \
10907 vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \
10908 __temp.val[1] \
10909 = vcombine_##funcsuffix (__b.val[1], \
10910 vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \
10911 __temp.val[2] \
10912 = vcombine_##funcsuffix (__b.val[2], \
10913 vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \
10914 __temp.val[3] \
10915 = vcombine_##funcsuffix (__b.val[3], \
10916 vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \
4d0a0237
CB
10917 __o = __builtin_aarch64_set_qregxi##qmode (__o, \
10918 (signedtype) __temp.val[0], 0); \
10919 __o = __builtin_aarch64_set_qregxi##qmode (__o, \
10920 (signedtype) __temp.val[1], 1); \
10921 __o = __builtin_aarch64_set_qregxi##qmode (__o, \
10922 (signedtype) __temp.val[2], 2); \
10923 __o = __builtin_aarch64_set_qregxi##qmode (__o, \
10924 (signedtype) __temp.val[3], 3); \
ba081b77
JG
10925 __builtin_aarch64_st4_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \
10926 __ptr, __o, __c); \
10927}
10928
7c369485
AL
10929__ST4_LANE_FUNC (float16x4x4_t, float16x8x4_t, float16_t, v4hf, v8hf, hf, f16,
10930 float16x8_t)
4d0a0237 10931__ST4_LANE_FUNC (float32x2x4_t, float32x4x4_t, float32_t, v2sf, v4sf, sf, f32,
ba081b77 10932 float32x4_t)
4d0a0237 10933__ST4_LANE_FUNC (float64x1x4_t, float64x2x4_t, float64_t, df, v2df, df, f64,
ba081b77 10934 float64x2_t)
4d0a0237
CB
10935__ST4_LANE_FUNC (poly8x8x4_t, poly8x16x4_t, poly8_t, v8qi, v16qi, qi, p8,
10936 int8x16_t)
10937__ST4_LANE_FUNC (poly16x4x4_t, poly16x8x4_t, poly16_t, v4hi, v8hi, hi, p16,
ba081b77 10938 int16x8_t)
159b8724
TC
10939__ST4_LANE_FUNC (poly64x1x4_t, poly64x2x4_t, poly64_t, di, v2di_ssps, di, p64,
10940 poly64x2_t)
4d0a0237
CB
10941__ST4_LANE_FUNC (int8x8x4_t, int8x16x4_t, int8_t, v8qi, v16qi, qi, s8,
10942 int8x16_t)
10943__ST4_LANE_FUNC (int16x4x4_t, int16x8x4_t, int16_t, v4hi, v8hi, hi, s16,
10944 int16x8_t)
10945__ST4_LANE_FUNC (int32x2x4_t, int32x4x4_t, int32_t, v2si, v4si, si, s32,
10946 int32x4_t)
10947__ST4_LANE_FUNC (int64x1x4_t, int64x2x4_t, int64_t, di, v2di, di, s64,
10948 int64x2_t)
10949__ST4_LANE_FUNC (uint8x8x4_t, uint8x16x4_t, uint8_t, v8qi, v16qi, qi, u8,
10950 int8x16_t)
10951__ST4_LANE_FUNC (uint16x4x4_t, uint16x8x4_t, uint16_t, v4hi, v8hi, hi, u16,
ba081b77 10952 int16x8_t)
4d0a0237 10953__ST4_LANE_FUNC (uint32x2x4_t, uint32x4x4_t, uint32_t, v2si, v4si, si, u32,
ba081b77 10954 int32x4_t)
4d0a0237 10955__ST4_LANE_FUNC (uint64x1x4_t, uint64x2x4_t, uint64_t, di, v2di, di, u64,
ba081b77
JG
10956 int64x2_t)
10957
292c812a 10958#define __ST4Q_LANE_FUNC(intype, ptrtype, mode, ptr_mode, funcsuffix) \
a063e204
TC
10959__extension__ extern __inline void \
10960__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \
ba081b77
JG
10961vst4q_lane_ ## funcsuffix (ptrtype *__ptr, \
10962 intype __b, const int __c) \
10963{ \
10964 union { intype __i; \
10965 __builtin_aarch64_simd_xi __o; } __temp = { __b }; \
10966 __builtin_aarch64_st4_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *) \
10967 __ptr, __temp.__o, __c); \
10968}
10969
292c812a
AC
10970__ST4Q_LANE_FUNC (float16x8x4_t, float16_t, v8hf, hf, f16)
10971__ST4Q_LANE_FUNC (float32x4x4_t, float32_t, v4sf, sf, f32)
10972__ST4Q_LANE_FUNC (float64x2x4_t, float64_t, v2df, df, f64)
10973__ST4Q_LANE_FUNC (poly8x16x4_t, poly8_t, v16qi, qi, p8)
10974__ST4Q_LANE_FUNC (poly16x8x4_t, poly16_t, v8hi, hi, p16)
10975__ST4Q_LANE_FUNC (poly64x2x4_t, poly64_t, v2di, di, p64)
10976__ST4Q_LANE_FUNC (int8x16x4_t, int8_t, v16qi, qi, s8)
10977__ST4Q_LANE_FUNC (int16x8x4_t, int16_t, v8hi, hi, s16)
10978__ST4Q_LANE_FUNC (int32x4x4_t, int32_t, v4si, si, s32)
10979__ST4Q_LANE_FUNC (int64x2x4_t, int64_t, v2di, di, s64)
10980__ST4Q_LANE_FUNC (uint8x16x4_t, uint8_t, v16qi, qi, u8)
10981__ST4Q_LANE_FUNC (uint16x8x4_t, uint16_t, v8hi, hi, u16)
10982__ST4Q_LANE_FUNC (uint32x4x4_t, uint32_t, v4si, si, u32)
10983__ST4Q_LANE_FUNC (uint64x2x4_t, uint64_t, v2di, di, u64)
91bd4114 10984
a063e204
TC
10985__extension__ extern __inline int64_t
10986__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 10987vaddlv_s32 (int32x2_t __a)
91bd4114 10988{
9a3afc35
KT
10989 int64_t __result;
10990 __asm__ ("saddlp %0.1d, %1.2s" : "=w"(__result) : "w"(__a) : );
10991 return __result;
91bd4114
JG
10992}
10993
a063e204
TC
10994__extension__ extern __inline uint64_t
10995__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 10996vaddlv_u32 (uint32x2_t __a)
91bd4114 10997{
9a3afc35
KT
10998 uint64_t __result;
10999 __asm__ ("uaddlp %0.1d, %1.2s" : "=w"(__result) : "w"(__a) : );
11000 return __result;
91bd4114
JG
11001}
11002
a063e204
TC
11003__extension__ extern __inline int16x4_t
11004__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11005vqdmulh_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __c)
11006{
11007 return __builtin_aarch64_sqdmulh_laneqv4hi (__a, __b, __c);
11008}
11009
a063e204
TC
11010__extension__ extern __inline int32x2_t
11011__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11012vqdmulh_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __c)
11013{
11014 return __builtin_aarch64_sqdmulh_laneqv2si (__a, __b, __c);
11015}
11016
a063e204
TC
11017__extension__ extern __inline int16x8_t
11018__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11019vqdmulhq_laneq_s16 (int16x8_t __a, int16x8_t __b, const int __c)
11020{
11021 return __builtin_aarch64_sqdmulh_laneqv8hi (__a, __b, __c);
11022}
11023
a063e204
TC
11024__extension__ extern __inline int32x4_t
11025__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11026vqdmulhq_laneq_s32 (int32x4_t __a, int32x4_t __b, const int __c)
11027{
11028 return __builtin_aarch64_sqdmulh_laneqv4si (__a, __b, __c);
11029}
11030
a063e204
TC
11031__extension__ extern __inline int16x4_t
11032__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11033vqrdmulh_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __c)
11034{
11035 return __builtin_aarch64_sqrdmulh_laneqv4hi (__a, __b, __c);
11036}
11037
a063e204
TC
11038__extension__ extern __inline int32x2_t
11039__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11040vqrdmulh_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __c)
11041{
11042 return __builtin_aarch64_sqrdmulh_laneqv2si (__a, __b, __c);
11043}
11044
a063e204
TC
11045__extension__ extern __inline int16x8_t
11046__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11047vqrdmulhq_laneq_s16 (int16x8_t __a, int16x8_t __b, const int __c)
11048{
11049 return __builtin_aarch64_sqrdmulh_laneqv8hi (__a, __b, __c);
11050}
11051
a063e204
TC
11052__extension__ extern __inline int32x4_t
11053__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11054vqrdmulhq_laneq_s32 (int32x4_t __a, int32x4_t __b, const int __c)
11055{
11056 return __builtin_aarch64_sqrdmulh_laneqv4si (__a, __b, __c);
11057}
11058
11059/* Table intrinsics. */
11060
a063e204
TC
11061__extension__ extern __inline poly8x8_t
11062__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11063vqtbl1_p8 (poly8x16_t __a, uint8x8_t __b)
91bd4114 11064{
9a3afc35 11065 poly8x8_t __result;
91bd4114 11066 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
9a3afc35
KT
11067 : "=w"(__result)
11068 : "w"(__a), "w"(__b)
91bd4114 11069 : /* No clobbers */);
9a3afc35 11070 return __result;
91bd4114
JG
11071}
11072
a063e204
TC
11073__extension__ extern __inline int8x8_t
11074__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11075vqtbl1_s8 (int8x16_t __a, uint8x8_t __b)
91bd4114 11076{
9a3afc35 11077 int8x8_t __result;
91bd4114 11078 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
9a3afc35
KT
11079 : "=w"(__result)
11080 : "w"(__a), "w"(__b)
91bd4114 11081 : /* No clobbers */);
9a3afc35 11082 return __result;
91bd4114
JG
11083}
11084
a063e204
TC
11085__extension__ extern __inline uint8x8_t
11086__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11087vqtbl1_u8 (uint8x16_t __a, uint8x8_t __b)
91bd4114 11088{
9a3afc35 11089 uint8x8_t __result;
91bd4114 11090 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
9a3afc35
KT
11091 : "=w"(__result)
11092 : "w"(__a), "w"(__b)
91bd4114 11093 : /* No clobbers */);
9a3afc35 11094 return __result;
91bd4114
JG
11095}
11096
a063e204
TC
11097__extension__ extern __inline poly8x16_t
11098__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11099vqtbl1q_p8 (poly8x16_t __a, uint8x16_t __b)
91bd4114 11100{
9a3afc35 11101 poly8x16_t __result;
91bd4114 11102 __asm__ ("tbl %0.16b, {%1.16b}, %2.16b"
9a3afc35
KT
11103 : "=w"(__result)
11104 : "w"(__a), "w"(__b)
91bd4114 11105 : /* No clobbers */);
9a3afc35 11106 return __result;
91bd4114
JG
11107}
11108
a063e204
TC
11109__extension__ extern __inline int8x16_t
11110__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11111vqtbl1q_s8 (int8x16_t __a, uint8x16_t __b)
91bd4114 11112{
9a3afc35 11113 int8x16_t __result;
91bd4114 11114 __asm__ ("tbl %0.16b, {%1.16b}, %2.16b"
9a3afc35
KT
11115 : "=w"(__result)
11116 : "w"(__a), "w"(__b)
91bd4114 11117 : /* No clobbers */);
9a3afc35 11118 return __result;
91bd4114
JG
11119}
11120
a063e204
TC
11121__extension__ extern __inline uint8x16_t
11122__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11123vqtbl1q_u8 (uint8x16_t __a, uint8x16_t __b)
91bd4114 11124{
9a3afc35 11125 uint8x16_t __result;
91bd4114 11126 __asm__ ("tbl %0.16b, {%1.16b}, %2.16b"
9a3afc35
KT
11127 : "=w"(__result)
11128 : "w"(__a), "w"(__b)
91bd4114 11129 : /* No clobbers */);
9a3afc35 11130 return __result;
91bd4114
JG
11131}
11132
a063e204
TC
11133__extension__ extern __inline int8x8_t
11134__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11135vqtbx1_s8 (int8x8_t __r, int8x16_t __tab, uint8x8_t __idx)
91bd4114 11136{
9a3afc35 11137 int8x8_t __result = __r;
91bd4114 11138 __asm__ ("tbx %0.8b,{%1.16b},%2.8b"
9a3afc35
KT
11139 : "+w"(__result)
11140 : "w"(__tab), "w"(__idx)
91bd4114 11141 : /* No clobbers */);
9a3afc35 11142 return __result;
91bd4114
JG
11143}
11144
a063e204
TC
11145__extension__ extern __inline uint8x8_t
11146__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11147vqtbx1_u8 (uint8x8_t __r, uint8x16_t __tab, uint8x8_t __idx)
91bd4114 11148{
9a3afc35 11149 uint8x8_t __result = __r;
91bd4114 11150 __asm__ ("tbx %0.8b,{%1.16b},%2.8b"
9a3afc35
KT
11151 : "+w"(__result)
11152 : "w"(__tab), "w"(__idx)
91bd4114 11153 : /* No clobbers */);
9a3afc35 11154 return __result;
91bd4114
JG
11155}
11156
a063e204
TC
11157__extension__ extern __inline poly8x8_t
11158__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11159vqtbx1_p8 (poly8x8_t __r, poly8x16_t __tab, uint8x8_t __idx)
91bd4114 11160{
9a3afc35 11161 poly8x8_t __result = __r;
91bd4114 11162 __asm__ ("tbx %0.8b,{%1.16b},%2.8b"
9a3afc35
KT
11163 : "+w"(__result)
11164 : "w"(__tab), "w"(__idx)
91bd4114 11165 : /* No clobbers */);
9a3afc35 11166 return __result;
91bd4114
JG
11167}
11168
a063e204
TC
11169__extension__ extern __inline int8x16_t
11170__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11171vqtbx1q_s8 (int8x16_t __r, int8x16_t __tab, uint8x16_t __idx)
91bd4114 11172{
9a3afc35 11173 int8x16_t __result = __r;
91bd4114 11174 __asm__ ("tbx %0.16b,{%1.16b},%2.16b"
9a3afc35
KT
11175 : "+w"(__result)
11176 : "w"(__tab), "w"(__idx)
91bd4114 11177 : /* No clobbers */);
9a3afc35 11178 return __result;
91bd4114
JG
11179}
11180
a063e204
TC
11181__extension__ extern __inline uint8x16_t
11182__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11183vqtbx1q_u8 (uint8x16_t __r, uint8x16_t __tab, uint8x16_t __idx)
91bd4114 11184{
9a3afc35 11185 uint8x16_t __result = __r;
91bd4114 11186 __asm__ ("tbx %0.16b,{%1.16b},%2.16b"
9a3afc35
KT
11187 : "+w"(__result)
11188 : "w"(__tab), "w"(__idx)
91bd4114 11189 : /* No clobbers */);
9a3afc35 11190 return __result;
91bd4114
JG
11191}
11192
a063e204
TC
11193__extension__ extern __inline poly8x16_t
11194__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11195vqtbx1q_p8 (poly8x16_t __r, poly8x16_t __tab, uint8x16_t __idx)
91bd4114 11196{
9a3afc35 11197 poly8x16_t __result = __r;
91bd4114 11198 __asm__ ("tbx %0.16b,{%1.16b},%2.16b"
9a3afc35
KT
11199 : "+w"(__result)
11200 : "w"(__tab), "w"(__idx)
91bd4114 11201 : /* No clobbers */);
9a3afc35 11202 return __result;
91bd4114
JG
11203}
11204
91bd4114
JG
11205/* V7 legacy table intrinsics. */
11206
a063e204
TC
11207__extension__ extern __inline int8x8_t
11208__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11209vtbl1_s8 (int8x8_t __tab, int8x8_t __idx)
91bd4114 11210{
9a3afc35
KT
11211 int8x8_t __result;
11212 int8x16_t __temp = vcombine_s8 (__tab, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
91bd4114 11213 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
9a3afc35
KT
11214 : "=w"(__result)
11215 : "w"(__temp), "w"(__idx)
91bd4114 11216 : /* No clobbers */);
9a3afc35 11217 return __result;
91bd4114
JG
11218}
11219
a063e204
TC
11220__extension__ extern __inline uint8x8_t
11221__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11222vtbl1_u8 (uint8x8_t __tab, uint8x8_t __idx)
91bd4114 11223{
9a3afc35
KT
11224 uint8x8_t __result;
11225 uint8x16_t __temp = vcombine_u8 (__tab, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
91bd4114 11226 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
9a3afc35
KT
11227 : "=w"(__result)
11228 : "w"(__temp), "w"(__idx)
91bd4114 11229 : /* No clobbers */);
9a3afc35 11230 return __result;
91bd4114
JG
11231}
11232
a063e204
TC
11233__extension__ extern __inline poly8x8_t
11234__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11235vtbl1_p8 (poly8x8_t __tab, uint8x8_t __idx)
91bd4114 11236{
9a3afc35
KT
11237 poly8x8_t __result;
11238 poly8x16_t __temp = vcombine_p8 (__tab, vcreate_p8 (__AARCH64_UINT64_C (0x0)));
91bd4114 11239 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
9a3afc35
KT
11240 : "=w"(__result)
11241 : "w"(__temp), "w"(__idx)
91bd4114 11242 : /* No clobbers */);
9a3afc35 11243 return __result;
91bd4114
JG
11244}
11245
a063e204
TC
11246__extension__ extern __inline int8x8_t
11247__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11248vtbl2_s8 (int8x8x2_t __tab, int8x8_t __idx)
91bd4114 11249{
9a3afc35
KT
11250 int8x8_t __result;
11251 int8x16_t __temp = vcombine_s8 (__tab.val[0], __tab.val[1]);
91bd4114 11252 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
9a3afc35
KT
11253 : "=w"(__result)
11254 : "w"(__temp), "w"(__idx)
91bd4114 11255 : /* No clobbers */);
9a3afc35 11256 return __result;
91bd4114
JG
11257}
11258
a063e204
TC
11259__extension__ extern __inline uint8x8_t
11260__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11261vtbl2_u8 (uint8x8x2_t __tab, uint8x8_t __idx)
91bd4114 11262{
9a3afc35
KT
11263 uint8x8_t __result;
11264 uint8x16_t __temp = vcombine_u8 (__tab.val[0], __tab.val[1]);
91bd4114 11265 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
9a3afc35
KT
11266 : "=w"(__result)
11267 : "w"(__temp), "w"(__idx)
91bd4114 11268 : /* No clobbers */);
9a3afc35 11269 return __result;
91bd4114
JG
11270}
11271
a063e204
TC
11272__extension__ extern __inline poly8x8_t
11273__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11274vtbl2_p8 (poly8x8x2_t __tab, uint8x8_t __idx)
91bd4114 11275{
9a3afc35
KT
11276 poly8x8_t __result;
11277 poly8x16_t __temp = vcombine_p8 (__tab.val[0], __tab.val[1]);
91bd4114 11278 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
9a3afc35
KT
11279 : "=w"(__result)
11280 : "w"(__temp), "w"(__idx)
91bd4114 11281 : /* No clobbers */);
9a3afc35 11282 return __result;
91bd4114
JG
11283}
11284
a063e204
TC
11285__extension__ extern __inline int8x8_t
11286__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11287vtbl3_s8 (int8x8x3_t __tab, int8x8_t __idx)
91bd4114 11288{
9a3afc35
KT
11289 int8x8_t __result;
11290 int8x16x2_t __temp;
9371aecc 11291 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
11292 __temp.val[0] = vcombine_s8 (__tab.val[0], __tab.val[1]);
11293 __temp.val[1] = vcombine_s8 (__tab.val[2], vcreate_s8 (__AARCH64_UINT64_C (0x0)));
9371aecc 11294 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35 11295 (int8x16_t) __temp.val[0], 0);
9371aecc 11296 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35
KT
11297 (int8x16_t) __temp.val[1], 1);
11298 __result = __builtin_aarch64_tbl3v8qi (__o, __idx);
11299 return __result;
91bd4114
JG
11300}
11301
a063e204
TC
11302__extension__ extern __inline uint8x8_t
11303__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11304vtbl3_u8 (uint8x8x3_t __tab, uint8x8_t __idx)
91bd4114 11305{
9a3afc35
KT
11306 uint8x8_t __result;
11307 uint8x16x2_t __temp;
9371aecc 11308 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
11309 __temp.val[0] = vcombine_u8 (__tab.val[0], __tab.val[1]);
11310 __temp.val[1] = vcombine_u8 (__tab.val[2], vcreate_u8 (__AARCH64_UINT64_C (0x0)));
9371aecc 11311 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35 11312 (int8x16_t) __temp.val[0], 0);
9371aecc 11313 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35
KT
11314 (int8x16_t) __temp.val[1], 1);
11315 __result = (uint8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)__idx);
11316 return __result;
91bd4114
JG
11317}
11318
a063e204
TC
11319__extension__ extern __inline poly8x8_t
11320__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11321vtbl3_p8 (poly8x8x3_t __tab, uint8x8_t __idx)
91bd4114 11322{
9a3afc35
KT
11323 poly8x8_t __result;
11324 poly8x16x2_t __temp;
9371aecc 11325 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
11326 __temp.val[0] = vcombine_p8 (__tab.val[0], __tab.val[1]);
11327 __temp.val[1] = vcombine_p8 (__tab.val[2], vcreate_p8 (__AARCH64_UINT64_C (0x0)));
9371aecc 11328 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35 11329 (int8x16_t) __temp.val[0], 0);
9371aecc 11330 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35
KT
11331 (int8x16_t) __temp.val[1], 1);
11332 __result = (poly8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)__idx);
11333 return __result;
91bd4114
JG
11334}
11335
a063e204
TC
11336__extension__ extern __inline int8x8_t
11337__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11338vtbl4_s8 (int8x8x4_t __tab, int8x8_t __idx)
91bd4114 11339{
9a3afc35
KT
11340 int8x8_t __result;
11341 int8x16x2_t __temp;
9371aecc 11342 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
11343 __temp.val[0] = vcombine_s8 (__tab.val[0], __tab.val[1]);
11344 __temp.val[1] = vcombine_s8 (__tab.val[2], __tab.val[3]);
9371aecc 11345 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35 11346 (int8x16_t) __temp.val[0], 0);
9371aecc 11347 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35
KT
11348 (int8x16_t) __temp.val[1], 1);
11349 __result = __builtin_aarch64_tbl3v8qi (__o, __idx);
11350 return __result;
91bd4114
JG
11351}
11352
a063e204
TC
11353__extension__ extern __inline uint8x8_t
11354__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11355vtbl4_u8 (uint8x8x4_t __tab, uint8x8_t __idx)
91bd4114 11356{
9a3afc35
KT
11357 uint8x8_t __result;
11358 uint8x16x2_t __temp;
9371aecc 11359 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
11360 __temp.val[0] = vcombine_u8 (__tab.val[0], __tab.val[1]);
11361 __temp.val[1] = vcombine_u8 (__tab.val[2], __tab.val[3]);
9371aecc 11362 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35 11363 (int8x16_t) __temp.val[0], 0);
9371aecc 11364 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35
KT
11365 (int8x16_t) __temp.val[1], 1);
11366 __result = (uint8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)__idx);
11367 return __result;
91bd4114
JG
11368}
11369
a063e204
TC
11370__extension__ extern __inline poly8x8_t
11371__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11372vtbl4_p8 (poly8x8x4_t __tab, uint8x8_t __idx)
91bd4114 11373{
9a3afc35
KT
11374 poly8x8_t __result;
11375 poly8x16x2_t __temp;
9371aecc 11376 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
11377 __temp.val[0] = vcombine_p8 (__tab.val[0], __tab.val[1]);
11378 __temp.val[1] = vcombine_p8 (__tab.val[2], __tab.val[3]);
9371aecc 11379 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35 11380 (int8x16_t) __temp.val[0], 0);
9371aecc 11381 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35
KT
11382 (int8x16_t) __temp.val[1], 1);
11383 __result = (poly8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)__idx);
11384 return __result;
91bd4114
JG
11385}
11386
a063e204
TC
11387__extension__ extern __inline int8x8_t
11388__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11389vtbx2_s8 (int8x8_t __r, int8x8x2_t __tab, int8x8_t __idx)
91bd4114 11390{
9a3afc35
KT
11391 int8x8_t __result = __r;
11392 int8x16_t __temp = vcombine_s8 (__tab.val[0], __tab.val[1]);
91bd4114 11393 __asm__ ("tbx %0.8b, {%1.16b}, %2.8b"
9a3afc35
KT
11394 : "+w"(__result)
11395 : "w"(__temp), "w"(__idx)
91bd4114 11396 : /* No clobbers */);
9a3afc35 11397 return __result;
91bd4114
JG
11398}
11399
a063e204
TC
11400__extension__ extern __inline uint8x8_t
11401__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11402vtbx2_u8 (uint8x8_t __r, uint8x8x2_t __tab, uint8x8_t __idx)
91bd4114 11403{
9a3afc35
KT
11404 uint8x8_t __result = __r;
11405 uint8x16_t __temp = vcombine_u8 (__tab.val[0], __tab.val[1]);
91bd4114 11406 __asm__ ("tbx %0.8b, {%1.16b}, %2.8b"
9a3afc35
KT
11407 : "+w"(__result)
11408 : "w"(__temp), "w"(__idx)
91bd4114 11409 : /* No clobbers */);
9a3afc35 11410 return __result;
91bd4114
JG
11411}
11412
a063e204
TC
11413__extension__ extern __inline poly8x8_t
11414__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 11415vtbx2_p8 (poly8x8_t __r, poly8x8x2_t __tab, uint8x8_t __idx)
91bd4114 11416{
9a3afc35
KT
11417 poly8x8_t __result = __r;
11418 poly8x16_t __temp = vcombine_p8 (__tab.val[0], __tab.val[1]);
91bd4114 11419 __asm__ ("tbx %0.8b, {%1.16b}, %2.8b"
9a3afc35
KT
11420 : "+w"(__result)
11421 : "w"(__temp), "w"(__idx)
91bd4114 11422 : /* No clobbers */);
9a3afc35 11423 return __result;
91bd4114
JG
11424}
11425
91bd4114 11426/* End of temporary inline asm. */
43e9d192 11427
91bd4114 11428/* Start of optimal implementations in approved order. */
43e9d192 11429
a672fa12
JW
11430/* vabd. */
11431
a063e204
TC
11432__extension__ extern __inline float32_t
11433__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a672fa12
JW
11434vabds_f32 (float32_t __a, float32_t __b)
11435{
11436 return __builtin_aarch64_fabdsf (__a, __b);
11437}
11438
a063e204
TC
11439__extension__ extern __inline float64_t
11440__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a672fa12
JW
11441vabdd_f64 (float64_t __a, float64_t __b)
11442{
11443 return __builtin_aarch64_fabddf (__a, __b);
11444}
11445
a063e204
TC
11446__extension__ extern __inline float32x2_t
11447__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a672fa12
JW
11448vabd_f32 (float32x2_t __a, float32x2_t __b)
11449{
11450 return __builtin_aarch64_fabdv2sf (__a, __b);
11451}
11452
a063e204
TC
11453__extension__ extern __inline float64x1_t
11454__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a672fa12
JW
11455vabd_f64 (float64x1_t __a, float64x1_t __b)
11456{
11457 return (float64x1_t) {vabdd_f64 (vget_lane_f64 (__a, 0),
11458 vget_lane_f64 (__b, 0))};
11459}
11460
a063e204
TC
11461__extension__ extern __inline float32x4_t
11462__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a672fa12
JW
11463vabdq_f32 (float32x4_t __a, float32x4_t __b)
11464{
11465 return __builtin_aarch64_fabdv4sf (__a, __b);
11466}
11467
a063e204
TC
11468__extension__ extern __inline float64x2_t
11469__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a672fa12
JW
11470vabdq_f64 (float64x2_t __a, float64x2_t __b)
11471{
11472 return __builtin_aarch64_fabdv2df (__a, __b);
11473}
11474
91bd4114 11475/* vabs */
43e9d192 11476
a063e204
TC
11477__extension__ extern __inline float32x2_t
11478__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11479vabs_f32 (float32x2_t __a)
11480{
11481 return __builtin_aarch64_absv2sf (__a);
11482}
43e9d192 11483
a063e204
TC
11484__extension__ extern __inline float64x1_t
11485__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11486vabs_f64 (float64x1_t __a)
11487{
c6a29a09 11488 return (float64x1_t) {__builtin_fabs (__a[0])};
91bd4114 11489}
47934dc4 11490
a063e204
TC
11491__extension__ extern __inline int8x8_t
11492__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11493vabs_s8 (int8x8_t __a)
11494{
11495 return __builtin_aarch64_absv8qi (__a);
11496}
47934dc4 11497
a063e204
TC
11498__extension__ extern __inline int16x4_t
11499__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11500vabs_s16 (int16x4_t __a)
11501{
11502 return __builtin_aarch64_absv4hi (__a);
11503}
47934dc4 11504
a063e204
TC
11505__extension__ extern __inline int32x2_t
11506__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11507vabs_s32 (int32x2_t __a)
11508{
11509 return __builtin_aarch64_absv2si (__a);
11510}
47934dc4 11511
a063e204
TC
11512__extension__ extern __inline int64x1_t
11513__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11514vabs_s64 (int64x1_t __a)
47934dc4 11515{
096c59be 11516 return (int64x1_t) {__builtin_aarch64_absdi (__a[0])};
47934dc4
JG
11517}
11518
a063e204
TC
11519__extension__ extern __inline float32x4_t
11520__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11521vabsq_f32 (float32x4_t __a)
47934dc4 11522{
91bd4114
JG
11523 return __builtin_aarch64_absv4sf (__a);
11524}
11525
a063e204
TC
11526__extension__ extern __inline float64x2_t
11527__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11528vabsq_f64 (float64x2_t __a)
11529{
11530 return __builtin_aarch64_absv2df (__a);
11531}
11532
a063e204
TC
11533__extension__ extern __inline int8x16_t
11534__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11535vabsq_s8 (int8x16_t __a)
11536{
11537 return __builtin_aarch64_absv16qi (__a);
11538}
11539
a063e204
TC
11540__extension__ extern __inline int16x8_t
11541__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11542vabsq_s16 (int16x8_t __a)
11543{
11544 return __builtin_aarch64_absv8hi (__a);
11545}
11546
a063e204
TC
11547__extension__ extern __inline int32x4_t
11548__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11549vabsq_s32 (int32x4_t __a)
11550{
11551 return __builtin_aarch64_absv4si (__a);
11552}
11553
a063e204
TC
11554__extension__ extern __inline int64x2_t
11555__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11556vabsq_s64 (int64x2_t __a)
11557{
11558 return __builtin_aarch64_absv2di (__a);
47934dc4
JG
11559}
11560
66da5b53
VL
11561/* Try to avoid moving between integer and vector registers.
11562 For why the cast to unsigned is needed check the vnegd_s64 intrinsic.
11563 There is a testcase related to this issue:
11564 gcc.target/aarch64/vabsd_s64.c. */
11565
11566__extension__ extern __inline int64_t
11567__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
11568vabsd_s64 (int64_t __a)
11569{
11570 return __a < 0 ? - (uint64_t) __a : __a;
11571}
11572
91bd4114
JG
11573/* vadd */
11574
a063e204
TC
11575__extension__ extern __inline int64_t
11576__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 11577vaddd_s64 (int64_t __a, int64_t __b)
47934dc4 11578{
91bd4114 11579 return __a + __b;
47934dc4
JG
11580}
11581
a063e204
TC
11582__extension__ extern __inline uint64_t
11583__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 11584vaddd_u64 (uint64_t __a, uint64_t __b)
47934dc4 11585{
91bd4114 11586 return __a + __b;
47934dc4
JG
11587}
11588
91bd4114
JG
11589/* vaddv */
11590
a063e204
TC
11591__extension__ extern __inline int8_t
11592__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11593vaddv_s8 (int8x8_t __a)
11594{
f5156c3e 11595 return __builtin_aarch64_reduc_plus_scal_v8qi (__a);
91bd4114
JG
11596}
11597
a063e204
TC
11598__extension__ extern __inline int16_t
11599__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
11600vaddv_s16 (int16x4_t __a)
11601{
f5156c3e 11602 return __builtin_aarch64_reduc_plus_scal_v4hi (__a);
91bd4114
JG
11603}
11604
a063e204
TC
11605__extension__ extern __inline int32_t
11606__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11607vaddv_s32 (int32x2_t __a)
47934dc4 11608{
f5156c3e 11609 return __builtin_aarch64_reduc_plus_scal_v2si (__a);
47934dc4
JG
11610}
11611
a063e204
TC
11612__extension__ extern __inline uint8_t
11613__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11614vaddv_u8 (uint8x8_t __a)
47934dc4 11615{
f5156c3e 11616 return (uint8_t) __builtin_aarch64_reduc_plus_scal_v8qi ((int8x8_t) __a);
47934dc4
JG
11617}
11618
a063e204
TC
11619__extension__ extern __inline uint16_t
11620__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11621vaddv_u16 (uint16x4_t __a)
47934dc4 11622{
f5156c3e 11623 return (uint16_t) __builtin_aarch64_reduc_plus_scal_v4hi ((int16x4_t) __a);
47934dc4
JG
11624}
11625
a063e204
TC
11626__extension__ extern __inline uint32_t
11627__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11628vaddv_u32 (uint32x2_t __a)
47934dc4 11629{
f5156c3e 11630 return (int32_t) __builtin_aarch64_reduc_plus_scal_v2si ((int32x2_t) __a);
47934dc4
JG
11631}
11632
a063e204
TC
11633__extension__ extern __inline int8_t
11634__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11635vaddvq_s8 (int8x16_t __a)
47934dc4 11636{
f5156c3e 11637 return __builtin_aarch64_reduc_plus_scal_v16qi (__a);
47934dc4
JG
11638}
11639
a063e204
TC
11640__extension__ extern __inline int16_t
11641__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11642vaddvq_s16 (int16x8_t __a)
47934dc4 11643{
f5156c3e 11644 return __builtin_aarch64_reduc_plus_scal_v8hi (__a);
47934dc4
JG
11645}
11646
a063e204
TC
11647__extension__ extern __inline int32_t
11648__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11649vaddvq_s32 (int32x4_t __a)
47934dc4 11650{
f5156c3e 11651 return __builtin_aarch64_reduc_plus_scal_v4si (__a);
47934dc4
JG
11652}
11653
a063e204
TC
11654__extension__ extern __inline int64_t
11655__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11656vaddvq_s64 (int64x2_t __a)
47934dc4 11657{
f5156c3e 11658 return __builtin_aarch64_reduc_plus_scal_v2di (__a);
47934dc4
JG
11659}
11660
a063e204
TC
11661__extension__ extern __inline uint8_t
11662__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11663vaddvq_u8 (uint8x16_t __a)
47934dc4 11664{
f5156c3e 11665 return (uint8_t) __builtin_aarch64_reduc_plus_scal_v16qi ((int8x16_t) __a);
47934dc4
JG
11666}
11667
a063e204
TC
11668__extension__ extern __inline uint16_t
11669__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11670vaddvq_u16 (uint16x8_t __a)
47934dc4 11671{
f5156c3e 11672 return (uint16_t) __builtin_aarch64_reduc_plus_scal_v8hi ((int16x8_t) __a);
47934dc4
JG
11673}
11674
a063e204
TC
11675__extension__ extern __inline uint32_t
11676__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11677vaddvq_u32 (uint32x4_t __a)
47934dc4 11678{
f5156c3e 11679 return (uint32_t) __builtin_aarch64_reduc_plus_scal_v4si ((int32x4_t) __a);
47934dc4
JG
11680}
11681
a063e204
TC
11682__extension__ extern __inline uint64_t
11683__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11684vaddvq_u64 (uint64x2_t __a)
47934dc4 11685{
f5156c3e 11686 return (uint64_t) __builtin_aarch64_reduc_plus_scal_v2di ((int64x2_t) __a);
47934dc4
JG
11687}
11688
a063e204
TC
11689__extension__ extern __inline float32_t
11690__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11691vaddv_f32 (float32x2_t __a)
47934dc4 11692{
f5156c3e 11693 return __builtin_aarch64_reduc_plus_scal_v2sf (__a);
47934dc4
JG
11694}
11695
a063e204
TC
11696__extension__ extern __inline float32_t
11697__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11698vaddvq_f32 (float32x4_t __a)
47934dc4 11699{
f5156c3e 11700 return __builtin_aarch64_reduc_plus_scal_v4sf (__a);
47934dc4
JG
11701}
11702
a063e204
TC
11703__extension__ extern __inline float64_t
11704__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 11705vaddvq_f64 (float64x2_t __a)
47934dc4 11706{
f5156c3e 11707 return __builtin_aarch64_reduc_plus_scal_v2df (__a);
47934dc4
JG
11708}
11709
46e778c4
JG
11710/* vbsl */
11711
a063e204
TC
11712__extension__ extern __inline float16x4_t
11713__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
11714vbsl_f16 (uint16x4_t __a, float16x4_t __b, float16x4_t __c)
11715{
11716 return __builtin_aarch64_simd_bslv4hf_suss (__a, __b, __c);
11717}
11718
a063e204
TC
11719__extension__ extern __inline float32x2_t
11720__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11721vbsl_f32 (uint32x2_t __a, float32x2_t __b, float32x2_t __c)
11722{
11723 return __builtin_aarch64_simd_bslv2sf_suss (__a, __b, __c);
11724}
11725
a063e204
TC
11726__extension__ extern __inline float64x1_t
11727__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0ce0459e
KT
11728vbsl_f64 (uint64x1_t __a, float64x1_t __b, float64x1_t __c)
11729{
11730 return (float64x1_t)
11731 { __builtin_aarch64_simd_bsldf_suss (__a[0], __b[0], __c[0]) };
11732}
11733
a063e204
TC
11734__extension__ extern __inline poly8x8_t
11735__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11736vbsl_p8 (uint8x8_t __a, poly8x8_t __b, poly8x8_t __c)
11737{
11738 return __builtin_aarch64_simd_bslv8qi_pupp (__a, __b, __c);
11739}
11740
a063e204
TC
11741__extension__ extern __inline poly16x4_t
11742__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11743vbsl_p16 (uint16x4_t __a, poly16x4_t __b, poly16x4_t __c)
11744{
11745 return __builtin_aarch64_simd_bslv4hi_pupp (__a, __b, __c);
11746}
6383ff9f
TC
11747__extension__ extern __inline poly64x1_t
11748__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
11749vbsl_p64 (uint64x1_t __a, poly64x1_t __b, poly64x1_t __c)
11750{
11751 return (poly64x1_t)
11752 {__builtin_aarch64_simd_bsldi_pupp (__a[0], __b[0], __c[0])};
11753}
46e778c4 11754
a063e204
TC
11755__extension__ extern __inline int8x8_t
11756__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11757vbsl_s8 (uint8x8_t __a, int8x8_t __b, int8x8_t __c)
11758{
11759 return __builtin_aarch64_simd_bslv8qi_suss (__a, __b, __c);
11760}
11761
a063e204
TC
11762__extension__ extern __inline int16x4_t
11763__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11764vbsl_s16 (uint16x4_t __a, int16x4_t __b, int16x4_t __c)
11765{
11766 return __builtin_aarch64_simd_bslv4hi_suss (__a, __b, __c);
11767}
11768
a063e204
TC
11769__extension__ extern __inline int32x2_t
11770__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11771vbsl_s32 (uint32x2_t __a, int32x2_t __b, int32x2_t __c)
11772{
11773 return __builtin_aarch64_simd_bslv2si_suss (__a, __b, __c);
11774}
11775
a063e204
TC
11776__extension__ extern __inline int64x1_t
11777__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11778vbsl_s64 (uint64x1_t __a, int64x1_t __b, int64x1_t __c)
11779{
096c59be
AL
11780 return (int64x1_t)
11781 {__builtin_aarch64_simd_bsldi_suss (__a[0], __b[0], __c[0])};
46e778c4
JG
11782}
11783
a063e204
TC
11784__extension__ extern __inline uint8x8_t
11785__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11786vbsl_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
11787{
11788 return __builtin_aarch64_simd_bslv8qi_uuuu (__a, __b, __c);
11789}
11790
a063e204
TC
11791__extension__ extern __inline uint16x4_t
11792__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11793vbsl_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
11794{
11795 return __builtin_aarch64_simd_bslv4hi_uuuu (__a, __b, __c);
11796}
11797
a063e204
TC
11798__extension__ extern __inline uint32x2_t
11799__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11800vbsl_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
11801{
11802 return __builtin_aarch64_simd_bslv2si_uuuu (__a, __b, __c);
11803}
11804
a063e204
TC
11805__extension__ extern __inline uint64x1_t
11806__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11807vbsl_u64 (uint64x1_t __a, uint64x1_t __b, uint64x1_t __c)
11808{
096c59be
AL
11809 return (uint64x1_t)
11810 {__builtin_aarch64_simd_bsldi_uuuu (__a[0], __b[0], __c[0])};
46e778c4
JG
11811}
11812
a063e204
TC
11813__extension__ extern __inline float16x8_t
11814__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
11815vbslq_f16 (uint16x8_t __a, float16x8_t __b, float16x8_t __c)
11816{
11817 return __builtin_aarch64_simd_bslv8hf_suss (__a, __b, __c);
11818}
11819
a063e204
TC
11820__extension__ extern __inline float32x4_t
11821__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11822vbslq_f32 (uint32x4_t __a, float32x4_t __b, float32x4_t __c)
11823{
11824 return __builtin_aarch64_simd_bslv4sf_suss (__a, __b, __c);
11825}
11826
a063e204
TC
11827__extension__ extern __inline float64x2_t
11828__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11829vbslq_f64 (uint64x2_t __a, float64x2_t __b, float64x2_t __c)
11830{
11831 return __builtin_aarch64_simd_bslv2df_suss (__a, __b, __c);
11832}
11833
a063e204
TC
11834__extension__ extern __inline poly8x16_t
11835__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11836vbslq_p8 (uint8x16_t __a, poly8x16_t __b, poly8x16_t __c)
11837{
11838 return __builtin_aarch64_simd_bslv16qi_pupp (__a, __b, __c);
11839}
11840
a063e204
TC
11841__extension__ extern __inline poly16x8_t
11842__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11843vbslq_p16 (uint16x8_t __a, poly16x8_t __b, poly16x8_t __c)
11844{
11845 return __builtin_aarch64_simd_bslv8hi_pupp (__a, __b, __c);
11846}
11847
a063e204
TC
11848__extension__ extern __inline int8x16_t
11849__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11850vbslq_s8 (uint8x16_t __a, int8x16_t __b, int8x16_t __c)
11851{
11852 return __builtin_aarch64_simd_bslv16qi_suss (__a, __b, __c);
11853}
11854
a063e204
TC
11855__extension__ extern __inline int16x8_t
11856__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11857vbslq_s16 (uint16x8_t __a, int16x8_t __b, int16x8_t __c)
11858{
11859 return __builtin_aarch64_simd_bslv8hi_suss (__a, __b, __c);
11860}
11861
6383ff9f
TC
11862__extension__ extern __inline poly64x2_t
11863__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
11864vbslq_p64 (uint64x2_t __a, poly64x2_t __b, poly64x2_t __c)
11865{
11866 return __builtin_aarch64_simd_bslv2di_pupp (__a, __b, __c);
11867}
11868
a063e204
TC
11869__extension__ extern __inline int32x4_t
11870__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11871vbslq_s32 (uint32x4_t __a, int32x4_t __b, int32x4_t __c)
11872{
11873 return __builtin_aarch64_simd_bslv4si_suss (__a, __b, __c);
11874}
11875
a063e204
TC
11876__extension__ extern __inline int64x2_t
11877__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11878vbslq_s64 (uint64x2_t __a, int64x2_t __b, int64x2_t __c)
11879{
11880 return __builtin_aarch64_simd_bslv2di_suss (__a, __b, __c);
11881}
11882
a063e204
TC
11883__extension__ extern __inline uint8x16_t
11884__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11885vbslq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
11886{
11887 return __builtin_aarch64_simd_bslv16qi_uuuu (__a, __b, __c);
11888}
11889
a063e204
TC
11890__extension__ extern __inline uint16x8_t
11891__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11892vbslq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
11893{
11894 return __builtin_aarch64_simd_bslv8hi_uuuu (__a, __b, __c);
11895}
11896
a063e204
TC
11897__extension__ extern __inline uint32x4_t
11898__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11899vbslq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
11900{
11901 return __builtin_aarch64_simd_bslv4si_uuuu (__a, __b, __c);
11902}
11903
a063e204
TC
11904__extension__ extern __inline uint64x2_t
11905__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
46e778c4
JG
11906vbslq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c)
11907{
11908 return __builtin_aarch64_simd_bslv2di_uuuu (__a, __b, __c);
11909}
11910
74bb9de4 11911/* ARMv8.1-A instrinsics. */
0c6110a1 11912#pragma GCC push_options
43f84f6c 11913#pragma GCC target ("+nothing+rdma")
0c6110a1 11914
a063e204
TC
11915__extension__ extern __inline int16x4_t
11916__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0c6110a1
MW
11917vqrdmlah_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
11918{
11919 return __builtin_aarch64_sqrdmlahv4hi (__a, __b, __c);
11920}
11921
a063e204
TC
11922__extension__ extern __inline int32x2_t
11923__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0c6110a1
MW
11924vqrdmlah_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
11925{
11926 return __builtin_aarch64_sqrdmlahv2si (__a, __b, __c);
11927}
11928
a063e204
TC
11929__extension__ extern __inline int16x8_t
11930__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0c6110a1
MW
11931vqrdmlahq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
11932{
11933 return __builtin_aarch64_sqrdmlahv8hi (__a, __b, __c);
11934}
11935
a063e204
TC
11936__extension__ extern __inline int32x4_t
11937__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0c6110a1
MW
11938vqrdmlahq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
11939{
11940 return __builtin_aarch64_sqrdmlahv4si (__a, __b, __c);
11941}
11942
a063e204
TC
11943__extension__ extern __inline int16x4_t
11944__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0c6110a1
MW
11945vqrdmlsh_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
11946{
11947 return __builtin_aarch64_sqrdmlshv4hi (__a, __b, __c);
11948}
11949
a063e204
TC
11950__extension__ extern __inline int32x2_t
11951__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0c6110a1
MW
11952vqrdmlsh_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
11953{
11954 return __builtin_aarch64_sqrdmlshv2si (__a, __b, __c);
11955}
11956
a063e204
TC
11957__extension__ extern __inline int16x8_t
11958__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0c6110a1
MW
11959vqrdmlshq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
11960{
11961 return __builtin_aarch64_sqrdmlshv8hi (__a, __b, __c);
11962}
11963
a063e204
TC
11964__extension__ extern __inline int32x4_t
11965__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0c6110a1
MW
11966vqrdmlshq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
11967{
11968 return __builtin_aarch64_sqrdmlshv4si (__a, __b, __c);
11969}
50469f75 11970
a063e204
TC
11971__extension__ extern __inline int16x4_t
11972__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
11973vqrdmlah_laneq_s16 (int16x4_t __a, int16x4_t __b, int16x8_t __c, const int __d)
11974{
11975 return __builtin_aarch64_sqrdmlah_laneqv4hi (__a, __b, __c, __d);
11976}
11977
a063e204
TC
11978__extension__ extern __inline int32x2_t
11979__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
11980vqrdmlah_laneq_s32 (int32x2_t __a, int32x2_t __b, int32x4_t __c, const int __d)
11981{
11982 return __builtin_aarch64_sqrdmlah_laneqv2si (__a, __b, __c, __d);
11983}
11984
a063e204
TC
11985__extension__ extern __inline int16x8_t
11986__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
11987vqrdmlahq_laneq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c, const int __d)
11988{
11989 return __builtin_aarch64_sqrdmlah_laneqv8hi (__a, __b, __c, __d);
11990}
11991
a063e204
TC
11992__extension__ extern __inline int32x4_t
11993__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
11994vqrdmlahq_laneq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c, const int __d)
11995{
11996 return __builtin_aarch64_sqrdmlah_laneqv4si (__a, __b, __c, __d);
11997}
11998
a063e204
TC
11999__extension__ extern __inline int16x4_t
12000__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12001vqrdmlsh_laneq_s16 (int16x4_t __a, int16x4_t __b, int16x8_t __c, const int __d)
12002{
12003 return __builtin_aarch64_sqrdmlsh_laneqv4hi (__a, __b, __c, __d);
12004}
12005
a063e204
TC
12006__extension__ extern __inline int32x2_t
12007__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12008vqrdmlsh_laneq_s32 (int32x2_t __a, int32x2_t __b, int32x4_t __c, const int __d)
12009{
12010 return __builtin_aarch64_sqrdmlsh_laneqv2si (__a, __b, __c, __d);
12011}
12012
a063e204
TC
12013__extension__ extern __inline int16x8_t
12014__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12015vqrdmlshq_laneq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c, const int __d)
12016{
12017 return __builtin_aarch64_sqrdmlsh_laneqv8hi (__a, __b, __c, __d);
12018}
12019
a063e204
TC
12020__extension__ extern __inline int32x4_t
12021__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12022vqrdmlshq_laneq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c, const int __d)
12023{
12024 return __builtin_aarch64_sqrdmlsh_laneqv4si (__a, __b, __c, __d);
12025}
12026
a063e204
TC
12027__extension__ extern __inline int16x4_t
12028__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12029vqrdmlah_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
12030{
12031 return __builtin_aarch64_sqrdmlah_lanev4hi (__a, __b, __c, __d);
12032}
12033
a063e204
TC
12034__extension__ extern __inline int32x2_t
12035__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12036vqrdmlah_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
12037{
12038 return __builtin_aarch64_sqrdmlah_lanev2si (__a, __b, __c, __d);
12039}
12040
a063e204
TC
12041__extension__ extern __inline int16x8_t
12042__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12043vqrdmlahq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d)
12044{
12045 return __builtin_aarch64_sqrdmlah_lanev8hi (__a, __b, __c, __d);
12046}
12047
a063e204
TC
12048__extension__ extern __inline int32x4_t
12049__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12050vqrdmlahq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d)
12051{
12052 return __builtin_aarch64_sqrdmlah_lanev4si (__a, __b, __c, __d);
12053}
12054
a063e204
TC
12055__extension__ extern __inline int16_t
12056__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12057vqrdmlahh_s16 (int16_t __a, int16_t __b, int16_t __c)
12058{
12059 return (int16_t) __builtin_aarch64_sqrdmlahhi (__a, __b, __c);
12060}
12061
a063e204
TC
12062__extension__ extern __inline int16_t
12063__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12064vqrdmlahh_lane_s16 (int16_t __a, int16_t __b, int16x4_t __c, const int __d)
12065{
12066 return __builtin_aarch64_sqrdmlah_lanehi (__a, __b, __c, __d);
12067}
12068
a063e204
TC
12069__extension__ extern __inline int16_t
12070__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12071vqrdmlahh_laneq_s16 (int16_t __a, int16_t __b, int16x8_t __c, const int __d)
12072{
12073 return __builtin_aarch64_sqrdmlah_laneqhi (__a, __b, __c, __d);
12074}
12075
a063e204
TC
12076__extension__ extern __inline int32_t
12077__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12078vqrdmlahs_s32 (int32_t __a, int32_t __b, int32_t __c)
12079{
12080 return (int32_t) __builtin_aarch64_sqrdmlahsi (__a, __b, __c);
12081}
12082
a063e204
TC
12083__extension__ extern __inline int32_t
12084__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12085vqrdmlahs_lane_s32 (int32_t __a, int32_t __b, int32x2_t __c, const int __d)
12086{
12087 return __builtin_aarch64_sqrdmlah_lanesi (__a, __b, __c, __d);
12088}
12089
a063e204
TC
12090__extension__ extern __inline int32_t
12091__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12092vqrdmlahs_laneq_s32 (int32_t __a, int32_t __b, int32x4_t __c, const int __d)
12093{
12094 return __builtin_aarch64_sqrdmlah_laneqsi (__a, __b, __c, __d);
12095}
12096
a063e204
TC
12097__extension__ extern __inline int16x4_t
12098__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12099vqrdmlsh_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
12100{
12101 return __builtin_aarch64_sqrdmlsh_lanev4hi (__a, __b, __c, __d);
12102}
12103
a063e204
TC
12104__extension__ extern __inline int32x2_t
12105__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12106vqrdmlsh_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
12107{
12108 return __builtin_aarch64_sqrdmlsh_lanev2si (__a, __b, __c, __d);
12109}
12110
a063e204
TC
12111__extension__ extern __inline int16x8_t
12112__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12113vqrdmlshq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d)
12114{
12115 return __builtin_aarch64_sqrdmlsh_lanev8hi (__a, __b, __c, __d);
12116}
12117
a063e204
TC
12118__extension__ extern __inline int32x4_t
12119__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12120vqrdmlshq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d)
12121{
12122 return __builtin_aarch64_sqrdmlsh_lanev4si (__a, __b, __c, __d);
12123}
12124
a063e204
TC
12125__extension__ extern __inline int16_t
12126__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12127vqrdmlshh_s16 (int16_t __a, int16_t __b, int16_t __c)
12128{
12129 return (int16_t) __builtin_aarch64_sqrdmlshhi (__a, __b, __c);
12130}
12131
a063e204
TC
12132__extension__ extern __inline int16_t
12133__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12134vqrdmlshh_lane_s16 (int16_t __a, int16_t __b, int16x4_t __c, const int __d)
12135{
12136 return __builtin_aarch64_sqrdmlsh_lanehi (__a, __b, __c, __d);
12137}
12138
a063e204
TC
12139__extension__ extern __inline int16_t
12140__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12141vqrdmlshh_laneq_s16 (int16_t __a, int16_t __b, int16x8_t __c, const int __d)
12142{
12143 return __builtin_aarch64_sqrdmlsh_laneqhi (__a, __b, __c, __d);
12144}
12145
a063e204
TC
12146__extension__ extern __inline int32_t
12147__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12148vqrdmlshs_s32 (int32_t __a, int32_t __b, int32_t __c)
12149{
12150 return (int32_t) __builtin_aarch64_sqrdmlshsi (__a, __b, __c);
12151}
12152
a063e204
TC
12153__extension__ extern __inline int32_t
12154__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12155vqrdmlshs_lane_s32 (int32_t __a, int32_t __b, int32x2_t __c, const int __d)
12156{
12157 return __builtin_aarch64_sqrdmlsh_lanesi (__a, __b, __c, __d);
12158}
12159
a063e204
TC
12160__extension__ extern __inline int32_t
12161__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
50469f75
MW
12162vqrdmlshs_laneq_s32 (int32_t __a, int32_t __b, int32x4_t __c, const int __d)
12163{
12164 return __builtin_aarch64_sqrdmlsh_laneqsi (__a, __b, __c, __d);
12165}
0c6110a1
MW
12166#pragma GCC pop_options
12167
e4ea20c8
KT
12168#pragma GCC push_options
12169#pragma GCC target ("+nothing+crypto")
5a7a4e80
TB
12170/* vaes */
12171
a063e204
TC
12172__extension__ extern __inline uint8x16_t
12173__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5a7a4e80
TB
12174vaeseq_u8 (uint8x16_t data, uint8x16_t key)
12175{
12176 return __builtin_aarch64_crypto_aesev16qi_uuu (data, key);
12177}
12178
a063e204
TC
12179__extension__ extern __inline uint8x16_t
12180__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5a7a4e80
TB
12181vaesdq_u8 (uint8x16_t data, uint8x16_t key)
12182{
12183 return __builtin_aarch64_crypto_aesdv16qi_uuu (data, key);
12184}
12185
a063e204
TC
12186__extension__ extern __inline uint8x16_t
12187__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5a7a4e80
TB
12188vaesmcq_u8 (uint8x16_t data)
12189{
12190 return __builtin_aarch64_crypto_aesmcv16qi_uu (data);
12191}
12192
a063e204
TC
12193__extension__ extern __inline uint8x16_t
12194__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5a7a4e80
TB
12195vaesimcq_u8 (uint8x16_t data)
12196{
12197 return __builtin_aarch64_crypto_aesimcv16qi_uu (data);
12198}
e4ea20c8 12199#pragma GCC pop_options
5a7a4e80 12200
91bd4114
JG
12201/* vcage */
12202
a063e204
TC
12203__extension__ extern __inline uint64x1_t
12204__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
39f90912
KT
12205vcage_f64 (float64x1_t __a, float64x1_t __b)
12206{
12207 return vabs_f64 (__a) >= vabs_f64 (__b);
12208}
12209
a063e204
TC
12210__extension__ extern __inline uint32_t
12211__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12212vcages_f32 (float32_t __a, float32_t __b)
47934dc4 12213{
91bd4114 12214 return __builtin_fabsf (__a) >= __builtin_fabsf (__b) ? -1 : 0;
47934dc4
JG
12215}
12216
a063e204
TC
12217__extension__ extern __inline uint32x2_t
12218__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12219vcage_f32 (float32x2_t __a, float32x2_t __b)
47934dc4 12220{
91bd4114 12221 return vabs_f32 (__a) >= vabs_f32 (__b);
47934dc4
JG
12222}
12223
a063e204
TC
12224__extension__ extern __inline uint32x4_t
12225__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12226vcageq_f32 (float32x4_t __a, float32x4_t __b)
47934dc4 12227{
91bd4114 12228 return vabsq_f32 (__a) >= vabsq_f32 (__b);
47934dc4
JG
12229}
12230
a063e204
TC
12231__extension__ extern __inline uint64_t
12232__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12233vcaged_f64 (float64_t __a, float64_t __b)
47934dc4 12234{
91bd4114 12235 return __builtin_fabs (__a) >= __builtin_fabs (__b) ? -1 : 0;
47934dc4
JG
12236}
12237
a063e204
TC
12238__extension__ extern __inline uint64x2_t
12239__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12240vcageq_f64 (float64x2_t __a, float64x2_t __b)
47934dc4 12241{
91bd4114 12242 return vabsq_f64 (__a) >= vabsq_f64 (__b);
47934dc4
JG
12243}
12244
91bd4114
JG
12245/* vcagt */
12246
a063e204
TC
12247__extension__ extern __inline uint32_t
12248__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12249vcagts_f32 (float32_t __a, float32_t __b)
47934dc4 12250{
91bd4114 12251 return __builtin_fabsf (__a) > __builtin_fabsf (__b) ? -1 : 0;
47934dc4
JG
12252}
12253
a063e204
TC
12254__extension__ extern __inline uint32x2_t
12255__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12256vcagt_f32 (float32x2_t __a, float32x2_t __b)
47934dc4 12257{
91bd4114 12258 return vabs_f32 (__a) > vabs_f32 (__b);
47934dc4
JG
12259}
12260
a063e204
TC
12261__extension__ extern __inline uint64x1_t
12262__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
39f90912
KT
12263vcagt_f64 (float64x1_t __a, float64x1_t __b)
12264{
12265 return vabs_f64 (__a) > vabs_f64 (__b);
12266}
12267
a063e204
TC
12268__extension__ extern __inline uint32x4_t
12269__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12270vcagtq_f32 (float32x4_t __a, float32x4_t __b)
47934dc4 12271{
91bd4114 12272 return vabsq_f32 (__a) > vabsq_f32 (__b);
47934dc4
JG
12273}
12274
a063e204
TC
12275__extension__ extern __inline uint64_t
12276__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12277vcagtd_f64 (float64_t __a, float64_t __b)
47934dc4 12278{
91bd4114 12279 return __builtin_fabs (__a) > __builtin_fabs (__b) ? -1 : 0;
47934dc4
JG
12280}
12281
a063e204
TC
12282__extension__ extern __inline uint64x2_t
12283__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12284vcagtq_f64 (float64x2_t __a, float64x2_t __b)
47934dc4 12285{
91bd4114 12286 return vabsq_f64 (__a) > vabsq_f64 (__b);
47934dc4
JG
12287}
12288
91bd4114
JG
12289/* vcale */
12290
a063e204
TC
12291__extension__ extern __inline uint32x2_t
12292__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12293vcale_f32 (float32x2_t __a, float32x2_t __b)
47934dc4 12294{
91bd4114 12295 return vabs_f32 (__a) <= vabs_f32 (__b);
47934dc4
JG
12296}
12297
a063e204
TC
12298__extension__ extern __inline uint64x1_t
12299__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
39f90912
KT
12300vcale_f64 (float64x1_t __a, float64x1_t __b)
12301{
12302 return vabs_f64 (__a) <= vabs_f64 (__b);
12303}
12304
a063e204
TC
12305__extension__ extern __inline uint64_t
12306__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
39f90912
KT
12307vcaled_f64 (float64_t __a, float64_t __b)
12308{
12309 return __builtin_fabs (__a) <= __builtin_fabs (__b) ? -1 : 0;
12310}
12311
a063e204
TC
12312__extension__ extern __inline uint32_t
12313__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
39f90912
KT
12314vcales_f32 (float32_t __a, float32_t __b)
12315{
12316 return __builtin_fabsf (__a) <= __builtin_fabsf (__b) ? -1 : 0;
12317}
12318
a063e204
TC
12319__extension__ extern __inline uint32x4_t
12320__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12321vcaleq_f32 (float32x4_t __a, float32x4_t __b)
47934dc4 12322{
91bd4114 12323 return vabsq_f32 (__a) <= vabsq_f32 (__b);
47934dc4
JG
12324}
12325
a063e204
TC
12326__extension__ extern __inline uint64x2_t
12327__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12328vcaleq_f64 (float64x2_t __a, float64x2_t __b)
47934dc4 12329{
91bd4114 12330 return vabsq_f64 (__a) <= vabsq_f64 (__b);
47934dc4
JG
12331}
12332
91bd4114 12333/* vcalt */
47934dc4 12334
a063e204
TC
12335__extension__ extern __inline uint32x2_t
12336__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12337vcalt_f32 (float32x2_t __a, float32x2_t __b)
47934dc4 12338{
91bd4114 12339 return vabs_f32 (__a) < vabs_f32 (__b);
47934dc4
JG
12340}
12341
a063e204
TC
12342__extension__ extern __inline uint64x1_t
12343__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
39f90912
KT
12344vcalt_f64 (float64x1_t __a, float64x1_t __b)
12345{
12346 return vabs_f64 (__a) < vabs_f64 (__b);
12347}
12348
a063e204
TC
12349__extension__ extern __inline uint64_t
12350__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
39f90912
KT
12351vcaltd_f64 (float64_t __a, float64_t __b)
12352{
12353 return __builtin_fabs (__a) < __builtin_fabs (__b) ? -1 : 0;
12354}
12355
a063e204
TC
12356__extension__ extern __inline uint32x4_t
12357__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12358vcaltq_f32 (float32x4_t __a, float32x4_t __b)
47934dc4 12359{
91bd4114 12360 return vabsq_f32 (__a) < vabsq_f32 (__b);
47934dc4 12361}
43e9d192 12362
a063e204
TC
12363__extension__ extern __inline uint64x2_t
12364__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12365vcaltq_f64 (float64x2_t __a, float64x2_t __b)
47934dc4 12366{
91bd4114 12367 return vabsq_f64 (__a) < vabsq_f64 (__b);
47934dc4 12368}
43e9d192 12369
a063e204
TC
12370__extension__ extern __inline uint32_t
12371__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
39f90912
KT
12372vcalts_f32 (float32_t __a, float32_t __b)
12373{
12374 return __builtin_fabsf (__a) < __builtin_fabsf (__b) ? -1 : 0;
12375}
12376
91bd4114 12377/* vceq - vector. */
43e9d192 12378
a063e204
TC
12379__extension__ extern __inline uint32x2_t
12380__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12381vceq_f32 (float32x2_t __a, float32x2_t __b)
47934dc4 12382{
5726d376 12383 return (uint32x2_t) (__a == __b);
47934dc4 12384}
43e9d192 12385
a063e204
TC
12386__extension__ extern __inline uint64x1_t
12387__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12388vceq_f64 (float64x1_t __a, float64x1_t __b)
43e9d192 12389{
c6a29a09 12390 return (uint64x1_t) (__a == __b);
43e9d192
IB
12391}
12392
a063e204
TC
12393__extension__ extern __inline uint8x8_t
12394__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12395vceq_p8 (poly8x8_t __a, poly8x8_t __b)
43e9d192 12396{
5726d376 12397 return (uint8x8_t) (__a == __b);
43e9d192
IB
12398}
12399
6383ff9f
TC
12400__extension__ extern __inline uint64x1_t
12401__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
12402vceq_p64 (poly64x1_t __a, poly64x1_t __b)
12403{
12404 return (uint64x1_t) (__a == __b);
12405}
12406
a063e204
TC
12407__extension__ extern __inline uint8x8_t
12408__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12409vceq_s8 (int8x8_t __a, int8x8_t __b)
43e9d192 12410{
5726d376 12411 return (uint8x8_t) (__a == __b);
43e9d192
IB
12412}
12413
a063e204
TC
12414__extension__ extern __inline uint16x4_t
12415__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12416vceq_s16 (int16x4_t __a, int16x4_t __b)
43e9d192 12417{
5726d376 12418 return (uint16x4_t) (__a == __b);
43e9d192
IB
12419}
12420
a063e204
TC
12421__extension__ extern __inline uint32x2_t
12422__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12423vceq_s32 (int32x2_t __a, int32x2_t __b)
43e9d192 12424{
5726d376 12425 return (uint32x2_t) (__a == __b);
43e9d192
IB
12426}
12427
a063e204
TC
12428__extension__ extern __inline uint64x1_t
12429__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12430vceq_s64 (int64x1_t __a, int64x1_t __b)
43e9d192 12431{
a8105959 12432 return (uint64x1_t) (__a == __b);
43e9d192
IB
12433}
12434
a063e204
TC
12435__extension__ extern __inline uint8x8_t
12436__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12437vceq_u8 (uint8x8_t __a, uint8x8_t __b)
43e9d192 12438{
5726d376 12439 return (__a == __b);
43e9d192
IB
12440}
12441
a063e204
TC
12442__extension__ extern __inline uint16x4_t
12443__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12444vceq_u16 (uint16x4_t __a, uint16x4_t __b)
43e9d192 12445{
5726d376 12446 return (__a == __b);
43e9d192
IB
12447}
12448
a063e204
TC
12449__extension__ extern __inline uint32x2_t
12450__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12451vceq_u32 (uint32x2_t __a, uint32x2_t __b)
43e9d192 12452{
5726d376 12453 return (__a == __b);
43e9d192
IB
12454}
12455
a063e204
TC
12456__extension__ extern __inline uint64x1_t
12457__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12458vceq_u64 (uint64x1_t __a, uint64x1_t __b)
43e9d192 12459{
a8105959 12460 return (__a == __b);
47934dc4
JG
12461}
12462
a063e204
TC
12463__extension__ extern __inline uint32x4_t
12464__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12465vceqq_f32 (float32x4_t __a, float32x4_t __b)
47934dc4 12466{
5726d376 12467 return (uint32x4_t) (__a == __b);
47934dc4
JG
12468}
12469
a063e204
TC
12470__extension__ extern __inline uint64x2_t
12471__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
12472vceqq_f64 (float64x2_t __a, float64x2_t __b)
12473{
5726d376 12474 return (uint64x2_t) (__a == __b);
91bd4114 12475}
47934dc4 12476
a063e204
TC
12477__extension__ extern __inline uint8x16_t
12478__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12479vceqq_p8 (poly8x16_t __a, poly8x16_t __b)
47934dc4 12480{
5726d376 12481 return (uint8x16_t) (__a == __b);
43e9d192
IB
12482}
12483
a063e204
TC
12484__extension__ extern __inline uint8x16_t
12485__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12486vceqq_s8 (int8x16_t __a, int8x16_t __b)
43e9d192 12487{
5726d376 12488 return (uint8x16_t) (__a == __b);
43e9d192
IB
12489}
12490
a063e204
TC
12491__extension__ extern __inline uint16x8_t
12492__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12493vceqq_s16 (int16x8_t __a, int16x8_t __b)
43e9d192 12494{
5726d376 12495 return (uint16x8_t) (__a == __b);
43e9d192
IB
12496}
12497
a063e204
TC
12498__extension__ extern __inline uint32x4_t
12499__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
12500vceqq_s32 (int32x4_t __a, int32x4_t __b)
12501{
5726d376 12502 return (uint32x4_t) (__a == __b);
91bd4114 12503}
43e9d192 12504
a063e204
TC
12505__extension__ extern __inline uint64x2_t
12506__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12507vceqq_s64 (int64x2_t __a, int64x2_t __b)
43e9d192 12508{
5726d376 12509 return (uint64x2_t) (__a == __b);
43e9d192
IB
12510}
12511
a063e204
TC
12512__extension__ extern __inline uint8x16_t
12513__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12514vceqq_u8 (uint8x16_t __a, uint8x16_t __b)
43e9d192 12515{
5726d376 12516 return (__a == __b);
43e9d192
IB
12517}
12518
a063e204
TC
12519__extension__ extern __inline uint16x8_t
12520__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12521vceqq_u16 (uint16x8_t __a, uint16x8_t __b)
43e9d192 12522{
5726d376 12523 return (__a == __b);
43e9d192
IB
12524}
12525
a063e204
TC
12526__extension__ extern __inline uint32x4_t
12527__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12528vceqq_u32 (uint32x4_t __a, uint32x4_t __b)
43e9d192 12529{
5726d376 12530 return (__a == __b);
43e9d192
IB
12531}
12532
a063e204
TC
12533__extension__ extern __inline uint64x2_t
12534__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12535vceqq_u64 (uint64x2_t __a, uint64x2_t __b)
43e9d192 12536{
5726d376 12537 return (__a == __b);
43e9d192
IB
12538}
12539
d4703be1
KT
12540__extension__ extern __inline uint64x2_t
12541__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
12542vceqq_p64 (poly64x2_t __a, poly64x2_t __b)
12543{
12544 return (__a == __b);
12545}
12546
91bd4114
JG
12547/* vceq - scalar. */
12548
a063e204
TC
12549__extension__ extern __inline uint32_t
12550__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12551vceqs_f32 (float32_t __a, float32_t __b)
43e9d192 12552{
91bd4114 12553 return __a == __b ? -1 : 0;
43e9d192
IB
12554}
12555
a063e204
TC
12556__extension__ extern __inline uint64_t
12557__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 12558vceqd_s64 (int64_t __a, int64_t __b)
43e9d192 12559{
91bd4114 12560 return __a == __b ? -1ll : 0ll;
43e9d192
IB
12561}
12562
a063e204
TC
12563__extension__ extern __inline uint64_t
12564__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 12565vceqd_u64 (uint64_t __a, uint64_t __b)
43e9d192 12566{
91bd4114 12567 return __a == __b ? -1ll : 0ll;
43e9d192
IB
12568}
12569
a063e204
TC
12570__extension__ extern __inline uint64_t
12571__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12572vceqd_f64 (float64_t __a, float64_t __b)
43e9d192 12573{
91bd4114 12574 return __a == __b ? -1ll : 0ll;
43e9d192
IB
12575}
12576
91bd4114 12577/* vceqz - vector. */
47934dc4 12578
a063e204
TC
12579__extension__ extern __inline uint32x2_t
12580__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12581vceqz_f32 (float32x2_t __a)
43e9d192 12582{
5726d376 12583 return (uint32x2_t) (__a == 0.0f);
43e9d192
IB
12584}
12585
a063e204
TC
12586__extension__ extern __inline uint64x1_t
12587__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12588vceqz_f64 (float64x1_t __a)
43e9d192 12589{
c6a29a09 12590 return (uint64x1_t) (__a == (float64x1_t) {0.0});
43e9d192
IB
12591}
12592
a063e204
TC
12593__extension__ extern __inline uint8x8_t
12594__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12595vceqz_p8 (poly8x8_t __a)
43e9d192 12596{
5726d376 12597 return (uint8x8_t) (__a == 0);
43e9d192
IB
12598}
12599
a063e204
TC
12600__extension__ extern __inline uint8x8_t
12601__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12602vceqz_s8 (int8x8_t __a)
43e9d192 12603{
5726d376 12604 return (uint8x8_t) (__a == 0);
43e9d192
IB
12605}
12606
a063e204
TC
12607__extension__ extern __inline uint16x4_t
12608__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12609vceqz_s16 (int16x4_t __a)
43e9d192 12610{
5726d376 12611 return (uint16x4_t) (__a == 0);
43e9d192
IB
12612}
12613
a063e204
TC
12614__extension__ extern __inline uint32x2_t
12615__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12616vceqz_s32 (int32x2_t __a)
43e9d192 12617{
5726d376 12618 return (uint32x2_t) (__a == 0);
43e9d192
IB
12619}
12620
a063e204
TC
12621__extension__ extern __inline uint64x1_t
12622__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12623vceqz_s64 (int64x1_t __a)
43e9d192 12624{
a8105959 12625 return (uint64x1_t) (__a == __AARCH64_INT64_C (0));
47934dc4
JG
12626}
12627
a063e204
TC
12628__extension__ extern __inline uint8x8_t
12629__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12630vceqz_u8 (uint8x8_t __a)
47934dc4 12631{
5726d376 12632 return (__a == 0);
43e9d192
IB
12633}
12634
a063e204
TC
12635__extension__ extern __inline uint16x4_t
12636__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12637vceqz_u16 (uint16x4_t __a)
43e9d192 12638{
5726d376 12639 return (__a == 0);
43e9d192
IB
12640}
12641
a063e204
TC
12642__extension__ extern __inline uint32x2_t
12643__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12644vceqz_u32 (uint32x2_t __a)
43e9d192 12645{
5726d376 12646 return (__a == 0);
43e9d192
IB
12647}
12648
a063e204
TC
12649__extension__ extern __inline uint64x1_t
12650__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12651vceqz_u64 (uint64x1_t __a)
43e9d192 12652{
a8105959 12653 return (__a == __AARCH64_UINT64_C (0));
43e9d192
IB
12654}
12655
d4703be1
KT
12656__extension__ extern __inline uint64x1_t
12657__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
12658vceqz_p64 (poly64x1_t __a)
12659{
12660 return (__a == __AARCH64_UINT64_C (0));
12661}
12662
a063e204
TC
12663__extension__ extern __inline uint32x4_t
12664__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12665vceqzq_f32 (float32x4_t __a)
43e9d192 12666{
5726d376 12667 return (uint32x4_t) (__a == 0.0f);
43e9d192
IB
12668}
12669
a063e204
TC
12670__extension__ extern __inline uint64x2_t
12671__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12672vceqzq_f64 (float64x2_t __a)
43e9d192 12673{
5726d376 12674 return (uint64x2_t) (__a == 0.0f);
43e9d192
IB
12675}
12676
a063e204
TC
12677__extension__ extern __inline uint8x16_t
12678__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12679vceqzq_p8 (poly8x16_t __a)
43e9d192 12680{
5726d376 12681 return (uint8x16_t) (__a == 0);
43e9d192
IB
12682}
12683
a063e204
TC
12684__extension__ extern __inline uint8x16_t
12685__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12686vceqzq_s8 (int8x16_t __a)
43e9d192 12687{
5726d376 12688 return (uint8x16_t) (__a == 0);
43e9d192
IB
12689}
12690
a063e204
TC
12691__extension__ extern __inline uint16x8_t
12692__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12693vceqzq_s16 (int16x8_t __a)
43e9d192 12694{
5726d376 12695 return (uint16x8_t) (__a == 0);
43e9d192
IB
12696}
12697
a063e204
TC
12698__extension__ extern __inline uint32x4_t
12699__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12700vceqzq_s32 (int32x4_t __a)
43e9d192 12701{
5726d376 12702 return (uint32x4_t) (__a == 0);
43e9d192
IB
12703}
12704
a063e204
TC
12705__extension__ extern __inline uint64x2_t
12706__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12707vceqzq_s64 (int64x2_t __a)
43e9d192 12708{
5726d376 12709 return (uint64x2_t) (__a == __AARCH64_INT64_C (0));
43e9d192
IB
12710}
12711
a063e204
TC
12712__extension__ extern __inline uint8x16_t
12713__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12714vceqzq_u8 (uint8x16_t __a)
43e9d192 12715{
5726d376 12716 return (__a == 0);
43e9d192
IB
12717}
12718
a063e204
TC
12719__extension__ extern __inline uint16x8_t
12720__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12721vceqzq_u16 (uint16x8_t __a)
43e9d192 12722{
5726d376 12723 return (__a == 0);
43e9d192
IB
12724}
12725
a063e204
TC
12726__extension__ extern __inline uint32x4_t
12727__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12728vceqzq_u32 (uint32x4_t __a)
43e9d192 12729{
5726d376 12730 return (__a == 0);
43e9d192
IB
12731}
12732
a063e204
TC
12733__extension__ extern __inline uint64x2_t
12734__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12735vceqzq_u64 (uint64x2_t __a)
43e9d192 12736{
5726d376 12737 return (__a == __AARCH64_UINT64_C (0));
43e9d192
IB
12738}
12739
d4703be1
KT
12740__extension__ extern __inline uint64x2_t
12741__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
12742vceqzq_p64 (poly64x2_t __a)
12743{
12744 return (__a == __AARCH64_UINT64_C (0));
12745}
12746
91bd4114
JG
12747/* vceqz - scalar. */
12748
a063e204
TC
12749__extension__ extern __inline uint32_t
12750__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12751vceqzs_f32 (float32_t __a)
43e9d192 12752{
91bd4114 12753 return __a == 0.0f ? -1 : 0;
43e9d192
IB
12754}
12755
a063e204
TC
12756__extension__ extern __inline uint64_t
12757__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 12758vceqzd_s64 (int64_t __a)
91bd4114
JG
12759{
12760 return __a == 0 ? -1ll : 0ll;
43e9d192
IB
12761}
12762
a063e204
TC
12763__extension__ extern __inline uint64_t
12764__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 12765vceqzd_u64 (uint64_t __a)
91bd4114
JG
12766{
12767 return __a == 0 ? -1ll : 0ll;
12768}
47934dc4 12769
a063e204
TC
12770__extension__ extern __inline uint64_t
12771__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
12772vceqzd_f64 (float64_t __a)
12773{
12774 return __a == 0.0 ? -1ll : 0ll;
12775}
47934dc4 12776
91bd4114 12777/* vcge - vector. */
47934dc4 12778
a063e204
TC
12779__extension__ extern __inline uint32x2_t
12780__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12781vcge_f32 (float32x2_t __a, float32x2_t __b)
43e9d192 12782{
5726d376 12783 return (uint32x2_t) (__a >= __b);
43e9d192
IB
12784}
12785
a063e204
TC
12786__extension__ extern __inline uint64x1_t
12787__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12788vcge_f64 (float64x1_t __a, float64x1_t __b)
d05d0709 12789{
c6a29a09 12790 return (uint64x1_t) (__a >= __b);
d05d0709
JG
12791}
12792
a063e204
TC
12793__extension__ extern __inline uint8x8_t
12794__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12795vcge_s8 (int8x8_t __a, int8x8_t __b)
d05d0709 12796{
5726d376 12797 return (uint8x8_t) (__a >= __b);
d05d0709
JG
12798}
12799
a063e204
TC
12800__extension__ extern __inline uint16x4_t
12801__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12802vcge_s16 (int16x4_t __a, int16x4_t __b)
d05d0709 12803{
5726d376 12804 return (uint16x4_t) (__a >= __b);
d05d0709
JG
12805}
12806
a063e204
TC
12807__extension__ extern __inline uint32x2_t
12808__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12809vcge_s32 (int32x2_t __a, int32x2_t __b)
ba590e63 12810{
5726d376 12811 return (uint32x2_t) (__a >= __b);
ba590e63
IB
12812}
12813
a063e204
TC
12814__extension__ extern __inline uint64x1_t
12815__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12816vcge_s64 (int64x1_t __a, int64x1_t __b)
43e9d192 12817{
a8105959 12818 return (uint64x1_t) (__a >= __b);
43e9d192
IB
12819}
12820
a063e204
TC
12821__extension__ extern __inline uint8x8_t
12822__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12823vcge_u8 (uint8x8_t __a, uint8x8_t __b)
43e9d192 12824{
5726d376 12825 return (__a >= __b);
43e9d192
IB
12826}
12827
a063e204
TC
12828__extension__ extern __inline uint16x4_t
12829__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12830vcge_u16 (uint16x4_t __a, uint16x4_t __b)
d05d0709 12831{
5726d376 12832 return (__a >= __b);
d05d0709
JG
12833}
12834
a063e204
TC
12835__extension__ extern __inline uint32x2_t
12836__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12837vcge_u32 (uint32x2_t __a, uint32x2_t __b)
d05d0709 12838{
5726d376 12839 return (__a >= __b);
d05d0709
JG
12840}
12841
a063e204
TC
12842__extension__ extern __inline uint64x1_t
12843__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12844vcge_u64 (uint64x1_t __a, uint64x1_t __b)
d05d0709 12845{
a8105959 12846 return (__a >= __b);
d05d0709
JG
12847}
12848
a063e204
TC
12849__extension__ extern __inline uint32x4_t
12850__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12851vcgeq_f32 (float32x4_t __a, float32x4_t __b)
d05d0709 12852{
5726d376 12853 return (uint32x4_t) (__a >= __b);
d05d0709
JG
12854}
12855
a063e204
TC
12856__extension__ extern __inline uint64x2_t
12857__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
12858vcgeq_f64 (float64x2_t __a, float64x2_t __b)
12859{
5726d376 12860 return (uint64x2_t) (__a >= __b);
91bd4114 12861}
47934dc4 12862
a063e204
TC
12863__extension__ extern __inline uint8x16_t
12864__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12865vcgeq_s8 (int8x16_t __a, int8x16_t __b)
43e9d192 12866{
5726d376 12867 return (uint8x16_t) (__a >= __b);
43e9d192
IB
12868}
12869
a063e204
TC
12870__extension__ extern __inline uint16x8_t
12871__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
12872vcgeq_s16 (int16x8_t __a, int16x8_t __b)
12873{
5726d376 12874 return (uint16x8_t) (__a >= __b);
91bd4114 12875}
36054fab 12876
a063e204
TC
12877__extension__ extern __inline uint32x4_t
12878__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12879vcgeq_s32 (int32x4_t __a, int32x4_t __b)
36054fab 12880{
5726d376 12881 return (uint32x4_t) (__a >= __b);
36054fab
JG
12882}
12883
a063e204
TC
12884__extension__ extern __inline uint64x2_t
12885__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12886vcgeq_s64 (int64x2_t __a, int64x2_t __b)
36054fab 12887{
5726d376 12888 return (uint64x2_t) (__a >= __b);
36054fab
JG
12889}
12890
a063e204
TC
12891__extension__ extern __inline uint8x16_t
12892__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12893vcgeq_u8 (uint8x16_t __a, uint8x16_t __b)
36054fab 12894{
5726d376 12895 return (__a >= __b);
36054fab
JG
12896}
12897
a063e204
TC
12898__extension__ extern __inline uint16x8_t
12899__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12900vcgeq_u16 (uint16x8_t __a, uint16x8_t __b)
36054fab 12901{
5726d376 12902 return (__a >= __b);
36054fab
JG
12903}
12904
a063e204
TC
12905__extension__ extern __inline uint32x4_t
12906__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12907vcgeq_u32 (uint32x4_t __a, uint32x4_t __b)
36054fab 12908{
5726d376 12909 return (__a >= __b);
36054fab
JG
12910}
12911
a063e204
TC
12912__extension__ extern __inline uint64x2_t
12913__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12914vcgeq_u64 (uint64x2_t __a, uint64x2_t __b)
36054fab 12915{
5726d376 12916 return (__a >= __b);
36054fab
JG
12917}
12918
91bd4114
JG
12919/* vcge - scalar. */
12920
a063e204
TC
12921__extension__ extern __inline uint32_t
12922__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12923vcges_f32 (float32_t __a, float32_t __b)
36054fab 12924{
91bd4114 12925 return __a >= __b ? -1 : 0;
36054fab
JG
12926}
12927
a063e204
TC
12928__extension__ extern __inline uint64_t
12929__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 12930vcged_s64 (int64_t __a, int64_t __b)
36054fab 12931{
91bd4114 12932 return __a >= __b ? -1ll : 0ll;
36054fab
JG
12933}
12934
a063e204
TC
12935__extension__ extern __inline uint64_t
12936__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 12937vcged_u64 (uint64_t __a, uint64_t __b)
36054fab 12938{
91bd4114 12939 return __a >= __b ? -1ll : 0ll;
36054fab
JG
12940}
12941
a063e204
TC
12942__extension__ extern __inline uint64_t
12943__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12944vcged_f64 (float64_t __a, float64_t __b)
36054fab 12945{
91bd4114 12946 return __a >= __b ? -1ll : 0ll;
36054fab
JG
12947}
12948
91bd4114
JG
12949/* vcgez - vector. */
12950
a063e204
TC
12951__extension__ extern __inline uint32x2_t
12952__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12953vcgez_f32 (float32x2_t __a)
36054fab 12954{
5726d376 12955 return (uint32x2_t) (__a >= 0.0f);
36054fab
JG
12956}
12957
a063e204
TC
12958__extension__ extern __inline uint64x1_t
12959__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12960vcgez_f64 (float64x1_t __a)
36054fab 12961{
c6a29a09 12962 return (uint64x1_t) (__a[0] >= (float64x1_t) {0.0});
36054fab
JG
12963}
12964
a063e204
TC
12965__extension__ extern __inline uint8x8_t
12966__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12967vcgez_s8 (int8x8_t __a)
36054fab 12968{
5726d376 12969 return (uint8x8_t) (__a >= 0);
36054fab
JG
12970}
12971
a063e204
TC
12972__extension__ extern __inline uint16x4_t
12973__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12974vcgez_s16 (int16x4_t __a)
43e9d192 12975{
5726d376 12976 return (uint16x4_t) (__a >= 0);
43e9d192
IB
12977}
12978
a063e204
TC
12979__extension__ extern __inline uint32x2_t
12980__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12981vcgez_s32 (int32x2_t __a)
47934dc4 12982{
5726d376 12983 return (uint32x2_t) (__a >= 0);
47934dc4 12984}
43e9d192 12985
a063e204
TC
12986__extension__ extern __inline uint64x1_t
12987__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12988vcgez_s64 (int64x1_t __a)
43e9d192 12989{
a8105959 12990 return (uint64x1_t) (__a >= __AARCH64_INT64_C (0));
43e9d192
IB
12991}
12992
a063e204
TC
12993__extension__ extern __inline uint32x4_t
12994__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 12995vcgezq_f32 (float32x4_t __a)
bd11644e 12996{
5726d376 12997 return (uint32x4_t) (__a >= 0.0f);
bd11644e
JG
12998}
12999
a063e204
TC
13000__extension__ extern __inline uint64x2_t
13001__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13002vcgezq_f64 (float64x2_t __a)
bd11644e 13003{
5726d376 13004 return (uint64x2_t) (__a >= 0.0);
bd11644e
JG
13005}
13006
a063e204
TC
13007__extension__ extern __inline uint8x16_t
13008__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13009vcgezq_s8 (int8x16_t __a)
bd11644e 13010{
5726d376 13011 return (uint8x16_t) (__a >= 0);
bd11644e
JG
13012}
13013
a063e204
TC
13014__extension__ extern __inline uint16x8_t
13015__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13016vcgezq_s16 (int16x8_t __a)
bd11644e 13017{
5726d376 13018 return (uint16x8_t) (__a >= 0);
bd11644e
JG
13019}
13020
a063e204
TC
13021__extension__ extern __inline uint32x4_t
13022__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13023vcgezq_s32 (int32x4_t __a)
bd11644e 13024{
5726d376 13025 return (uint32x4_t) (__a >= 0);
bd11644e
JG
13026}
13027
a063e204
TC
13028__extension__ extern __inline uint64x2_t
13029__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13030vcgezq_s64 (int64x2_t __a)
bd11644e 13031{
5726d376 13032 return (uint64x2_t) (__a >= __AARCH64_INT64_C (0));
bd11644e
JG
13033}
13034
91bd4114 13035/* vcgez - scalar. */
bd11644e 13036
a063e204
TC
13037__extension__ extern __inline uint32_t
13038__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13039vcgezs_f32 (float32_t __a)
bd11644e 13040{
91bd4114 13041 return __a >= 0.0f ? -1 : 0;
bd11644e
JG
13042}
13043
a063e204
TC
13044__extension__ extern __inline uint64_t
13045__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 13046vcgezd_s64 (int64_t __a)
bd11644e 13047{
91bd4114 13048 return __a >= 0 ? -1ll : 0ll;
bd11644e
JG
13049}
13050
a063e204
TC
13051__extension__ extern __inline uint64_t
13052__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
13053vcgezd_f64 (float64_t __a)
13054{
13055 return __a >= 0.0 ? -1ll : 0ll;
13056}
13057
13058/* vcgt - vector. */
bb60efd9 13059
a063e204
TC
13060__extension__ extern __inline uint32x2_t
13061__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13062vcgt_f32 (float32x2_t __a, float32x2_t __b)
bb60efd9 13063{
5726d376 13064 return (uint32x2_t) (__a > __b);
bb60efd9
JG
13065}
13066
a063e204
TC
13067__extension__ extern __inline uint64x1_t
13068__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13069vcgt_f64 (float64x1_t __a, float64x1_t __b)
bb60efd9 13070{
c6a29a09 13071 return (uint64x1_t) (__a > __b);
bb60efd9 13072}
47934dc4 13073
a063e204
TC
13074__extension__ extern __inline uint8x8_t
13075__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13076vcgt_s8 (int8x8_t __a, int8x8_t __b)
43e9d192 13077{
5726d376 13078 return (uint8x8_t) (__a > __b);
47934dc4
JG
13079}
13080
a063e204
TC
13081__extension__ extern __inline uint16x4_t
13082__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13083vcgt_s16 (int16x4_t __a, int16x4_t __b)
47934dc4 13084{
5726d376 13085 return (uint16x4_t) (__a > __b);
43e9d192
IB
13086}
13087
a063e204
TC
13088__extension__ extern __inline uint32x2_t
13089__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13090vcgt_s32 (int32x2_t __a, int32x2_t __b)
47934dc4 13091{
5726d376 13092 return (uint32x2_t) (__a > __b);
47934dc4 13093}
43e9d192 13094
a063e204
TC
13095__extension__ extern __inline uint64x1_t
13096__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13097vcgt_s64 (int64x1_t __a, int64x1_t __b)
43e9d192 13098{
a8105959 13099 return (uint64x1_t) (__a > __b);
43e9d192
IB
13100}
13101
a063e204
TC
13102__extension__ extern __inline uint8x8_t
13103__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13104vcgt_u8 (uint8x8_t __a, uint8x8_t __b)
43e9d192 13105{
5726d376 13106 return (__a > __b);
43e9d192
IB
13107}
13108
a063e204
TC
13109__extension__ extern __inline uint16x4_t
13110__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13111vcgt_u16 (uint16x4_t __a, uint16x4_t __b)
43e9d192 13112{
5726d376 13113 return (__a > __b);
43e9d192
IB
13114}
13115
a063e204
TC
13116__extension__ extern __inline uint32x2_t
13117__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13118vcgt_u32 (uint32x2_t __a, uint32x2_t __b)
47934dc4 13119{
5726d376 13120 return (__a > __b);
47934dc4 13121}
43e9d192 13122
a063e204
TC
13123__extension__ extern __inline uint64x1_t
13124__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13125vcgt_u64 (uint64x1_t __a, uint64x1_t __b)
43e9d192 13126{
a8105959 13127 return (__a > __b);
bb60efd9
JG
13128}
13129
a063e204
TC
13130__extension__ extern __inline uint32x4_t
13131__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13132vcgtq_f32 (float32x4_t __a, float32x4_t __b)
bb60efd9 13133{
5726d376 13134 return (uint32x4_t) (__a > __b);
bb60efd9
JG
13135}
13136
a063e204
TC
13137__extension__ extern __inline uint64x2_t
13138__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13139vcgtq_f64 (float64x2_t __a, float64x2_t __b)
bb60efd9 13140{
5726d376 13141 return (uint64x2_t) (__a > __b);
43e9d192
IB
13142}
13143
a063e204
TC
13144__extension__ extern __inline uint8x16_t
13145__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13146vcgtq_s8 (int8x16_t __a, int8x16_t __b)
43e9d192 13147{
5726d376 13148 return (uint8x16_t) (__a > __b);
47934dc4
JG
13149}
13150
a063e204
TC
13151__extension__ extern __inline uint16x8_t
13152__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13153vcgtq_s16 (int16x8_t __a, int16x8_t __b)
47934dc4 13154{
5726d376 13155 return (uint16x8_t) (__a > __b);
47934dc4
JG
13156}
13157
a063e204
TC
13158__extension__ extern __inline uint32x4_t
13159__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13160vcgtq_s32 (int32x4_t __a, int32x4_t __b)
47934dc4 13161{
5726d376 13162 return (uint32x4_t) (__a > __b);
43e9d192
IB
13163}
13164
a063e204
TC
13165__extension__ extern __inline uint64x2_t
13166__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13167vcgtq_s64 (int64x2_t __a, int64x2_t __b)
47934dc4 13168{
5726d376 13169 return (uint64x2_t) (__a > __b);
47934dc4 13170}
43e9d192 13171
a063e204
TC
13172__extension__ extern __inline uint8x16_t
13173__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13174vcgtq_u8 (uint8x16_t __a, uint8x16_t __b)
43e9d192 13175{
5726d376 13176 return (__a > __b);
43e9d192
IB
13177}
13178
a063e204
TC
13179__extension__ extern __inline uint16x8_t
13180__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13181vcgtq_u16 (uint16x8_t __a, uint16x8_t __b)
43e9d192 13182{
5726d376 13183 return (__a > __b);
43e9d192
IB
13184}
13185
a063e204
TC
13186__extension__ extern __inline uint32x4_t
13187__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13188vcgtq_u32 (uint32x4_t __a, uint32x4_t __b)
43e9d192 13189{
5726d376 13190 return (__a > __b);
43e9d192
IB
13191}
13192
a063e204
TC
13193__extension__ extern __inline uint64x2_t
13194__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13195vcgtq_u64 (uint64x2_t __a, uint64x2_t __b)
47934dc4 13196{
5726d376 13197 return (__a > __b);
47934dc4 13198}
43e9d192 13199
91bd4114 13200/* vcgt - scalar. */
bb60efd9 13201
a063e204
TC
13202__extension__ extern __inline uint32_t
13203__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13204vcgts_f32 (float32_t __a, float32_t __b)
43e9d192 13205{
91bd4114 13206 return __a > __b ? -1 : 0;
43e9d192
IB
13207}
13208
a063e204
TC
13209__extension__ extern __inline uint64_t
13210__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 13211vcgtd_s64 (int64_t __a, int64_t __b)
43e9d192 13212{
91bd4114 13213 return __a > __b ? -1ll : 0ll;
43e9d192
IB
13214}
13215
a063e204
TC
13216__extension__ extern __inline uint64_t
13217__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 13218vcgtd_u64 (uint64_t __a, uint64_t __b)
43e9d192 13219{
91bd4114 13220 return __a > __b ? -1ll : 0ll;
43e9d192
IB
13221}
13222
a063e204
TC
13223__extension__ extern __inline uint64_t
13224__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13225vcgtd_f64 (float64_t __a, float64_t __b)
43e9d192 13226{
91bd4114 13227 return __a > __b ? -1ll : 0ll;
43e9d192
IB
13228}
13229
91bd4114 13230/* vcgtz - vector. */
43e9d192 13231
a063e204
TC
13232__extension__ extern __inline uint32x2_t
13233__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13234vcgtz_f32 (float32x2_t __a)
43e9d192 13235{
5726d376 13236 return (uint32x2_t) (__a > 0.0f);
43e9d192
IB
13237}
13238
a063e204
TC
13239__extension__ extern __inline uint64x1_t
13240__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13241vcgtz_f64 (float64x1_t __a)
43e9d192 13242{
c6a29a09 13243 return (uint64x1_t) (__a > (float64x1_t) {0.0});
43e9d192
IB
13244}
13245
a063e204
TC
13246__extension__ extern __inline uint8x8_t
13247__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13248vcgtz_s8 (int8x8_t __a)
bb60efd9 13249{
5726d376 13250 return (uint8x8_t) (__a > 0);
bb60efd9
JG
13251}
13252
a063e204
TC
13253__extension__ extern __inline uint16x4_t
13254__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13255vcgtz_s16 (int16x4_t __a)
bb60efd9 13256{
5726d376 13257 return (uint16x4_t) (__a > 0);
bb60efd9
JG
13258}
13259
a063e204
TC
13260__extension__ extern __inline uint32x2_t
13261__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13262vcgtz_s32 (int32x2_t __a)
bb60efd9 13263{
5726d376 13264 return (uint32x2_t) (__a > 0);
bb60efd9
JG
13265}
13266
a063e204
TC
13267__extension__ extern __inline uint64x1_t
13268__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13269vcgtz_s64 (int64x1_t __a)
bb60efd9 13270{
a8105959 13271 return (uint64x1_t) (__a > __AARCH64_INT64_C (0));
bb60efd9
JG
13272}
13273
a063e204
TC
13274__extension__ extern __inline uint32x4_t
13275__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13276vcgtzq_f32 (float32x4_t __a)
bb60efd9 13277{
5726d376 13278 return (uint32x4_t) (__a > 0.0f);
bb60efd9
JG
13279}
13280
a063e204
TC
13281__extension__ extern __inline uint64x2_t
13282__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13283vcgtzq_f64 (float64x2_t __a)
bb60efd9 13284{
5726d376 13285 return (uint64x2_t) (__a > 0.0);
bb60efd9
JG
13286}
13287
a063e204
TC
13288__extension__ extern __inline uint8x16_t
13289__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13290vcgtzq_s8 (int8x16_t __a)
bb60efd9 13291{
5726d376 13292 return (uint8x16_t) (__a > 0);
bb60efd9
JG
13293}
13294
a063e204
TC
13295__extension__ extern __inline uint16x8_t
13296__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13297vcgtzq_s16 (int16x8_t __a)
bb60efd9 13298{
5726d376 13299 return (uint16x8_t) (__a > 0);
bb60efd9
JG
13300}
13301
a063e204
TC
13302__extension__ extern __inline uint32x4_t
13303__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13304vcgtzq_s32 (int32x4_t __a)
bb60efd9 13305{
5726d376 13306 return (uint32x4_t) (__a > 0);
bb60efd9
JG
13307}
13308
a063e204
TC
13309__extension__ extern __inline uint64x2_t
13310__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13311vcgtzq_s64 (int64x2_t __a)
bb60efd9 13312{
5726d376 13313 return (uint64x2_t) (__a > __AARCH64_INT64_C (0));
bb60efd9
JG
13314}
13315
91bd4114 13316/* vcgtz - scalar. */
bb60efd9 13317
a063e204
TC
13318__extension__ extern __inline uint32_t
13319__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13320vcgtzs_f32 (float32_t __a)
bb60efd9 13321{
91bd4114 13322 return __a > 0.0f ? -1 : 0;
bb60efd9
JG
13323}
13324
a063e204
TC
13325__extension__ extern __inline uint64_t
13326__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 13327vcgtzd_s64 (int64_t __a)
bb60efd9 13328{
91bd4114 13329 return __a > 0 ? -1ll : 0ll;
bb60efd9
JG
13330}
13331
a063e204
TC
13332__extension__ extern __inline uint64_t
13333__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13334vcgtzd_f64 (float64_t __a)
bb60efd9 13335{
91bd4114 13336 return __a > 0.0 ? -1ll : 0ll;
bb60efd9
JG
13337}
13338
91bd4114 13339/* vcle - vector. */
bb60efd9 13340
a063e204
TC
13341__extension__ extern __inline uint32x2_t
13342__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13343vcle_f32 (float32x2_t __a, float32x2_t __b)
bb60efd9 13344{
5726d376 13345 return (uint32x2_t) (__a <= __b);
bb60efd9
JG
13346}
13347
a063e204
TC
13348__extension__ extern __inline uint64x1_t
13349__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13350vcle_f64 (float64x1_t __a, float64x1_t __b)
bb60efd9 13351{
c6a29a09 13352 return (uint64x1_t) (__a <= __b);
bb60efd9
JG
13353}
13354
a063e204
TC
13355__extension__ extern __inline uint8x8_t
13356__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13357vcle_s8 (int8x8_t __a, int8x8_t __b)
bb60efd9 13358{
5726d376 13359 return (uint8x8_t) (__a <= __b);
bb60efd9
JG
13360}
13361
a063e204
TC
13362__extension__ extern __inline uint16x4_t
13363__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13364vcle_s16 (int16x4_t __a, int16x4_t __b)
bb60efd9 13365{
5726d376 13366 return (uint16x4_t) (__a <= __b);
bb60efd9
JG
13367}
13368
a063e204
TC
13369__extension__ extern __inline uint32x2_t
13370__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13371vcle_s32 (int32x2_t __a, int32x2_t __b)
bb60efd9 13372{
5726d376 13373 return (uint32x2_t) (__a <= __b);
bb60efd9
JG
13374}
13375
a063e204
TC
13376__extension__ extern __inline uint64x1_t
13377__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13378vcle_s64 (int64x1_t __a, int64x1_t __b)
bb60efd9 13379{
a8105959 13380 return (uint64x1_t) (__a <= __b);
bb60efd9
JG
13381}
13382
a063e204
TC
13383__extension__ extern __inline uint8x8_t
13384__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13385vcle_u8 (uint8x8_t __a, uint8x8_t __b)
bb60efd9 13386{
5726d376 13387 return (__a <= __b);
bb60efd9
JG
13388}
13389
a063e204
TC
13390__extension__ extern __inline uint16x4_t
13391__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13392vcle_u16 (uint16x4_t __a, uint16x4_t __b)
43e9d192 13393{
5726d376 13394 return (__a <= __b);
43e9d192
IB
13395}
13396
a063e204
TC
13397__extension__ extern __inline uint32x2_t
13398__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13399vcle_u32 (uint32x2_t __a, uint32x2_t __b)
43e9d192 13400{
5726d376 13401 return (__a <= __b);
43e9d192
IB
13402}
13403
a063e204
TC
13404__extension__ extern __inline uint64x1_t
13405__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13406vcle_u64 (uint64x1_t __a, uint64x1_t __b)
43e9d192 13407{
a8105959 13408 return (__a <= __b);
bb60efd9
JG
13409}
13410
a063e204
TC
13411__extension__ extern __inline uint32x4_t
13412__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13413vcleq_f32 (float32x4_t __a, float32x4_t __b)
bb60efd9 13414{
5726d376 13415 return (uint32x4_t) (__a <= __b);
bb60efd9
JG
13416}
13417
a063e204
TC
13418__extension__ extern __inline uint64x2_t
13419__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13420vcleq_f64 (float64x2_t __a, float64x2_t __b)
bb60efd9 13421{
5726d376 13422 return (uint64x2_t) (__a <= __b);
bb60efd9
JG
13423}
13424
a063e204
TC
13425__extension__ extern __inline uint8x16_t
13426__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13427vcleq_s8 (int8x16_t __a, int8x16_t __b)
43e9d192 13428{
5726d376 13429 return (uint8x16_t) (__a <= __b);
43e9d192
IB
13430}
13431
a063e204
TC
13432__extension__ extern __inline uint16x8_t
13433__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13434vcleq_s16 (int16x8_t __a, int16x8_t __b)
43e9d192 13435{
5726d376 13436 return (uint16x8_t) (__a <= __b);
43e9d192
IB
13437}
13438
a063e204
TC
13439__extension__ extern __inline uint32x4_t
13440__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13441vcleq_s32 (int32x4_t __a, int32x4_t __b)
43e9d192 13442{
5726d376 13443 return (uint32x4_t) (__a <= __b);
43e9d192
IB
13444}
13445
a063e204
TC
13446__extension__ extern __inline uint64x2_t
13447__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13448vcleq_s64 (int64x2_t __a, int64x2_t __b)
43e9d192 13449{
5726d376 13450 return (uint64x2_t) (__a <= __b);
47934dc4
JG
13451}
13452
a063e204
TC
13453__extension__ extern __inline uint8x16_t
13454__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13455vcleq_u8 (uint8x16_t __a, uint8x16_t __b)
47934dc4 13456{
5726d376 13457 return (__a <= __b);
43e9d192
IB
13458}
13459
a063e204
TC
13460__extension__ extern __inline uint16x8_t
13461__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13462vcleq_u16 (uint16x8_t __a, uint16x8_t __b)
43e9d192 13463{
5726d376 13464 return (__a <= __b);
43e9d192
IB
13465}
13466
a063e204
TC
13467__extension__ extern __inline uint32x4_t
13468__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13469vcleq_u32 (uint32x4_t __a, uint32x4_t __b)
43e9d192 13470{
5726d376 13471 return (__a <= __b);
43e9d192
IB
13472}
13473
a063e204
TC
13474__extension__ extern __inline uint64x2_t
13475__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13476vcleq_u64 (uint64x2_t __a, uint64x2_t __b)
43e9d192 13477{
5726d376 13478 return (__a <= __b);
43e9d192
IB
13479}
13480
91bd4114 13481/* vcle - scalar. */
bb60efd9 13482
a063e204
TC
13483__extension__ extern __inline uint32_t
13484__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13485vcles_f32 (float32_t __a, float32_t __b)
bb60efd9 13486{
91bd4114 13487 return __a <= __b ? -1 : 0;
bb60efd9
JG
13488}
13489
a063e204
TC
13490__extension__ extern __inline uint64_t
13491__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 13492vcled_s64 (int64_t __a, int64_t __b)
43e9d192 13493{
91bd4114 13494 return __a <= __b ? -1ll : 0ll;
43e9d192
IB
13495}
13496
a063e204
TC
13497__extension__ extern __inline uint64_t
13498__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 13499vcled_u64 (uint64_t __a, uint64_t __b)
43e9d192 13500{
91bd4114 13501 return __a <= __b ? -1ll : 0ll;
bb60efd9
JG
13502}
13503
a063e204
TC
13504__extension__ extern __inline uint64_t
13505__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13506vcled_f64 (float64_t __a, float64_t __b)
bb60efd9 13507{
91bd4114 13508 return __a <= __b ? -1ll : 0ll;
bb60efd9
JG
13509}
13510
91bd4114 13511/* vclez - vector. */
bb60efd9 13512
a063e204
TC
13513__extension__ extern __inline uint32x2_t
13514__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13515vclez_f32 (float32x2_t __a)
bb60efd9 13516{
5726d376 13517 return (uint32x2_t) (__a <= 0.0f);
bb60efd9
JG
13518}
13519
a063e204
TC
13520__extension__ extern __inline uint64x1_t
13521__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13522vclez_f64 (float64x1_t __a)
bb60efd9 13523{
c6a29a09 13524 return (uint64x1_t) (__a <= (float64x1_t) {0.0});
bb60efd9
JG
13525}
13526
a063e204
TC
13527__extension__ extern __inline uint8x8_t
13528__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13529vclez_s8 (int8x8_t __a)
bb60efd9 13530{
5726d376 13531 return (uint8x8_t) (__a <= 0);
bb60efd9
JG
13532}
13533
a063e204
TC
13534__extension__ extern __inline uint16x4_t
13535__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13536vclez_s16 (int16x4_t __a)
bb60efd9 13537{
5726d376 13538 return (uint16x4_t) (__a <= 0);
bb60efd9
JG
13539}
13540
a063e204
TC
13541__extension__ extern __inline uint32x2_t
13542__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13543vclez_s32 (int32x2_t __a)
bb60efd9 13544{
5726d376 13545 return (uint32x2_t) (__a <= 0);
bb60efd9
JG
13546}
13547
a063e204
TC
13548__extension__ extern __inline uint64x1_t
13549__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13550vclez_s64 (int64x1_t __a)
bb60efd9 13551{
a8105959 13552 return (uint64x1_t) (__a <= __AARCH64_INT64_C (0));
bb60efd9
JG
13553}
13554
a063e204
TC
13555__extension__ extern __inline uint32x4_t
13556__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13557vclezq_f32 (float32x4_t __a)
bb60efd9 13558{
5726d376 13559 return (uint32x4_t) (__a <= 0.0f);
bb60efd9
JG
13560}
13561
a063e204
TC
13562__extension__ extern __inline uint64x2_t
13563__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13564vclezq_f64 (float64x2_t __a)
bb60efd9 13565{
5726d376 13566 return (uint64x2_t) (__a <= 0.0);
bb60efd9
JG
13567}
13568
a063e204
TC
13569__extension__ extern __inline uint8x16_t
13570__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13571vclezq_s8 (int8x16_t __a)
bb60efd9 13572{
5726d376 13573 return (uint8x16_t) (__a <= 0);
bb60efd9
JG
13574}
13575
a063e204
TC
13576__extension__ extern __inline uint16x8_t
13577__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13578vclezq_s16 (int16x8_t __a)
bb60efd9 13579{
5726d376 13580 return (uint16x8_t) (__a <= 0);
bb60efd9
JG
13581}
13582
a063e204
TC
13583__extension__ extern __inline uint32x4_t
13584__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13585vclezq_s32 (int32x4_t __a)
bb60efd9 13586{
5726d376 13587 return (uint32x4_t) (__a <= 0);
bb60efd9
JG
13588}
13589
a063e204
TC
13590__extension__ extern __inline uint64x2_t
13591__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13592vclezq_s64 (int64x2_t __a)
bb60efd9 13593{
5726d376 13594 return (uint64x2_t) (__a <= __AARCH64_INT64_C (0));
bb60efd9
JG
13595}
13596
91bd4114 13597/* vclez - scalar. */
bb60efd9 13598
a063e204
TC
13599__extension__ extern __inline uint32_t
13600__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13601vclezs_f32 (float32_t __a)
bb60efd9 13602{
91bd4114 13603 return __a <= 0.0f ? -1 : 0;
43e9d192
IB
13604}
13605
a063e204
TC
13606__extension__ extern __inline uint64_t
13607__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 13608vclezd_s64 (int64_t __a)
43e9d192 13609{
91bd4114 13610 return __a <= 0 ? -1ll : 0ll;
bb60efd9
JG
13611}
13612
a063e204
TC
13613__extension__ extern __inline uint64_t
13614__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13615vclezd_f64 (float64_t __a)
bb60efd9 13616{
91bd4114 13617 return __a <= 0.0 ? -1ll : 0ll;
bb60efd9
JG
13618}
13619
91bd4114 13620/* vclt - vector. */
bb60efd9 13621
a063e204
TC
13622__extension__ extern __inline uint32x2_t
13623__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13624vclt_f32 (float32x2_t __a, float32x2_t __b)
bb60efd9 13625{
5726d376 13626 return (uint32x2_t) (__a < __b);
bb60efd9
JG
13627}
13628
a063e204
TC
13629__extension__ extern __inline uint64x1_t
13630__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13631vclt_f64 (float64x1_t __a, float64x1_t __b)
bb60efd9 13632{
c6a29a09 13633 return (uint64x1_t) (__a < __b);
bb60efd9
JG
13634}
13635
a063e204
TC
13636__extension__ extern __inline uint8x8_t
13637__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13638vclt_s8 (int8x8_t __a, int8x8_t __b)
43e9d192 13639{
5726d376 13640 return (uint8x8_t) (__a < __b);
43e9d192
IB
13641}
13642
a063e204
TC
13643__extension__ extern __inline uint16x4_t
13644__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13645vclt_s16 (int16x4_t __a, int16x4_t __b)
43e9d192 13646{
5726d376 13647 return (uint16x4_t) (__a < __b);
43e9d192
IB
13648}
13649
a063e204
TC
13650__extension__ extern __inline uint32x2_t
13651__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13652vclt_s32 (int32x2_t __a, int32x2_t __b)
43e9d192 13653{
5726d376 13654 return (uint32x2_t) (__a < __b);
43e9d192
IB
13655}
13656
a063e204
TC
13657__extension__ extern __inline uint64x1_t
13658__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13659vclt_s64 (int64x1_t __a, int64x1_t __b)
43e9d192 13660{
a8105959 13661 return (uint64x1_t) (__a < __b);
43e9d192
IB
13662}
13663
a063e204
TC
13664__extension__ extern __inline uint8x8_t
13665__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13666vclt_u8 (uint8x8_t __a, uint8x8_t __b)
43e9d192 13667{
5726d376 13668 return (__a < __b);
bb60efd9
JG
13669}
13670
a063e204
TC
13671__extension__ extern __inline uint16x4_t
13672__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13673vclt_u16 (uint16x4_t __a, uint16x4_t __b)
bb60efd9 13674{
5726d376 13675 return (__a < __b);
bb60efd9
JG
13676}
13677
a063e204
TC
13678__extension__ extern __inline uint32x2_t
13679__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13680vclt_u32 (uint32x2_t __a, uint32x2_t __b)
bb60efd9 13681{
5726d376 13682 return (__a < __b);
bb60efd9
JG
13683}
13684
a063e204
TC
13685__extension__ extern __inline uint64x1_t
13686__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13687vclt_u64 (uint64x1_t __a, uint64x1_t __b)
bb60efd9 13688{
a8105959 13689 return (__a < __b);
bb60efd9
JG
13690}
13691
a063e204
TC
13692__extension__ extern __inline uint32x4_t
13693__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13694vcltq_f32 (float32x4_t __a, float32x4_t __b)
bb60efd9 13695{
5726d376 13696 return (uint32x4_t) (__a < __b);
bb60efd9
JG
13697}
13698
a063e204
TC
13699__extension__ extern __inline uint64x2_t
13700__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13701vcltq_f64 (float64x2_t __a, float64x2_t __b)
bb60efd9 13702{
5726d376 13703 return (uint64x2_t) (__a < __b);
bb60efd9
JG
13704}
13705
a063e204
TC
13706__extension__ extern __inline uint8x16_t
13707__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13708vcltq_s8 (int8x16_t __a, int8x16_t __b)
bb60efd9 13709{
5726d376 13710 return (uint8x16_t) (__a < __b);
bb60efd9
JG
13711}
13712
a063e204
TC
13713__extension__ extern __inline uint16x8_t
13714__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13715vcltq_s16 (int16x8_t __a, int16x8_t __b)
bb60efd9 13716{
5726d376 13717 return (uint16x8_t) (__a < __b);
bb60efd9
JG
13718}
13719
a063e204
TC
13720__extension__ extern __inline uint32x4_t
13721__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13722vcltq_s32 (int32x4_t __a, int32x4_t __b)
bb60efd9 13723{
5726d376 13724 return (uint32x4_t) (__a < __b);
bb60efd9
JG
13725}
13726
a063e204
TC
13727__extension__ extern __inline uint64x2_t
13728__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13729vcltq_s64 (int64x2_t __a, int64x2_t __b)
bb60efd9 13730{
5726d376 13731 return (uint64x2_t) (__a < __b);
bb60efd9
JG
13732}
13733
a063e204
TC
13734__extension__ extern __inline uint8x16_t
13735__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13736vcltq_u8 (uint8x16_t __a, uint8x16_t __b)
bb60efd9 13737{
5726d376 13738 return (__a < __b);
bb60efd9
JG
13739}
13740
a063e204
TC
13741__extension__ extern __inline uint16x8_t
13742__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13743vcltq_u16 (uint16x8_t __a, uint16x8_t __b)
bb60efd9 13744{
5726d376 13745 return (__a < __b);
bb60efd9
JG
13746}
13747
a063e204
TC
13748__extension__ extern __inline uint32x4_t
13749__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13750vcltq_u32 (uint32x4_t __a, uint32x4_t __b)
bb60efd9 13751{
5726d376 13752 return (__a < __b);
bb60efd9
JG
13753}
13754
a063e204
TC
13755__extension__ extern __inline uint64x2_t
13756__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13757vcltq_u64 (uint64x2_t __a, uint64x2_t __b)
bb60efd9 13758{
5726d376 13759 return (__a < __b);
bb60efd9
JG
13760}
13761
91bd4114 13762/* vclt - scalar. */
bb60efd9 13763
a063e204
TC
13764__extension__ extern __inline uint32_t
13765__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13766vclts_f32 (float32_t __a, float32_t __b)
bb60efd9 13767{
91bd4114 13768 return __a < __b ? -1 : 0;
bb60efd9
JG
13769}
13770
a063e204
TC
13771__extension__ extern __inline uint64_t
13772__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 13773vcltd_s64 (int64_t __a, int64_t __b)
bb60efd9 13774{
91bd4114 13775 return __a < __b ? -1ll : 0ll;
bb60efd9
JG
13776}
13777
a063e204
TC
13778__extension__ extern __inline uint64_t
13779__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 13780vcltd_u64 (uint64_t __a, uint64_t __b)
bb60efd9 13781{
91bd4114 13782 return __a < __b ? -1ll : 0ll;
bb60efd9
JG
13783}
13784
a063e204
TC
13785__extension__ extern __inline uint64_t
13786__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13787vcltd_f64 (float64_t __a, float64_t __b)
bb60efd9 13788{
91bd4114 13789 return __a < __b ? -1ll : 0ll;
bb60efd9
JG
13790}
13791
91bd4114 13792/* vcltz - vector. */
bb60efd9 13793
a063e204
TC
13794__extension__ extern __inline uint32x2_t
13795__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13796vcltz_f32 (float32x2_t __a)
bb60efd9 13797{
5726d376 13798 return (uint32x2_t) (__a < 0.0f);
bb60efd9
JG
13799}
13800
a063e204
TC
13801__extension__ extern __inline uint64x1_t
13802__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13803vcltz_f64 (float64x1_t __a)
bb60efd9 13804{
c6a29a09 13805 return (uint64x1_t) (__a < (float64x1_t) {0.0});
bb60efd9
JG
13806}
13807
a063e204
TC
13808__extension__ extern __inline uint8x8_t
13809__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
13810vcltz_s8 (int8x8_t __a)
13811{
5726d376 13812 return (uint8x8_t) (__a < 0);
91bd4114
JG
13813}
13814
a063e204
TC
13815__extension__ extern __inline uint16x4_t
13816__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13817vcltz_s16 (int16x4_t __a)
bb60efd9 13818{
5726d376 13819 return (uint16x4_t) (__a < 0);
bb60efd9
JG
13820}
13821
a063e204
TC
13822__extension__ extern __inline uint32x2_t
13823__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13824vcltz_s32 (int32x2_t __a)
bb60efd9 13825{
5726d376 13826 return (uint32x2_t) (__a < 0);
bb60efd9
JG
13827}
13828
a063e204
TC
13829__extension__ extern __inline uint64x1_t
13830__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13831vcltz_s64 (int64x1_t __a)
bb60efd9 13832{
a8105959 13833 return (uint64x1_t) (__a < __AARCH64_INT64_C (0));
43e9d192
IB
13834}
13835
a063e204
TC
13836__extension__ extern __inline uint32x4_t
13837__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13838vcltzq_f32 (float32x4_t __a)
43e9d192 13839{
5726d376 13840 return (uint32x4_t) (__a < 0.0f);
43e9d192
IB
13841}
13842
a063e204
TC
13843__extension__ extern __inline uint64x2_t
13844__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13845vcltzq_f64 (float64x2_t __a)
47934dc4 13846{
5726d376 13847 return (uint64x2_t) (__a < 0.0);
47934dc4 13848}
43e9d192 13849
a063e204
TC
13850__extension__ extern __inline uint8x16_t
13851__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13852vcltzq_s8 (int8x16_t __a)
9697e620 13853{
5726d376 13854 return (uint8x16_t) (__a < 0);
9697e620
JG
13855}
13856
a063e204
TC
13857__extension__ extern __inline uint16x8_t
13858__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13859vcltzq_s16 (int16x8_t __a)
9697e620 13860{
5726d376 13861 return (uint16x8_t) (__a < 0);
9697e620
JG
13862}
13863
a063e204
TC
13864__extension__ extern __inline uint32x4_t
13865__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13866vcltzq_s32 (int32x4_t __a)
9697e620 13867{
5726d376 13868 return (uint32x4_t) (__a < 0);
9697e620
JG
13869}
13870
a063e204
TC
13871__extension__ extern __inline uint64x2_t
13872__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13873vcltzq_s64 (int64x2_t __a)
47934dc4 13874{
5726d376 13875 return (uint64x2_t) (__a < __AARCH64_INT64_C (0));
0ac198d3
JG
13876}
13877
91bd4114 13878/* vcltz - scalar. */
bb60efd9 13879
a063e204
TC
13880__extension__ extern __inline uint32_t
13881__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13882vcltzs_f32 (float32_t __a)
bb60efd9 13883{
91bd4114 13884 return __a < 0.0f ? -1 : 0;
bb60efd9
JG
13885}
13886
a063e204
TC
13887__extension__ extern __inline uint64_t
13888__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 13889vcltzd_s64 (int64_t __a)
0ac198d3 13890{
91bd4114 13891 return __a < 0 ? -1ll : 0ll;
0ac198d3
JG
13892}
13893
a063e204
TC
13894__extension__ extern __inline uint64_t
13895__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 13896vcltzd_f64 (float64_t __a)
43e9d192 13897{
91bd4114 13898 return __a < 0.0 ? -1ll : 0ll;
43e9d192
IB
13899}
13900
a5e69cad
FY
13901/* vcls. */
13902
a063e204
TC
13903__extension__ extern __inline int8x8_t
13904__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a5e69cad
FY
13905vcls_s8 (int8x8_t __a)
13906{
13907 return __builtin_aarch64_clrsbv8qi (__a);
13908}
13909
a063e204
TC
13910__extension__ extern __inline int16x4_t
13911__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a5e69cad
FY
13912vcls_s16 (int16x4_t __a)
13913{
13914 return __builtin_aarch64_clrsbv4hi (__a);
13915}
13916
a063e204
TC
13917__extension__ extern __inline int32x2_t
13918__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a5e69cad
FY
13919vcls_s32 (int32x2_t __a)
13920{
13921 return __builtin_aarch64_clrsbv2si (__a);
13922}
13923
a063e204
TC
13924__extension__ extern __inline int8x16_t
13925__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a5e69cad
FY
13926vclsq_s8 (int8x16_t __a)
13927{
13928 return __builtin_aarch64_clrsbv16qi (__a);
13929}
13930
a063e204
TC
13931__extension__ extern __inline int16x8_t
13932__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a5e69cad
FY
13933vclsq_s16 (int16x8_t __a)
13934{
13935 return __builtin_aarch64_clrsbv8hi (__a);
13936}
13937
a063e204
TC
13938__extension__ extern __inline int32x4_t
13939__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a5e69cad
FY
13940vclsq_s32 (int32x4_t __a)
13941{
13942 return __builtin_aarch64_clrsbv4si (__a);
13943}
13944
30957092
KT
13945__extension__ extern __inline int8x8_t
13946__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
13947vcls_u8 (uint8x8_t __a)
13948{
13949 return __builtin_aarch64_clrsbv8qi ((int8x8_t) __a);
13950}
13951
13952__extension__ extern __inline int16x4_t
13953__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
13954vcls_u16 (uint16x4_t __a)
13955{
13956 return __builtin_aarch64_clrsbv4hi ((int16x4_t) __a);
13957}
13958
13959__extension__ extern __inline int32x2_t
13960__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
13961vcls_u32 (uint32x2_t __a)
13962{
13963 return __builtin_aarch64_clrsbv2si ((int32x2_t) __a);
13964}
13965
13966__extension__ extern __inline int8x16_t
13967__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
13968vclsq_u8 (uint8x16_t __a)
13969{
13970 return __builtin_aarch64_clrsbv16qi ((int8x16_t) __a);
13971}
13972
13973__extension__ extern __inline int16x8_t
13974__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
13975vclsq_u16 (uint16x8_t __a)
13976{
13977 return __builtin_aarch64_clrsbv8hi ((int16x8_t) __a);
13978}
13979
13980__extension__ extern __inline int32x4_t
13981__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
13982vclsq_u32 (uint32x4_t __a)
13983{
13984 return __builtin_aarch64_clrsbv4si ((int32x4_t) __a);
13985}
13986
0fe04f5c
AV
13987/* vclz. */
13988
a063e204
TC
13989__extension__ extern __inline int8x8_t
13990__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0fe04f5c
AV
13991vclz_s8 (int8x8_t __a)
13992{
13993 return __builtin_aarch64_clzv8qi (__a);
13994}
13995
a063e204
TC
13996__extension__ extern __inline int16x4_t
13997__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0fe04f5c
AV
13998vclz_s16 (int16x4_t __a)
13999{
14000 return __builtin_aarch64_clzv4hi (__a);
14001}
14002
a063e204
TC
14003__extension__ extern __inline int32x2_t
14004__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0fe04f5c
AV
14005vclz_s32 (int32x2_t __a)
14006{
14007 return __builtin_aarch64_clzv2si (__a);
14008}
14009
a063e204
TC
14010__extension__ extern __inline uint8x8_t
14011__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0fe04f5c
AV
14012vclz_u8 (uint8x8_t __a)
14013{
14014 return (uint8x8_t)__builtin_aarch64_clzv8qi ((int8x8_t)__a);
14015}
14016
a063e204
TC
14017__extension__ extern __inline uint16x4_t
14018__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0fe04f5c
AV
14019vclz_u16 (uint16x4_t __a)
14020{
14021 return (uint16x4_t)__builtin_aarch64_clzv4hi ((int16x4_t)__a);
14022}
14023
a063e204
TC
14024__extension__ extern __inline uint32x2_t
14025__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0fe04f5c
AV
14026vclz_u32 (uint32x2_t __a)
14027{
14028 return (uint32x2_t)__builtin_aarch64_clzv2si ((int32x2_t)__a);
14029}
14030
a063e204
TC
14031__extension__ extern __inline int8x16_t
14032__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0fe04f5c
AV
14033vclzq_s8 (int8x16_t __a)
14034{
14035 return __builtin_aarch64_clzv16qi (__a);
14036}
14037
a063e204
TC
14038__extension__ extern __inline int16x8_t
14039__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0fe04f5c
AV
14040vclzq_s16 (int16x8_t __a)
14041{
14042 return __builtin_aarch64_clzv8hi (__a);
14043}
14044
a063e204
TC
14045__extension__ extern __inline int32x4_t
14046__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0fe04f5c
AV
14047vclzq_s32 (int32x4_t __a)
14048{
14049 return __builtin_aarch64_clzv4si (__a);
14050}
14051
a063e204
TC
14052__extension__ extern __inline uint8x16_t
14053__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0fe04f5c
AV
14054vclzq_u8 (uint8x16_t __a)
14055{
14056 return (uint8x16_t)__builtin_aarch64_clzv16qi ((int8x16_t)__a);
14057}
14058
a063e204
TC
14059__extension__ extern __inline uint16x8_t
14060__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0fe04f5c
AV
14061vclzq_u16 (uint16x8_t __a)
14062{
14063 return (uint16x8_t)__builtin_aarch64_clzv8hi ((int16x8_t)__a);
14064}
14065
a063e204
TC
14066__extension__ extern __inline uint32x4_t
14067__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0fe04f5c
AV
14068vclzq_u32 (uint32x4_t __a)
14069{
14070 return (uint32x4_t)__builtin_aarch64_clzv4si ((int32x4_t)__a);
14071}
14072
a5e69cad
FY
14073/* vcnt. */
14074
a063e204
TC
14075__extension__ extern __inline poly8x8_t
14076__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a5e69cad
FY
14077vcnt_p8 (poly8x8_t __a)
14078{
14079 return (poly8x8_t) __builtin_aarch64_popcountv8qi ((int8x8_t) __a);
14080}
14081
a063e204
TC
14082__extension__ extern __inline int8x8_t
14083__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a5e69cad
FY
14084vcnt_s8 (int8x8_t __a)
14085{
14086 return __builtin_aarch64_popcountv8qi (__a);
14087}
14088
a063e204
TC
14089__extension__ extern __inline uint8x8_t
14090__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a5e69cad
FY
14091vcnt_u8 (uint8x8_t __a)
14092{
14093 return (uint8x8_t) __builtin_aarch64_popcountv8qi ((int8x8_t) __a);
14094}
14095
a063e204
TC
14096__extension__ extern __inline poly8x16_t
14097__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a5e69cad
FY
14098vcntq_p8 (poly8x16_t __a)
14099{
14100 return (poly8x16_t) __builtin_aarch64_popcountv16qi ((int8x16_t) __a);
14101}
14102
a063e204
TC
14103__extension__ extern __inline int8x16_t
14104__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a5e69cad
FY
14105vcntq_s8 (int8x16_t __a)
14106{
14107 return __builtin_aarch64_popcountv16qi (__a);
14108}
14109
a063e204
TC
14110__extension__ extern __inline uint8x16_t
14111__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
a5e69cad
FY
14112vcntq_u8 (uint8x16_t __a)
14113{
14114 return (uint8x16_t) __builtin_aarch64_popcountv16qi ((int8x16_t) __a);
14115}
14116
3dfa8071
KT
14117/* vcopy_lane. */
14118
a063e204
TC
14119__extension__ extern __inline float32x2_t
14120__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14121vcopy_lane_f32 (float32x2_t __a, const int __lane1,
14122 float32x2_t __b, const int __lane2)
14123{
14124 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14125 __a, __lane1);
14126}
14127
a063e204
TC
14128__extension__ extern __inline float64x1_t
14129__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14130vcopy_lane_f64 (float64x1_t __a, const int __lane1,
14131 float64x1_t __b, const int __lane2)
14132{
14133 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14134 __a, __lane1);
14135}
14136
a063e204
TC
14137__extension__ extern __inline poly8x8_t
14138__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14139vcopy_lane_p8 (poly8x8_t __a, const int __lane1,
14140 poly8x8_t __b, const int __lane2)
14141{
14142 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14143 __a, __lane1);
14144}
14145
a063e204
TC
14146__extension__ extern __inline poly16x4_t
14147__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14148vcopy_lane_p16 (poly16x4_t __a, const int __lane1,
14149 poly16x4_t __b, const int __lane2)
14150{
14151 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14152 __a, __lane1);
14153}
14154
159b8724
TC
14155__extension__ extern __inline poly64x1_t
14156__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
14157vcopy_lane_p64 (poly64x1_t __a, const int __lane1,
14158 poly64x1_t __b, const int __lane2)
14159{
14160 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14161 __a, __lane1);
14162}
14163
a063e204
TC
14164__extension__ extern __inline int8x8_t
14165__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14166vcopy_lane_s8 (int8x8_t __a, const int __lane1,
14167 int8x8_t __b, const int __lane2)
14168{
14169 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14170 __a, __lane1);
14171}
14172
a063e204
TC
14173__extension__ extern __inline int16x4_t
14174__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14175vcopy_lane_s16 (int16x4_t __a, const int __lane1,
14176 int16x4_t __b, const int __lane2)
14177{
14178 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14179 __a, __lane1);
14180}
14181
a063e204
TC
14182__extension__ extern __inline int32x2_t
14183__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14184vcopy_lane_s32 (int32x2_t __a, const int __lane1,
14185 int32x2_t __b, const int __lane2)
14186{
14187 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14188 __a, __lane1);
14189}
14190
a063e204
TC
14191__extension__ extern __inline int64x1_t
14192__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14193vcopy_lane_s64 (int64x1_t __a, const int __lane1,
14194 int64x1_t __b, const int __lane2)
14195{
14196 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14197 __a, __lane1);
14198}
14199
a063e204
TC
14200__extension__ extern __inline uint8x8_t
14201__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14202vcopy_lane_u8 (uint8x8_t __a, const int __lane1,
14203 uint8x8_t __b, const int __lane2)
14204{
14205 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14206 __a, __lane1);
14207}
14208
a063e204
TC
14209__extension__ extern __inline uint16x4_t
14210__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14211vcopy_lane_u16 (uint16x4_t __a, const int __lane1,
14212 uint16x4_t __b, const int __lane2)
14213{
14214 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14215 __a, __lane1);
14216}
14217
a063e204
TC
14218__extension__ extern __inline uint32x2_t
14219__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14220vcopy_lane_u32 (uint32x2_t __a, const int __lane1,
14221 uint32x2_t __b, const int __lane2)
14222{
14223 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14224 __a, __lane1);
14225}
14226
a063e204
TC
14227__extension__ extern __inline uint64x1_t
14228__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14229vcopy_lane_u64 (uint64x1_t __a, const int __lane1,
14230 uint64x1_t __b, const int __lane2)
14231{
14232 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14233 __a, __lane1);
14234}
14235
14236/* vcopy_laneq. */
14237
a063e204
TC
14238__extension__ extern __inline float32x2_t
14239__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14240vcopy_laneq_f32 (float32x2_t __a, const int __lane1,
14241 float32x4_t __b, const int __lane2)
14242{
14243 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14244 __a, __lane1);
14245}
14246
a063e204
TC
14247__extension__ extern __inline float64x1_t
14248__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14249vcopy_laneq_f64 (float64x1_t __a, const int __lane1,
14250 float64x2_t __b, const int __lane2)
14251{
14252 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14253 __a, __lane1);
14254}
14255
a063e204
TC
14256__extension__ extern __inline poly8x8_t
14257__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14258vcopy_laneq_p8 (poly8x8_t __a, const int __lane1,
14259 poly8x16_t __b, const int __lane2)
14260{
14261 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14262 __a, __lane1);
14263}
14264
a063e204
TC
14265__extension__ extern __inline poly16x4_t
14266__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14267vcopy_laneq_p16 (poly16x4_t __a, const int __lane1,
14268 poly16x8_t __b, const int __lane2)
14269{
14270 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14271 __a, __lane1);
14272}
14273
159b8724
TC
14274__extension__ extern __inline poly64x1_t
14275__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
14276vcopy_laneq_p64 (poly64x1_t __a, const int __lane1,
14277 poly64x2_t __b, const int __lane2)
14278{
14279 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14280 __a, __lane1);
14281}
14282
a063e204
TC
14283__extension__ extern __inline int8x8_t
14284__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14285vcopy_laneq_s8 (int8x8_t __a, const int __lane1,
14286 int8x16_t __b, const int __lane2)
14287{
14288 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14289 __a, __lane1);
14290}
14291
a063e204
TC
14292__extension__ extern __inline int16x4_t
14293__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14294vcopy_laneq_s16 (int16x4_t __a, const int __lane1,
14295 int16x8_t __b, const int __lane2)
14296{
14297 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14298 __a, __lane1);
14299}
14300
a063e204
TC
14301__extension__ extern __inline int32x2_t
14302__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14303vcopy_laneq_s32 (int32x2_t __a, const int __lane1,
14304 int32x4_t __b, const int __lane2)
14305{
14306 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14307 __a, __lane1);
14308}
14309
a063e204
TC
14310__extension__ extern __inline int64x1_t
14311__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14312vcopy_laneq_s64 (int64x1_t __a, const int __lane1,
14313 int64x2_t __b, const int __lane2)
14314{
14315 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14316 __a, __lane1);
14317}
14318
a063e204
TC
14319__extension__ extern __inline uint8x8_t
14320__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14321vcopy_laneq_u8 (uint8x8_t __a, const int __lane1,
14322 uint8x16_t __b, const int __lane2)
14323{
14324 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14325 __a, __lane1);
14326}
14327
a063e204
TC
14328__extension__ extern __inline uint16x4_t
14329__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14330vcopy_laneq_u16 (uint16x4_t __a, const int __lane1,
14331 uint16x8_t __b, const int __lane2)
14332{
14333 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14334 __a, __lane1);
14335}
14336
a063e204
TC
14337__extension__ extern __inline uint32x2_t
14338__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14339vcopy_laneq_u32 (uint32x2_t __a, const int __lane1,
14340 uint32x4_t __b, const int __lane2)
14341{
14342 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14343 __a, __lane1);
14344}
14345
a063e204
TC
14346__extension__ extern __inline uint64x1_t
14347__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14348vcopy_laneq_u64 (uint64x1_t __a, const int __lane1,
14349 uint64x2_t __b, const int __lane2)
14350{
14351 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14352 __a, __lane1);
14353}
14354
14355/* vcopyq_lane. */
14356
a063e204
TC
14357__extension__ extern __inline float32x4_t
14358__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14359vcopyq_lane_f32 (float32x4_t __a, const int __lane1,
14360 float32x2_t __b, const int __lane2)
14361{
14362 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14363 __a, __lane1);
14364}
14365
a063e204
TC
14366__extension__ extern __inline float64x2_t
14367__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14368vcopyq_lane_f64 (float64x2_t __a, const int __lane1,
14369 float64x1_t __b, const int __lane2)
14370{
14371 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14372 __a, __lane1);
14373}
14374
a063e204
TC
14375__extension__ extern __inline poly8x16_t
14376__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14377vcopyq_lane_p8 (poly8x16_t __a, const int __lane1,
14378 poly8x8_t __b, const int __lane2)
14379{
14380 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14381 __a, __lane1);
14382}
14383
a063e204
TC
14384__extension__ extern __inline poly16x8_t
14385__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14386vcopyq_lane_p16 (poly16x8_t __a, const int __lane1,
14387 poly16x4_t __b, const int __lane2)
14388{
14389 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14390 __a, __lane1);
14391}
14392
159b8724
TC
14393__extension__ extern __inline poly64x2_t
14394__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
14395vcopyq_lane_p64 (poly64x2_t __a, const int __lane1,
14396 poly64x1_t __b, const int __lane2)
14397{
14398 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14399 __a, __lane1);
14400}
14401
a063e204
TC
14402__extension__ extern __inline int8x16_t
14403__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14404vcopyq_lane_s8 (int8x16_t __a, const int __lane1,
14405 int8x8_t __b, const int __lane2)
14406{
14407 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14408 __a, __lane1);
14409}
14410
a063e204
TC
14411__extension__ extern __inline int16x8_t
14412__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14413vcopyq_lane_s16 (int16x8_t __a, const int __lane1,
14414 int16x4_t __b, const int __lane2)
14415{
14416 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14417 __a, __lane1);
14418}
14419
a063e204
TC
14420__extension__ extern __inline int32x4_t
14421__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14422vcopyq_lane_s32 (int32x4_t __a, const int __lane1,
14423 int32x2_t __b, const int __lane2)
14424{
14425 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14426 __a, __lane1);
14427}
14428
a063e204
TC
14429__extension__ extern __inline int64x2_t
14430__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14431vcopyq_lane_s64 (int64x2_t __a, const int __lane1,
14432 int64x1_t __b, const int __lane2)
14433{
14434 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14435 __a, __lane1);
14436}
14437
a063e204
TC
14438__extension__ extern __inline uint8x16_t
14439__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14440vcopyq_lane_u8 (uint8x16_t __a, const int __lane1,
14441 uint8x8_t __b, const int __lane2)
14442{
14443 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14444 __a, __lane1);
14445}
14446
a063e204
TC
14447__extension__ extern __inline uint16x8_t
14448__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14449vcopyq_lane_u16 (uint16x8_t __a, const int __lane1,
14450 uint16x4_t __b, const int __lane2)
14451{
14452 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14453 __a, __lane1);
14454}
14455
a063e204
TC
14456__extension__ extern __inline uint32x4_t
14457__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14458vcopyq_lane_u32 (uint32x4_t __a, const int __lane1,
14459 uint32x2_t __b, const int __lane2)
14460{
14461 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14462 __a, __lane1);
14463}
14464
a063e204
TC
14465__extension__ extern __inline uint64x2_t
14466__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14467vcopyq_lane_u64 (uint64x2_t __a, const int __lane1,
14468 uint64x1_t __b, const int __lane2)
14469{
14470 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14471 __a, __lane1);
14472}
14473
14474/* vcopyq_laneq. */
14475
a063e204
TC
14476__extension__ extern __inline float32x4_t
14477__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14478vcopyq_laneq_f32 (float32x4_t __a, const int __lane1,
14479 float32x4_t __b, const int __lane2)
14480{
14481 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14482 __a, __lane1);
14483}
14484
a063e204
TC
14485__extension__ extern __inline float64x2_t
14486__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14487vcopyq_laneq_f64 (float64x2_t __a, const int __lane1,
14488 float64x2_t __b, const int __lane2)
14489{
14490 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14491 __a, __lane1);
14492}
14493
a063e204
TC
14494__extension__ extern __inline poly8x16_t
14495__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14496vcopyq_laneq_p8 (poly8x16_t __a, const int __lane1,
14497 poly8x16_t __b, const int __lane2)
14498{
14499 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14500 __a, __lane1);
14501}
14502
a063e204
TC
14503__extension__ extern __inline poly16x8_t
14504__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14505vcopyq_laneq_p16 (poly16x8_t __a, const int __lane1,
14506 poly16x8_t __b, const int __lane2)
14507{
14508 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14509 __a, __lane1);
14510}
14511
159b8724
TC
14512__extension__ extern __inline poly64x2_t
14513__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
14514vcopyq_laneq_p64 (poly64x2_t __a, const int __lane1,
14515 poly64x2_t __b, const int __lane2)
14516{
14517 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14518 __a, __lane1);
14519}
14520
a063e204
TC
14521__extension__ extern __inline int8x16_t
14522__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14523vcopyq_laneq_s8 (int8x16_t __a, const int __lane1,
14524 int8x16_t __b, const int __lane2)
14525{
14526 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14527 __a, __lane1);
14528}
14529
a063e204
TC
14530__extension__ extern __inline int16x8_t
14531__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14532vcopyq_laneq_s16 (int16x8_t __a, const int __lane1,
14533 int16x8_t __b, const int __lane2)
14534{
14535 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14536 __a, __lane1);
14537}
14538
a063e204
TC
14539__extension__ extern __inline int32x4_t
14540__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14541vcopyq_laneq_s32 (int32x4_t __a, const int __lane1,
14542 int32x4_t __b, const int __lane2)
14543{
14544 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14545 __a, __lane1);
14546}
14547
a063e204
TC
14548__extension__ extern __inline int64x2_t
14549__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14550vcopyq_laneq_s64 (int64x2_t __a, const int __lane1,
14551 int64x2_t __b, const int __lane2)
14552{
14553 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14554 __a, __lane1);
14555}
14556
a063e204
TC
14557__extension__ extern __inline uint8x16_t
14558__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14559vcopyq_laneq_u8 (uint8x16_t __a, const int __lane1,
14560 uint8x16_t __b, const int __lane2)
14561{
14562 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14563 __a, __lane1);
14564}
14565
a063e204
TC
14566__extension__ extern __inline uint16x8_t
14567__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14568vcopyq_laneq_u16 (uint16x8_t __a, const int __lane1,
14569 uint16x8_t __b, const int __lane2)
14570{
14571 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14572 __a, __lane1);
14573}
14574
a063e204
TC
14575__extension__ extern __inline uint32x4_t
14576__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14577vcopyq_laneq_u32 (uint32x4_t __a, const int __lane1,
14578 uint32x4_t __b, const int __lane2)
14579{
14580 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14581 __a, __lane1);
14582}
14583
a063e204
TC
14584__extension__ extern __inline uint64x2_t
14585__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3dfa8071
KT
14586vcopyq_laneq_u64 (uint64x2_t __a, const int __lane1,
14587 uint64x2_t __b, const int __lane2)
14588{
14589 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
14590 __a, __lane1);
14591}
14592
91bd4114 14593/* vcvt (double -> float). */
47934dc4 14594
a063e204
TC
14595__extension__ extern __inline float16x4_t
14596__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
922f9c25
AL
14597vcvt_f16_f32 (float32x4_t __a)
14598{
14599 return __builtin_aarch64_float_truncate_lo_v4hf (__a);
14600}
14601
a063e204
TC
14602__extension__ extern __inline float16x8_t
14603__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
922f9c25
AL
14604vcvt_high_f16_f32 (float16x4_t __a, float32x4_t __b)
14605{
14606 return __builtin_aarch64_float_truncate_hi_v8hf (__a, __b);
14607}
14608
a063e204
TC
14609__extension__ extern __inline float32x2_t
14610__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14611vcvt_f32_f64 (float64x2_t __a)
43e9d192 14612{
91bd4114 14613 return __builtin_aarch64_float_truncate_lo_v2sf (__a);
43e9d192
IB
14614}
14615
a063e204
TC
14616__extension__ extern __inline float32x4_t
14617__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14618vcvt_high_f32_f64 (float32x2_t __a, float64x2_t __b)
43e9d192 14619{
91bd4114 14620 return __builtin_aarch64_float_truncate_hi_v4sf (__a, __b);
43e9d192
IB
14621}
14622
91bd4114 14623/* vcvt (float -> double). */
43e9d192 14624
a063e204
TC
14625__extension__ extern __inline float32x4_t
14626__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
03873eb9
AL
14627vcvt_f32_f16 (float16x4_t __a)
14628{
14629 return __builtin_aarch64_float_extend_lo_v4sf (__a);
14630}
14631
a063e204
TC
14632__extension__ extern __inline float64x2_t
14633__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14634vcvt_f64_f32 (float32x2_t __a)
43e9d192 14635{
43e9d192 14636
91bd4114 14637 return __builtin_aarch64_float_extend_lo_v2df (__a);
43e9d192
IB
14638}
14639
a063e204
TC
14640__extension__ extern __inline float32x4_t
14641__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
03873eb9
AL
14642vcvt_high_f32_f16 (float16x8_t __a)
14643{
14644 return __builtin_aarch64_vec_unpacks_hi_v8hf (__a);
14645}
14646
a063e204
TC
14647__extension__ extern __inline float64x2_t
14648__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14649vcvt_high_f64_f32 (float32x4_t __a)
43e9d192 14650{
91bd4114 14651 return __builtin_aarch64_vec_unpacks_hi_v4sf (__a);
43e9d192
IB
14652}
14653
3f598afe
JW
14654/* vcvt (<u>fixed-point -> float). */
14655
a063e204
TC
14656__extension__ extern __inline float64_t
14657__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3f598afe
JW
14658vcvtd_n_f64_s64 (int64_t __a, const int __b)
14659{
14660 return __builtin_aarch64_scvtfdi (__a, __b);
14661}
14662
a063e204
TC
14663__extension__ extern __inline float64_t
14664__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3f598afe
JW
14665vcvtd_n_f64_u64 (uint64_t __a, const int __b)
14666{
14667 return __builtin_aarch64_ucvtfdi_sus (__a, __b);
14668}
14669
a063e204
TC
14670__extension__ extern __inline float32_t
14671__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3f598afe
JW
14672vcvts_n_f32_s32 (int32_t __a, const int __b)
14673{
14674 return __builtin_aarch64_scvtfsi (__a, __b);
14675}
14676
a063e204
TC
14677__extension__ extern __inline float32_t
14678__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3f598afe
JW
14679vcvts_n_f32_u32 (uint32_t __a, const int __b)
14680{
14681 return __builtin_aarch64_ucvtfsi_sus (__a, __b);
14682}
14683
a063e204
TC
14684__extension__ extern __inline float32x2_t
14685__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2644d4d9
JW
14686vcvt_n_f32_s32 (int32x2_t __a, const int __b)
14687{
14688 return __builtin_aarch64_scvtfv2si (__a, __b);
14689}
14690
a063e204
TC
14691__extension__ extern __inline float32x2_t
14692__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2644d4d9
JW
14693vcvt_n_f32_u32 (uint32x2_t __a, const int __b)
14694{
14695 return __builtin_aarch64_ucvtfv2si_sus (__a, __b);
14696}
14697
a063e204
TC
14698__extension__ extern __inline float64x1_t
14699__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
636929b8
JG
14700vcvt_n_f64_s64 (int64x1_t __a, const int __b)
14701{
14702 return (float64x1_t)
14703 { __builtin_aarch64_scvtfdi (vget_lane_s64 (__a, 0), __b) };
14704}
14705
a063e204
TC
14706__extension__ extern __inline float64x1_t
14707__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
636929b8
JG
14708vcvt_n_f64_u64 (uint64x1_t __a, const int __b)
14709{
14710 return (float64x1_t)
14711 { __builtin_aarch64_ucvtfdi_sus (vget_lane_u64 (__a, 0), __b) };
14712}
14713
a063e204
TC
14714__extension__ extern __inline float32x4_t
14715__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2644d4d9
JW
14716vcvtq_n_f32_s32 (int32x4_t __a, const int __b)
14717{
14718 return __builtin_aarch64_scvtfv4si (__a, __b);
14719}
14720
a063e204
TC
14721__extension__ extern __inline float32x4_t
14722__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2644d4d9
JW
14723vcvtq_n_f32_u32 (uint32x4_t __a, const int __b)
14724{
14725 return __builtin_aarch64_ucvtfv4si_sus (__a, __b);
14726}
14727
a063e204
TC
14728__extension__ extern __inline float64x2_t
14729__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2644d4d9
JW
14730vcvtq_n_f64_s64 (int64x2_t __a, const int __b)
14731{
14732 return __builtin_aarch64_scvtfv2di (__a, __b);
14733}
14734
a063e204
TC
14735__extension__ extern __inline float64x2_t
14736__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2644d4d9
JW
14737vcvtq_n_f64_u64 (uint64x2_t __a, const int __b)
14738{
14739 return __builtin_aarch64_ucvtfv2di_sus (__a, __b);
14740}
14741
3f598afe
JW
14742/* vcvt (float -> <u>fixed-point). */
14743
a063e204
TC
14744__extension__ extern __inline int64_t
14745__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3f598afe
JW
14746vcvtd_n_s64_f64 (float64_t __a, const int __b)
14747{
14748 return __builtin_aarch64_fcvtzsdf (__a, __b);
14749}
14750
a063e204
TC
14751__extension__ extern __inline uint64_t
14752__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3f598afe
JW
14753vcvtd_n_u64_f64 (float64_t __a, const int __b)
14754{
14755 return __builtin_aarch64_fcvtzudf_uss (__a, __b);
14756}
14757
a063e204
TC
14758__extension__ extern __inline int32_t
14759__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3f598afe
JW
14760vcvts_n_s32_f32 (float32_t __a, const int __b)
14761{
14762 return __builtin_aarch64_fcvtzssf (__a, __b);
14763}
14764
a063e204
TC
14765__extension__ extern __inline uint32_t
14766__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3f598afe
JW
14767vcvts_n_u32_f32 (float32_t __a, const int __b)
14768{
14769 return __builtin_aarch64_fcvtzusf_uss (__a, __b);
14770}
14771
a063e204
TC
14772__extension__ extern __inline int32x2_t
14773__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2644d4d9
JW
14774vcvt_n_s32_f32 (float32x2_t __a, const int __b)
14775{
14776 return __builtin_aarch64_fcvtzsv2sf (__a, __b);
14777}
14778
a063e204
TC
14779__extension__ extern __inline uint32x2_t
14780__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2644d4d9
JW
14781vcvt_n_u32_f32 (float32x2_t __a, const int __b)
14782{
14783 return __builtin_aarch64_fcvtzuv2sf_uss (__a, __b);
14784}
14785
a063e204
TC
14786__extension__ extern __inline int64x1_t
14787__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
636929b8
JG
14788vcvt_n_s64_f64 (float64x1_t __a, const int __b)
14789{
14790 return (int64x1_t)
14791 { __builtin_aarch64_fcvtzsdf (vget_lane_f64 (__a, 0), __b) };
14792}
14793
a063e204
TC
14794__extension__ extern __inline uint64x1_t
14795__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
636929b8
JG
14796vcvt_n_u64_f64 (float64x1_t __a, const int __b)
14797{
14798 return (uint64x1_t)
14799 { __builtin_aarch64_fcvtzudf_uss (vget_lane_f64 (__a, 0), __b) };
14800}
14801
a063e204
TC
14802__extension__ extern __inline int32x4_t
14803__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2644d4d9
JW
14804vcvtq_n_s32_f32 (float32x4_t __a, const int __b)
14805{
14806 return __builtin_aarch64_fcvtzsv4sf (__a, __b);
14807}
14808
a063e204
TC
14809__extension__ extern __inline uint32x4_t
14810__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2644d4d9
JW
14811vcvtq_n_u32_f32 (float32x4_t __a, const int __b)
14812{
14813 return __builtin_aarch64_fcvtzuv4sf_uss (__a, __b);
14814}
14815
a063e204
TC
14816__extension__ extern __inline int64x2_t
14817__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2644d4d9
JW
14818vcvtq_n_s64_f64 (float64x2_t __a, const int __b)
14819{
14820 return __builtin_aarch64_fcvtzsv2df (__a, __b);
14821}
14822
a063e204
TC
14823__extension__ extern __inline uint64x2_t
14824__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2644d4d9
JW
14825vcvtq_n_u64_f64 (float64x2_t __a, const int __b)
14826{
14827 return __builtin_aarch64_fcvtzuv2df_uss (__a, __b);
14828}
14829
91bd4114 14830/* vcvt (<u>int -> float) */
43e9d192 14831
a063e204
TC
14832__extension__ extern __inline float64_t
14833__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14834vcvtd_f64_s64 (int64_t __a)
43e9d192 14835{
91bd4114 14836 return (float64_t) __a;
bb60efd9
JG
14837}
14838
a063e204
TC
14839__extension__ extern __inline float64_t
14840__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14841vcvtd_f64_u64 (uint64_t __a)
bb60efd9 14842{
91bd4114 14843 return (float64_t) __a;
bb60efd9
JG
14844}
14845
a063e204
TC
14846__extension__ extern __inline float32_t
14847__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14848vcvts_f32_s32 (int32_t __a)
bb60efd9 14849{
91bd4114 14850 return (float32_t) __a;
bb60efd9
JG
14851}
14852
a063e204
TC
14853__extension__ extern __inline float32_t
14854__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14855vcvts_f32_u32 (uint32_t __a)
bb60efd9 14856{
91bd4114 14857 return (float32_t) __a;
43e9d192
IB
14858}
14859
a063e204
TC
14860__extension__ extern __inline float32x2_t
14861__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14862vcvt_f32_s32 (int32x2_t __a)
43e9d192 14863{
91bd4114 14864 return __builtin_aarch64_floatv2siv2sf (__a);
43e9d192
IB
14865}
14866
a063e204
TC
14867__extension__ extern __inline float32x2_t
14868__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14869vcvt_f32_u32 (uint32x2_t __a)
43e9d192 14870{
91bd4114 14871 return __builtin_aarch64_floatunsv2siv2sf ((int32x2_t) __a);
43e9d192
IB
14872}
14873
a063e204
TC
14874__extension__ extern __inline float64x1_t
14875__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
636929b8
JG
14876vcvt_f64_s64 (int64x1_t __a)
14877{
14878 return (float64x1_t) { vget_lane_s64 (__a, 0) };
14879}
14880
a063e204
TC
14881__extension__ extern __inline float64x1_t
14882__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
636929b8
JG
14883vcvt_f64_u64 (uint64x1_t __a)
14884{
14885 return (float64x1_t) { vget_lane_u64 (__a, 0) };
14886}
14887
a063e204
TC
14888__extension__ extern __inline float32x4_t
14889__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14890vcvtq_f32_s32 (int32x4_t __a)
43e9d192 14891{
91bd4114 14892 return __builtin_aarch64_floatv4siv4sf (__a);
43e9d192
IB
14893}
14894
a063e204
TC
14895__extension__ extern __inline float32x4_t
14896__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14897vcvtq_f32_u32 (uint32x4_t __a)
43e9d192 14898{
91bd4114 14899 return __builtin_aarch64_floatunsv4siv4sf ((int32x4_t) __a);
43e9d192
IB
14900}
14901
a063e204
TC
14902__extension__ extern __inline float64x2_t
14903__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14904vcvtq_f64_s64 (int64x2_t __a)
43e9d192 14905{
91bd4114 14906 return __builtin_aarch64_floatv2div2df (__a);
43e9d192
IB
14907}
14908
a063e204
TC
14909__extension__ extern __inline float64x2_t
14910__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14911vcvtq_f64_u64 (uint64x2_t __a)
43e9d192 14912{
91bd4114 14913 return __builtin_aarch64_floatunsv2div2df ((int64x2_t) __a);
43e9d192
IB
14914}
14915
91bd4114 14916/* vcvt (float -> <u>int) */
43e9d192 14917
a063e204
TC
14918__extension__ extern __inline int64_t
14919__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14920vcvtd_s64_f64 (float64_t __a)
43e9d192 14921{
91bd4114 14922 return (int64_t) __a;
43e9d192
IB
14923}
14924
a063e204
TC
14925__extension__ extern __inline uint64_t
14926__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14927vcvtd_u64_f64 (float64_t __a)
bb60efd9 14928{
91bd4114 14929 return (uint64_t) __a;
bb60efd9
JG
14930}
14931
a063e204
TC
14932__extension__ extern __inline int32_t
14933__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14934vcvts_s32_f32 (float32_t __a)
43e9d192 14935{
91bd4114 14936 return (int32_t) __a;
bb60efd9
JG
14937}
14938
a063e204
TC
14939__extension__ extern __inline uint32_t
14940__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14941vcvts_u32_f32 (float32_t __a)
bb60efd9 14942{
91bd4114 14943 return (uint32_t) __a;
bb60efd9
JG
14944}
14945
a063e204
TC
14946__extension__ extern __inline int32x2_t
14947__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14948vcvt_s32_f32 (float32x2_t __a)
bb60efd9 14949{
91bd4114 14950 return __builtin_aarch64_lbtruncv2sfv2si (__a);
bb60efd9
JG
14951}
14952
a063e204
TC
14953__extension__ extern __inline uint32x2_t
14954__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14955vcvt_u32_f32 (float32x2_t __a)
bb60efd9 14956{
a579f4c7 14957 return __builtin_aarch64_lbtruncuv2sfv2si_us (__a);
bb60efd9
JG
14958}
14959
a063e204
TC
14960__extension__ extern __inline int32x4_t
14961__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14962vcvtq_s32_f32 (float32x4_t __a)
bb60efd9 14963{
91bd4114 14964 return __builtin_aarch64_lbtruncv4sfv4si (__a);
bb60efd9
JG
14965}
14966
a063e204
TC
14967__extension__ extern __inline uint32x4_t
14968__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14969vcvtq_u32_f32 (float32x4_t __a)
bb60efd9 14970{
a579f4c7 14971 return __builtin_aarch64_lbtruncuv4sfv4si_us (__a);
bb60efd9
JG
14972}
14973
a063e204
TC
14974__extension__ extern __inline int64x1_t
14975__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae19075a
BB
14976vcvt_s64_f64 (float64x1_t __a)
14977{
14978 return (int64x1_t) {vcvtd_s64_f64 (__a[0])};
14979}
14980
a063e204
TC
14981__extension__ extern __inline uint64x1_t
14982__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae19075a
BB
14983vcvt_u64_f64 (float64x1_t __a)
14984{
14985 return (uint64x1_t) {vcvtd_u64_f64 (__a[0])};
14986}
14987
a063e204
TC
14988__extension__ extern __inline int64x2_t
14989__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14990vcvtq_s64_f64 (float64x2_t __a)
bb60efd9 14991{
91bd4114 14992 return __builtin_aarch64_lbtruncv2dfv2di (__a);
bb60efd9
JG
14993}
14994
a063e204
TC
14995__extension__ extern __inline uint64x2_t
14996__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 14997vcvtq_u64_f64 (float64x2_t __a)
bb60efd9 14998{
a579f4c7 14999 return __builtin_aarch64_lbtruncuv2dfv2di_us (__a);
bb60efd9
JG
15000}
15001
91bd4114
JG
15002/* vcvta */
15003
a063e204
TC
15004__extension__ extern __inline int64_t
15005__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15006vcvtad_s64_f64 (float64_t __a)
bb60efd9 15007{
91bd4114 15008 return __builtin_aarch64_lrounddfdi (__a);
bb60efd9
JG
15009}
15010
a063e204
TC
15011__extension__ extern __inline uint64_t
15012__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15013vcvtad_u64_f64 (float64_t __a)
bb60efd9 15014{
a579f4c7 15015 return __builtin_aarch64_lroundudfdi_us (__a);
bb60efd9
JG
15016}
15017
a063e204
TC
15018__extension__ extern __inline int32_t
15019__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15020vcvtas_s32_f32 (float32_t __a)
bb60efd9 15021{
91bd4114 15022 return __builtin_aarch64_lroundsfsi (__a);
bb60efd9
JG
15023}
15024
a063e204
TC
15025__extension__ extern __inline uint32_t
15026__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15027vcvtas_u32_f32 (float32_t __a)
bb60efd9 15028{
a579f4c7 15029 return __builtin_aarch64_lroundusfsi_us (__a);
bb60efd9
JG
15030}
15031
a063e204
TC
15032__extension__ extern __inline int32x2_t
15033__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15034vcvta_s32_f32 (float32x2_t __a)
bb60efd9 15035{
91bd4114 15036 return __builtin_aarch64_lroundv2sfv2si (__a);
bb60efd9
JG
15037}
15038
a063e204
TC
15039__extension__ extern __inline uint32x2_t
15040__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15041vcvta_u32_f32 (float32x2_t __a)
bb60efd9 15042{
a579f4c7 15043 return __builtin_aarch64_lrounduv2sfv2si_us (__a);
bb60efd9
JG
15044}
15045
a063e204
TC
15046__extension__ extern __inline int32x4_t
15047__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15048vcvtaq_s32_f32 (float32x4_t __a)
bb60efd9 15049{
91bd4114 15050 return __builtin_aarch64_lroundv4sfv4si (__a);
bb60efd9
JG
15051}
15052
a063e204
TC
15053__extension__ extern __inline uint32x4_t
15054__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15055vcvtaq_u32_f32 (float32x4_t __a)
bb60efd9 15056{
a579f4c7 15057 return __builtin_aarch64_lrounduv4sfv4si_us (__a);
bb60efd9
JG
15058}
15059
a063e204
TC
15060__extension__ extern __inline int64x1_t
15061__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae19075a
BB
15062vcvta_s64_f64 (float64x1_t __a)
15063{
15064 return (int64x1_t) {vcvtad_s64_f64 (__a[0])};
15065}
15066
a063e204
TC
15067__extension__ extern __inline uint64x1_t
15068__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae19075a
BB
15069vcvta_u64_f64 (float64x1_t __a)
15070{
15071 return (uint64x1_t) {vcvtad_u64_f64 (__a[0])};
15072}
15073
a063e204
TC
15074__extension__ extern __inline int64x2_t
15075__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15076vcvtaq_s64_f64 (float64x2_t __a)
bb60efd9 15077{
91bd4114 15078 return __builtin_aarch64_lroundv2dfv2di (__a);
bb60efd9
JG
15079}
15080
a063e204
TC
15081__extension__ extern __inline uint64x2_t
15082__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15083vcvtaq_u64_f64 (float64x2_t __a)
bb60efd9 15084{
a579f4c7 15085 return __builtin_aarch64_lrounduv2dfv2di_us (__a);
bb60efd9
JG
15086}
15087
91bd4114 15088/* vcvtm */
bb60efd9 15089
a063e204
TC
15090__extension__ extern __inline int64_t
15091__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15092vcvtmd_s64_f64 (float64_t __a)
bb60efd9 15093{
bf0f324e 15094 return __builtin_llfloor (__a);
43e9d192
IB
15095}
15096
a063e204
TC
15097__extension__ extern __inline uint64_t
15098__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15099vcvtmd_u64_f64 (float64_t __a)
43e9d192 15100{
a579f4c7 15101 return __builtin_aarch64_lfloorudfdi_us (__a);
bb60efd9
JG
15102}
15103
a063e204
TC
15104__extension__ extern __inline int32_t
15105__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15106vcvtms_s32_f32 (float32_t __a)
bb60efd9 15107{
91bd4114 15108 return __builtin_ifloorf (__a);
bb60efd9
JG
15109}
15110
a063e204
TC
15111__extension__ extern __inline uint32_t
15112__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15113vcvtms_u32_f32 (float32_t __a)
bb60efd9 15114{
a579f4c7 15115 return __builtin_aarch64_lfloorusfsi_us (__a);
bb60efd9
JG
15116}
15117
a063e204
TC
15118__extension__ extern __inline int32x2_t
15119__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
15120vcvtm_s32_f32 (float32x2_t __a)
15121{
15122 return __builtin_aarch64_lfloorv2sfv2si (__a);
15123}
bb60efd9 15124
a063e204
TC
15125__extension__ extern __inline uint32x2_t
15126__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15127vcvtm_u32_f32 (float32x2_t __a)
bb60efd9 15128{
a579f4c7 15129 return __builtin_aarch64_lflooruv2sfv2si_us (__a);
bb60efd9
JG
15130}
15131
a063e204
TC
15132__extension__ extern __inline int32x4_t
15133__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15134vcvtmq_s32_f32 (float32x4_t __a)
bb60efd9 15135{
91bd4114 15136 return __builtin_aarch64_lfloorv4sfv4si (__a);
43e9d192
IB
15137}
15138
a063e204
TC
15139__extension__ extern __inline uint32x4_t
15140__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15141vcvtmq_u32_f32 (float32x4_t __a)
bb60efd9 15142{
a579f4c7 15143 return __builtin_aarch64_lflooruv4sfv4si_us (__a);
bb60efd9 15144}
43e9d192 15145
a063e204
TC
15146__extension__ extern __inline int64x1_t
15147__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae19075a
BB
15148vcvtm_s64_f64 (float64x1_t __a)
15149{
15150 return (int64x1_t) {vcvtmd_s64_f64 (__a[0])};
15151}
15152
a063e204
TC
15153__extension__ extern __inline uint64x1_t
15154__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae19075a
BB
15155vcvtm_u64_f64 (float64x1_t __a)
15156{
15157 return (uint64x1_t) {vcvtmd_u64_f64 (__a[0])};
15158}
15159
a063e204
TC
15160__extension__ extern __inline int64x2_t
15161__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15162vcvtmq_s64_f64 (float64x2_t __a)
43e9d192 15163{
91bd4114 15164 return __builtin_aarch64_lfloorv2dfv2di (__a);
43e9d192
IB
15165}
15166
a063e204
TC
15167__extension__ extern __inline uint64x2_t
15168__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15169vcvtmq_u64_f64 (float64x2_t __a)
43e9d192 15170{
a579f4c7 15171 return __builtin_aarch64_lflooruv2dfv2di_us (__a);
43e9d192
IB
15172}
15173
91bd4114
JG
15174/* vcvtn */
15175
a063e204
TC
15176__extension__ extern __inline int64_t
15177__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15178vcvtnd_s64_f64 (float64_t __a)
43e9d192 15179{
91bd4114 15180 return __builtin_aarch64_lfrintndfdi (__a);
43e9d192
IB
15181}
15182
a063e204
TC
15183__extension__ extern __inline uint64_t
15184__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15185vcvtnd_u64_f64 (float64_t __a)
43e9d192 15186{
a579f4c7 15187 return __builtin_aarch64_lfrintnudfdi_us (__a);
43e9d192
IB
15188}
15189
a063e204
TC
15190__extension__ extern __inline int32_t
15191__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15192vcvtns_s32_f32 (float32_t __a)
43e9d192 15193{
91bd4114 15194 return __builtin_aarch64_lfrintnsfsi (__a);
43e9d192
IB
15195}
15196
a063e204
TC
15197__extension__ extern __inline uint32_t
15198__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15199vcvtns_u32_f32 (float32_t __a)
43e9d192 15200{
a579f4c7 15201 return __builtin_aarch64_lfrintnusfsi_us (__a);
91bd4114
JG
15202}
15203
a063e204
TC
15204__extension__ extern __inline int32x2_t
15205__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
15206vcvtn_s32_f32 (float32x2_t __a)
15207{
15208 return __builtin_aarch64_lfrintnv2sfv2si (__a);
43e9d192
IB
15209}
15210
a063e204
TC
15211__extension__ extern __inline uint32x2_t
15212__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15213vcvtn_u32_f32 (float32x2_t __a)
43e9d192 15214{
a579f4c7 15215 return __builtin_aarch64_lfrintnuv2sfv2si_us (__a);
91bd4114
JG
15216}
15217
a063e204
TC
15218__extension__ extern __inline int32x4_t
15219__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
15220vcvtnq_s32_f32 (float32x4_t __a)
15221{
15222 return __builtin_aarch64_lfrintnv4sfv4si (__a);
43e9d192
IB
15223}
15224
a063e204
TC
15225__extension__ extern __inline uint32x4_t
15226__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15227vcvtnq_u32_f32 (float32x4_t __a)
43e9d192 15228{
a579f4c7 15229 return __builtin_aarch64_lfrintnuv4sfv4si_us (__a);
bb60efd9
JG
15230}
15231
a063e204
TC
15232__extension__ extern __inline int64x1_t
15233__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae19075a
BB
15234vcvtn_s64_f64 (float64x1_t __a)
15235{
15236 return (int64x1_t) {vcvtnd_s64_f64 (__a[0])};
15237}
15238
a063e204
TC
15239__extension__ extern __inline uint64x1_t
15240__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae19075a
BB
15241vcvtn_u64_f64 (float64x1_t __a)
15242{
15243 return (uint64x1_t) {vcvtnd_u64_f64 (__a[0])};
15244}
15245
a063e204
TC
15246__extension__ extern __inline int64x2_t
15247__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15248vcvtnq_s64_f64 (float64x2_t __a)
bb60efd9 15249{
91bd4114 15250 return __builtin_aarch64_lfrintnv2dfv2di (__a);
bb60efd9
JG
15251}
15252
a063e204
TC
15253__extension__ extern __inline uint64x2_t
15254__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15255vcvtnq_u64_f64 (float64x2_t __a)
bb60efd9 15256{
a579f4c7 15257 return __builtin_aarch64_lfrintnuv2dfv2di_us (__a);
bb60efd9
JG
15258}
15259
91bd4114
JG
15260/* vcvtp */
15261
a063e204
TC
15262__extension__ extern __inline int64_t
15263__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15264vcvtpd_s64_f64 (float64_t __a)
bb60efd9 15265{
bf0f324e 15266 return __builtin_llceil (__a);
43e9d192
IB
15267}
15268
a063e204
TC
15269__extension__ extern __inline uint64_t
15270__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15271vcvtpd_u64_f64 (float64_t __a)
43e9d192 15272{
a579f4c7 15273 return __builtin_aarch64_lceiludfdi_us (__a);
43e9d192
IB
15274}
15275
a063e204
TC
15276__extension__ extern __inline int32_t
15277__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15278vcvtps_s32_f32 (float32_t __a)
43e9d192 15279{
91bd4114 15280 return __builtin_iceilf (__a);
43e9d192
IB
15281}
15282
a063e204
TC
15283__extension__ extern __inline uint32_t
15284__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15285vcvtps_u32_f32 (float32_t __a)
43e9d192 15286{
a579f4c7 15287 return __builtin_aarch64_lceilusfsi_us (__a);
43e9d192
IB
15288}
15289
a063e204
TC
15290__extension__ extern __inline int32x2_t
15291__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15292vcvtp_s32_f32 (float32x2_t __a)
43e9d192 15293{
91bd4114 15294 return __builtin_aarch64_lceilv2sfv2si (__a);
43e9d192
IB
15295}
15296
a063e204
TC
15297__extension__ extern __inline uint32x2_t
15298__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15299vcvtp_u32_f32 (float32x2_t __a)
43e9d192 15300{
a579f4c7 15301 return __builtin_aarch64_lceiluv2sfv2si_us (__a);
43e9d192
IB
15302}
15303
a063e204
TC
15304__extension__ extern __inline int32x4_t
15305__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15306vcvtpq_s32_f32 (float32x4_t __a)
43e9d192 15307{
91bd4114 15308 return __builtin_aarch64_lceilv4sfv4si (__a);
43e9d192
IB
15309}
15310
a063e204
TC
15311__extension__ extern __inline uint32x4_t
15312__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15313vcvtpq_u32_f32 (float32x4_t __a)
43e9d192 15314{
a579f4c7 15315 return __builtin_aarch64_lceiluv4sfv4si_us (__a);
91bd4114
JG
15316}
15317
a063e204
TC
15318__extension__ extern __inline int64x1_t
15319__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae19075a
BB
15320vcvtp_s64_f64 (float64x1_t __a)
15321{
15322 return (int64x1_t) {vcvtpd_s64_f64 (__a[0])};
15323}
15324
a063e204
TC
15325__extension__ extern __inline uint64x1_t
15326__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae19075a
BB
15327vcvtp_u64_f64 (float64x1_t __a)
15328{
15329 return (uint64x1_t) {vcvtpd_u64_f64 (__a[0])};
15330}
15331
a063e204
TC
15332__extension__ extern __inline int64x2_t
15333__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
15334vcvtpq_s64_f64 (float64x2_t __a)
15335{
15336 return __builtin_aarch64_lceilv2dfv2di (__a);
43e9d192
IB
15337}
15338
a063e204
TC
15339__extension__ extern __inline uint64x2_t
15340__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15341vcvtpq_u64_f64 (float64x2_t __a)
43e9d192 15342{
a579f4c7 15343 return __builtin_aarch64_lceiluv2dfv2di_us (__a);
43e9d192
IB
15344}
15345
91bd4114 15346/* vdup_n */
bb60efd9 15347
a063e204
TC
15348__extension__ extern __inline float16x4_t
15349__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
15350vdup_n_f16 (float16_t __a)
15351{
15352 return (float16x4_t) {__a, __a, __a, __a};
15353}
15354
a063e204
TC
15355__extension__ extern __inline float32x2_t
15356__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15357vdup_n_f32 (float32_t __a)
bb60efd9 15358{
91bd4114 15359 return (float32x2_t) {__a, __a};
bb60efd9
JG
15360}
15361
a063e204
TC
15362__extension__ extern __inline float64x1_t
15363__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15364vdup_n_f64 (float64_t __a)
43e9d192 15365{
c6a29a09 15366 return (float64x1_t) {__a};
bb60efd9
JG
15367}
15368
a063e204
TC
15369__extension__ extern __inline poly8x8_t
15370__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15371vdup_n_p8 (poly8_t __a)
bb60efd9 15372{
91bd4114 15373 return (poly8x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};
bb60efd9
JG
15374}
15375
a063e204
TC
15376__extension__ extern __inline poly16x4_t
15377__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15378vdup_n_p16 (poly16_t __a)
bb60efd9 15379{
91bd4114 15380 return (poly16x4_t) {__a, __a, __a, __a};
bb60efd9
JG
15381}
15382
159b8724
TC
15383__extension__ extern __inline poly64x1_t
15384__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
15385vdup_n_p64 (poly64_t __a)
15386{
15387 return (poly64x1_t) {__a};
15388}
15389
a063e204
TC
15390__extension__ extern __inline int8x8_t
15391__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
15392vdup_n_s8 (int8_t __a)
15393{
15394 return (int8x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};
15395}
bb60efd9 15396
a063e204
TC
15397__extension__ extern __inline int16x4_t
15398__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15399vdup_n_s16 (int16_t __a)
bb60efd9 15400{
91bd4114 15401 return (int16x4_t) {__a, __a, __a, __a};
bb60efd9
JG
15402}
15403
a063e204
TC
15404__extension__ extern __inline int32x2_t
15405__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15406vdup_n_s32 (int32_t __a)
bb60efd9 15407{
91bd4114 15408 return (int32x2_t) {__a, __a};
bb60efd9
JG
15409}
15410
a063e204
TC
15411__extension__ extern __inline int64x1_t
15412__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15413vdup_n_s64 (int64_t __a)
bb60efd9 15414{
096c59be 15415 return (int64x1_t) {__a};
bb60efd9
JG
15416}
15417
a063e204
TC
15418__extension__ extern __inline uint8x8_t
15419__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15420vdup_n_u8 (uint8_t __a)
bb60efd9 15421{
91bd4114 15422 return (uint8x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};
bb60efd9
JG
15423}
15424
a063e204
TC
15425__extension__ extern __inline uint16x4_t
15426__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15427vdup_n_u16 (uint16_t __a)
bb60efd9 15428{
91bd4114 15429 return (uint16x4_t) {__a, __a, __a, __a};
bb60efd9
JG
15430}
15431
a063e204
TC
15432__extension__ extern __inline uint32x2_t
15433__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15434vdup_n_u32 (uint32_t __a)
bb60efd9 15435{
91bd4114 15436 return (uint32x2_t) {__a, __a};
bb60efd9
JG
15437}
15438
a063e204
TC
15439__extension__ extern __inline uint64x1_t
15440__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15441vdup_n_u64 (uint64_t __a)
bb60efd9 15442{
096c59be 15443 return (uint64x1_t) {__a};
bb60efd9
JG
15444}
15445
91bd4114 15446/* vdupq_n */
bb60efd9 15447
a063e204
TC
15448__extension__ extern __inline float16x8_t
15449__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
15450vdupq_n_f16 (float16_t __a)
15451{
15452 return (float16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};
15453}
15454
a063e204
TC
15455__extension__ extern __inline float32x4_t
15456__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15457vdupq_n_f32 (float32_t __a)
bb60efd9 15458{
91bd4114 15459 return (float32x4_t) {__a, __a, __a, __a};
bb60efd9
JG
15460}
15461
a063e204
TC
15462__extension__ extern __inline float64x2_t
15463__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15464vdupq_n_f64 (float64_t __a)
bb60efd9 15465{
91bd4114 15466 return (float64x2_t) {__a, __a};
bb60efd9
JG
15467}
15468
a063e204
TC
15469__extension__ extern __inline poly8x16_t
15470__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8a3da2e6 15471vdupq_n_p8 (poly8_t __a)
bb60efd9 15472{
91bd4114
JG
15473 return (poly8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a,
15474 __a, __a, __a, __a, __a, __a, __a, __a};
bb60efd9
JG
15475}
15476
a063e204
TC
15477__extension__ extern __inline poly16x8_t
15478__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8a3da2e6 15479vdupq_n_p16 (poly16_t __a)
bb60efd9 15480{
91bd4114 15481 return (poly16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};
bb60efd9
JG
15482}
15483
159b8724
TC
15484__extension__ extern __inline poly64x2_t
15485__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8a3da2e6 15486vdupq_n_p64 (poly64_t __a)
159b8724
TC
15487{
15488 return (poly64x2_t) {__a, __a};
15489}
15490
a063e204
TC
15491__extension__ extern __inline int8x16_t
15492__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8a3da2e6 15493vdupq_n_s8 (int8_t __a)
bb60efd9 15494{
91bd4114
JG
15495 return (int8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a,
15496 __a, __a, __a, __a, __a, __a, __a, __a};
bb60efd9
JG
15497}
15498
a063e204
TC
15499__extension__ extern __inline int16x8_t
15500__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8a3da2e6 15501vdupq_n_s16 (int16_t __a)
bb60efd9 15502{
91bd4114 15503 return (int16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};
bb60efd9
JG
15504}
15505
a063e204
TC
15506__extension__ extern __inline int32x4_t
15507__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15508vdupq_n_s32 (int32_t __a)
bb60efd9 15509{
91bd4114 15510 return (int32x4_t) {__a, __a, __a, __a};
43e9d192
IB
15511}
15512
a063e204
TC
15513__extension__ extern __inline int64x2_t
15514__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15515vdupq_n_s64 (int64_t __a)
43e9d192 15516{
91bd4114 15517 return (int64x2_t) {__a, __a};
bb60efd9
JG
15518}
15519
a063e204
TC
15520__extension__ extern __inline uint8x16_t
15521__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8a3da2e6 15522vdupq_n_u8 (uint8_t __a)
bb60efd9 15523{
91bd4114
JG
15524 return (uint8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a,
15525 __a, __a, __a, __a, __a, __a, __a, __a};
bb60efd9
JG
15526}
15527
a063e204
TC
15528__extension__ extern __inline uint16x8_t
15529__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8a3da2e6 15530vdupq_n_u16 (uint16_t __a)
bb60efd9 15531{
91bd4114 15532 return (uint16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};
47934dc4
JG
15533}
15534
a063e204
TC
15535__extension__ extern __inline uint32x4_t
15536__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15537vdupq_n_u32 (uint32_t __a)
47934dc4 15538{
91bd4114 15539 return (uint32x4_t) {__a, __a, __a, __a};
47934dc4
JG
15540}
15541
a063e204
TC
15542__extension__ extern __inline uint64x2_t
15543__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15544vdupq_n_u64 (uint64_t __a)
47934dc4 15545{
91bd4114 15546 return (uint64x2_t) {__a, __a};
47934dc4
JG
15547}
15548
91bd4114 15549/* vdup_lane */
47934dc4 15550
a063e204
TC
15551__extension__ extern __inline float16x4_t
15552__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
15553vdup_lane_f16 (float16x4_t __a, const int __b)
15554{
15555 return __aarch64_vdup_lane_f16 (__a, __b);
15556}
15557
a063e204
TC
15558__extension__ extern __inline float32x2_t
15559__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15560vdup_lane_f32 (float32x2_t __a, const int __b)
47934dc4 15561{
91bd4114 15562 return __aarch64_vdup_lane_f32 (__a, __b);
47934dc4
JG
15563}
15564
a063e204
TC
15565__extension__ extern __inline float64x1_t
15566__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15567vdup_lane_f64 (float64x1_t __a, const int __b)
47934dc4 15568{
91bd4114 15569 return __aarch64_vdup_lane_f64 (__a, __b);
47934dc4
JG
15570}
15571
a063e204
TC
15572__extension__ extern __inline poly8x8_t
15573__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15574vdup_lane_p8 (poly8x8_t __a, const int __b)
47934dc4 15575{
91bd4114 15576 return __aarch64_vdup_lane_p8 (__a, __b);
47934dc4
JG
15577}
15578
a063e204
TC
15579__extension__ extern __inline poly16x4_t
15580__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15581vdup_lane_p16 (poly16x4_t __a, const int __b)
47934dc4 15582{
91bd4114 15583 return __aarch64_vdup_lane_p16 (__a, __b);
47934dc4
JG
15584}
15585
159b8724
TC
15586__extension__ extern __inline poly64x1_t
15587__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
15588vdup_lane_p64 (poly64x1_t __a, const int __b)
15589{
15590 return __aarch64_vdup_lane_p64 (__a, __b);
15591}
15592
a063e204
TC
15593__extension__ extern __inline int8x8_t
15594__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15595vdup_lane_s8 (int8x8_t __a, const int __b)
47934dc4 15596{
91bd4114 15597 return __aarch64_vdup_lane_s8 (__a, __b);
43e9d192
IB
15598}
15599
a063e204
TC
15600__extension__ extern __inline int16x4_t
15601__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15602vdup_lane_s16 (int16x4_t __a, const int __b)
43e9d192 15603{
91bd4114 15604 return __aarch64_vdup_lane_s16 (__a, __b);
43e9d192
IB
15605}
15606
a063e204
TC
15607__extension__ extern __inline int32x2_t
15608__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15609vdup_lane_s32 (int32x2_t __a, const int __b)
43e9d192 15610{
91bd4114 15611 return __aarch64_vdup_lane_s32 (__a, __b);
43e9d192
IB
15612}
15613
a063e204
TC
15614__extension__ extern __inline int64x1_t
15615__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15616vdup_lane_s64 (int64x1_t __a, const int __b)
43e9d192 15617{
91bd4114 15618 return __aarch64_vdup_lane_s64 (__a, __b);
43e9d192
IB
15619}
15620
a063e204
TC
15621__extension__ extern __inline uint8x8_t
15622__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15623vdup_lane_u8 (uint8x8_t __a, const int __b)
43e9d192 15624{
91bd4114 15625 return __aarch64_vdup_lane_u8 (__a, __b);
43e9d192
IB
15626}
15627
a063e204
TC
15628__extension__ extern __inline uint16x4_t
15629__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15630vdup_lane_u16 (uint16x4_t __a, const int __b)
43e9d192 15631{
91bd4114 15632 return __aarch64_vdup_lane_u16 (__a, __b);
43e9d192
IB
15633}
15634
a063e204
TC
15635__extension__ extern __inline uint32x2_t
15636__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15637vdup_lane_u32 (uint32x2_t __a, const int __b)
43e9d192 15638{
91bd4114 15639 return __aarch64_vdup_lane_u32 (__a, __b);
43e9d192
IB
15640}
15641
a063e204
TC
15642__extension__ extern __inline uint64x1_t
15643__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15644vdup_lane_u64 (uint64x1_t __a, const int __b)
43e9d192 15645{
91bd4114 15646 return __aarch64_vdup_lane_u64 (__a, __b);
43e9d192
IB
15647}
15648
91bd4114 15649/* vdup_laneq */
47934dc4 15650
a063e204
TC
15651__extension__ extern __inline float16x4_t
15652__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
15653vdup_laneq_f16 (float16x8_t __a, const int __b)
15654{
15655 return __aarch64_vdup_laneq_f16 (__a, __b);
15656}
15657
a063e204
TC
15658__extension__ extern __inline float32x2_t
15659__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15660vdup_laneq_f32 (float32x4_t __a, const int __b)
43e9d192 15661{
91bd4114 15662 return __aarch64_vdup_laneq_f32 (__a, __b);
43e9d192
IB
15663}
15664
a063e204
TC
15665__extension__ extern __inline float64x1_t
15666__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15667vdup_laneq_f64 (float64x2_t __a, const int __b)
43e9d192 15668{
91bd4114 15669 return __aarch64_vdup_laneq_f64 (__a, __b);
43e9d192
IB
15670}
15671
a063e204
TC
15672__extension__ extern __inline poly8x8_t
15673__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15674vdup_laneq_p8 (poly8x16_t __a, const int __b)
43e9d192 15675{
91bd4114 15676 return __aarch64_vdup_laneq_p8 (__a, __b);
43e9d192
IB
15677}
15678
a063e204
TC
15679__extension__ extern __inline poly16x4_t
15680__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15681vdup_laneq_p16 (poly16x8_t __a, const int __b)
43e9d192 15682{
91bd4114 15683 return __aarch64_vdup_laneq_p16 (__a, __b);
43e9d192
IB
15684}
15685
159b8724
TC
15686__extension__ extern __inline poly64x1_t
15687__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
15688vdup_laneq_p64 (poly64x2_t __a, const int __b)
15689{
15690 return __aarch64_vdup_laneq_p64 (__a, __b);
15691}
15692
a063e204
TC
15693__extension__ extern __inline int8x8_t
15694__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15695vdup_laneq_s8 (int8x16_t __a, const int __b)
43e9d192 15696{
91bd4114 15697 return __aarch64_vdup_laneq_s8 (__a, __b);
43e9d192
IB
15698}
15699
a063e204
TC
15700__extension__ extern __inline int16x4_t
15701__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15702vdup_laneq_s16 (int16x8_t __a, const int __b)
43e9d192 15703{
91bd4114 15704 return __aarch64_vdup_laneq_s16 (__a, __b);
43e9d192
IB
15705}
15706
a063e204
TC
15707__extension__ extern __inline int32x2_t
15708__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15709vdup_laneq_s32 (int32x4_t __a, const int __b)
43e9d192 15710{
91bd4114 15711 return __aarch64_vdup_laneq_s32 (__a, __b);
43e9d192
IB
15712}
15713
a063e204
TC
15714__extension__ extern __inline int64x1_t
15715__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15716vdup_laneq_s64 (int64x2_t __a, const int __b)
43e9d192 15717{
91bd4114 15718 return __aarch64_vdup_laneq_s64 (__a, __b);
43e9d192
IB
15719}
15720
a063e204
TC
15721__extension__ extern __inline uint8x8_t
15722__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15723vdup_laneq_u8 (uint8x16_t __a, const int __b)
43e9d192 15724{
91bd4114 15725 return __aarch64_vdup_laneq_u8 (__a, __b);
43e9d192
IB
15726}
15727
a063e204
TC
15728__extension__ extern __inline uint16x4_t
15729__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15730vdup_laneq_u16 (uint16x8_t __a, const int __b)
43e9d192 15731{
91bd4114 15732 return __aarch64_vdup_laneq_u16 (__a, __b);
43e9d192
IB
15733}
15734
a063e204
TC
15735__extension__ extern __inline uint32x2_t
15736__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114
JG
15737vdup_laneq_u32 (uint32x4_t __a, const int __b)
15738{
15739 return __aarch64_vdup_laneq_u32 (__a, __b);
15740}
47934dc4 15741
a063e204
TC
15742__extension__ extern __inline uint64x1_t
15743__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15744vdup_laneq_u64 (uint64x2_t __a, const int __b)
43e9d192 15745{
91bd4114 15746 return __aarch64_vdup_laneq_u64 (__a, __b);
43e9d192
IB
15747}
15748
91bd4114 15749/* vdupq_lane */
358decd5 15750
a063e204
TC
15751__extension__ extern __inline float16x8_t
15752__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
15753vdupq_lane_f16 (float16x4_t __a, const int __b)
15754{
15755 return __aarch64_vdupq_lane_f16 (__a, __b);
15756}
15757
a063e204
TC
15758__extension__ extern __inline float32x4_t
15759__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15760vdupq_lane_f32 (float32x2_t __a, const int __b)
43e9d192 15761{
91bd4114 15762 return __aarch64_vdupq_lane_f32 (__a, __b);
43e9d192
IB
15763}
15764
a063e204
TC
15765__extension__ extern __inline float64x2_t
15766__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15767vdupq_lane_f64 (float64x1_t __a, const int __b)
43e9d192 15768{
91bd4114 15769 return __aarch64_vdupq_lane_f64 (__a, __b);
43e9d192
IB
15770}
15771
a063e204
TC
15772__extension__ extern __inline poly8x16_t
15773__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15774vdupq_lane_p8 (poly8x8_t __a, const int __b)
43e9d192 15775{
91bd4114 15776 return __aarch64_vdupq_lane_p8 (__a, __b);
43e9d192
IB
15777}
15778
a063e204
TC
15779__extension__ extern __inline poly16x8_t
15780__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15781vdupq_lane_p16 (poly16x4_t __a, const int __b)
43e9d192 15782{
91bd4114 15783 return __aarch64_vdupq_lane_p16 (__a, __b);
43e9d192
IB
15784}
15785
159b8724
TC
15786__extension__ extern __inline poly64x2_t
15787__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
15788vdupq_lane_p64 (poly64x1_t __a, const int __b)
15789{
15790 return __aarch64_vdupq_lane_p64 (__a, __b);
15791}
15792
a063e204
TC
15793__extension__ extern __inline int8x16_t
15794__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15795vdupq_lane_s8 (int8x8_t __a, const int __b)
43e9d192 15796{
91bd4114 15797 return __aarch64_vdupq_lane_s8 (__a, __b);
43e9d192
IB
15798}
15799
a063e204
TC
15800__extension__ extern __inline int16x8_t
15801__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15802vdupq_lane_s16 (int16x4_t __a, const int __b)
43e9d192 15803{
91bd4114 15804 return __aarch64_vdupq_lane_s16 (__a, __b);
43e9d192
IB
15805}
15806
a063e204
TC
15807__extension__ extern __inline int32x4_t
15808__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15809vdupq_lane_s32 (int32x2_t __a, const int __b)
43e9d192 15810{
91bd4114 15811 return __aarch64_vdupq_lane_s32 (__a, __b);
43e9d192
IB
15812}
15813
a063e204
TC
15814__extension__ extern __inline int64x2_t
15815__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15816vdupq_lane_s64 (int64x1_t __a, const int __b)
43e9d192 15817{
91bd4114 15818 return __aarch64_vdupq_lane_s64 (__a, __b);
43e9d192
IB
15819}
15820
a063e204
TC
15821__extension__ extern __inline uint8x16_t
15822__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15823vdupq_lane_u8 (uint8x8_t __a, const int __b)
43e9d192 15824{
91bd4114 15825 return __aarch64_vdupq_lane_u8 (__a, __b);
43e9d192
IB
15826}
15827
a063e204
TC
15828__extension__ extern __inline uint16x8_t
15829__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15830vdupq_lane_u16 (uint16x4_t __a, const int __b)
43e9d192 15831{
91bd4114 15832 return __aarch64_vdupq_lane_u16 (__a, __b);
43e9d192
IB
15833}
15834
a063e204
TC
15835__extension__ extern __inline uint32x4_t
15836__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15837vdupq_lane_u32 (uint32x2_t __a, const int __b)
43e9d192 15838{
91bd4114 15839 return __aarch64_vdupq_lane_u32 (__a, __b);
43e9d192
IB
15840}
15841
a063e204
TC
15842__extension__ extern __inline uint64x2_t
15843__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15844vdupq_lane_u64 (uint64x1_t __a, const int __b)
43e9d192 15845{
91bd4114 15846 return __aarch64_vdupq_lane_u64 (__a, __b);
43e9d192
IB
15847}
15848
91bd4114 15849/* vdupq_laneq */
358decd5 15850
a063e204
TC
15851__extension__ extern __inline float16x8_t
15852__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
15853vdupq_laneq_f16 (float16x8_t __a, const int __b)
15854{
15855 return __aarch64_vdupq_laneq_f16 (__a, __b);
15856}
15857
a063e204
TC
15858__extension__ extern __inline float32x4_t
15859__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15860vdupq_laneq_f32 (float32x4_t __a, const int __b)
43e9d192 15861{
91bd4114 15862 return __aarch64_vdupq_laneq_f32 (__a, __b);
43e9d192
IB
15863}
15864
a063e204
TC
15865__extension__ extern __inline float64x2_t
15866__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15867vdupq_laneq_f64 (float64x2_t __a, const int __b)
43e9d192 15868{
91bd4114 15869 return __aarch64_vdupq_laneq_f64 (__a, __b);
43e9d192
IB
15870}
15871
a063e204
TC
15872__extension__ extern __inline poly8x16_t
15873__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15874vdupq_laneq_p8 (poly8x16_t __a, const int __b)
43e9d192 15875{
91bd4114 15876 return __aarch64_vdupq_laneq_p8 (__a, __b);
43e9d192
IB
15877}
15878
a063e204
TC
15879__extension__ extern __inline poly16x8_t
15880__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15881vdupq_laneq_p16 (poly16x8_t __a, const int __b)
43e9d192 15882{
91bd4114 15883 return __aarch64_vdupq_laneq_p16 (__a, __b);
43e9d192
IB
15884}
15885
159b8724
TC
15886__extension__ extern __inline poly64x2_t
15887__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
15888vdupq_laneq_p64 (poly64x2_t __a, const int __b)
15889{
15890 return __aarch64_vdupq_laneq_p64 (__a, __b);
15891}
15892
a063e204
TC
15893__extension__ extern __inline int8x16_t
15894__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15895vdupq_laneq_s8 (int8x16_t __a, const int __b)
43e9d192 15896{
91bd4114 15897 return __aarch64_vdupq_laneq_s8 (__a, __b);
43e9d192
IB
15898}
15899
a063e204
TC
15900__extension__ extern __inline int16x8_t
15901__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15902vdupq_laneq_s16 (int16x8_t __a, const int __b)
43e9d192 15903{
91bd4114 15904 return __aarch64_vdupq_laneq_s16 (__a, __b);
43e9d192
IB
15905}
15906
a063e204
TC
15907__extension__ extern __inline int32x4_t
15908__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15909vdupq_laneq_s32 (int32x4_t __a, const int __b)
43e9d192 15910{
91bd4114 15911 return __aarch64_vdupq_laneq_s32 (__a, __b);
43e9d192
IB
15912}
15913
a063e204
TC
15914__extension__ extern __inline int64x2_t
15915__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15916vdupq_laneq_s64 (int64x2_t __a, const int __b)
43e9d192 15917{
91bd4114 15918 return __aarch64_vdupq_laneq_s64 (__a, __b);
43e9d192
IB
15919}
15920
a063e204
TC
15921__extension__ extern __inline uint8x16_t
15922__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15923vdupq_laneq_u8 (uint8x16_t __a, const int __b)
47934dc4 15924{
91bd4114 15925 return __aarch64_vdupq_laneq_u8 (__a, __b);
47934dc4 15926}
43e9d192 15927
a063e204
TC
15928__extension__ extern __inline uint16x8_t
15929__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15930vdupq_laneq_u16 (uint16x8_t __a, const int __b)
43e9d192 15931{
91bd4114 15932 return __aarch64_vdupq_laneq_u16 (__a, __b);
43e9d192
IB
15933}
15934
a063e204
TC
15935__extension__ extern __inline uint32x4_t
15936__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15937vdupq_laneq_u32 (uint32x4_t __a, const int __b)
43e9d192 15938{
91bd4114 15939 return __aarch64_vdupq_laneq_u32 (__a, __b);
43e9d192
IB
15940}
15941
a063e204
TC
15942__extension__ extern __inline uint64x2_t
15943__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
91bd4114 15944vdupq_laneq_u64 (uint64x2_t __a, const int __b)
43e9d192 15945{
91bd4114 15946 return __aarch64_vdupq_laneq_u64 (__a, __b);
43e9d192
IB
15947}
15948
91bd4114 15949/* vdupb_lane */
a063e204
TC
15950__extension__ extern __inline poly8_t
15951__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bb1ae543 15952vdupb_lane_p8 (poly8x8_t __a, const int __b)
43e9d192 15953{
ed225d0c 15954 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
15955}
15956
a063e204
TC
15957__extension__ extern __inline int8_t
15958__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bb1ae543 15959vdupb_lane_s8 (int8x8_t __a, const int __b)
43e9d192 15960{
ed225d0c 15961 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
15962}
15963
a063e204
TC
15964__extension__ extern __inline uint8_t
15965__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bb1ae543 15966vdupb_lane_u8 (uint8x8_t __a, const int __b)
43e9d192 15967{
ed225d0c 15968 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
15969}
15970
91bd4114 15971/* vduph_lane */
358decd5 15972
a063e204
TC
15973__extension__ extern __inline float16_t
15974__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
15975vduph_lane_f16 (float16x4_t __a, const int __b)
15976{
15977 return __aarch64_vget_lane_any (__a, __b);
15978}
15979
a063e204
TC
15980__extension__ extern __inline poly16_t
15981__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bb1ae543 15982vduph_lane_p16 (poly16x4_t __a, const int __b)
43e9d192 15983{
ed225d0c 15984 return __aarch64_vget_lane_any (__a, __b);
43e9d192
IB
15985}
15986
a063e204
TC
15987__extension__ extern __inline int16_t
15988__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
15989vduph_lane_s16 (int16x4_t __a, const int __b)
15990{
ed225d0c 15991 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
15992}
15993
a063e204
TC
15994__extension__ extern __inline uint16_t
15995__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
15996vduph_lane_u16 (uint16x4_t __a, const int __b)
15997{
ed225d0c 15998 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
15999}
16000
16001/* vdups_lane */
358decd5 16002
a063e204
TC
16003__extension__ extern __inline float32_t
16004__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16005vdups_lane_f32 (float32x2_t __a, const int __b)
16006{
ed225d0c 16007 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16008}
16009
a063e204
TC
16010__extension__ extern __inline int32_t
16011__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16012vdups_lane_s32 (int32x2_t __a, const int __b)
16013{
ed225d0c 16014 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16015}
16016
a063e204
TC
16017__extension__ extern __inline uint32_t
16018__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16019vdups_lane_u32 (uint32x2_t __a, const int __b)
16020{
ed225d0c 16021 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16022}
16023
16024/* vdupd_lane */
a063e204
TC
16025__extension__ extern __inline float64_t
16026__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
c6a29a09 16027vdupd_lane_f64 (float64x1_t __a, const int __b)
828e70c1 16028{
661fce82 16029 __AARCH64_LANE_CHECK (__a, __b);
c6a29a09 16030 return __a[0];
828e70c1
JG
16031}
16032
a063e204
TC
16033__extension__ extern __inline int64_t
16034__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 16035vdupd_lane_s64 (int64x1_t __a, const int __b)
828e70c1 16036{
661fce82 16037 __AARCH64_LANE_CHECK (__a, __b);
096c59be 16038 return __a[0];
828e70c1
JG
16039}
16040
a063e204
TC
16041__extension__ extern __inline uint64_t
16042__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 16043vdupd_lane_u64 (uint64x1_t __a, const int __b)
828e70c1 16044{
661fce82 16045 __AARCH64_LANE_CHECK (__a, __b);
096c59be 16046 return __a[0];
828e70c1
JG
16047}
16048
16049/* vdupb_laneq */
a063e204
TC
16050__extension__ extern __inline poly8_t
16051__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16052vdupb_laneq_p8 (poly8x16_t __a, const int __b)
16053{
ed225d0c 16054 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16055}
16056
a063e204
TC
16057__extension__ extern __inline int8_t
16058__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9014162d 16059vdupb_laneq_s8 (int8x16_t __a, const int __b)
828e70c1 16060{
ed225d0c 16061 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16062}
16063
a063e204
TC
16064__extension__ extern __inline uint8_t
16065__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16066vdupb_laneq_u8 (uint8x16_t __a, const int __b)
16067{
ed225d0c 16068 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16069}
16070
16071/* vduph_laneq */
358decd5 16072
a063e204
TC
16073__extension__ extern __inline float16_t
16074__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
16075vduph_laneq_f16 (float16x8_t __a, const int __b)
16076{
16077 return __aarch64_vget_lane_any (__a, __b);
16078}
16079
a063e204
TC
16080__extension__ extern __inline poly16_t
16081__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16082vduph_laneq_p16 (poly16x8_t __a, const int __b)
16083{
ed225d0c 16084 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16085}
16086
a063e204
TC
16087__extension__ extern __inline int16_t
16088__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16089vduph_laneq_s16 (int16x8_t __a, const int __b)
16090{
ed225d0c 16091 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16092}
16093
a063e204
TC
16094__extension__ extern __inline uint16_t
16095__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16096vduph_laneq_u16 (uint16x8_t __a, const int __b)
16097{
ed225d0c 16098 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16099}
16100
16101/* vdups_laneq */
358decd5 16102
a063e204
TC
16103__extension__ extern __inline float32_t
16104__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16105vdups_laneq_f32 (float32x4_t __a, const int __b)
16106{
ed225d0c 16107 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16108}
16109
a063e204
TC
16110__extension__ extern __inline int32_t
16111__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16112vdups_laneq_s32 (int32x4_t __a, const int __b)
16113{
ed225d0c 16114 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16115}
16116
a063e204
TC
16117__extension__ extern __inline uint32_t
16118__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16119vdups_laneq_u32 (uint32x4_t __a, const int __b)
16120{
ed225d0c 16121 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16122}
16123
16124/* vdupd_laneq */
a063e204
TC
16125__extension__ extern __inline float64_t
16126__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16127vdupd_laneq_f64 (float64x2_t __a, const int __b)
16128{
ed225d0c 16129 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16130}
16131
a063e204
TC
16132__extension__ extern __inline int64_t
16133__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16134vdupd_laneq_s64 (int64x2_t __a, const int __b)
16135{
ed225d0c 16136 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16137}
16138
a063e204
TC
16139__extension__ extern __inline uint64_t
16140__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16141vdupd_laneq_u64 (uint64x2_t __a, const int __b)
16142{
ed225d0c 16143 return __aarch64_vget_lane_any (__a, __b);
828e70c1
JG
16144}
16145
ae0533da
AL
16146/* vext */
16147
a063e204
TC
16148__extension__ extern __inline float16x4_t
16149__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
16150vext_f16 (float16x4_t __a, float16x4_t __b, __const int __c)
16151{
16152 __AARCH64_LANE_CHECK (__a, __c);
16153#ifdef __AARCH64EB__
16154 return __builtin_shuffle (__b, __a,
16155 (uint16x4_t) {4 - __c, 5 - __c, 6 - __c, 7 - __c});
16156#else
16157 return __builtin_shuffle (__a, __b,
16158 (uint16x4_t) {__c, __c + 1, __c + 2, __c + 3});
16159#endif
16160}
16161
a063e204
TC
16162__extension__ extern __inline float32x2_t
16163__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16164vext_f32 (float32x2_t __a, float32x2_t __b, __const int __c)
16165{
661fce82 16166 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16167#ifdef __AARCH64EB__
16168 return __builtin_shuffle (__b, __a, (uint32x2_t) {2-__c, 3-__c});
16169#else
16170 return __builtin_shuffle (__a, __b, (uint32x2_t) {__c, __c+1});
16171#endif
16172}
16173
a063e204
TC
16174__extension__ extern __inline float64x1_t
16175__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16176vext_f64 (float64x1_t __a, float64x1_t __b, __const int __c)
16177{
661fce82 16178 __AARCH64_LANE_CHECK (__a, __c);
ae0533da 16179 /* The only possible index to the assembler instruction returns element 0. */
ae0533da
AL
16180 return __a;
16181}
a063e204
TC
16182__extension__ extern __inline poly8x8_t
16183__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16184vext_p8 (poly8x8_t __a, poly8x8_t __b, __const int __c)
16185{
661fce82 16186 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16187#ifdef __AARCH64EB__
16188 return __builtin_shuffle (__b, __a, (uint8x8_t)
16189 {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c});
16190#else
16191 return __builtin_shuffle (__a, __b,
16192 (uint8x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7});
16193#endif
16194}
16195
a063e204
TC
16196__extension__ extern __inline poly16x4_t
16197__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16198vext_p16 (poly16x4_t __a, poly16x4_t __b, __const int __c)
16199{
661fce82 16200 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16201#ifdef __AARCH64EB__
16202 return __builtin_shuffle (__b, __a,
16203 (uint16x4_t) {4-__c, 5-__c, 6-__c, 7-__c});
16204#else
16205 return __builtin_shuffle (__a, __b, (uint16x4_t) {__c, __c+1, __c+2, __c+3});
16206#endif
16207}
16208
6383ff9f
TC
16209__extension__ extern __inline poly64x1_t
16210__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
16211vext_p64 (poly64x1_t __a, poly64x1_t __b, __const int __c)
16212{
16213 __AARCH64_LANE_CHECK (__a, __c);
16214 /* The only possible index to the assembler instruction returns element 0. */
16215 return __a;
16216}
16217
a063e204
TC
16218__extension__ extern __inline int8x8_t
16219__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16220vext_s8 (int8x8_t __a, int8x8_t __b, __const int __c)
16221{
661fce82 16222 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16223#ifdef __AARCH64EB__
16224 return __builtin_shuffle (__b, __a, (uint8x8_t)
16225 {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c});
16226#else
16227 return __builtin_shuffle (__a, __b,
16228 (uint8x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7});
16229#endif
16230}
16231
a063e204
TC
16232__extension__ extern __inline int16x4_t
16233__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16234vext_s16 (int16x4_t __a, int16x4_t __b, __const int __c)
16235{
661fce82 16236 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16237#ifdef __AARCH64EB__
16238 return __builtin_shuffle (__b, __a,
16239 (uint16x4_t) {4-__c, 5-__c, 6-__c, 7-__c});
16240#else
16241 return __builtin_shuffle (__a, __b, (uint16x4_t) {__c, __c+1, __c+2, __c+3});
16242#endif
16243}
16244
a063e204
TC
16245__extension__ extern __inline int32x2_t
16246__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16247vext_s32 (int32x2_t __a, int32x2_t __b, __const int __c)
16248{
661fce82 16249 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16250#ifdef __AARCH64EB__
16251 return __builtin_shuffle (__b, __a, (uint32x2_t) {2-__c, 3-__c});
16252#else
16253 return __builtin_shuffle (__a, __b, (uint32x2_t) {__c, __c+1});
16254#endif
16255}
16256
a063e204
TC
16257__extension__ extern __inline int64x1_t
16258__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16259vext_s64 (int64x1_t __a, int64x1_t __b, __const int __c)
16260{
661fce82 16261 __AARCH64_LANE_CHECK (__a, __c);
ae0533da 16262 /* The only possible index to the assembler instruction returns element 0. */
ae0533da
AL
16263 return __a;
16264}
16265
a063e204
TC
16266__extension__ extern __inline uint8x8_t
16267__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16268vext_u8 (uint8x8_t __a, uint8x8_t __b, __const int __c)
16269{
661fce82 16270 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16271#ifdef __AARCH64EB__
16272 return __builtin_shuffle (__b, __a, (uint8x8_t)
16273 {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c});
16274#else
16275 return __builtin_shuffle (__a, __b,
16276 (uint8x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7});
16277#endif
16278}
16279
a063e204
TC
16280__extension__ extern __inline uint16x4_t
16281__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16282vext_u16 (uint16x4_t __a, uint16x4_t __b, __const int __c)
16283{
661fce82 16284 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16285#ifdef __AARCH64EB__
16286 return __builtin_shuffle (__b, __a,
16287 (uint16x4_t) {4-__c, 5-__c, 6-__c, 7-__c});
16288#else
16289 return __builtin_shuffle (__a, __b, (uint16x4_t) {__c, __c+1, __c+2, __c+3});
16290#endif
16291}
16292
a063e204
TC
16293__extension__ extern __inline uint32x2_t
16294__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16295vext_u32 (uint32x2_t __a, uint32x2_t __b, __const int __c)
16296{
661fce82 16297 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16298#ifdef __AARCH64EB__
16299 return __builtin_shuffle (__b, __a, (uint32x2_t) {2-__c, 3-__c});
16300#else
16301 return __builtin_shuffle (__a, __b, (uint32x2_t) {__c, __c+1});
16302#endif
16303}
16304
a063e204
TC
16305__extension__ extern __inline uint64x1_t
16306__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16307vext_u64 (uint64x1_t __a, uint64x1_t __b, __const int __c)
16308{
661fce82 16309 __AARCH64_LANE_CHECK (__a, __c);
ae0533da 16310 /* The only possible index to the assembler instruction returns element 0. */
ae0533da
AL
16311 return __a;
16312}
16313
a063e204
TC
16314__extension__ extern __inline float16x8_t
16315__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
16316vextq_f16 (float16x8_t __a, float16x8_t __b, __const int __c)
16317{
16318 __AARCH64_LANE_CHECK (__a, __c);
16319#ifdef __AARCH64EB__
16320 return __builtin_shuffle (__b, __a,
16321 (uint16x8_t) {8 - __c, 9 - __c, 10 - __c, 11 - __c,
16322 12 - __c, 13 - __c, 14 - __c,
16323 15 - __c});
16324#else
16325 return __builtin_shuffle (__a, __b,
16326 (uint16x8_t) {__c, __c + 1, __c + 2, __c + 3,
16327 __c + 4, __c + 5, __c + 6, __c + 7});
16328#endif
16329}
16330
a063e204
TC
16331__extension__ extern __inline float32x4_t
16332__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16333vextq_f32 (float32x4_t __a, float32x4_t __b, __const int __c)
16334{
661fce82 16335 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16336#ifdef __AARCH64EB__
16337 return __builtin_shuffle (__b, __a,
16338 (uint32x4_t) {4-__c, 5-__c, 6-__c, 7-__c});
16339#else
16340 return __builtin_shuffle (__a, __b, (uint32x4_t) {__c, __c+1, __c+2, __c+3});
16341#endif
16342}
16343
a063e204
TC
16344__extension__ extern __inline float64x2_t
16345__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16346vextq_f64 (float64x2_t __a, float64x2_t __b, __const int __c)
16347{
661fce82 16348 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16349#ifdef __AARCH64EB__
16350 return __builtin_shuffle (__b, __a, (uint64x2_t) {2-__c, 3-__c});
16351#else
16352 return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1});
16353#endif
16354}
16355
a063e204
TC
16356__extension__ extern __inline poly8x16_t
16357__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16358vextq_p8 (poly8x16_t __a, poly8x16_t __b, __const int __c)
16359{
661fce82 16360 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16361#ifdef __AARCH64EB__
16362 return __builtin_shuffle (__b, __a, (uint8x16_t)
16363 {16-__c, 17-__c, 18-__c, 19-__c, 20-__c, 21-__c, 22-__c, 23-__c,
16364 24-__c, 25-__c, 26-__c, 27-__c, 28-__c, 29-__c, 30-__c, 31-__c});
16365#else
16366 return __builtin_shuffle (__a, __b, (uint8x16_t)
16367 {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
16368 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15});
16369#endif
16370}
16371
a063e204
TC
16372__extension__ extern __inline poly16x8_t
16373__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16374vextq_p16 (poly16x8_t __a, poly16x8_t __b, __const int __c)
16375{
661fce82 16376 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16377#ifdef __AARCH64EB__
16378 return __builtin_shuffle (__b, __a, (uint16x8_t)
16379 {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c});
16380#else
16381 return __builtin_shuffle (__a, __b,
16382 (uint16x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7});
16383#endif
16384}
16385
6383ff9f
TC
16386__extension__ extern __inline poly64x2_t
16387__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
16388vextq_p64 (poly64x2_t __a, poly64x2_t __b, __const int __c)
16389{
16390 __AARCH64_LANE_CHECK (__a, __c);
16391#ifdef __AARCH64EB__
16392 return __builtin_shuffle (__b, __a, (uint64x2_t) {2-__c, 3-__c});
16393#else
16394 return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1});
16395#endif
16396}
16397
a063e204
TC
16398__extension__ extern __inline int8x16_t
16399__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16400vextq_s8 (int8x16_t __a, int8x16_t __b, __const int __c)
16401{
661fce82 16402 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16403#ifdef __AARCH64EB__
16404 return __builtin_shuffle (__b, __a, (uint8x16_t)
16405 {16-__c, 17-__c, 18-__c, 19-__c, 20-__c, 21-__c, 22-__c, 23-__c,
16406 24-__c, 25-__c, 26-__c, 27-__c, 28-__c, 29-__c, 30-__c, 31-__c});
16407#else
16408 return __builtin_shuffle (__a, __b, (uint8x16_t)
16409 {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
16410 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15});
16411#endif
16412}
16413
a063e204
TC
16414__extension__ extern __inline int16x8_t
16415__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16416vextq_s16 (int16x8_t __a, int16x8_t __b, __const int __c)
16417{
661fce82 16418 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16419#ifdef __AARCH64EB__
16420 return __builtin_shuffle (__b, __a, (uint16x8_t)
16421 {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c});
16422#else
16423 return __builtin_shuffle (__a, __b,
16424 (uint16x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7});
16425#endif
16426}
16427
a063e204
TC
16428__extension__ extern __inline int32x4_t
16429__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16430vextq_s32 (int32x4_t __a, int32x4_t __b, __const int __c)
16431{
661fce82 16432 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16433#ifdef __AARCH64EB__
16434 return __builtin_shuffle (__b, __a,
16435 (uint32x4_t) {4-__c, 5-__c, 6-__c, 7-__c});
16436#else
16437 return __builtin_shuffle (__a, __b, (uint32x4_t) {__c, __c+1, __c+2, __c+3});
16438#endif
16439}
16440
a063e204
TC
16441__extension__ extern __inline int64x2_t
16442__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16443vextq_s64 (int64x2_t __a, int64x2_t __b, __const int __c)
16444{
661fce82 16445 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16446#ifdef __AARCH64EB__
16447 return __builtin_shuffle (__b, __a, (uint64x2_t) {2-__c, 3-__c});
16448#else
16449 return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1});
16450#endif
16451}
16452
a063e204
TC
16453__extension__ extern __inline uint8x16_t
16454__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16455vextq_u8 (uint8x16_t __a, uint8x16_t __b, __const int __c)
16456{
661fce82 16457 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16458#ifdef __AARCH64EB__
16459 return __builtin_shuffle (__b, __a, (uint8x16_t)
16460 {16-__c, 17-__c, 18-__c, 19-__c, 20-__c, 21-__c, 22-__c, 23-__c,
16461 24-__c, 25-__c, 26-__c, 27-__c, 28-__c, 29-__c, 30-__c, 31-__c});
16462#else
16463 return __builtin_shuffle (__a, __b, (uint8x16_t)
16464 {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
16465 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15});
16466#endif
16467}
16468
a063e204
TC
16469__extension__ extern __inline uint16x8_t
16470__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16471vextq_u16 (uint16x8_t __a, uint16x8_t __b, __const int __c)
16472{
661fce82 16473 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16474#ifdef __AARCH64EB__
16475 return __builtin_shuffle (__b, __a, (uint16x8_t)
16476 {8-__c, 9-__c, 10-__c, 11-__c, 12-__c, 13-__c, 14-__c, 15-__c});
16477#else
16478 return __builtin_shuffle (__a, __b,
16479 (uint16x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7});
16480#endif
16481}
16482
a063e204
TC
16483__extension__ extern __inline uint32x4_t
16484__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16485vextq_u32 (uint32x4_t __a, uint32x4_t __b, __const int __c)
16486{
661fce82 16487 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16488#ifdef __AARCH64EB__
16489 return __builtin_shuffle (__b, __a,
16490 (uint32x4_t) {4-__c, 5-__c, 6-__c, 7-__c});
16491#else
16492 return __builtin_shuffle (__a, __b, (uint32x4_t) {__c, __c+1, __c+2, __c+3});
16493#endif
16494}
16495
a063e204
TC
16496__extension__ extern __inline uint64x2_t
16497__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ae0533da
AL
16498vextq_u64 (uint64x2_t __a, uint64x2_t __b, __const int __c)
16499{
661fce82 16500 __AARCH64_LANE_CHECK (__a, __c);
ae0533da
AL
16501#ifdef __AARCH64EB__
16502 return __builtin_shuffle (__b, __a, (uint64x2_t) {2-__c, 3-__c});
16503#else
16504 return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1});
16505#endif
16506}
16507
1f960ced
KT
16508/* vfma */
16509
a063e204
TC
16510__extension__ extern __inline float64x1_t
16511__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1f960ced
KT
16512vfma_f64 (float64x1_t __a, float64x1_t __b, float64x1_t __c)
16513{
16514 return (float64x1_t) {__builtin_fma (__b[0], __c[0], __a[0])};
16515}
16516
a063e204
TC
16517__extension__ extern __inline float32x2_t
16518__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
16519vfma_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c)
16520{
16521 return __builtin_aarch64_fmav2sf (__b, __c, __a);
16522}
16523
a063e204
TC
16524__extension__ extern __inline float32x4_t
16525__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
16526vfmaq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
16527{
16528 return __builtin_aarch64_fmav4sf (__b, __c, __a);
16529}
16530
a063e204
TC
16531__extension__ extern __inline float64x2_t
16532__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
16533vfmaq_f64 (float64x2_t __a, float64x2_t __b, float64x2_t __c)
16534{
16535 return __builtin_aarch64_fmav2df (__b, __c, __a);
16536}
16537
a063e204
TC
16538__extension__ extern __inline float32x2_t
16539__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
16540vfma_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)
16541{
16542 return __builtin_aarch64_fmav2sf (__b, vdup_n_f32 (__c), __a);
16543}
16544
a063e204
TC
16545__extension__ extern __inline float64x1_t
16546__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
98b3a5f2
JW
16547vfma_n_f64 (float64x1_t __a, float64x1_t __b, float64_t __c)
16548{
16549 return (float64x1_t) {__b[0] * __c + __a[0]};
16550}
16551
a063e204
TC
16552__extension__ extern __inline float32x4_t
16553__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
16554vfmaq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)
16555{
16556 return __builtin_aarch64_fmav4sf (__b, vdupq_n_f32 (__c), __a);
16557}
16558
a063e204
TC
16559__extension__ extern __inline float64x2_t
16560__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
16561vfmaq_n_f64 (float64x2_t __a, float64x2_t __b, float64_t __c)
16562{
16563 return __builtin_aarch64_fmav2df (__b, vdupq_n_f64 (__c), __a);
16564}
16565
828e70c1
JG
16566/* vfma_lane */
16567
a063e204
TC
16568__extension__ extern __inline float32x2_t
16569__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16570vfma_lane_f32 (float32x2_t __a, float32x2_t __b,
16571 float32x2_t __c, const int __lane)
16572{
16573 return __builtin_aarch64_fmav2sf (__b,
16574 __aarch64_vdup_lane_f32 (__c, __lane),
16575 __a);
16576}
16577
a063e204
TC
16578__extension__ extern __inline float64x1_t
16579__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
c6a29a09
AL
16580vfma_lane_f64 (float64x1_t __a, float64x1_t __b,
16581 float64x1_t __c, const int __lane)
828e70c1 16582{
c6a29a09 16583 return (float64x1_t) {__builtin_fma (__b[0], __c[0], __a[0])};
828e70c1
JG
16584}
16585
a063e204
TC
16586__extension__ extern __inline float64_t
16587__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1 16588vfmad_lane_f64 (float64_t __a, float64_t __b,
c6a29a09 16589 float64x1_t __c, const int __lane)
828e70c1 16590{
c6a29a09 16591 return __builtin_fma (__b, __c[0], __a);
828e70c1
JG
16592}
16593
a063e204
TC
16594__extension__ extern __inline float32_t
16595__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16596vfmas_lane_f32 (float32_t __a, float32_t __b,
16597 float32x2_t __c, const int __lane)
16598{
ed225d0c 16599 return __builtin_fmaf (__b, __aarch64_vget_lane_any (__c, __lane), __a);
828e70c1
JG
16600}
16601
16602/* vfma_laneq */
16603
a063e204
TC
16604__extension__ extern __inline float32x2_t
16605__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16606vfma_laneq_f32 (float32x2_t __a, float32x2_t __b,
16607 float32x4_t __c, const int __lane)
16608{
16609 return __builtin_aarch64_fmav2sf (__b,
16610 __aarch64_vdup_laneq_f32 (__c, __lane),
16611 __a);
16612}
16613
a063e204
TC
16614__extension__ extern __inline float64x1_t
16615__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
c6a29a09 16616vfma_laneq_f64 (float64x1_t __a, float64x1_t __b,
828e70c1 16617 float64x2_t __c, const int __lane)
43e9d192 16618{
ed225d0c 16619 float64_t __c0 = __aarch64_vget_lane_any (__c, __lane);
c6a29a09 16620 return (float64x1_t) {__builtin_fma (__b[0], __c0, __a[0])};
43e9d192
IB
16621}
16622
a063e204
TC
16623__extension__ extern __inline float64_t
16624__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16625vfmad_laneq_f64 (float64_t __a, float64_t __b,
16626 float64x2_t __c, const int __lane)
43e9d192 16627{
ed225d0c 16628 return __builtin_fma (__b, __aarch64_vget_lane_any (__c, __lane), __a);
43e9d192
IB
16629}
16630
a063e204
TC
16631__extension__ extern __inline float32_t
16632__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16633vfmas_laneq_f32 (float32_t __a, float32_t __b,
16634 float32x4_t __c, const int __lane)
43e9d192 16635{
ed225d0c 16636 return __builtin_fmaf (__b, __aarch64_vget_lane_any (__c, __lane), __a);
43e9d192
IB
16637}
16638
828e70c1
JG
16639/* vfmaq_lane */
16640
a063e204
TC
16641__extension__ extern __inline float32x4_t
16642__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16643vfmaq_lane_f32 (float32x4_t __a, float32x4_t __b,
16644 float32x2_t __c, const int __lane)
43e9d192 16645{
828e70c1
JG
16646 return __builtin_aarch64_fmav4sf (__b,
16647 __aarch64_vdupq_lane_f32 (__c, __lane),
16648 __a);
43e9d192
IB
16649}
16650
a063e204
TC
16651__extension__ extern __inline float64x2_t
16652__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1 16653vfmaq_lane_f64 (float64x2_t __a, float64x2_t __b,
c6a29a09 16654 float64x1_t __c, const int __lane)
43e9d192 16655{
c6a29a09 16656 return __builtin_aarch64_fmav2df (__b, vdupq_n_f64 (__c[0]), __a);
43e9d192
IB
16657}
16658
828e70c1
JG
16659/* vfmaq_laneq */
16660
a063e204
TC
16661__extension__ extern __inline float32x4_t
16662__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16663vfmaq_laneq_f32 (float32x4_t __a, float32x4_t __b,
16664 float32x4_t __c, const int __lane)
43e9d192 16665{
828e70c1
JG
16666 return __builtin_aarch64_fmav4sf (__b,
16667 __aarch64_vdupq_laneq_f32 (__c, __lane),
16668 __a);
43e9d192
IB
16669}
16670
a063e204
TC
16671__extension__ extern __inline float64x2_t
16672__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16673vfmaq_laneq_f64 (float64x2_t __a, float64x2_t __b,
16674 float64x2_t __c, const int __lane)
43e9d192 16675{
828e70c1
JG
16676 return __builtin_aarch64_fmav2df (__b,
16677 __aarch64_vdupq_laneq_f64 (__c, __lane),
16678 __a);
43e9d192
IB
16679}
16680
1f960ced
KT
16681/* vfms */
16682
a063e204
TC
16683__extension__ extern __inline float64x1_t
16684__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1f960ced
KT
16685vfms_f64 (float64x1_t __a, float64x1_t __b, float64x1_t __c)
16686{
16687 return (float64x1_t) {__builtin_fma (-__b[0], __c[0], __a[0])};
16688}
16689
a063e204
TC
16690__extension__ extern __inline float32x2_t
16691__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
16692vfms_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c)
16693{
16694 return __builtin_aarch64_fmav2sf (-__b, __c, __a);
16695}
16696
a063e204
TC
16697__extension__ extern __inline float32x4_t
16698__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
16699vfmsq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
16700{
16701 return __builtin_aarch64_fmav4sf (-__b, __c, __a);
16702}
16703
a063e204
TC
16704__extension__ extern __inline float64x2_t
16705__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
16706vfmsq_f64 (float64x2_t __a, float64x2_t __b, float64x2_t __c)
16707{
16708 return __builtin_aarch64_fmav2df (-__b, __c, __a);
16709}
16710
a063e204
TC
16711__extension__ extern __inline float32x2_t
16712__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
98b3a5f2
JW
16713vfms_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)
16714{
16715 return __builtin_aarch64_fmav2sf (-__b, vdup_n_f32 (__c), __a);
16716}
16717
a063e204
TC
16718__extension__ extern __inline float64x1_t
16719__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
98b3a5f2
JW
16720vfms_n_f64 (float64x1_t __a, float64x1_t __b, float64_t __c)
16721{
16722 return (float64x1_t) {-__b[0] * __c + __a[0]};
16723}
16724
a063e204
TC
16725__extension__ extern __inline float32x4_t
16726__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
98b3a5f2
JW
16727vfmsq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)
16728{
16729 return __builtin_aarch64_fmav4sf (-__b, vdupq_n_f32 (__c), __a);
16730}
16731
a063e204
TC
16732__extension__ extern __inline float64x2_t
16733__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
98b3a5f2
JW
16734vfmsq_n_f64 (float64x2_t __a, float64x2_t __b, float64_t __c)
16735{
16736 return __builtin_aarch64_fmav2df (-__b, vdupq_n_f64 (__c), __a);
16737}
58a3bd25 16738
828e70c1
JG
16739/* vfms_lane */
16740
a063e204
TC
16741__extension__ extern __inline float32x2_t
16742__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16743vfms_lane_f32 (float32x2_t __a, float32x2_t __b,
16744 float32x2_t __c, const int __lane)
43e9d192 16745{
828e70c1
JG
16746 return __builtin_aarch64_fmav2sf (-__b,
16747 __aarch64_vdup_lane_f32 (__c, __lane),
16748 __a);
43e9d192
IB
16749}
16750
a063e204
TC
16751__extension__ extern __inline float64x1_t
16752__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
c6a29a09
AL
16753vfms_lane_f64 (float64x1_t __a, float64x1_t __b,
16754 float64x1_t __c, const int __lane)
43e9d192 16755{
c6a29a09 16756 return (float64x1_t) {__builtin_fma (-__b[0], __c[0], __a[0])};
43e9d192
IB
16757}
16758
a063e204
TC
16759__extension__ extern __inline float64_t
16760__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1 16761vfmsd_lane_f64 (float64_t __a, float64_t __b,
c6a29a09 16762 float64x1_t __c, const int __lane)
43e9d192 16763{
c6a29a09 16764 return __builtin_fma (-__b, __c[0], __a);
43e9d192
IB
16765}
16766
a063e204
TC
16767__extension__ extern __inline float32_t
16768__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16769vfmss_lane_f32 (float32_t __a, float32_t __b,
16770 float32x2_t __c, const int __lane)
43e9d192 16771{
ed225d0c 16772 return __builtin_fmaf (-__b, __aarch64_vget_lane_any (__c, __lane), __a);
43e9d192
IB
16773}
16774
828e70c1
JG
16775/* vfms_laneq */
16776
a063e204
TC
16777__extension__ extern __inline float32x2_t
16778__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16779vfms_laneq_f32 (float32x2_t __a, float32x2_t __b,
16780 float32x4_t __c, const int __lane)
91bd4114 16781{
828e70c1
JG
16782 return __builtin_aarch64_fmav2sf (-__b,
16783 __aarch64_vdup_laneq_f32 (__c, __lane),
16784 __a);
91bd4114 16785}
43e9d192 16786
a063e204
TC
16787__extension__ extern __inline float64x1_t
16788__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
c6a29a09 16789vfms_laneq_f64 (float64x1_t __a, float64x1_t __b,
828e70c1 16790 float64x2_t __c, const int __lane)
43e9d192 16791{
ed225d0c 16792 float64_t __c0 = __aarch64_vget_lane_any (__c, __lane);
c6a29a09 16793 return (float64x1_t) {__builtin_fma (-__b[0], __c0, __a[0])};
43e9d192
IB
16794}
16795
a063e204
TC
16796__extension__ extern __inline float64_t
16797__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16798vfmsd_laneq_f64 (float64_t __a, float64_t __b,
16799 float64x2_t __c, const int __lane)
43e9d192 16800{
ed225d0c 16801 return __builtin_fma (-__b, __aarch64_vget_lane_any (__c, __lane), __a);
43e9d192
IB
16802}
16803
a063e204
TC
16804__extension__ extern __inline float32_t
16805__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16806vfmss_laneq_f32 (float32_t __a, float32_t __b,
16807 float32x4_t __c, const int __lane)
43e9d192 16808{
ed225d0c 16809 return __builtin_fmaf (-__b, __aarch64_vget_lane_any (__c, __lane), __a);
43e9d192
IB
16810}
16811
828e70c1 16812/* vfmsq_lane */
43e9d192 16813
a063e204
TC
16814__extension__ extern __inline float32x4_t
16815__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16816vfmsq_lane_f32 (float32x4_t __a, float32x4_t __b,
16817 float32x2_t __c, const int __lane)
43e9d192 16818{
828e70c1
JG
16819 return __builtin_aarch64_fmav4sf (-__b,
16820 __aarch64_vdupq_lane_f32 (__c, __lane),
16821 __a);
43e9d192
IB
16822}
16823
a063e204
TC
16824__extension__ extern __inline float64x2_t
16825__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1 16826vfmsq_lane_f64 (float64x2_t __a, float64x2_t __b,
c6a29a09 16827 float64x1_t __c, const int __lane)
43e9d192 16828{
c6a29a09 16829 return __builtin_aarch64_fmav2df (-__b, vdupq_n_f64 (__c[0]), __a);
43e9d192
IB
16830}
16831
828e70c1
JG
16832/* vfmsq_laneq */
16833
a063e204
TC
16834__extension__ extern __inline float32x4_t
16835__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16836vfmsq_laneq_f32 (float32x4_t __a, float32x4_t __b,
16837 float32x4_t __c, const int __lane)
43e9d192 16838{
828e70c1
JG
16839 return __builtin_aarch64_fmav4sf (-__b,
16840 __aarch64_vdupq_laneq_f32 (__c, __lane),
16841 __a);
43e9d192
IB
16842}
16843
a063e204
TC
16844__extension__ extern __inline float64x2_t
16845__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
16846vfmsq_laneq_f64 (float64x2_t __a, float64x2_t __b,
16847 float64x2_t __c, const int __lane)
43e9d192 16848{
828e70c1
JG
16849 return __builtin_aarch64_fmav2df (-__b,
16850 __aarch64_vdupq_laneq_f64 (__c, __lane),
16851 __a);
43e9d192
IB
16852}
16853
dec11868
JG
16854/* vld1 */
16855
a063e204
TC
16856__extension__ extern __inline float16x4_t
16857__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
71a11456
AL
16858vld1_f16 (const float16_t *__a)
16859{
16860 return __builtin_aarch64_ld1v4hf (__a);
16861}
16862
a063e204
TC
16863__extension__ extern __inline float32x2_t
16864__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 16865vld1_f32 (const float32_t *__a)
dec11868 16866{
9a3afc35 16867 return __builtin_aarch64_ld1v2sf ((const __builtin_aarch64_simd_sf *) __a);
dec11868
JG
16868}
16869
a063e204
TC
16870__extension__ extern __inline float64x1_t
16871__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 16872vld1_f64 (const float64_t *__a)
dec11868 16873{
9a3afc35 16874 return (float64x1_t) {*__a};
dec11868
JG
16875}
16876
a063e204
TC
16877__extension__ extern __inline poly8x8_t
16878__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 16879vld1_p8 (const poly8_t *__a)
dec11868
JG
16880{
16881 return (poly8x8_t)
9a3afc35 16882 __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi *) __a);
dec11868
JG
16883}
16884
a063e204
TC
16885__extension__ extern __inline poly16x4_t
16886__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 16887vld1_p16 (const poly16_t *__a)
dec11868
JG
16888{
16889 return (poly16x4_t)
9a3afc35 16890 __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi *) __a);
dec11868
JG
16891}
16892
159b8724
TC
16893__extension__ extern __inline poly64x1_t
16894__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 16895vld1_p64 (const poly64_t *__a)
159b8724 16896{
9a3afc35 16897 return (poly64x1_t) {*__a};
159b8724
TC
16898}
16899
a063e204
TC
16900__extension__ extern __inline int8x8_t
16901__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 16902vld1_s8 (const int8_t *__a)
dec11868 16903{
9a3afc35 16904 return __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi *) __a);
dec11868
JG
16905}
16906
a063e204
TC
16907__extension__ extern __inline int16x4_t
16908__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 16909vld1_s16 (const int16_t *__a)
dec11868 16910{
9a3afc35 16911 return __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi *) __a);
dec11868
JG
16912}
16913
a063e204
TC
16914__extension__ extern __inline int32x2_t
16915__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 16916vld1_s32 (const int32_t *__a)
dec11868 16917{
9a3afc35 16918 return __builtin_aarch64_ld1v2si ((const __builtin_aarch64_simd_si *) __a);
dec11868
JG
16919}
16920
a063e204
TC
16921__extension__ extern __inline int64x1_t
16922__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 16923vld1_s64 (const int64_t *__a)
dec11868 16924{
9a3afc35 16925 return (int64x1_t) {*__a};
dec11868
JG
16926}
16927
a063e204
TC
16928__extension__ extern __inline uint8x8_t
16929__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 16930vld1_u8 (const uint8_t *__a)
dec11868
JG
16931{
16932 return (uint8x8_t)
9a3afc35 16933 __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi *) __a);
dec11868
JG
16934}
16935
a063e204
TC
16936__extension__ extern __inline uint16x4_t
16937__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 16938vld1_u16 (const uint16_t *__a)
dec11868
JG
16939{
16940 return (uint16x4_t)
9a3afc35 16941 __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi *) __a);
dec11868
JG
16942}
16943
a063e204
TC
16944__extension__ extern __inline uint32x2_t
16945__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 16946vld1_u32 (const uint32_t *__a)
dec11868
JG
16947{
16948 return (uint32x2_t)
9a3afc35 16949 __builtin_aarch64_ld1v2si ((const __builtin_aarch64_simd_si *) __a);
dec11868
JG
16950}
16951
a063e204
TC
16952__extension__ extern __inline uint64x1_t
16953__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 16954vld1_u64 (const uint64_t *__a)
dec11868 16955{
9a3afc35 16956 return (uint64x1_t) {*__a};
dec11868
JG
16957}
16958
568421ba
SD
16959/* vld1x3 */
16960
16961__extension__ extern __inline uint8x8x3_t
16962__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
16963vld1_u8_x3 (const uint8_t *__a)
16964{
16965 uint8x8x3_t __i;
16966 __builtin_aarch64_simd_ci __o;
16967 __o = (__builtin_aarch64_simd_ci)__builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a);
16968 __i.val[0] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0);
16969 __i.val[1] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1);
16970 __i.val[2] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2);
16971 return __i;
16972}
16973
16974__extension__ extern __inline int8x8x3_t
16975__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
16976vld1_s8_x3 (const uint8_t *__a)
16977{
16978 int8x8x3_t __i;
16979 __builtin_aarch64_simd_ci __o;
16980 __o = __builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a);
16981 __i.val[0] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0);
16982 __i.val[1] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1);
16983 __i.val[2] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2);
16984 return __i;
16985}
16986
16987__extension__ extern __inline uint16x4x3_t
16988__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
16989vld1_u16_x3 (const uint16_t *__a)
16990{
16991 uint16x4x3_t __i;
16992 __builtin_aarch64_simd_ci __o;
16993 __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a);
16994 __i.val[0] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0);
16995 __i.val[1] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1);
16996 __i.val[2] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2);
16997 return __i;
16998}
16999
17000__extension__ extern __inline int16x4x3_t
17001__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17002vld1_s16_x3 (const int16_t *__a)
17003{
17004 int16x4x3_t __i;
17005 __builtin_aarch64_simd_ci __o;
17006 __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a);
17007 __i.val[0] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0);
17008 __i.val[1] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1);
17009 __i.val[2] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2);
17010 return __i;
17011}
17012
17013__extension__ extern __inline uint32x2x3_t
17014__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17015vld1_u32_x3 (const uint32_t *__a)
17016{
17017 uint32x2x3_t __i;
17018 __builtin_aarch64_simd_ci __o;
17019 __o = __builtin_aarch64_ld1x3v2si ((const __builtin_aarch64_simd_si *) __a);
17020 __i.val[0] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0);
17021 __i.val[1] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1);
17022 __i.val[2] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2);
17023 return __i;
17024}
17025
17026__extension__ extern __inline int32x2x3_t
17027__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17028vld1_s32_x3 (const uint32_t *__a)
17029{
17030 int32x2x3_t __i;
17031 __builtin_aarch64_simd_ci __o;
17032 __o = __builtin_aarch64_ld1x3v2si ((const __builtin_aarch64_simd_si *) __a);
17033 __i.val[0] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0);
17034 __i.val[1] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1);
17035 __i.val[2] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2);
17036 return __i;
17037}
17038
17039__extension__ extern __inline uint64x1x3_t
17040__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17041vld1_u64_x3 (const uint64_t *__a)
17042{
17043 uint64x1x3_t __i;
17044 __builtin_aarch64_simd_ci __o;
17045 __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a);
17046 __i.val[0] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 0);
17047 __i.val[1] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 1);
17048 __i.val[2] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 2);
17049 return __i;
17050}
17051
17052__extension__ extern __inline int64x1x3_t
17053__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17054vld1_s64_x3 (const int64_t *__a)
17055{
17056 int64x1x3_t __i;
17057 __builtin_aarch64_simd_ci __o;
17058 __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a);
17059 __i.val[0] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 0);
17060 __i.val[1] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 1);
17061 __i.val[2] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 2);
17062
17063 return __i;
17064}
17065
17066__extension__ extern __inline float16x4x3_t
17067__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17068vld1_f16_x3 (const float16_t *__a)
17069{
17070 float16x4x3_t __i;
17071 __builtin_aarch64_simd_ci __o;
17072 __o = __builtin_aarch64_ld1x3v4hf ((const __builtin_aarch64_simd_hf *) __a);
17073 __i.val[0] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 0);
17074 __i.val[1] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 1);
17075 __i.val[2] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 2);
17076 return __i;
17077}
17078
17079__extension__ extern __inline float32x2x3_t
17080__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17081vld1_f32_x3 (const float32_t *__a)
17082{
17083 float32x2x3_t __i;
17084 __builtin_aarch64_simd_ci __o;
17085 __o = __builtin_aarch64_ld1x3v2sf ((const __builtin_aarch64_simd_sf *) __a);
17086 __i.val[0] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 0);
17087 __i.val[1] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 1);
17088 __i.val[2] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 2);
17089 return __i;
17090}
17091
17092__extension__ extern __inline float64x1x3_t
17093__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17094vld1_f64_x3 (const float64_t *__a)
17095{
17096 float64x1x3_t __i;
17097 __builtin_aarch64_simd_ci __o;
17098 __o = __builtin_aarch64_ld1x3df ((const __builtin_aarch64_simd_df *) __a);
17099 __i.val[0] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 0);
17100 __i.val[1] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 1);
17101 __i.val[2] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 2);
17102 return __i;
17103}
17104
17105__extension__ extern __inline poly8x8x3_t
17106__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17107vld1_p8_x3 (const poly8_t *__a)
17108{
17109 poly8x8x3_t __i;
17110 __builtin_aarch64_simd_ci __o;
17111 __o = __builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a);
17112 __i.val[0] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0);
17113 __i.val[1] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1);
17114 __i.val[2] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2);
17115 return __i;
17116}
17117
17118__extension__ extern __inline poly16x4x3_t
17119__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17120vld1_p16_x3 (const poly16_t *__a)
17121{
17122 poly16x4x3_t __i;
17123 __builtin_aarch64_simd_ci __o;
17124 __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a);
17125 __i.val[0] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0);
17126 __i.val[1] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1);
17127 __i.val[2] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2);
17128 return __i;
17129}
17130
17131__extension__ extern __inline poly64x1x3_t
17132__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17133vld1_p64_x3 (const poly64_t *__a)
17134{
17135 poly64x1x3_t __i;
17136 __builtin_aarch64_simd_ci __o;
17137 __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a);
17138 __i.val[0] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 0);
17139 __i.val[1] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 1);
17140 __i.val[2] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 2);
17141
17142return __i;
17143}
17144
17145__extension__ extern __inline uint8x16x3_t
17146__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17147vld1q_u8_x3 (const uint8_t *__a)
17148{
17149 uint8x16x3_t __i;
17150 __builtin_aarch64_simd_ci __o;
17151 __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a);
17152 __i.val[0] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0);
17153 __i.val[1] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1);
17154 __i.val[2] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2);
17155 return __i;
17156}
17157
17158__extension__ extern __inline int8x16x3_t
17159__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17160vld1q_s8_x3 (const int8_t *__a)
17161{
17162 int8x16x3_t __i;
17163 __builtin_aarch64_simd_ci __o;
17164 __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a);
17165 __i.val[0] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0);
17166 __i.val[1] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1);
17167 __i.val[2] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2);
17168 return __i;
17169}
17170
17171__extension__ extern __inline uint16x8x3_t
17172__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17173vld1q_u16_x3 (const uint16_t *__a)
17174{
17175 uint16x8x3_t __i;
17176 __builtin_aarch64_simd_ci __o;
17177 __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a);
17178 __i.val[0] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0);
17179 __i.val[1] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1);
17180 __i.val[2] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2);
17181 return __i;
17182}
17183
17184__extension__ extern __inline int16x8x3_t
17185__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17186vld1q_s16_x3 (const int16_t *__a)
17187{
17188 int16x8x3_t __i;
17189 __builtin_aarch64_simd_ci __o;
17190 __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a);
17191 __i.val[0] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0);
17192 __i.val[1] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1);
17193 __i.val[2] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2);
17194 return __i;
17195}
17196
17197__extension__ extern __inline uint32x4x3_t
17198__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17199vld1q_u32_x3 (const uint32_t *__a)
17200{
17201 uint32x4x3_t __i;
17202 __builtin_aarch64_simd_ci __o;
17203 __o = __builtin_aarch64_ld1x3v4si ((const __builtin_aarch64_simd_si *) __a);
17204 __i.val[0] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0);
17205 __i.val[1] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1);
17206 __i.val[2] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2);
17207 return __i;
17208}
17209
17210__extension__ extern __inline int32x4x3_t
17211__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17212vld1q_s32_x3 (const int32_t *__a)
17213{
17214 int32x4x3_t __i;
17215 __builtin_aarch64_simd_ci __o;
17216 __o = __builtin_aarch64_ld1x3v4si ((const __builtin_aarch64_simd_si *) __a);
17217 __i.val[0] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0);
17218 __i.val[1] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1);
17219 __i.val[2] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2);
17220 return __i;
17221}
17222
17223__extension__ extern __inline uint64x2x3_t
17224__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17225vld1q_u64_x3 (const uint64_t *__a)
17226{
17227 uint64x2x3_t __i;
17228 __builtin_aarch64_simd_ci __o;
17229 __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a);
17230 __i.val[0] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0);
17231 __i.val[1] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1);
17232 __i.val[2] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2);
17233 return __i;
17234}
17235
17236__extension__ extern __inline int64x2x3_t
17237__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17238vld1q_s64_x3 (const int64_t *__a)
17239{
17240 int64x2x3_t __i;
17241 __builtin_aarch64_simd_ci __o;
17242 __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a);
17243 __i.val[0] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0);
17244 __i.val[1] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1);
17245 __i.val[2] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2);
17246 return __i;
17247}
17248
17249__extension__ extern __inline float16x8x3_t
17250__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17251vld1q_f16_x3 (const float16_t *__a)
17252{
17253 float16x8x3_t __i;
17254 __builtin_aarch64_simd_ci __o;
17255 __o = __builtin_aarch64_ld1x3v8hf ((const __builtin_aarch64_simd_hf *) __a);
17256 __i.val[0] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 0);
17257 __i.val[1] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 1);
17258 __i.val[2] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 2);
17259 return __i;
17260}
17261
17262__extension__ extern __inline float32x4x3_t
17263__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17264vld1q_f32_x3 (const float32_t *__a)
17265{
17266 float32x4x3_t __i;
17267 __builtin_aarch64_simd_ci __o;
17268 __o = __builtin_aarch64_ld1x3v4sf ((const __builtin_aarch64_simd_sf *) __a);
17269 __i.val[0] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 0);
17270 __i.val[1] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 1);
17271 __i.val[2] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 2);
17272 return __i;
17273}
17274
17275__extension__ extern __inline float64x2x3_t
17276__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17277vld1q_f64_x3 (const float64_t *__a)
17278{
17279 float64x2x3_t __i;
17280 __builtin_aarch64_simd_ci __o;
17281 __o = __builtin_aarch64_ld1x3v2df ((const __builtin_aarch64_simd_df *) __a);
17282 __i.val[0] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 0);
17283 __i.val[1] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 1);
17284 __i.val[2] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 2);
17285 return __i;
17286}
17287
17288__extension__ extern __inline poly8x16x3_t
17289__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17290vld1q_p8_x3 (const poly8_t *__a)
17291{
17292 poly8x16x3_t __i;
17293 __builtin_aarch64_simd_ci __o;
17294 __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a);
17295 __i.val[0] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0);
17296 __i.val[1] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1);
17297 __i.val[2] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2);
17298 return __i;
17299}
17300
17301__extension__ extern __inline poly16x8x3_t
17302__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17303vld1q_p16_x3 (const poly16_t *__a)
17304{
17305 poly16x8x3_t __i;
17306 __builtin_aarch64_simd_ci __o;
17307 __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a);
17308 __i.val[0] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0);
17309 __i.val[1] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1);
17310 __i.val[2] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2);
17311 return __i;
17312}
17313
17314__extension__ extern __inline poly64x2x3_t
17315__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17316vld1q_p64_x3 (const poly64_t *__a)
17317{
17318 poly64x2x3_t __i;
17319 __builtin_aarch64_simd_ci __o;
17320 __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a);
17321 __i.val[0] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0);
17322 __i.val[1] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1);
17323 __i.val[2] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2);
17324 return __i;
17325}
17326
dec11868
JG
17327/* vld1q */
17328
a063e204
TC
17329__extension__ extern __inline float16x8_t
17330__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
71a11456
AL
17331vld1q_f16 (const float16_t *__a)
17332{
17333 return __builtin_aarch64_ld1v8hf (__a);
17334}
17335
a063e204
TC
17336__extension__ extern __inline float32x4_t
17337__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 17338vld1q_f32 (const float32_t *__a)
dec11868 17339{
9a3afc35 17340 return __builtin_aarch64_ld1v4sf ((const __builtin_aarch64_simd_sf *) __a);
dec11868
JG
17341}
17342
a063e204
TC
17343__extension__ extern __inline float64x2_t
17344__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 17345vld1q_f64 (const float64_t *__a)
dec11868 17346{
9a3afc35 17347 return __builtin_aarch64_ld1v2df ((const __builtin_aarch64_simd_df *) __a);
dec11868
JG
17348}
17349
a063e204
TC
17350__extension__ extern __inline poly8x16_t
17351__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 17352vld1q_p8 (const poly8_t *__a)
dec11868
JG
17353{
17354 return (poly8x16_t)
9a3afc35 17355 __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi *) __a);
dec11868
JG
17356}
17357
a063e204
TC
17358__extension__ extern __inline poly16x8_t
17359__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 17360vld1q_p16 (const poly16_t *__a)
dec11868
JG
17361{
17362 return (poly16x8_t)
9a3afc35 17363 __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi *) __a);
dec11868
JG
17364}
17365
159b8724
TC
17366__extension__ extern __inline poly64x2_t
17367__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 17368vld1q_p64 (const poly64_t *__a)
159b8724
TC
17369{
17370 return (poly64x2_t)
9a3afc35 17371 __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di *) __a);
159b8724
TC
17372}
17373
a063e204
TC
17374__extension__ extern __inline int8x16_t
17375__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 17376vld1q_s8 (const int8_t *__a)
dec11868 17377{
9a3afc35 17378 return __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi *) __a);
dec11868
JG
17379}
17380
a063e204
TC
17381__extension__ extern __inline int16x8_t
17382__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 17383vld1q_s16 (const int16_t *__a)
dec11868 17384{
9a3afc35 17385 return __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi *) __a);
dec11868
JG
17386}
17387
a063e204
TC
17388__extension__ extern __inline int32x4_t
17389__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 17390vld1q_s32 (const int32_t *__a)
dec11868 17391{
9a3afc35 17392 return __builtin_aarch64_ld1v4si ((const __builtin_aarch64_simd_si *) __a);
dec11868
JG
17393}
17394
a063e204
TC
17395__extension__ extern __inline int64x2_t
17396__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 17397vld1q_s64 (const int64_t *__a)
dec11868 17398{
9a3afc35 17399 return __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di *) __a);
dec11868
JG
17400}
17401
a063e204
TC
17402__extension__ extern __inline uint8x16_t
17403__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 17404vld1q_u8 (const uint8_t *__a)
dec11868
JG
17405{
17406 return (uint8x16_t)
9a3afc35 17407 __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi *) __a);
dec11868
JG
17408}
17409
467e6f1b
KV
17410__extension__ extern __inline uint8x8x2_t
17411__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17412vld1_u8_x2 (const uint8_t *__a)
17413{
17414 uint8x8x2_t ret;
17415 __builtin_aarch64_simd_oi __o;
17416 __o = __builtin_aarch64_ld1x2v8qi ((const __builtin_aarch64_simd_qi *) __a);
17417 ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0);
17418 ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1);
17419 return ret;
17420}
17421
17422__extension__ extern __inline int8x8x2_t
17423__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17424vld1_s8_x2 (const int8_t *__a)
17425{
17426 int8x8x2_t ret;
17427 __builtin_aarch64_simd_oi __o;
17428 __o = __builtin_aarch64_ld1x2v8qi ((const __builtin_aarch64_simd_qi *) __a);
17429 ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0);
17430 ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1);
17431 return ret;
17432}
17433
17434__extension__ extern __inline uint16x4x2_t
17435__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17436vld1_u16_x2 (const uint16_t *__a)
17437{
17438 uint16x4x2_t ret;
17439 __builtin_aarch64_simd_oi __o;
17440 __o = __builtin_aarch64_ld1x2v4hi ((const __builtin_aarch64_simd_hi *) __a);
17441 ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0);
17442 ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1);
17443 return ret;
17444}
17445
17446__extension__ extern __inline int16x4x2_t
17447__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17448vld1_s16_x2 (const int16_t *__a)
17449{
17450 int16x4x2_t ret;
17451 __builtin_aarch64_simd_oi __o;
17452 __o = __builtin_aarch64_ld1x2v4hi ((const __builtin_aarch64_simd_hi *) __a);
17453 ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0);
17454 ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1);
17455 return ret;
17456}
17457
17458__extension__ extern __inline uint32x2x2_t
17459__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17460vld1_u32_x2 (const uint32_t *__a)
17461{
17462 uint32x2x2_t ret;
17463 __builtin_aarch64_simd_oi __o;
17464 __o = __builtin_aarch64_ld1x2v2si ((const __builtin_aarch64_simd_si *) __a);
17465 ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0);
17466 ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1);
17467 return ret;
17468}
17469
17470__extension__ extern __inline int32x2x2_t
17471__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17472vld1_s32_x2 (const int32_t *__a)
17473{
17474 int32x2x2_t ret;
17475 __builtin_aarch64_simd_oi __o;
17476 __o = __builtin_aarch64_ld1x2v2si ((const __builtin_aarch64_simd_si *) __a);
17477 ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0);
17478 ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1);
17479 return ret;
17480}
17481
17482__extension__ extern __inline uint64x1x2_t
17483__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17484vld1_u64_x2 (const uint64_t *__a)
17485{
17486 uint64x1x2_t ret;
17487 __builtin_aarch64_simd_oi __o;
17488 __o = __builtin_aarch64_ld1x2di ((const __builtin_aarch64_simd_di *) __a);
17489 ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 0);
17490 ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 1);
17491 return ret;
17492}
17493
17494__extension__ extern __inline int64x1x2_t
17495__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17496vld1_s64_x2 (const int64_t *__a)
17497{
17498 int64x1x2_t ret;
17499 __builtin_aarch64_simd_oi __o;
17500 __o = __builtin_aarch64_ld1x2di ((const __builtin_aarch64_simd_di *) __a);
17501 ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 0);
17502 ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 1);
17503 return ret;
17504}
17505
17506__extension__ extern __inline float16x4x2_t
17507__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17508vld1_f16_x2 (const float16_t *__a)
17509{
17510 float16x4x2_t ret;
17511 __builtin_aarch64_simd_oi __o;
17512 __o = __builtin_aarch64_ld1x2v4hf ((const __builtin_aarch64_simd_hf *) __a);
17513 ret.val[0] = (float16x4_t) __builtin_aarch64_get_dregoiv4hf (__o, 0);
17514 ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregoiv4hf (__o, 1);
17515 return ret;
17516}
17517
17518__extension__ extern __inline float32x2x2_t
17519__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17520vld1_f32_x2 (const float32_t *__a)
17521{
17522 float32x2x2_t ret;
17523 __builtin_aarch64_simd_oi __o;
17524 __o = __builtin_aarch64_ld1x2v2sf ((const __builtin_aarch64_simd_sf *) __a);
17525 ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 0);
17526 ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 1);
17527 return ret;
17528}
17529
17530__extension__ extern __inline float64x1x2_t
17531__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17532vld1_f64_x2 (const float64_t *__a)
17533{
17534 float64x1x2_t ret;
17535 __builtin_aarch64_simd_oi __o;
17536 __o = __builtin_aarch64_ld1x2df ((const __builtin_aarch64_simd_df *) __a);
17537 ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 0)};
17538 ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 1)};
17539 return ret;
17540}
17541
17542__extension__ extern __inline poly8x8x2_t
17543__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17544vld1_p8_x2 (const poly8_t *__a)
17545{
17546 poly8x8x2_t ret;
17547 __builtin_aarch64_simd_oi __o;
17548 __o = __builtin_aarch64_ld1x2v8qi ((const __builtin_aarch64_simd_qi *) __a);
17549 ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0);
17550 ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1);
17551 return ret;
17552}
17553
17554__extension__ extern __inline poly16x4x2_t
17555__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17556vld1_p16_x2 (const poly16_t *__a)
17557{
17558 poly16x4x2_t ret;
17559 __builtin_aarch64_simd_oi __o;
17560 __o = __builtin_aarch64_ld1x2v4hi ((const __builtin_aarch64_simd_hi *) __a);
17561 ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0);
17562 ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1);
17563 return ret;
17564}
17565
17566__extension__ extern __inline poly64x1x2_t
17567__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17568vld1_p64_x2 (const poly64_t *__a)
17569{
17570 poly64x1x2_t ret;
17571 __builtin_aarch64_simd_oi __o;
17572 __o = __builtin_aarch64_ld1x2di ((const __builtin_aarch64_simd_di *) __a);
17573 ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregoidi (__o, 0);
17574 ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregoidi (__o, 1);
17575 return ret;
17576}
17577
17578__extension__ extern __inline uint8x16x2_t
17579__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17580vld1q_u8_x2 (const uint8_t *__a)
17581{
17582 uint8x16x2_t ret;
17583 __builtin_aarch64_simd_oi __o;
17584 __o = __builtin_aarch64_ld1x2v16qi ((const __builtin_aarch64_simd_qi *) __a);
17585 ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0);
17586 ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1);
17587 return ret;
17588}
17589
17590__extension__ extern __inline int8x16x2_t
17591__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17592vld1q_s8_x2 (const int8_t *__a)
17593{
17594 int8x16x2_t ret;
17595 __builtin_aarch64_simd_oi __o;
17596 __o = __builtin_aarch64_ld1x2v16qi ((const __builtin_aarch64_simd_qi *) __a);
17597 ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0);
17598 ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1);
17599 return ret;
17600}
17601
17602__extension__ extern __inline uint16x8x2_t
17603__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17604vld1q_u16_x2 (const uint16_t *__a)
17605{
17606 uint16x8x2_t ret;
17607 __builtin_aarch64_simd_oi __o;
17608 __o = __builtin_aarch64_ld1x2v8hi ((const __builtin_aarch64_simd_hi *) __a);
17609 ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0);
17610 ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1);
17611 return ret;
17612}
17613
17614__extension__ extern __inline int16x8x2_t
17615__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17616vld1q_s16_x2 (const int16_t *__a)
17617{
17618 int16x8x2_t ret;
17619 __builtin_aarch64_simd_oi __o;
17620 __o = __builtin_aarch64_ld1x2v8hi ((const __builtin_aarch64_simd_hi *) __a);
17621 ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0);
17622 ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1);
17623 return ret;
17624}
17625
17626__extension__ extern __inline uint32x4x2_t
17627__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17628vld1q_u32_x2 (const uint32_t *__a)
17629{
17630 uint32x4x2_t ret;
17631 __builtin_aarch64_simd_oi __o;
17632 __o = __builtin_aarch64_ld1x2v4si ((const __builtin_aarch64_simd_si *) __a);
17633 ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0);
17634 ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1);
17635 return ret;
17636}
17637
17638__extension__ extern __inline int32x4x2_t
17639__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17640vld1q_s32_x2 (const int32_t *__a)
17641{
17642 int32x4x2_t ret;
17643 __builtin_aarch64_simd_oi __o;
17644 __o = __builtin_aarch64_ld1x2v4si ((const __builtin_aarch64_simd_si *) __a);
17645 ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0);
17646 ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1);
17647 return ret;
17648}
17649
17650__extension__ extern __inline uint64x2x2_t
17651__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17652vld1q_u64_x2 (const uint64_t *__a)
17653{
17654 uint64x2x2_t ret;
17655 __builtin_aarch64_simd_oi __o;
17656 __o = __builtin_aarch64_ld1x2v2di ((const __builtin_aarch64_simd_di *) __a);
17657 ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0);
17658 ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1);
17659 return ret;
17660}
17661
17662__extension__ extern __inline int64x2x2_t
17663__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17664vld1q_s64_x2 (const int64_t *__a)
17665{
17666 int64x2x2_t ret;
17667 __builtin_aarch64_simd_oi __o;
17668 __o = __builtin_aarch64_ld1x2v2di ((const __builtin_aarch64_simd_di *) __a);
17669 ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0);
17670 ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1);
17671 return ret;
17672}
17673
17674__extension__ extern __inline float16x8x2_t
17675__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17676vld1q_f16_x2 (const float16_t *__a)
17677{
17678 float16x8x2_t ret;
17679 __builtin_aarch64_simd_oi __o;
17680 __o = __builtin_aarch64_ld1x2v8hf ((const __builtin_aarch64_simd_hf *) __a);
17681 ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregoiv8hf (__o, 0);
17682 ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregoiv8hf (__o, 1);
17683 return ret;
17684}
17685
17686__extension__ extern __inline float32x4x2_t
17687__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17688vld1q_f32_x2 (const float32_t *__a)
17689{
17690 float32x4x2_t ret;
17691 __builtin_aarch64_simd_oi __o;
17692 __o = __builtin_aarch64_ld1x2v4sf ((const __builtin_aarch64_simd_sf *) __a);
17693 ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 0);
17694 ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 1);
17695 return ret;
17696}
17697
17698__extension__ extern __inline float64x2x2_t
17699__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17700vld1q_f64_x2 (const float64_t *__a)
17701{
17702 float64x2x2_t ret;
17703 __builtin_aarch64_simd_oi __o;
17704 __o = __builtin_aarch64_ld1x2v2df ((const __builtin_aarch64_simd_df *) __a);
17705 ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 0);
17706 ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 1);
17707 return ret;
17708}
17709
17710__extension__ extern __inline poly8x16x2_t
17711__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17712vld1q_p8_x2 (const poly8_t *__a)
17713{
17714 poly8x16x2_t ret;
17715 __builtin_aarch64_simd_oi __o;
17716 __o = __builtin_aarch64_ld1x2v16qi ((const __builtin_aarch64_simd_qi *) __a);
17717 ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0);
17718 ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1);
17719 return ret;
17720}
17721
17722__extension__ extern __inline poly16x8x2_t
17723__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17724vld1q_p16_x2 (const poly16_t *__a)
17725{
17726 poly16x8x2_t ret;
17727 __builtin_aarch64_simd_oi __o;
17728 __o = __builtin_aarch64_ld1x2v8hi ((const __builtin_aarch64_simd_hi *) __a);
17729 ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0);
17730 ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1);
17731 return ret;
17732}
17733
17734__extension__ extern __inline poly64x2x2_t
17735__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17736vld1q_p64_x2 (const poly64_t *__a)
17737{
17738 poly64x2x2_t ret;
17739 __builtin_aarch64_simd_oi __o;
17740 __o = __builtin_aarch64_ld1x2v2di ((const __builtin_aarch64_simd_di *) __a);
17741 ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0);
17742 ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1);
17743 return ret;
17744}
17745
a063e204
TC
17746__extension__ extern __inline uint16x8_t
17747__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 17748vld1q_u16 (const uint16_t *__a)
dec11868
JG
17749{
17750 return (uint16x8_t)
9a3afc35 17751 __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi *) __a);
dec11868
JG
17752}
17753
a063e204
TC
17754__extension__ extern __inline uint32x4_t
17755__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 17756vld1q_u32 (const uint32_t *__a)
dec11868
JG
17757{
17758 return (uint32x4_t)
9a3afc35 17759 __builtin_aarch64_ld1v4si ((const __builtin_aarch64_simd_si *) __a);
dec11868
JG
17760}
17761
a063e204
TC
17762__extension__ extern __inline uint64x2_t
17763__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 17764vld1q_u64 (const uint64_t *__a)
dec11868
JG
17765{
17766 return (uint64x2_t)
9a3afc35 17767 __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di *) __a);
dec11868
JG
17768}
17769
39162588
ST
17770/* vld1(q)_x4. */
17771
17772__extension__ extern __inline int8x8x4_t
17773__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17774vld1_s8_x4 (const int8_t *__a)
17775{
17776 union { int8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17777 __au.__o
17778 = __builtin_aarch64_ld1x4v8qi ((const __builtin_aarch64_simd_qi *) __a);
17779 return __au.__i;
17780}
17781
17782__extension__ extern __inline int8x16x4_t
17783__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17784vld1q_s8_x4 (const int8_t *__a)
17785{
17786 union { int8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17787 __au.__o
17788 = __builtin_aarch64_ld1x4v16qi ((const __builtin_aarch64_simd_qi *) __a);
17789 return __au.__i;
17790}
17791
17792__extension__ extern __inline int16x4x4_t
17793__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17794vld1_s16_x4 (const int16_t *__a)
17795{
17796 union { int16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17797 __au.__o
17798 = __builtin_aarch64_ld1x4v4hi ((const __builtin_aarch64_simd_hi *) __a);
17799 return __au.__i;
17800}
17801
17802__extension__ extern __inline int16x8x4_t
17803__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17804vld1q_s16_x4 (const int16_t *__a)
17805{
17806 union { int16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17807 __au.__o
17808 = __builtin_aarch64_ld1x4v8hi ((const __builtin_aarch64_simd_hi *) __a);
17809 return __au.__i;
17810}
17811
17812__extension__ extern __inline int32x2x4_t
17813__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17814vld1_s32_x4 (const int32_t *__a)
17815{
17816 union { int32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17817 __au.__o
17818 = __builtin_aarch64_ld1x4v2si ((const __builtin_aarch64_simd_si *) __a);
17819 return __au.__i;
17820}
17821
17822__extension__ extern __inline int32x4x4_t
17823__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17824vld1q_s32_x4 (const int32_t *__a)
17825{
17826 union { int32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17827 __au.__o
17828 = __builtin_aarch64_ld1x4v4si ((const __builtin_aarch64_simd_si *) __a);
17829 return __au.__i;
17830}
17831
17832__extension__ extern __inline uint8x8x4_t
17833__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17834vld1_u8_x4 (const uint8_t *__a)
17835{
17836 union { uint8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17837 __au.__o
17838 = __builtin_aarch64_ld1x4v8qi ((const __builtin_aarch64_simd_qi *) __a);
17839 return __au.__i;
17840}
17841
17842__extension__ extern __inline uint8x16x4_t
17843__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17844vld1q_u8_x4 (const uint8_t *__a)
17845{
17846 union { uint8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17847 __au.__o
17848 = __builtin_aarch64_ld1x4v16qi ((const __builtin_aarch64_simd_qi *) __a);
17849 return __au.__i;
17850}
17851
17852__extension__ extern __inline uint16x4x4_t
17853__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17854vld1_u16_x4 (const uint16_t *__a)
17855{
17856 union { uint16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17857 __au.__o
17858 = __builtin_aarch64_ld1x4v4hi ((const __builtin_aarch64_simd_hi *) __a);
17859 return __au.__i;
17860}
17861
17862__extension__ extern __inline uint16x8x4_t
17863__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17864vld1q_u16_x4 (const uint16_t *__a)
17865{
17866 union { uint16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17867 __au.__o
17868 = __builtin_aarch64_ld1x4v8hi ((const __builtin_aarch64_simd_hi *) __a);
17869 return __au.__i;
17870}
17871
17872__extension__ extern __inline uint32x2x4_t
17873__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17874vld1_u32_x4 (const uint32_t *__a)
17875{
17876 union { uint32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17877 __au.__o
17878 = __builtin_aarch64_ld1x4v2si ((const __builtin_aarch64_simd_si *) __a);
17879 return __au.__i;
17880}
17881
17882__extension__ extern __inline uint32x4x4_t
17883__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17884vld1q_u32_x4 (const uint32_t *__a)
17885{
17886 union { uint32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17887 __au.__o
17888 = __builtin_aarch64_ld1x4v4si ((const __builtin_aarch64_simd_si *) __a);
17889 return __au.__i;
17890}
17891
17892__extension__ extern __inline float16x4x4_t
17893__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17894vld1_f16_x4 (const float16_t *__a)
17895{
17896 union { float16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17897 __au.__o
17898 = __builtin_aarch64_ld1x4v4hf ((const __builtin_aarch64_simd_hf *) __a);
17899 return __au.__i;
17900}
17901
17902__extension__ extern __inline float16x8x4_t
17903__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17904vld1q_f16_x4 (const float16_t *__a)
17905{
17906 union { float16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17907 __au.__o
17908 = __builtin_aarch64_ld1x4v8hf ((const __builtin_aarch64_simd_hf *) __a);
17909 return __au.__i;
17910}
17911
17912__extension__ extern __inline float32x2x4_t
17913__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17914vld1_f32_x4 (const float32_t *__a)
17915{
17916 union { float32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17917 __au.__o
17918 = __builtin_aarch64_ld1x4v2sf ((const __builtin_aarch64_simd_sf *) __a);
17919 return __au.__i;
17920}
17921
17922__extension__ extern __inline float32x4x4_t
17923__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17924vld1q_f32_x4 (const float32_t *__a)
17925{
17926 union { float32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17927 __au.__o
17928 = __builtin_aarch64_ld1x4v4sf ((const __builtin_aarch64_simd_sf *) __a);
17929 return __au.__i;
17930}
17931
17932__extension__ extern __inline poly8x8x4_t
17933__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17934vld1_p8_x4 (const poly8_t *__a)
17935{
17936 union { poly8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17937 __au.__o
17938 = __builtin_aarch64_ld1x4v8qi ((const __builtin_aarch64_simd_qi *) __a);
17939 return __au.__i;
17940}
17941
17942__extension__ extern __inline poly8x16x4_t
17943__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17944vld1q_p8_x4 (const poly8_t *__a)
17945{
17946 union { poly8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17947 __au.__o
17948 = __builtin_aarch64_ld1x4v16qi ((const __builtin_aarch64_simd_qi *) __a);
17949 return __au.__i;
17950}
17951
17952__extension__ extern __inline poly16x4x4_t
17953__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17954vld1_p16_x4 (const poly16_t *__a)
17955{
17956 union { poly16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17957 __au.__o
17958 = __builtin_aarch64_ld1x4v4hi ((const __builtin_aarch64_simd_hi *) __a);
17959 return __au.__i;
17960}
17961
17962__extension__ extern __inline poly16x8x4_t
17963__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17964vld1q_p16_x4 (const poly16_t *__a)
17965{
17966 union { poly16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17967 __au.__o
17968 = __builtin_aarch64_ld1x4v8hi ((const __builtin_aarch64_simd_hi *) __a);
17969 return __au.__i;
17970}
17971
17972__extension__ extern __inline int64x1x4_t
17973__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17974vld1_s64_x4 (const int64_t *__a)
17975{
17976 union { int64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17977 __au.__o
17978 = __builtin_aarch64_ld1x4di ((const __builtin_aarch64_simd_di *) __a);
17979 return __au.__i;
17980}
17981
17982__extension__ extern __inline uint64x1x4_t
17983__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17984vld1_u64_x4 (const uint64_t *__a)
17985{
17986 union { uint64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17987 __au.__o
17988 = __builtin_aarch64_ld1x4di ((const __builtin_aarch64_simd_di *) __a);
17989 return __au.__i;
17990}
17991
17992__extension__ extern __inline poly64x1x4_t
17993__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
17994vld1_p64_x4 (const poly64_t *__a)
17995{
17996 union { poly64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
17997 __au.__o
17998 = __builtin_aarch64_ld1x4di ((const __builtin_aarch64_simd_di *) __a);
17999 return __au.__i;
18000}
18001
18002__extension__ extern __inline int64x2x4_t
18003__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18004vld1q_s64_x4 (const int64_t *__a)
18005{
18006 union { int64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
18007 __au.__o
18008 = __builtin_aarch64_ld1x4v2di ((const __builtin_aarch64_simd_di *) __a);
18009 return __au.__i;
18010}
18011
18012__extension__ extern __inline uint64x2x4_t
18013__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18014vld1q_u64_x4 (const uint64_t *__a)
18015{
18016 union { uint64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
18017 __au.__o
18018 = __builtin_aarch64_ld1x4v2di ((const __builtin_aarch64_simd_di *) __a);
18019 return __au.__i;
18020}
18021
18022__extension__ extern __inline poly64x2x4_t
18023__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18024vld1q_p64_x4 (const poly64_t *__a)
18025{
18026 union { poly64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
18027 __au.__o
18028 = __builtin_aarch64_ld1x4v2di ((const __builtin_aarch64_simd_di *) __a);
18029 return __au.__i;
18030}
18031
18032__extension__ extern __inline float64x1x4_t
18033__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18034vld1_f64_x4 (const float64_t *__a)
18035{
18036 union { float64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
18037 __au.__o
18038 = __builtin_aarch64_ld1x4df ((const __builtin_aarch64_simd_df *) __a);
18039 return __au.__i;
18040}
18041
18042__extension__ extern __inline float64x2x4_t
18043__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18044vld1q_f64_x4 (const float64_t *__a)
18045{
18046 union { float64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
18047 __au.__o
18048 = __builtin_aarch64_ld1x4v2df ((const __builtin_aarch64_simd_df *) __a);
18049 return __au.__i;
18050}
18051
fcfce895
AL
18052/* vld1_dup */
18053
a063e204
TC
18054__extension__ extern __inline float16x4_t
18055__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
18056vld1_dup_f16 (const float16_t* __a)
18057{
358decd5 18058 return vdup_n_f16 (*__a);
7171dc86
AL
18059}
18060
a063e204
TC
18061__extension__ extern __inline float32x2_t
18062__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18063vld1_dup_f32 (const float32_t* __a)
18064{
18065 return vdup_n_f32 (*__a);
18066}
18067
a063e204
TC
18068__extension__ extern __inline float64x1_t
18069__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18070vld1_dup_f64 (const float64_t* __a)
18071{
18072 return vdup_n_f64 (*__a);
18073}
18074
a063e204
TC
18075__extension__ extern __inline poly8x8_t
18076__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18077vld1_dup_p8 (const poly8_t* __a)
18078{
18079 return vdup_n_p8 (*__a);
18080}
18081
a063e204
TC
18082__extension__ extern __inline poly16x4_t
18083__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18084vld1_dup_p16 (const poly16_t* __a)
18085{
18086 return vdup_n_p16 (*__a);
18087}
18088
159b8724
TC
18089__extension__ extern __inline poly64x1_t
18090__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18091vld1_dup_p64 (const poly64_t* __a)
18092{
18093 return vdup_n_p64 (*__a);
18094}
18095
a063e204
TC
18096__extension__ extern __inline int8x8_t
18097__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18098vld1_dup_s8 (const int8_t* __a)
18099{
18100 return vdup_n_s8 (*__a);
18101}
18102
a063e204
TC
18103__extension__ extern __inline int16x4_t
18104__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18105vld1_dup_s16 (const int16_t* __a)
18106{
18107 return vdup_n_s16 (*__a);
18108}
18109
a063e204
TC
18110__extension__ extern __inline int32x2_t
18111__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18112vld1_dup_s32 (const int32_t* __a)
18113{
18114 return vdup_n_s32 (*__a);
18115}
18116
a063e204
TC
18117__extension__ extern __inline int64x1_t
18118__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18119vld1_dup_s64 (const int64_t* __a)
18120{
18121 return vdup_n_s64 (*__a);
18122}
18123
a063e204
TC
18124__extension__ extern __inline uint8x8_t
18125__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18126vld1_dup_u8 (const uint8_t* __a)
18127{
18128 return vdup_n_u8 (*__a);
18129}
18130
a063e204
TC
18131__extension__ extern __inline uint16x4_t
18132__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18133vld1_dup_u16 (const uint16_t* __a)
18134{
18135 return vdup_n_u16 (*__a);
18136}
18137
a063e204
TC
18138__extension__ extern __inline uint32x2_t
18139__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18140vld1_dup_u32 (const uint32_t* __a)
18141{
18142 return vdup_n_u32 (*__a);
18143}
18144
a063e204
TC
18145__extension__ extern __inline uint64x1_t
18146__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18147vld1_dup_u64 (const uint64_t* __a)
18148{
18149 return vdup_n_u64 (*__a);
18150}
18151
18152/* vld1q_dup */
18153
a063e204
TC
18154__extension__ extern __inline float16x8_t
18155__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7171dc86
AL
18156vld1q_dup_f16 (const float16_t* __a)
18157{
358decd5 18158 return vdupq_n_f16 (*__a);
7171dc86
AL
18159}
18160
a063e204
TC
18161__extension__ extern __inline float32x4_t
18162__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18163vld1q_dup_f32 (const float32_t* __a)
18164{
18165 return vdupq_n_f32 (*__a);
18166}
18167
a063e204
TC
18168__extension__ extern __inline float64x2_t
18169__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18170vld1q_dup_f64 (const float64_t* __a)
18171{
18172 return vdupq_n_f64 (*__a);
18173}
18174
a063e204
TC
18175__extension__ extern __inline poly8x16_t
18176__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18177vld1q_dup_p8 (const poly8_t* __a)
18178{
18179 return vdupq_n_p8 (*__a);
18180}
18181
a063e204
TC
18182__extension__ extern __inline poly16x8_t
18183__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18184vld1q_dup_p16 (const poly16_t* __a)
18185{
18186 return vdupq_n_p16 (*__a);
18187}
18188
159b8724
TC
18189__extension__ extern __inline poly64x2_t
18190__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18191vld1q_dup_p64 (const poly64_t* __a)
18192{
18193 return vdupq_n_p64 (*__a);
18194}
18195
18196 __extension__ extern __inline int8x16_t
a063e204 18197__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18198vld1q_dup_s8 (const int8_t* __a)
18199{
18200 return vdupq_n_s8 (*__a);
18201}
18202
a063e204
TC
18203__extension__ extern __inline int16x8_t
18204__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18205vld1q_dup_s16 (const int16_t* __a)
18206{
18207 return vdupq_n_s16 (*__a);
18208}
18209
a063e204
TC
18210__extension__ extern __inline int32x4_t
18211__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18212vld1q_dup_s32 (const int32_t* __a)
18213{
18214 return vdupq_n_s32 (*__a);
18215}
18216
a063e204
TC
18217__extension__ extern __inline int64x2_t
18218__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18219vld1q_dup_s64 (const int64_t* __a)
18220{
18221 return vdupq_n_s64 (*__a);
18222}
18223
a063e204
TC
18224__extension__ extern __inline uint8x16_t
18225__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18226vld1q_dup_u8 (const uint8_t* __a)
18227{
18228 return vdupq_n_u8 (*__a);
18229}
18230
a063e204
TC
18231__extension__ extern __inline uint16x8_t
18232__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18233vld1q_dup_u16 (const uint16_t* __a)
18234{
18235 return vdupq_n_u16 (*__a);
18236}
18237
a063e204
TC
18238__extension__ extern __inline uint32x4_t
18239__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18240vld1q_dup_u32 (const uint32_t* __a)
18241{
18242 return vdupq_n_u32 (*__a);
18243}
18244
a063e204
TC
18245__extension__ extern __inline uint64x2_t
18246__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fcfce895
AL
18247vld1q_dup_u64 (const uint64_t* __a)
18248{
18249 return vdupq_n_u64 (*__a);
18250}
18251
960ceebc
AL
18252/* vld1_lane */
18253
a063e204
TC
18254__extension__ extern __inline float16x4_t
18255__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
71a11456
AL
18256vld1_lane_f16 (const float16_t *__src, float16x4_t __vec, const int __lane)
18257{
18258 return __aarch64_vset_lane_any (*__src, __vec, __lane);
18259}
18260
a063e204
TC
18261__extension__ extern __inline float32x2_t
18262__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18263vld1_lane_f32 (const float32_t *__src, float32x2_t __vec, const int __lane)
18264{
2310e29f 18265 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18266}
18267
a063e204
TC
18268__extension__ extern __inline float64x1_t
18269__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18270vld1_lane_f64 (const float64_t *__src, float64x1_t __vec, const int __lane)
18271{
2310e29f 18272 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18273}
18274
a063e204
TC
18275__extension__ extern __inline poly8x8_t
18276__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18277vld1_lane_p8 (const poly8_t *__src, poly8x8_t __vec, const int __lane)
18278{
2310e29f 18279 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18280}
18281
a063e204
TC
18282__extension__ extern __inline poly16x4_t
18283__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18284vld1_lane_p16 (const poly16_t *__src, poly16x4_t __vec, const int __lane)
18285{
2310e29f 18286 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18287}
18288
159b8724
TC
18289__extension__ extern __inline poly64x1_t
18290__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18291vld1_lane_p64 (const poly64_t *__src, poly64x1_t __vec, const int __lane)
18292{
18293 return __aarch64_vset_lane_any (*__src, __vec, __lane);
18294}
18295
a063e204
TC
18296__extension__ extern __inline int8x8_t
18297__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18298vld1_lane_s8 (const int8_t *__src, int8x8_t __vec, const int __lane)
18299{
2310e29f 18300 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18301}
18302
a063e204
TC
18303__extension__ extern __inline int16x4_t
18304__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18305vld1_lane_s16 (const int16_t *__src, int16x4_t __vec, const int __lane)
18306{
2310e29f 18307 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18308}
18309
a063e204
TC
18310__extension__ extern __inline int32x2_t
18311__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18312vld1_lane_s32 (const int32_t *__src, int32x2_t __vec, const int __lane)
18313{
2310e29f 18314 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18315}
18316
a063e204
TC
18317__extension__ extern __inline int64x1_t
18318__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18319vld1_lane_s64 (const int64_t *__src, int64x1_t __vec, const int __lane)
18320{
2310e29f 18321 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18322}
18323
a063e204
TC
18324__extension__ extern __inline uint8x8_t
18325__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18326vld1_lane_u8 (const uint8_t *__src, uint8x8_t __vec, const int __lane)
18327{
2310e29f 18328 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18329}
18330
a063e204
TC
18331__extension__ extern __inline uint16x4_t
18332__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18333vld1_lane_u16 (const uint16_t *__src, uint16x4_t __vec, const int __lane)
18334{
2310e29f 18335 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18336}
18337
a063e204
TC
18338__extension__ extern __inline uint32x2_t
18339__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18340vld1_lane_u32 (const uint32_t *__src, uint32x2_t __vec, const int __lane)
18341{
2310e29f 18342 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18343}
18344
a063e204
TC
18345__extension__ extern __inline uint64x1_t
18346__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18347vld1_lane_u64 (const uint64_t *__src, uint64x1_t __vec, const int __lane)
18348{
2310e29f 18349 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18350}
18351
18352/* vld1q_lane */
18353
a063e204
TC
18354__extension__ extern __inline float16x8_t
18355__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
71a11456
AL
18356vld1q_lane_f16 (const float16_t *__src, float16x8_t __vec, const int __lane)
18357{
18358 return __aarch64_vset_lane_any (*__src, __vec, __lane);
18359}
18360
a063e204
TC
18361__extension__ extern __inline float32x4_t
18362__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18363vld1q_lane_f32 (const float32_t *__src, float32x4_t __vec, const int __lane)
18364{
2310e29f 18365 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18366}
18367
a063e204
TC
18368__extension__ extern __inline float64x2_t
18369__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18370vld1q_lane_f64 (const float64_t *__src, float64x2_t __vec, const int __lane)
18371{
2310e29f 18372 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18373}
18374
a063e204
TC
18375__extension__ extern __inline poly8x16_t
18376__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18377vld1q_lane_p8 (const poly8_t *__src, poly8x16_t __vec, const int __lane)
18378{
2310e29f 18379 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18380}
18381
a063e204
TC
18382__extension__ extern __inline poly16x8_t
18383__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18384vld1q_lane_p16 (const poly16_t *__src, poly16x8_t __vec, const int __lane)
18385{
2310e29f 18386 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18387}
18388
159b8724
TC
18389__extension__ extern __inline poly64x2_t
18390__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18391vld1q_lane_p64 (const poly64_t *__src, poly64x2_t __vec, const int __lane)
18392{
18393 return __aarch64_vset_lane_any (*__src, __vec, __lane);
18394}
18395
a063e204
TC
18396__extension__ extern __inline int8x16_t
18397__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18398vld1q_lane_s8 (const int8_t *__src, int8x16_t __vec, const int __lane)
18399{
2310e29f 18400 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18401}
18402
a063e204
TC
18403__extension__ extern __inline int16x8_t
18404__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18405vld1q_lane_s16 (const int16_t *__src, int16x8_t __vec, const int __lane)
18406{
2310e29f 18407 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18408}
18409
a063e204
TC
18410__extension__ extern __inline int32x4_t
18411__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18412vld1q_lane_s32 (const int32_t *__src, int32x4_t __vec, const int __lane)
18413{
2310e29f 18414 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18415}
18416
a063e204
TC
18417__extension__ extern __inline int64x2_t
18418__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18419vld1q_lane_s64 (const int64_t *__src, int64x2_t __vec, const int __lane)
18420{
2310e29f 18421 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18422}
18423
a063e204
TC
18424__extension__ extern __inline uint8x16_t
18425__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18426vld1q_lane_u8 (const uint8_t *__src, uint8x16_t __vec, const int __lane)
18427{
2310e29f 18428 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18429}
18430
a063e204
TC
18431__extension__ extern __inline uint16x8_t
18432__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18433vld1q_lane_u16 (const uint16_t *__src, uint16x8_t __vec, const int __lane)
18434{
2310e29f 18435 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18436}
18437
a063e204
TC
18438__extension__ extern __inline uint32x4_t
18439__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18440vld1q_lane_u32 (const uint32_t *__src, uint32x4_t __vec, const int __lane)
18441{
2310e29f 18442 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18443}
18444
a063e204
TC
18445__extension__ extern __inline uint64x2_t
18446__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
960ceebc
AL
18447vld1q_lane_u64 (const uint64_t *__src, uint64x2_t __vec, const int __lane)
18448{
2310e29f 18449 return __aarch64_vset_lane_any (*__src, __vec, __lane);
960ceebc
AL
18450}
18451
43e9d192
IB
18452/* vldn */
18453
a063e204
TC
18454__extension__ extern __inline int64x1x2_t
18455__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18456vld2_s64 (const int64_t * __a)
18457{
18458 int64x1x2_t ret;
18459 __builtin_aarch64_simd_oi __o;
18460 __o = __builtin_aarch64_ld2di ((const __builtin_aarch64_simd_di *) __a);
18461 ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 0);
18462 ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 1);
18463 return ret;
18464}
18465
a063e204
TC
18466__extension__ extern __inline uint64x1x2_t
18467__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18468vld2_u64 (const uint64_t * __a)
18469{
18470 uint64x1x2_t ret;
18471 __builtin_aarch64_simd_oi __o;
18472 __o = __builtin_aarch64_ld2di ((const __builtin_aarch64_simd_di *) __a);
18473 ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 0);
18474 ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 1);
18475 return ret;
18476}
18477
a063e204
TC
18478__extension__ extern __inline float64x1x2_t
18479__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18480vld2_f64 (const float64_t * __a)
18481{
18482 float64x1x2_t ret;
18483 __builtin_aarch64_simd_oi __o;
18484 __o = __builtin_aarch64_ld2df ((const __builtin_aarch64_simd_df *) __a);
c6a29a09
AL
18485 ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 0)};
18486 ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 1)};
43e9d192
IB
18487 return ret;
18488}
18489
a063e204
TC
18490__extension__ extern __inline int8x8x2_t
18491__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18492vld2_s8 (const int8_t * __a)
18493{
18494 int8x8x2_t ret;
18495 __builtin_aarch64_simd_oi __o;
18496 __o = __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi *) __a);
18497 ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0);
18498 ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1);
18499 return ret;
18500}
18501
a063e204
TC
18502__extension__ extern __inline poly8x8x2_t
18503__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18504vld2_p8 (const poly8_t * __a)
18505{
18506 poly8x8x2_t ret;
18507 __builtin_aarch64_simd_oi __o;
18508 __o = __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi *) __a);
18509 ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0);
18510 ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1);
18511 return ret;
18512}
18513
159b8724
TC
18514__extension__ extern __inline poly64x1x2_t
18515__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18516vld2_p64 (const poly64_t * __a)
18517{
18518 poly64x1x2_t ret;
18519 __builtin_aarch64_simd_oi __o;
18520 __o = __builtin_aarch64_ld2di ((const __builtin_aarch64_simd_di *) __a);
18521 ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregoidi_pss (__o, 0);
18522 ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregoidi_pss (__o, 1);
18523 return ret;
18524}
18525
a063e204
TC
18526__extension__ extern __inline int16x4x2_t
18527__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18528vld2_s16 (const int16_t * __a)
18529{
18530 int16x4x2_t ret;
18531 __builtin_aarch64_simd_oi __o;
18532 __o = __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi *) __a);
18533 ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0);
18534 ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1);
18535 return ret;
18536}
18537
a063e204
TC
18538__extension__ extern __inline poly16x4x2_t
18539__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18540vld2_p16 (const poly16_t * __a)
18541{
18542 poly16x4x2_t ret;
18543 __builtin_aarch64_simd_oi __o;
18544 __o = __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi *) __a);
18545 ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0);
18546 ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1);
18547 return ret;
18548}
18549
a063e204
TC
18550__extension__ extern __inline int32x2x2_t
18551__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18552vld2_s32 (const int32_t * __a)
18553{
18554 int32x2x2_t ret;
18555 __builtin_aarch64_simd_oi __o;
18556 __o = __builtin_aarch64_ld2v2si ((const __builtin_aarch64_simd_si *) __a);
18557 ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0);
18558 ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1);
18559 return ret;
18560}
18561
a063e204
TC
18562__extension__ extern __inline uint8x8x2_t
18563__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18564vld2_u8 (const uint8_t * __a)
18565{
18566 uint8x8x2_t ret;
18567 __builtin_aarch64_simd_oi __o;
18568 __o = __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi *) __a);
18569 ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0);
18570 ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1);
18571 return ret;
18572}
18573
a063e204
TC
18574__extension__ extern __inline uint16x4x2_t
18575__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18576vld2_u16 (const uint16_t * __a)
18577{
18578 uint16x4x2_t ret;
18579 __builtin_aarch64_simd_oi __o;
18580 __o = __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi *) __a);
18581 ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0);
18582 ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1);
18583 return ret;
18584}
18585
a063e204
TC
18586__extension__ extern __inline uint32x2x2_t
18587__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18588vld2_u32 (const uint32_t * __a)
18589{
18590 uint32x2x2_t ret;
18591 __builtin_aarch64_simd_oi __o;
18592 __o = __builtin_aarch64_ld2v2si ((const __builtin_aarch64_simd_si *) __a);
18593 ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0);
18594 ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1);
18595 return ret;
18596}
18597
a063e204
TC
18598__extension__ extern __inline float16x4x2_t
18599__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7c369485
AL
18600vld2_f16 (const float16_t * __a)
18601{
18602 float16x4x2_t ret;
18603 __builtin_aarch64_simd_oi __o;
18604 __o = __builtin_aarch64_ld2v4hf (__a);
18605 ret.val[0] = __builtin_aarch64_get_dregoiv4hf (__o, 0);
18606 ret.val[1] = __builtin_aarch64_get_dregoiv4hf (__o, 1);
18607 return ret;
18608}
18609
a063e204
TC
18610__extension__ extern __inline float32x2x2_t
18611__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18612vld2_f32 (const float32_t * __a)
18613{
18614 float32x2x2_t ret;
18615 __builtin_aarch64_simd_oi __o;
18616 __o = __builtin_aarch64_ld2v2sf ((const __builtin_aarch64_simd_sf *) __a);
18617 ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 0);
18618 ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 1);
18619 return ret;
18620}
18621
a063e204
TC
18622__extension__ extern __inline int8x16x2_t
18623__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18624vld2q_s8 (const int8_t * __a)
18625{
18626 int8x16x2_t ret;
18627 __builtin_aarch64_simd_oi __o;
18628 __o = __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi *) __a);
18629 ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0);
18630 ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1);
18631 return ret;
18632}
18633
a063e204
TC
18634__extension__ extern __inline poly8x16x2_t
18635__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18636vld2q_p8 (const poly8_t * __a)
18637{
18638 poly8x16x2_t ret;
18639 __builtin_aarch64_simd_oi __o;
18640 __o = __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi *) __a);
18641 ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0);
18642 ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1);
18643 return ret;
18644}
18645
a063e204
TC
18646__extension__ extern __inline int16x8x2_t
18647__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18648vld2q_s16 (const int16_t * __a)
18649{
18650 int16x8x2_t ret;
18651 __builtin_aarch64_simd_oi __o;
18652 __o = __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi *) __a);
18653 ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0);
18654 ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1);
18655 return ret;
18656}
18657
a063e204
TC
18658__extension__ extern __inline poly16x8x2_t
18659__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18660vld2q_p16 (const poly16_t * __a)
18661{
18662 poly16x8x2_t ret;
18663 __builtin_aarch64_simd_oi __o;
18664 __o = __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi *) __a);
18665 ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0);
18666 ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1);
18667 return ret;
18668}
18669
159b8724
TC
18670__extension__ extern __inline poly64x2x2_t
18671__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18672vld2q_p64 (const poly64_t * __a)
18673{
18674 poly64x2x2_t ret;
18675 __builtin_aarch64_simd_oi __o;
18676 __o = __builtin_aarch64_ld2v2di ((const __builtin_aarch64_simd_di *) __a);
18677 ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di_pss (__o, 0);
18678 ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di_pss (__o, 1);
18679 return ret;
18680}
18681
a063e204
TC
18682__extension__ extern __inline int32x4x2_t
18683__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18684vld2q_s32 (const int32_t * __a)
18685{
18686 int32x4x2_t ret;
18687 __builtin_aarch64_simd_oi __o;
18688 __o = __builtin_aarch64_ld2v4si ((const __builtin_aarch64_simd_si *) __a);
18689 ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0);
18690 ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1);
18691 return ret;
18692}
18693
a063e204
TC
18694__extension__ extern __inline int64x2x2_t
18695__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18696vld2q_s64 (const int64_t * __a)
18697{
18698 int64x2x2_t ret;
18699 __builtin_aarch64_simd_oi __o;
18700 __o = __builtin_aarch64_ld2v2di ((const __builtin_aarch64_simd_di *) __a);
18701 ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0);
18702 ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1);
18703 return ret;
18704}
18705
a063e204
TC
18706__extension__ extern __inline uint8x16x2_t
18707__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18708vld2q_u8 (const uint8_t * __a)
18709{
18710 uint8x16x2_t ret;
18711 __builtin_aarch64_simd_oi __o;
18712 __o = __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi *) __a);
18713 ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0);
18714 ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1);
18715 return ret;
18716}
18717
a063e204
TC
18718__extension__ extern __inline uint16x8x2_t
18719__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18720vld2q_u16 (const uint16_t * __a)
18721{
18722 uint16x8x2_t ret;
18723 __builtin_aarch64_simd_oi __o;
18724 __o = __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi *) __a);
18725 ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0);
18726 ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1);
18727 return ret;
18728}
18729
a063e204
TC
18730__extension__ extern __inline uint32x4x2_t
18731__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18732vld2q_u32 (const uint32_t * __a)
18733{
18734 uint32x4x2_t ret;
18735 __builtin_aarch64_simd_oi __o;
18736 __o = __builtin_aarch64_ld2v4si ((const __builtin_aarch64_simd_si *) __a);
18737 ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0);
18738 ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1);
18739 return ret;
18740}
18741
a063e204
TC
18742__extension__ extern __inline uint64x2x2_t
18743__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18744vld2q_u64 (const uint64_t * __a)
18745{
18746 uint64x2x2_t ret;
18747 __builtin_aarch64_simd_oi __o;
18748 __o = __builtin_aarch64_ld2v2di ((const __builtin_aarch64_simd_di *) __a);
18749 ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0);
18750 ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1);
18751 return ret;
18752}
18753
a063e204
TC
18754__extension__ extern __inline float16x8x2_t
18755__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7c369485
AL
18756vld2q_f16 (const float16_t * __a)
18757{
18758 float16x8x2_t ret;
18759 __builtin_aarch64_simd_oi __o;
18760 __o = __builtin_aarch64_ld2v8hf (__a);
18761 ret.val[0] = __builtin_aarch64_get_qregoiv8hf (__o, 0);
18762 ret.val[1] = __builtin_aarch64_get_qregoiv8hf (__o, 1);
18763 return ret;
18764}
18765
a063e204
TC
18766__extension__ extern __inline float32x4x2_t
18767__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18768vld2q_f32 (const float32_t * __a)
18769{
18770 float32x4x2_t ret;
18771 __builtin_aarch64_simd_oi __o;
18772 __o = __builtin_aarch64_ld2v4sf ((const __builtin_aarch64_simd_sf *) __a);
18773 ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 0);
18774 ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 1);
18775 return ret;
18776}
18777
a063e204
TC
18778__extension__ extern __inline float64x2x2_t
18779__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18780vld2q_f64 (const float64_t * __a)
18781{
18782 float64x2x2_t ret;
18783 __builtin_aarch64_simd_oi __o;
18784 __o = __builtin_aarch64_ld2v2df ((const __builtin_aarch64_simd_df *) __a);
18785 ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 0);
18786 ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 1);
18787 return ret;
18788}
18789
a063e204
TC
18790__extension__ extern __inline int64x1x3_t
18791__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18792vld3_s64 (const int64_t * __a)
18793{
18794 int64x1x3_t ret;
18795 __builtin_aarch64_simd_ci __o;
18796 __o = __builtin_aarch64_ld3di ((const __builtin_aarch64_simd_di *) __a);
18797 ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 0);
18798 ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 1);
18799 ret.val[2] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 2);
18800 return ret;
18801}
18802
a063e204
TC
18803__extension__ extern __inline uint64x1x3_t
18804__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18805vld3_u64 (const uint64_t * __a)
18806{
18807 uint64x1x3_t ret;
18808 __builtin_aarch64_simd_ci __o;
18809 __o = __builtin_aarch64_ld3di ((const __builtin_aarch64_simd_di *) __a);
18810 ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 0);
18811 ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 1);
18812 ret.val[2] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 2);
18813 return ret;
18814}
18815
a063e204
TC
18816__extension__ extern __inline float64x1x3_t
18817__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18818vld3_f64 (const float64_t * __a)
18819{
18820 float64x1x3_t ret;
18821 __builtin_aarch64_simd_ci __o;
18822 __o = __builtin_aarch64_ld3df ((const __builtin_aarch64_simd_df *) __a);
c6a29a09
AL
18823 ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 0)};
18824 ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 1)};
18825 ret.val[2] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 2)};
43e9d192
IB
18826 return ret;
18827}
18828
a063e204
TC
18829__extension__ extern __inline int8x8x3_t
18830__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18831vld3_s8 (const int8_t * __a)
18832{
18833 int8x8x3_t ret;
18834 __builtin_aarch64_simd_ci __o;
18835 __o = __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi *) __a);
18836 ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0);
18837 ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1);
18838 ret.val[2] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2);
18839 return ret;
18840}
18841
a063e204
TC
18842__extension__ extern __inline poly8x8x3_t
18843__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18844vld3_p8 (const poly8_t * __a)
18845{
18846 poly8x8x3_t ret;
18847 __builtin_aarch64_simd_ci __o;
18848 __o = __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi *) __a);
18849 ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0);
18850 ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1);
18851 ret.val[2] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2);
18852 return ret;
18853}
18854
a063e204
TC
18855__extension__ extern __inline int16x4x3_t
18856__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18857vld3_s16 (const int16_t * __a)
18858{
18859 int16x4x3_t ret;
18860 __builtin_aarch64_simd_ci __o;
18861 __o = __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi *) __a);
18862 ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0);
18863 ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1);
18864 ret.val[2] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2);
18865 return ret;
18866}
18867
a063e204
TC
18868__extension__ extern __inline poly16x4x3_t
18869__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18870vld3_p16 (const poly16_t * __a)
18871{
18872 poly16x4x3_t ret;
18873 __builtin_aarch64_simd_ci __o;
18874 __o = __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi *) __a);
18875 ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0);
18876 ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1);
18877 ret.val[2] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2);
18878 return ret;
18879}
18880
a063e204
TC
18881__extension__ extern __inline int32x2x3_t
18882__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18883vld3_s32 (const int32_t * __a)
18884{
18885 int32x2x3_t ret;
18886 __builtin_aarch64_simd_ci __o;
18887 __o = __builtin_aarch64_ld3v2si ((const __builtin_aarch64_simd_si *) __a);
18888 ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0);
18889 ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1);
18890 ret.val[2] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2);
18891 return ret;
18892}
18893
a063e204
TC
18894__extension__ extern __inline uint8x8x3_t
18895__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18896vld3_u8 (const uint8_t * __a)
18897{
18898 uint8x8x3_t ret;
18899 __builtin_aarch64_simd_ci __o;
18900 __o = __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi *) __a);
18901 ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0);
18902 ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1);
18903 ret.val[2] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2);
18904 return ret;
18905}
18906
a063e204
TC
18907__extension__ extern __inline uint16x4x3_t
18908__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18909vld3_u16 (const uint16_t * __a)
18910{
18911 uint16x4x3_t ret;
18912 __builtin_aarch64_simd_ci __o;
18913 __o = __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi *) __a);
18914 ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0);
18915 ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1);
18916 ret.val[2] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2);
18917 return ret;
18918}
18919
a063e204
TC
18920__extension__ extern __inline uint32x2x3_t
18921__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18922vld3_u32 (const uint32_t * __a)
18923{
18924 uint32x2x3_t ret;
18925 __builtin_aarch64_simd_ci __o;
18926 __o = __builtin_aarch64_ld3v2si ((const __builtin_aarch64_simd_si *) __a);
18927 ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0);
18928 ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1);
18929 ret.val[2] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2);
18930 return ret;
18931}
18932
a063e204
TC
18933__extension__ extern __inline float16x4x3_t
18934__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7c369485
AL
18935vld3_f16 (const float16_t * __a)
18936{
18937 float16x4x3_t ret;
18938 __builtin_aarch64_simd_ci __o;
18939 __o = __builtin_aarch64_ld3v4hf (__a);
18940 ret.val[0] = __builtin_aarch64_get_dregciv4hf (__o, 0);
18941 ret.val[1] = __builtin_aarch64_get_dregciv4hf (__o, 1);
18942 ret.val[2] = __builtin_aarch64_get_dregciv4hf (__o, 2);
18943 return ret;
18944}
18945
a063e204
TC
18946__extension__ extern __inline float32x2x3_t
18947__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18948vld3_f32 (const float32_t * __a)
18949{
18950 float32x2x3_t ret;
18951 __builtin_aarch64_simd_ci __o;
18952 __o = __builtin_aarch64_ld3v2sf ((const __builtin_aarch64_simd_sf *) __a);
18953 ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 0);
18954 ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 1);
18955 ret.val[2] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 2);
18956 return ret;
18957}
18958
159b8724
TC
18959__extension__ extern __inline poly64x1x3_t
18960__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18961vld3_p64 (const poly64_t * __a)
18962{
18963 poly64x1x3_t ret;
18964 __builtin_aarch64_simd_ci __o;
18965 __o = __builtin_aarch64_ld3di ((const __builtin_aarch64_simd_di *) __a);
18966 ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 0);
18967 ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 1);
18968 ret.val[2] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 2);
18969 return ret;
18970}
18971
a063e204
TC
18972__extension__ extern __inline int8x16x3_t
18973__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18974vld3q_s8 (const int8_t * __a)
18975{
18976 int8x16x3_t ret;
18977 __builtin_aarch64_simd_ci __o;
18978 __o = __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi *) __a);
18979 ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0);
18980 ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1);
18981 ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2);
18982 return ret;
18983}
18984
a063e204
TC
18985__extension__ extern __inline poly8x16x3_t
18986__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
18987vld3q_p8 (const poly8_t * __a)
18988{
18989 poly8x16x3_t ret;
18990 __builtin_aarch64_simd_ci __o;
18991 __o = __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi *) __a);
18992 ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0);
18993 ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1);
18994 ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2);
18995 return ret;
18996}
18997
a063e204
TC
18998__extension__ extern __inline int16x8x3_t
18999__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19000vld3q_s16 (const int16_t * __a)
19001{
19002 int16x8x3_t ret;
19003 __builtin_aarch64_simd_ci __o;
19004 __o = __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi *) __a);
19005 ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0);
19006 ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1);
19007 ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2);
19008 return ret;
19009}
19010
a063e204
TC
19011__extension__ extern __inline poly16x8x3_t
19012__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19013vld3q_p16 (const poly16_t * __a)
19014{
19015 poly16x8x3_t ret;
19016 __builtin_aarch64_simd_ci __o;
19017 __o = __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi *) __a);
19018 ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0);
19019 ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1);
19020 ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2);
19021 return ret;
19022}
19023
a063e204
TC
19024__extension__ extern __inline int32x4x3_t
19025__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19026vld3q_s32 (const int32_t * __a)
19027{
19028 int32x4x3_t ret;
19029 __builtin_aarch64_simd_ci __o;
19030 __o = __builtin_aarch64_ld3v4si ((const __builtin_aarch64_simd_si *) __a);
19031 ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0);
19032 ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1);
19033 ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2);
19034 return ret;
19035}
19036
a063e204
TC
19037__extension__ extern __inline int64x2x3_t
19038__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19039vld3q_s64 (const int64_t * __a)
19040{
19041 int64x2x3_t ret;
19042 __builtin_aarch64_simd_ci __o;
19043 __o = __builtin_aarch64_ld3v2di ((const __builtin_aarch64_simd_di *) __a);
19044 ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0);
19045 ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1);
19046 ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2);
19047 return ret;
19048}
19049
a063e204
TC
19050__extension__ extern __inline uint8x16x3_t
19051__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19052vld3q_u8 (const uint8_t * __a)
19053{
19054 uint8x16x3_t ret;
19055 __builtin_aarch64_simd_ci __o;
19056 __o = __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi *) __a);
19057 ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0);
19058 ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1);
19059 ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2);
19060 return ret;
19061}
19062
a063e204
TC
19063__extension__ extern __inline uint16x8x3_t
19064__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19065vld3q_u16 (const uint16_t * __a)
19066{
19067 uint16x8x3_t ret;
19068 __builtin_aarch64_simd_ci __o;
19069 __o = __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi *) __a);
19070 ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0);
19071 ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1);
19072 ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2);
19073 return ret;
19074}
19075
a063e204
TC
19076__extension__ extern __inline uint32x4x3_t
19077__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19078vld3q_u32 (const uint32_t * __a)
19079{
19080 uint32x4x3_t ret;
19081 __builtin_aarch64_simd_ci __o;
19082 __o = __builtin_aarch64_ld3v4si ((const __builtin_aarch64_simd_si *) __a);
19083 ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0);
19084 ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1);
19085 ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2);
19086 return ret;
19087}
19088
a063e204
TC
19089__extension__ extern __inline uint64x2x3_t
19090__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19091vld3q_u64 (const uint64_t * __a)
19092{
19093 uint64x2x3_t ret;
19094 __builtin_aarch64_simd_ci __o;
19095 __o = __builtin_aarch64_ld3v2di ((const __builtin_aarch64_simd_di *) __a);
19096 ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0);
19097 ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1);
19098 ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2);
19099 return ret;
19100}
19101
a063e204
TC
19102__extension__ extern __inline float16x8x3_t
19103__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7c369485
AL
19104vld3q_f16 (const float16_t * __a)
19105{
19106 float16x8x3_t ret;
19107 __builtin_aarch64_simd_ci __o;
19108 __o = __builtin_aarch64_ld3v8hf (__a);
19109 ret.val[0] = __builtin_aarch64_get_qregciv8hf (__o, 0);
19110 ret.val[1] = __builtin_aarch64_get_qregciv8hf (__o, 1);
19111 ret.val[2] = __builtin_aarch64_get_qregciv8hf (__o, 2);
19112 return ret;
19113}
19114
a063e204
TC
19115__extension__ extern __inline float32x4x3_t
19116__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19117vld3q_f32 (const float32_t * __a)
19118{
19119 float32x4x3_t ret;
19120 __builtin_aarch64_simd_ci __o;
19121 __o = __builtin_aarch64_ld3v4sf ((const __builtin_aarch64_simd_sf *) __a);
19122 ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 0);
19123 ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 1);
19124 ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 2);
19125 return ret;
19126}
19127
a063e204
TC
19128__extension__ extern __inline float64x2x3_t
19129__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19130vld3q_f64 (const float64_t * __a)
19131{
19132 float64x2x3_t ret;
19133 __builtin_aarch64_simd_ci __o;
19134 __o = __builtin_aarch64_ld3v2df ((const __builtin_aarch64_simd_df *) __a);
19135 ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 0);
19136 ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 1);
19137 ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 2);
19138 return ret;
19139}
19140
159b8724
TC
19141__extension__ extern __inline poly64x2x3_t
19142__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
19143vld3q_p64 (const poly64_t * __a)
19144{
19145 poly64x2x3_t ret;
19146 __builtin_aarch64_simd_ci __o;
19147 __o = __builtin_aarch64_ld3v2di ((const __builtin_aarch64_simd_di *) __a);
19148 ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 0);
19149 ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 1);
19150 ret.val[2] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 2);
19151 return ret;
19152}
19153
a063e204
TC
19154__extension__ extern __inline int64x1x4_t
19155__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19156vld4_s64 (const int64_t * __a)
19157{
19158 int64x1x4_t ret;
19159 __builtin_aarch64_simd_xi __o;
19160 __o = __builtin_aarch64_ld4di ((const __builtin_aarch64_simd_di *) __a);
19161 ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 0);
19162 ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 1);
19163 ret.val[2] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 2);
19164 ret.val[3] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 3);
19165 return ret;
19166}
19167
a063e204
TC
19168__extension__ extern __inline uint64x1x4_t
19169__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19170vld4_u64 (const uint64_t * __a)
19171{
19172 uint64x1x4_t ret;
19173 __builtin_aarch64_simd_xi __o;
19174 __o = __builtin_aarch64_ld4di ((const __builtin_aarch64_simd_di *) __a);
19175 ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 0);
19176 ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 1);
19177 ret.val[2] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 2);
19178 ret.val[3] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 3);
19179 return ret;
19180}
19181
a063e204
TC
19182__extension__ extern __inline float64x1x4_t
19183__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19184vld4_f64 (const float64_t * __a)
19185{
19186 float64x1x4_t ret;
19187 __builtin_aarch64_simd_xi __o;
19188 __o = __builtin_aarch64_ld4df ((const __builtin_aarch64_simd_df *) __a);
c6a29a09
AL
19189 ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 0)};
19190 ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 1)};
19191 ret.val[2] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 2)};
19192 ret.val[3] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 3)};
43e9d192
IB
19193 return ret;
19194}
19195
a063e204
TC
19196__extension__ extern __inline int8x8x4_t
19197__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19198vld4_s8 (const int8_t * __a)
19199{
19200 int8x8x4_t ret;
19201 __builtin_aarch64_simd_xi __o;
19202 __o = __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi *) __a);
19203 ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0);
19204 ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1);
19205 ret.val[2] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2);
19206 ret.val[3] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3);
19207 return ret;
19208}
19209
a063e204
TC
19210__extension__ extern __inline poly8x8x4_t
19211__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19212vld4_p8 (const poly8_t * __a)
19213{
19214 poly8x8x4_t ret;
19215 __builtin_aarch64_simd_xi __o;
19216 __o = __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi *) __a);
19217 ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0);
19218 ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1);
19219 ret.val[2] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2);
19220 ret.val[3] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3);
19221 return ret;
19222}
19223
a063e204
TC
19224__extension__ extern __inline int16x4x4_t
19225__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19226vld4_s16 (const int16_t * __a)
19227{
19228 int16x4x4_t ret;
19229 __builtin_aarch64_simd_xi __o;
19230 __o = __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi *) __a);
19231 ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0);
19232 ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1);
19233 ret.val[2] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2);
19234 ret.val[3] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3);
19235 return ret;
19236}
19237
a063e204
TC
19238__extension__ extern __inline poly16x4x4_t
19239__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19240vld4_p16 (const poly16_t * __a)
19241{
19242 poly16x4x4_t ret;
19243 __builtin_aarch64_simd_xi __o;
19244 __o = __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi *) __a);
19245 ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0);
19246 ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1);
19247 ret.val[2] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2);
19248 ret.val[3] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3);
19249 return ret;
19250}
19251
a063e204
TC
19252__extension__ extern __inline int32x2x4_t
19253__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19254vld4_s32 (const int32_t * __a)
19255{
19256 int32x2x4_t ret;
19257 __builtin_aarch64_simd_xi __o;
19258 __o = __builtin_aarch64_ld4v2si ((const __builtin_aarch64_simd_si *) __a);
19259 ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 0);
19260 ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 1);
19261 ret.val[2] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 2);
19262 ret.val[3] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 3);
19263 return ret;
19264}
19265
a063e204
TC
19266__extension__ extern __inline uint8x8x4_t
19267__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19268vld4_u8 (const uint8_t * __a)
19269{
19270 uint8x8x4_t ret;
19271 __builtin_aarch64_simd_xi __o;
19272 __o = __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi *) __a);
19273 ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0);
19274 ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1);
19275 ret.val[2] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2);
19276 ret.val[3] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3);
19277 return ret;
19278}
19279
a063e204
TC
19280__extension__ extern __inline uint16x4x4_t
19281__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19282vld4_u16 (const uint16_t * __a)
19283{
19284 uint16x4x4_t ret;
19285 __builtin_aarch64_simd_xi __o;
19286 __o = __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi *) __a);
19287 ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0);
19288 ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1);
19289 ret.val[2] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2);
19290 ret.val[3] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3);
19291 return ret;
19292}
19293
a063e204
TC
19294__extension__ extern __inline uint32x2x4_t
19295__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19296vld4_u32 (const uint32_t * __a)
19297{
19298 uint32x2x4_t ret;
19299 __builtin_aarch64_simd_xi __o;
19300 __o = __builtin_aarch64_ld4v2si ((const __builtin_aarch64_simd_si *) __a);
19301 ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 0);
19302 ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 1);
19303 ret.val[2] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 2);
19304 ret.val[3] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 3);
19305 return ret;
19306}
19307
a063e204
TC
19308__extension__ extern __inline float16x4x4_t
19309__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7c369485
AL
19310vld4_f16 (const float16_t * __a)
19311{
19312 float16x4x4_t ret;
19313 __builtin_aarch64_simd_xi __o;
19314 __o = __builtin_aarch64_ld4v4hf (__a);
19315 ret.val[0] = __builtin_aarch64_get_dregxiv4hf (__o, 0);
19316 ret.val[1] = __builtin_aarch64_get_dregxiv4hf (__o, 1);
19317 ret.val[2] = __builtin_aarch64_get_dregxiv4hf (__o, 2);
19318 ret.val[3] = __builtin_aarch64_get_dregxiv4hf (__o, 3);
19319 return ret;
19320}
19321
a063e204
TC
19322__extension__ extern __inline float32x2x4_t
19323__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19324vld4_f32 (const float32_t * __a)
19325{
19326 float32x2x4_t ret;
19327 __builtin_aarch64_simd_xi __o;
19328 __o = __builtin_aarch64_ld4v2sf ((const __builtin_aarch64_simd_sf *) __a);
19329 ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 0);
19330 ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 1);
19331 ret.val[2] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 2);
19332 ret.val[3] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 3);
19333 return ret;
19334}
19335
159b8724
TC
19336__extension__ extern __inline poly64x1x4_t
19337__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
19338vld4_p64 (const poly64_t * __a)
19339{
19340 poly64x1x4_t ret;
19341 __builtin_aarch64_simd_xi __o;
19342 __o = __builtin_aarch64_ld4di ((const __builtin_aarch64_simd_di *) __a);
19343 ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 0);
19344 ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 1);
19345 ret.val[2] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 2);
19346 ret.val[3] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 3);
19347 return ret;
19348}
19349
a063e204
TC
19350__extension__ extern __inline int8x16x4_t
19351__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19352vld4q_s8 (const int8_t * __a)
19353{
19354 int8x16x4_t ret;
19355 __builtin_aarch64_simd_xi __o;
19356 __o = __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi *) __a);
19357 ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0);
19358 ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1);
19359 ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2);
19360 ret.val[3] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3);
19361 return ret;
19362}
19363
a063e204
TC
19364__extension__ extern __inline poly8x16x4_t
19365__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19366vld4q_p8 (const poly8_t * __a)
19367{
19368 poly8x16x4_t ret;
19369 __builtin_aarch64_simd_xi __o;
19370 __o = __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi *) __a);
19371 ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0);
19372 ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1);
19373 ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2);
19374 ret.val[3] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3);
19375 return ret;
19376}
19377
a063e204
TC
19378__extension__ extern __inline int16x8x4_t
19379__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19380vld4q_s16 (const int16_t * __a)
19381{
19382 int16x8x4_t ret;
19383 __builtin_aarch64_simd_xi __o;
19384 __o = __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi *) __a);
19385 ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0);
19386 ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1);
19387 ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2);
19388 ret.val[3] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3);
19389 return ret;
19390}
19391
a063e204
TC
19392__extension__ extern __inline poly16x8x4_t
19393__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19394vld4q_p16 (const poly16_t * __a)
19395{
19396 poly16x8x4_t ret;
19397 __builtin_aarch64_simd_xi __o;
19398 __o = __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi *) __a);
19399 ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0);
19400 ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1);
19401 ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2);
19402 ret.val[3] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3);
19403 return ret;
19404}
19405
a063e204
TC
19406__extension__ extern __inline int32x4x4_t
19407__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19408vld4q_s32 (const int32_t * __a)
19409{
19410 int32x4x4_t ret;
19411 __builtin_aarch64_simd_xi __o;
19412 __o = __builtin_aarch64_ld4v4si ((const __builtin_aarch64_simd_si *) __a);
19413 ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0);
19414 ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1);
19415 ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2);
19416 ret.val[3] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3);
19417 return ret;
19418}
19419
a063e204
TC
19420__extension__ extern __inline int64x2x4_t
19421__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19422vld4q_s64 (const int64_t * __a)
19423{
19424 int64x2x4_t ret;
19425 __builtin_aarch64_simd_xi __o;
19426 __o = __builtin_aarch64_ld4v2di ((const __builtin_aarch64_simd_di *) __a);
19427 ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 0);
19428 ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 1);
19429 ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 2);
19430 ret.val[3] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 3);
19431 return ret;
19432}
19433
a063e204
TC
19434__extension__ extern __inline uint8x16x4_t
19435__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19436vld4q_u8 (const uint8_t * __a)
19437{
19438 uint8x16x4_t ret;
19439 __builtin_aarch64_simd_xi __o;
19440 __o = __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi *) __a);
19441 ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0);
19442 ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1);
19443 ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2);
19444 ret.val[3] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3);
19445 return ret;
19446}
19447
a063e204
TC
19448__extension__ extern __inline uint16x8x4_t
19449__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19450vld4q_u16 (const uint16_t * __a)
19451{
19452 uint16x8x4_t ret;
19453 __builtin_aarch64_simd_xi __o;
19454 __o = __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi *) __a);
19455 ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0);
19456 ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1);
19457 ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2);
19458 ret.val[3] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3);
19459 return ret;
19460}
19461
a063e204
TC
19462__extension__ extern __inline uint32x4x4_t
19463__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19464vld4q_u32 (const uint32_t * __a)
19465{
19466 uint32x4x4_t ret;
19467 __builtin_aarch64_simd_xi __o;
19468 __o = __builtin_aarch64_ld4v4si ((const __builtin_aarch64_simd_si *) __a);
19469 ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0);
19470 ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1);
19471 ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2);
19472 ret.val[3] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3);
19473 return ret;
19474}
19475
a063e204
TC
19476__extension__ extern __inline uint64x2x4_t
19477__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19478vld4q_u64 (const uint64_t * __a)
19479{
19480 uint64x2x4_t ret;
19481 __builtin_aarch64_simd_xi __o;
19482 __o = __builtin_aarch64_ld4v2di ((const __builtin_aarch64_simd_di *) __a);
19483 ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 0);
19484 ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 1);
19485 ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 2);
19486 ret.val[3] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 3);
19487 return ret;
19488}
19489
a063e204
TC
19490__extension__ extern __inline float16x8x4_t
19491__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7c369485
AL
19492vld4q_f16 (const float16_t * __a)
19493{
19494 float16x8x4_t ret;
19495 __builtin_aarch64_simd_xi __o;
19496 __o = __builtin_aarch64_ld4v8hf (__a);
19497 ret.val[0] = __builtin_aarch64_get_qregxiv8hf (__o, 0);
19498 ret.val[1] = __builtin_aarch64_get_qregxiv8hf (__o, 1);
19499 ret.val[2] = __builtin_aarch64_get_qregxiv8hf (__o, 2);
19500 ret.val[3] = __builtin_aarch64_get_qregxiv8hf (__o, 3);
19501 return ret;
19502}
19503
a063e204
TC
19504__extension__ extern __inline float32x4x4_t
19505__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19506vld4q_f32 (const float32_t * __a)
19507{
19508 float32x4x4_t ret;
19509 __builtin_aarch64_simd_xi __o;
19510 __o = __builtin_aarch64_ld4v4sf ((const __builtin_aarch64_simd_sf *) __a);
19511 ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 0);
19512 ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 1);
19513 ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 2);
19514 ret.val[3] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 3);
19515 return ret;
19516}
19517
a063e204
TC
19518__extension__ extern __inline float64x2x4_t
19519__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
19520vld4q_f64 (const float64_t * __a)
19521{
19522 float64x2x4_t ret;
19523 __builtin_aarch64_simd_xi __o;
19524 __o = __builtin_aarch64_ld4v2df ((const __builtin_aarch64_simd_df *) __a);
77efea31
FY
19525 ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 0);
19526 ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 1);
19527 ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 2);
19528 ret.val[3] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 3);
19529 return ret;
19530}
19531
159b8724
TC
19532__extension__ extern __inline poly64x2x4_t
19533__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
19534vld4q_p64 (const poly64_t * __a)
19535{
19536 poly64x2x4_t ret;
19537 __builtin_aarch64_simd_xi __o;
19538 __o = __builtin_aarch64_ld4v2di ((const __builtin_aarch64_simd_di *) __a);
19539 ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 0);
19540 ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 1);
19541 ret.val[2] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 2);
19542 ret.val[3] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 3);
19543 return ret;
19544}
19545
f2868e4b
KT
19546__extension__ extern __inline poly128_t
19547__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
19548vldrq_p128 (const poly128_t * __ptr)
19549{
19550 return *__ptr;
19551}
19552
77efea31
FY
19553/* vldn_dup */
19554
a063e204
TC
19555__extension__ extern __inline int8x8x2_t
19556__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19557vld2_dup_s8 (const int8_t * __a)
19558{
19559 int8x8x2_t ret;
19560 __builtin_aarch64_simd_oi __o;
19561 __o = __builtin_aarch64_ld2rv8qi ((const __builtin_aarch64_simd_qi *) __a);
19562 ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0);
19563 ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1);
19564 return ret;
19565}
19566
a063e204
TC
19567__extension__ extern __inline int16x4x2_t
19568__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19569vld2_dup_s16 (const int16_t * __a)
19570{
19571 int16x4x2_t ret;
19572 __builtin_aarch64_simd_oi __o;
19573 __o = __builtin_aarch64_ld2rv4hi ((const __builtin_aarch64_simd_hi *) __a);
19574 ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0);
19575 ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1);
19576 return ret;
19577}
19578
a063e204
TC
19579__extension__ extern __inline int32x2x2_t
19580__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19581vld2_dup_s32 (const int32_t * __a)
19582{
19583 int32x2x2_t ret;
19584 __builtin_aarch64_simd_oi __o;
19585 __o = __builtin_aarch64_ld2rv2si ((const __builtin_aarch64_simd_si *) __a);
19586 ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0);
19587 ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1);
19588 return ret;
19589}
19590
a063e204
TC
19591__extension__ extern __inline float16x4x2_t
19592__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7c369485
AL
19593vld2_dup_f16 (const float16_t * __a)
19594{
19595 float16x4x2_t ret;
19596 __builtin_aarch64_simd_oi __o;
19597 __o = __builtin_aarch64_ld2rv4hf ((const __builtin_aarch64_simd_hf *) __a);
19598 ret.val[0] = __builtin_aarch64_get_dregoiv4hf (__o, 0);
19599 ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregoiv4hf (__o, 1);
19600 return ret;
19601}
19602
a063e204
TC
19603__extension__ extern __inline float32x2x2_t
19604__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19605vld2_dup_f32 (const float32_t * __a)
19606{
19607 float32x2x2_t ret;
19608 __builtin_aarch64_simd_oi __o;
19609 __o = __builtin_aarch64_ld2rv2sf ((const __builtin_aarch64_simd_sf *) __a);
19610 ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 0);
19611 ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 1);
19612 return ret;
19613}
19614
a063e204
TC
19615__extension__ extern __inline float64x1x2_t
19616__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19617vld2_dup_f64 (const float64_t * __a)
19618{
19619 float64x1x2_t ret;
19620 __builtin_aarch64_simd_oi __o;
19621 __o = __builtin_aarch64_ld2rdf ((const __builtin_aarch64_simd_df *) __a);
19622 ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 0)};
19623 ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 1)};
19624 return ret;
19625}
19626
a063e204
TC
19627__extension__ extern __inline uint8x8x2_t
19628__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19629vld2_dup_u8 (const uint8_t * __a)
19630{
19631 uint8x8x2_t ret;
19632 __builtin_aarch64_simd_oi __o;
19633 __o = __builtin_aarch64_ld2rv8qi ((const __builtin_aarch64_simd_qi *) __a);
19634 ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0);
19635 ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1);
19636 return ret;
19637}
19638
a063e204
TC
19639__extension__ extern __inline uint16x4x2_t
19640__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19641vld2_dup_u16 (const uint16_t * __a)
19642{
19643 uint16x4x2_t ret;
19644 __builtin_aarch64_simd_oi __o;
19645 __o = __builtin_aarch64_ld2rv4hi ((const __builtin_aarch64_simd_hi *) __a);
19646 ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0);
19647 ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1);
19648 return ret;
19649}
19650
a063e204
TC
19651__extension__ extern __inline uint32x2x2_t
19652__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19653vld2_dup_u32 (const uint32_t * __a)
19654{
19655 uint32x2x2_t ret;
19656 __builtin_aarch64_simd_oi __o;
19657 __o = __builtin_aarch64_ld2rv2si ((const __builtin_aarch64_simd_si *) __a);
19658 ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0);
19659 ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1);
19660 return ret;
19661}
19662
a063e204
TC
19663__extension__ extern __inline poly8x8x2_t
19664__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19665vld2_dup_p8 (const poly8_t * __a)
19666{
19667 poly8x8x2_t ret;
19668 __builtin_aarch64_simd_oi __o;
19669 __o = __builtin_aarch64_ld2rv8qi ((const __builtin_aarch64_simd_qi *) __a);
19670 ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0);
19671 ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1);
19672 return ret;
19673}
19674
a063e204
TC
19675__extension__ extern __inline poly16x4x2_t
19676__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19677vld2_dup_p16 (const poly16_t * __a)
19678{
19679 poly16x4x2_t ret;
19680 __builtin_aarch64_simd_oi __o;
19681 __o = __builtin_aarch64_ld2rv4hi ((const __builtin_aarch64_simd_hi *) __a);
19682 ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0);
19683 ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1);
19684 return ret;
19685}
19686
159b8724
TC
19687__extension__ extern __inline poly64x1x2_t
19688__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
19689vld2_dup_p64 (const poly64_t * __a)
19690{
19691 poly64x1x2_t ret;
19692 __builtin_aarch64_simd_oi __o;
19693 __o = __builtin_aarch64_ld2rv2di ((const __builtin_aarch64_simd_di *) __a);
19694 ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregoidi_pss (__o, 0);
19695 ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregoidi_pss (__o, 1);
19696 return ret;
19697}
19698
19699
a063e204
TC
19700__extension__ extern __inline int64x1x2_t
19701__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19702vld2_dup_s64 (const int64_t * __a)
19703{
19704 int64x1x2_t ret;
19705 __builtin_aarch64_simd_oi __o;
19706 __o = __builtin_aarch64_ld2rdi ((const __builtin_aarch64_simd_di *) __a);
19707 ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 0);
19708 ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 1);
19709 return ret;
19710}
19711
a063e204
TC
19712__extension__ extern __inline uint64x1x2_t
19713__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19714vld2_dup_u64 (const uint64_t * __a)
19715{
19716 uint64x1x2_t ret;
19717 __builtin_aarch64_simd_oi __o;
19718 __o = __builtin_aarch64_ld2rdi ((const __builtin_aarch64_simd_di *) __a);
19719 ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 0);
19720 ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 1);
19721 return ret;
19722}
19723
a063e204
TC
19724__extension__ extern __inline int8x16x2_t
19725__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19726vld2q_dup_s8 (const int8_t * __a)
19727{
19728 int8x16x2_t ret;
19729 __builtin_aarch64_simd_oi __o;
19730 __o = __builtin_aarch64_ld2rv16qi ((const __builtin_aarch64_simd_qi *) __a);
19731 ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0);
19732 ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1);
19733 return ret;
19734}
19735
a063e204
TC
19736__extension__ extern __inline poly8x16x2_t
19737__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19738vld2q_dup_p8 (const poly8_t * __a)
19739{
19740 poly8x16x2_t ret;
19741 __builtin_aarch64_simd_oi __o;
19742 __o = __builtin_aarch64_ld2rv16qi ((const __builtin_aarch64_simd_qi *) __a);
19743 ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0);
19744 ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1);
19745 return ret;
19746}
19747
a063e204
TC
19748__extension__ extern __inline int16x8x2_t
19749__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19750vld2q_dup_s16 (const int16_t * __a)
19751{
19752 int16x8x2_t ret;
19753 __builtin_aarch64_simd_oi __o;
19754 __o = __builtin_aarch64_ld2rv8hi ((const __builtin_aarch64_simd_hi *) __a);
19755 ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0);
19756 ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1);
19757 return ret;
19758}
19759
a063e204
TC
19760__extension__ extern __inline poly16x8x2_t
19761__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19762vld2q_dup_p16 (const poly16_t * __a)
19763{
19764 poly16x8x2_t ret;
19765 __builtin_aarch64_simd_oi __o;
19766 __o = __builtin_aarch64_ld2rv8hi ((const __builtin_aarch64_simd_hi *) __a);
19767 ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0);
19768 ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1);
19769 return ret;
19770}
19771
a063e204
TC
19772__extension__ extern __inline int32x4x2_t
19773__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19774vld2q_dup_s32 (const int32_t * __a)
19775{
19776 int32x4x2_t ret;
19777 __builtin_aarch64_simd_oi __o;
19778 __o = __builtin_aarch64_ld2rv4si ((const __builtin_aarch64_simd_si *) __a);
19779 ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0);
19780 ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1);
19781 return ret;
19782}
19783
a063e204
TC
19784__extension__ extern __inline int64x2x2_t
19785__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19786vld2q_dup_s64 (const int64_t * __a)
19787{
19788 int64x2x2_t ret;
19789 __builtin_aarch64_simd_oi __o;
19790 __o = __builtin_aarch64_ld2rv2di ((const __builtin_aarch64_simd_di *) __a);
19791 ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0);
19792 ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1);
19793 return ret;
19794}
19795
a063e204
TC
19796__extension__ extern __inline uint8x16x2_t
19797__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19798vld2q_dup_u8 (const uint8_t * __a)
19799{
19800 uint8x16x2_t ret;
19801 __builtin_aarch64_simd_oi __o;
19802 __o = __builtin_aarch64_ld2rv16qi ((const __builtin_aarch64_simd_qi *) __a);
19803 ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0);
19804 ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1);
19805 return ret;
19806}
19807
a063e204
TC
19808__extension__ extern __inline uint16x8x2_t
19809__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19810vld2q_dup_u16 (const uint16_t * __a)
19811{
19812 uint16x8x2_t ret;
19813 __builtin_aarch64_simd_oi __o;
19814 __o = __builtin_aarch64_ld2rv8hi ((const __builtin_aarch64_simd_hi *) __a);
19815 ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0);
19816 ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1);
19817 return ret;
19818}
19819
a063e204
TC
19820__extension__ extern __inline uint32x4x2_t
19821__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19822vld2q_dup_u32 (const uint32_t * __a)
19823{
19824 uint32x4x2_t ret;
19825 __builtin_aarch64_simd_oi __o;
19826 __o = __builtin_aarch64_ld2rv4si ((const __builtin_aarch64_simd_si *) __a);
19827 ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0);
19828 ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1);
19829 return ret;
19830}
19831
a063e204
TC
19832__extension__ extern __inline uint64x2x2_t
19833__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19834vld2q_dup_u64 (const uint64_t * __a)
19835{
19836 uint64x2x2_t ret;
19837 __builtin_aarch64_simd_oi __o;
19838 __o = __builtin_aarch64_ld2rv2di ((const __builtin_aarch64_simd_di *) __a);
19839 ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0);
19840 ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1);
19841 return ret;
19842}
19843
a063e204
TC
19844__extension__ extern __inline float16x8x2_t
19845__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7c369485
AL
19846vld2q_dup_f16 (const float16_t * __a)
19847{
19848 float16x8x2_t ret;
19849 __builtin_aarch64_simd_oi __o;
19850 __o = __builtin_aarch64_ld2rv8hf ((const __builtin_aarch64_simd_hf *) __a);
19851 ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregoiv8hf (__o, 0);
19852 ret.val[1] = __builtin_aarch64_get_qregoiv8hf (__o, 1);
19853 return ret;
19854}
19855
a063e204
TC
19856__extension__ extern __inline float32x4x2_t
19857__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19858vld2q_dup_f32 (const float32_t * __a)
19859{
19860 float32x4x2_t ret;
19861 __builtin_aarch64_simd_oi __o;
19862 __o = __builtin_aarch64_ld2rv4sf ((const __builtin_aarch64_simd_sf *) __a);
19863 ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 0);
19864 ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 1);
19865 return ret;
19866}
19867
a063e204
TC
19868__extension__ extern __inline float64x2x2_t
19869__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19870vld2q_dup_f64 (const float64_t * __a)
19871{
19872 float64x2x2_t ret;
19873 __builtin_aarch64_simd_oi __o;
19874 __o = __builtin_aarch64_ld2rv2df ((const __builtin_aarch64_simd_df *) __a);
19875 ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 0);
19876 ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 1);
19877 return ret;
19878}
19879
159b8724
TC
19880__extension__ extern __inline poly64x2x2_t
19881__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
19882vld2q_dup_p64 (const poly64_t * __a)
19883{
19884 poly64x2x2_t ret;
19885 __builtin_aarch64_simd_oi __o;
19886 __o = __builtin_aarch64_ld2rv2di ((const __builtin_aarch64_simd_di *) __a);
19887 ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di_pss (__o, 0);
19888 ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di_pss (__o, 1);
19889 return ret;
19890}
19891
a063e204
TC
19892__extension__ extern __inline int64x1x3_t
19893__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19894vld3_dup_s64 (const int64_t * __a)
19895{
19896 int64x1x3_t ret;
19897 __builtin_aarch64_simd_ci __o;
19898 __o = __builtin_aarch64_ld3rdi ((const __builtin_aarch64_simd_di *) __a);
19899 ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 0);
19900 ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 1);
19901 ret.val[2] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 2);
19902 return ret;
19903}
19904
a063e204
TC
19905__extension__ extern __inline uint64x1x3_t
19906__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19907vld3_dup_u64 (const uint64_t * __a)
19908{
19909 uint64x1x3_t ret;
19910 __builtin_aarch64_simd_ci __o;
19911 __o = __builtin_aarch64_ld3rdi ((const __builtin_aarch64_simd_di *) __a);
19912 ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 0);
19913 ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 1);
19914 ret.val[2] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 2);
19915 return ret;
19916}
19917
a063e204
TC
19918__extension__ extern __inline float64x1x3_t
19919__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19920vld3_dup_f64 (const float64_t * __a)
19921{
19922 float64x1x3_t ret;
19923 __builtin_aarch64_simd_ci __o;
19924 __o = __builtin_aarch64_ld3rdf ((const __builtin_aarch64_simd_df *) __a);
19925 ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 0)};
19926 ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 1)};
19927 ret.val[2] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 2)};
19928 return ret;
19929}
19930
a063e204
TC
19931__extension__ extern __inline int8x8x3_t
19932__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19933vld3_dup_s8 (const int8_t * __a)
19934{
19935 int8x8x3_t ret;
19936 __builtin_aarch64_simd_ci __o;
19937 __o = __builtin_aarch64_ld3rv8qi ((const __builtin_aarch64_simd_qi *) __a);
19938 ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0);
19939 ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1);
19940 ret.val[2] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2);
19941 return ret;
19942}
19943
a063e204
TC
19944__extension__ extern __inline poly8x8x3_t
19945__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19946vld3_dup_p8 (const poly8_t * __a)
19947{
19948 poly8x8x3_t ret;
19949 __builtin_aarch64_simd_ci __o;
19950 __o = __builtin_aarch64_ld3rv8qi ((const __builtin_aarch64_simd_qi *) __a);
19951 ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0);
19952 ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1);
19953 ret.val[2] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2);
19954 return ret;
19955}
19956
a063e204
TC
19957__extension__ extern __inline int16x4x3_t
19958__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19959vld3_dup_s16 (const int16_t * __a)
19960{
19961 int16x4x3_t ret;
19962 __builtin_aarch64_simd_ci __o;
19963 __o = __builtin_aarch64_ld3rv4hi ((const __builtin_aarch64_simd_hi *) __a);
19964 ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0);
19965 ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1);
19966 ret.val[2] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2);
19967 return ret;
19968}
19969
a063e204
TC
19970__extension__ extern __inline poly16x4x3_t
19971__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19972vld3_dup_p16 (const poly16_t * __a)
19973{
19974 poly16x4x3_t ret;
19975 __builtin_aarch64_simd_ci __o;
19976 __o = __builtin_aarch64_ld3rv4hi ((const __builtin_aarch64_simd_hi *) __a);
19977 ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0);
19978 ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1);
19979 ret.val[2] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2);
19980 return ret;
19981}
19982
a063e204
TC
19983__extension__ extern __inline int32x2x3_t
19984__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19985vld3_dup_s32 (const int32_t * __a)
19986{
19987 int32x2x3_t ret;
19988 __builtin_aarch64_simd_ci __o;
19989 __o = __builtin_aarch64_ld3rv2si ((const __builtin_aarch64_simd_si *) __a);
19990 ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0);
19991 ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1);
19992 ret.val[2] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2);
19993 return ret;
19994}
19995
a063e204
TC
19996__extension__ extern __inline uint8x8x3_t
19997__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
19998vld3_dup_u8 (const uint8_t * __a)
19999{
20000 uint8x8x3_t ret;
20001 __builtin_aarch64_simd_ci __o;
20002 __o = __builtin_aarch64_ld3rv8qi ((const __builtin_aarch64_simd_qi *) __a);
20003 ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0);
20004 ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1);
20005 ret.val[2] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2);
20006 return ret;
20007}
20008
a063e204
TC
20009__extension__ extern __inline uint16x4x3_t
20010__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20011vld3_dup_u16 (const uint16_t * __a)
20012{
20013 uint16x4x3_t ret;
20014 __builtin_aarch64_simd_ci __o;
20015 __o = __builtin_aarch64_ld3rv4hi ((const __builtin_aarch64_simd_hi *) __a);
20016 ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0);
20017 ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1);
20018 ret.val[2] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2);
20019 return ret;
20020}
20021
a063e204
TC
20022__extension__ extern __inline uint32x2x3_t
20023__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20024vld3_dup_u32 (const uint32_t * __a)
20025{
20026 uint32x2x3_t ret;
20027 __builtin_aarch64_simd_ci __o;
20028 __o = __builtin_aarch64_ld3rv2si ((const __builtin_aarch64_simd_si *) __a);
20029 ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0);
20030 ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1);
20031 ret.val[2] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2);
20032 return ret;
20033}
20034
a063e204
TC
20035__extension__ extern __inline float16x4x3_t
20036__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7c369485
AL
20037vld3_dup_f16 (const float16_t * __a)
20038{
20039 float16x4x3_t ret;
20040 __builtin_aarch64_simd_ci __o;
20041 __o = __builtin_aarch64_ld3rv4hf ((const __builtin_aarch64_simd_hf *) __a);
20042 ret.val[0] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 0);
20043 ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 1);
20044 ret.val[2] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 2);
20045 return ret;
20046}
20047
a063e204
TC
20048__extension__ extern __inline float32x2x3_t
20049__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20050vld3_dup_f32 (const float32_t * __a)
20051{
20052 float32x2x3_t ret;
20053 __builtin_aarch64_simd_ci __o;
20054 __o = __builtin_aarch64_ld3rv2sf ((const __builtin_aarch64_simd_sf *) __a);
20055 ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 0);
20056 ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 1);
20057 ret.val[2] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 2);
20058 return ret;
20059}
20060
159b8724
TC
20061__extension__ extern __inline poly64x1x3_t
20062__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
20063vld3_dup_p64 (const poly64_t * __a)
20064{
20065 poly64x1x3_t ret;
20066 __builtin_aarch64_simd_ci __o;
20067 __o = __builtin_aarch64_ld3rv2di ((const __builtin_aarch64_simd_di *) __a);
20068 ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 0);
20069 ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 1);
20070 ret.val[2] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 2);
20071 return ret;
20072}
20073
a063e204
TC
20074__extension__ extern __inline int8x16x3_t
20075__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20076vld3q_dup_s8 (const int8_t * __a)
20077{
20078 int8x16x3_t ret;
20079 __builtin_aarch64_simd_ci __o;
20080 __o = __builtin_aarch64_ld3rv16qi ((const __builtin_aarch64_simd_qi *) __a);
20081 ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0);
20082 ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1);
20083 ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2);
20084 return ret;
20085}
20086
a063e204
TC
20087__extension__ extern __inline poly8x16x3_t
20088__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20089vld3q_dup_p8 (const poly8_t * __a)
20090{
20091 poly8x16x3_t ret;
20092 __builtin_aarch64_simd_ci __o;
20093 __o = __builtin_aarch64_ld3rv16qi ((const __builtin_aarch64_simd_qi *) __a);
20094 ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0);
20095 ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1);
20096 ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2);
20097 return ret;
20098}
20099
a063e204
TC
20100__extension__ extern __inline int16x8x3_t
20101__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20102vld3q_dup_s16 (const int16_t * __a)
20103{
20104 int16x8x3_t ret;
20105 __builtin_aarch64_simd_ci __o;
20106 __o = __builtin_aarch64_ld3rv8hi ((const __builtin_aarch64_simd_hi *) __a);
20107 ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0);
20108 ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1);
20109 ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2);
20110 return ret;
20111}
20112
a063e204
TC
20113__extension__ extern __inline poly16x8x3_t
20114__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20115vld3q_dup_p16 (const poly16_t * __a)
20116{
20117 poly16x8x3_t ret;
20118 __builtin_aarch64_simd_ci __o;
20119 __o = __builtin_aarch64_ld3rv8hi ((const __builtin_aarch64_simd_hi *) __a);
20120 ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0);
20121 ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1);
20122 ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2);
20123 return ret;
20124}
20125
a063e204
TC
20126__extension__ extern __inline int32x4x3_t
20127__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20128vld3q_dup_s32 (const int32_t * __a)
20129{
20130 int32x4x3_t ret;
20131 __builtin_aarch64_simd_ci __o;
20132 __o = __builtin_aarch64_ld3rv4si ((const __builtin_aarch64_simd_si *) __a);
20133 ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0);
20134 ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1);
20135 ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2);
20136 return ret;
20137}
20138
a063e204
TC
20139__extension__ extern __inline int64x2x3_t
20140__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20141vld3q_dup_s64 (const int64_t * __a)
20142{
20143 int64x2x3_t ret;
20144 __builtin_aarch64_simd_ci __o;
20145 __o = __builtin_aarch64_ld3rv2di ((const __builtin_aarch64_simd_di *) __a);
20146 ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0);
20147 ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1);
20148 ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2);
20149 return ret;
20150}
20151
a063e204
TC
20152__extension__ extern __inline uint8x16x3_t
20153__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20154vld3q_dup_u8 (const uint8_t * __a)
20155{
20156 uint8x16x3_t ret;
20157 __builtin_aarch64_simd_ci __o;
20158 __o = __builtin_aarch64_ld3rv16qi ((const __builtin_aarch64_simd_qi *) __a);
20159 ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0);
20160 ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1);
20161 ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2);
20162 return ret;
20163}
20164
a063e204
TC
20165__extension__ extern __inline uint16x8x3_t
20166__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20167vld3q_dup_u16 (const uint16_t * __a)
20168{
20169 uint16x8x3_t ret;
20170 __builtin_aarch64_simd_ci __o;
20171 __o = __builtin_aarch64_ld3rv8hi ((const __builtin_aarch64_simd_hi *) __a);
20172 ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0);
20173 ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1);
20174 ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2);
20175 return ret;
20176}
20177
a063e204
TC
20178__extension__ extern __inline uint32x4x3_t
20179__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20180vld3q_dup_u32 (const uint32_t * __a)
20181{
20182 uint32x4x3_t ret;
20183 __builtin_aarch64_simd_ci __o;
20184 __o = __builtin_aarch64_ld3rv4si ((const __builtin_aarch64_simd_si *) __a);
20185 ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0);
20186 ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1);
20187 ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2);
20188 return ret;
20189}
20190
a063e204
TC
20191__extension__ extern __inline uint64x2x3_t
20192__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20193vld3q_dup_u64 (const uint64_t * __a)
20194{
20195 uint64x2x3_t ret;
20196 __builtin_aarch64_simd_ci __o;
20197 __o = __builtin_aarch64_ld3rv2di ((const __builtin_aarch64_simd_di *) __a);
20198 ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0);
20199 ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1);
20200 ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2);
20201 return ret;
20202}
20203
a063e204
TC
20204__extension__ extern __inline float16x8x3_t
20205__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7c369485
AL
20206vld3q_dup_f16 (const float16_t * __a)
20207{
20208 float16x8x3_t ret;
20209 __builtin_aarch64_simd_ci __o;
20210 __o = __builtin_aarch64_ld3rv8hf ((const __builtin_aarch64_simd_hf *) __a);
20211 ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 0);
20212 ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 1);
20213 ret.val[2] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 2);
20214 return ret;
20215}
20216
a063e204
TC
20217__extension__ extern __inline float32x4x3_t
20218__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20219vld3q_dup_f32 (const float32_t * __a)
20220{
20221 float32x4x3_t ret;
20222 __builtin_aarch64_simd_ci __o;
20223 __o = __builtin_aarch64_ld3rv4sf ((const __builtin_aarch64_simd_sf *) __a);
20224 ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 0);
20225 ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 1);
20226 ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 2);
20227 return ret;
20228}
20229
a063e204
TC
20230__extension__ extern __inline float64x2x3_t
20231__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20232vld3q_dup_f64 (const float64_t * __a)
20233{
20234 float64x2x3_t ret;
20235 __builtin_aarch64_simd_ci __o;
20236 __o = __builtin_aarch64_ld3rv2df ((const __builtin_aarch64_simd_df *) __a);
20237 ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 0);
20238 ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 1);
20239 ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 2);
20240 return ret;
20241}
20242
159b8724
TC
20243__extension__ extern __inline poly64x2x3_t
20244__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
20245vld3q_dup_p64 (const poly64_t * __a)
20246{
20247 poly64x2x3_t ret;
20248 __builtin_aarch64_simd_ci __o;
20249 __o = __builtin_aarch64_ld3rv2di ((const __builtin_aarch64_simd_di *) __a);
20250 ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 0);
20251 ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 1);
20252 ret.val[2] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 2);
20253 return ret;
20254}
20255
a063e204
TC
20256__extension__ extern __inline int64x1x4_t
20257__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20258vld4_dup_s64 (const int64_t * __a)
20259{
20260 int64x1x4_t ret;
20261 __builtin_aarch64_simd_xi __o;
20262 __o = __builtin_aarch64_ld4rdi ((const __builtin_aarch64_simd_di *) __a);
20263 ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 0);
20264 ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 1);
20265 ret.val[2] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 2);
20266 ret.val[3] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 3);
20267 return ret;
20268}
20269
a063e204
TC
20270__extension__ extern __inline uint64x1x4_t
20271__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20272vld4_dup_u64 (const uint64_t * __a)
20273{
20274 uint64x1x4_t ret;
20275 __builtin_aarch64_simd_xi __o;
20276 __o = __builtin_aarch64_ld4rdi ((const __builtin_aarch64_simd_di *) __a);
20277 ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 0);
20278 ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 1);
20279 ret.val[2] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 2);
20280 ret.val[3] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 3);
20281 return ret;
20282}
20283
a063e204
TC
20284__extension__ extern __inline float64x1x4_t
20285__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20286vld4_dup_f64 (const float64_t * __a)
20287{
20288 float64x1x4_t ret;
20289 __builtin_aarch64_simd_xi __o;
20290 __o = __builtin_aarch64_ld4rdf ((const __builtin_aarch64_simd_df *) __a);
20291 ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 0)};
20292 ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 1)};
20293 ret.val[2] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 2)};
20294 ret.val[3] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 3)};
20295 return ret;
20296}
20297
a063e204
TC
20298__extension__ extern __inline int8x8x4_t
20299__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20300vld4_dup_s8 (const int8_t * __a)
20301{
20302 int8x8x4_t ret;
20303 __builtin_aarch64_simd_xi __o;
20304 __o = __builtin_aarch64_ld4rv8qi ((const __builtin_aarch64_simd_qi *) __a);
20305 ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0);
20306 ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1);
20307 ret.val[2] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2);
20308 ret.val[3] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3);
20309 return ret;
20310}
20311
a063e204
TC
20312__extension__ extern __inline poly8x8x4_t
20313__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20314vld4_dup_p8 (const poly8_t * __a)
20315{
20316 poly8x8x4_t ret;
20317 __builtin_aarch64_simd_xi __o;
20318 __o = __builtin_aarch64_ld4rv8qi ((const __builtin_aarch64_simd_qi *) __a);
20319 ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0);
20320 ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1);
20321 ret.val[2] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2);
20322 ret.val[3] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3);
20323 return ret;
20324}
20325
a063e204
TC
20326__extension__ extern __inline int16x4x4_t
20327__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20328vld4_dup_s16 (const int16_t * __a)
20329{
20330 int16x4x4_t ret;
20331 __builtin_aarch64_simd_xi __o;
20332 __o = __builtin_aarch64_ld4rv4hi ((const __builtin_aarch64_simd_hi *) __a);
20333 ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0);
20334 ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1);
20335 ret.val[2] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2);
20336 ret.val[3] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3);
20337 return ret;
20338}
20339
a063e204
TC
20340__extension__ extern __inline poly16x4x4_t
20341__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20342vld4_dup_p16 (const poly16_t * __a)
20343{
20344 poly16x4x4_t ret;
20345 __builtin_aarch64_simd_xi __o;
20346 __o = __builtin_aarch64_ld4rv4hi ((const __builtin_aarch64_simd_hi *) __a);
20347 ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0);
20348 ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1);
20349 ret.val[2] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2);
20350 ret.val[3] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3);
20351 return ret;
20352}
20353
a063e204
TC
20354__extension__ extern __inline int32x2x4_t
20355__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20356vld4_dup_s32 (const int32_t * __a)
20357{
20358 int32x2x4_t ret;
20359 __builtin_aarch64_simd_xi __o;
20360 __o = __builtin_aarch64_ld4rv2si ((const __builtin_aarch64_simd_si *) __a);
20361 ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 0);
20362 ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 1);
20363 ret.val[2] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 2);
20364 ret.val[3] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 3);
20365 return ret;
20366}
20367
a063e204
TC
20368__extension__ extern __inline uint8x8x4_t
20369__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20370vld4_dup_u8 (const uint8_t * __a)
20371{
20372 uint8x8x4_t ret;
20373 __builtin_aarch64_simd_xi __o;
20374 __o = __builtin_aarch64_ld4rv8qi ((const __builtin_aarch64_simd_qi *) __a);
20375 ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0);
20376 ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1);
20377 ret.val[2] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2);
20378 ret.val[3] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3);
20379 return ret;
20380}
20381
a063e204
TC
20382__extension__ extern __inline uint16x4x4_t
20383__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20384vld4_dup_u16 (const uint16_t * __a)
20385{
20386 uint16x4x4_t ret;
20387 __builtin_aarch64_simd_xi __o;
20388 __o = __builtin_aarch64_ld4rv4hi ((const __builtin_aarch64_simd_hi *) __a);
20389 ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0);
20390 ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1);
20391 ret.val[2] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2);
20392 ret.val[3] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3);
20393 return ret;
20394}
20395
a063e204
TC
20396__extension__ extern __inline uint32x2x4_t
20397__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20398vld4_dup_u32 (const uint32_t * __a)
20399{
20400 uint32x2x4_t ret;
20401 __builtin_aarch64_simd_xi __o;
20402 __o = __builtin_aarch64_ld4rv2si ((const __builtin_aarch64_simd_si *) __a);
20403 ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 0);
20404 ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 1);
20405 ret.val[2] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 2);
20406 ret.val[3] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 3);
20407 return ret;
20408}
20409
a063e204
TC
20410__extension__ extern __inline float16x4x4_t
20411__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7c369485
AL
20412vld4_dup_f16 (const float16_t * __a)
20413{
20414 float16x4x4_t ret;
20415 __builtin_aarch64_simd_xi __o;
20416 __o = __builtin_aarch64_ld4rv4hf ((const __builtin_aarch64_simd_hf *) __a);
20417 ret.val[0] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 0);
20418 ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 1);
20419 ret.val[2] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 2);
20420 ret.val[3] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 3);
20421 return ret;
20422}
20423
a063e204
TC
20424__extension__ extern __inline float32x2x4_t
20425__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20426vld4_dup_f32 (const float32_t * __a)
20427{
20428 float32x2x4_t ret;
20429 __builtin_aarch64_simd_xi __o;
20430 __o = __builtin_aarch64_ld4rv2sf ((const __builtin_aarch64_simd_sf *) __a);
20431 ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 0);
20432 ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 1);
20433 ret.val[2] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 2);
20434 ret.val[3] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 3);
20435 return ret;
20436}
20437
159b8724
TC
20438__extension__ extern __inline poly64x1x4_t
20439__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
20440vld4_dup_p64 (const poly64_t * __a)
20441{
20442 poly64x1x4_t ret;
20443 __builtin_aarch64_simd_xi __o;
20444 __o = __builtin_aarch64_ld4rv2di ((const __builtin_aarch64_simd_di *) __a);
20445 ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 0);
20446 ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 1);
20447 ret.val[2] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 2);
20448 ret.val[3] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 3);
20449 return ret;
20450}
20451
a063e204
TC
20452__extension__ extern __inline int8x16x4_t
20453__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20454vld4q_dup_s8 (const int8_t * __a)
20455{
20456 int8x16x4_t ret;
20457 __builtin_aarch64_simd_xi __o;
20458 __o = __builtin_aarch64_ld4rv16qi ((const __builtin_aarch64_simd_qi *) __a);
20459 ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0);
20460 ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1);
20461 ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2);
20462 ret.val[3] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3);
20463 return ret;
20464}
20465
a063e204
TC
20466__extension__ extern __inline poly8x16x4_t
20467__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20468vld4q_dup_p8 (const poly8_t * __a)
20469{
20470 poly8x16x4_t ret;
20471 __builtin_aarch64_simd_xi __o;
20472 __o = __builtin_aarch64_ld4rv16qi ((const __builtin_aarch64_simd_qi *) __a);
20473 ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0);
20474 ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1);
20475 ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2);
20476 ret.val[3] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3);
20477 return ret;
20478}
20479
a063e204
TC
20480__extension__ extern __inline int16x8x4_t
20481__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20482vld4q_dup_s16 (const int16_t * __a)
20483{
20484 int16x8x4_t ret;
20485 __builtin_aarch64_simd_xi __o;
20486 __o = __builtin_aarch64_ld4rv8hi ((const __builtin_aarch64_simd_hi *) __a);
20487 ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0);
20488 ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1);
20489 ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2);
20490 ret.val[3] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3);
20491 return ret;
20492}
20493
a063e204
TC
20494__extension__ extern __inline poly16x8x4_t
20495__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20496vld4q_dup_p16 (const poly16_t * __a)
20497{
20498 poly16x8x4_t ret;
20499 __builtin_aarch64_simd_xi __o;
20500 __o = __builtin_aarch64_ld4rv8hi ((const __builtin_aarch64_simd_hi *) __a);
20501 ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0);
20502 ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1);
20503 ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2);
20504 ret.val[3] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3);
20505 return ret;
20506}
20507
a063e204
TC
20508__extension__ extern __inline int32x4x4_t
20509__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20510vld4q_dup_s32 (const int32_t * __a)
20511{
20512 int32x4x4_t ret;
20513 __builtin_aarch64_simd_xi __o;
20514 __o = __builtin_aarch64_ld4rv4si ((const __builtin_aarch64_simd_si *) __a);
20515 ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0);
20516 ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1);
20517 ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2);
20518 ret.val[3] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3);
20519 return ret;
20520}
20521
a063e204
TC
20522__extension__ extern __inline int64x2x4_t
20523__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20524vld4q_dup_s64 (const int64_t * __a)
20525{
20526 int64x2x4_t ret;
20527 __builtin_aarch64_simd_xi __o;
20528 __o = __builtin_aarch64_ld4rv2di ((const __builtin_aarch64_simd_di *) __a);
20529 ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 0);
20530 ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 1);
20531 ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 2);
20532 ret.val[3] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 3);
20533 return ret;
20534}
20535
a063e204
TC
20536__extension__ extern __inline uint8x16x4_t
20537__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20538vld4q_dup_u8 (const uint8_t * __a)
20539{
20540 uint8x16x4_t ret;
20541 __builtin_aarch64_simd_xi __o;
20542 __o = __builtin_aarch64_ld4rv16qi ((const __builtin_aarch64_simd_qi *) __a);
20543 ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0);
20544 ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1);
20545 ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2);
20546 ret.val[3] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3);
20547 return ret;
20548}
20549
a063e204
TC
20550__extension__ extern __inline uint16x8x4_t
20551__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20552vld4q_dup_u16 (const uint16_t * __a)
20553{
20554 uint16x8x4_t ret;
20555 __builtin_aarch64_simd_xi __o;
20556 __o = __builtin_aarch64_ld4rv8hi ((const __builtin_aarch64_simd_hi *) __a);
20557 ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0);
20558 ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1);
20559 ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2);
20560 ret.val[3] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3);
20561 return ret;
20562}
20563
a063e204
TC
20564__extension__ extern __inline uint32x4x4_t
20565__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20566vld4q_dup_u32 (const uint32_t * __a)
20567{
20568 uint32x4x4_t ret;
20569 __builtin_aarch64_simd_xi __o;
20570 __o = __builtin_aarch64_ld4rv4si ((const __builtin_aarch64_simd_si *) __a);
20571 ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0);
20572 ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1);
20573 ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2);
20574 ret.val[3] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3);
20575 return ret;
20576}
20577
a063e204
TC
20578__extension__ extern __inline uint64x2x4_t
20579__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20580vld4q_dup_u64 (const uint64_t * __a)
20581{
20582 uint64x2x4_t ret;
20583 __builtin_aarch64_simd_xi __o;
20584 __o = __builtin_aarch64_ld4rv2di ((const __builtin_aarch64_simd_di *) __a);
20585 ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 0);
20586 ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 1);
20587 ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 2);
20588 ret.val[3] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 3);
20589 return ret;
20590}
20591
a063e204
TC
20592__extension__ extern __inline float16x8x4_t
20593__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7c369485
AL
20594vld4q_dup_f16 (const float16_t * __a)
20595{
20596 float16x8x4_t ret;
20597 __builtin_aarch64_simd_xi __o;
20598 __o = __builtin_aarch64_ld4rv8hf ((const __builtin_aarch64_simd_hf *) __a);
20599 ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 0);
20600 ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 1);
20601 ret.val[2] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 2);
20602 ret.val[3] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 3);
20603 return ret;
20604}
20605
a063e204
TC
20606__extension__ extern __inline float32x4x4_t
20607__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20608vld4q_dup_f32 (const float32_t * __a)
20609{
20610 float32x4x4_t ret;
20611 __builtin_aarch64_simd_xi __o;
20612 __o = __builtin_aarch64_ld4rv4sf ((const __builtin_aarch64_simd_sf *) __a);
20613 ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 0);
20614 ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 1);
20615 ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 2);
20616 ret.val[3] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 3);
20617 return ret;
20618}
20619
a063e204
TC
20620__extension__ extern __inline float64x2x4_t
20621__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77efea31
FY
20622vld4q_dup_f64 (const float64_t * __a)
20623{
20624 float64x2x4_t ret;
20625 __builtin_aarch64_simd_xi __o;
20626 __o = __builtin_aarch64_ld4rv2df ((const __builtin_aarch64_simd_df *) __a);
43e9d192
IB
20627 ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 0);
20628 ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 1);
20629 ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 2);
20630 ret.val[3] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 3);
20631 return ret;
20632}
20633
159b8724
TC
20634__extension__ extern __inline poly64x2x4_t
20635__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
20636vld4q_dup_p64 (const poly64_t * __a)
20637{
20638 poly64x2x4_t ret;
20639 __builtin_aarch64_simd_xi __o;
20640 __o = __builtin_aarch64_ld4rv2di ((const __builtin_aarch64_simd_di *) __a);
20641 ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 0);
20642 ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 1);
20643 ret.val[2] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 2);
20644 ret.val[3] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 3);
20645 return ret;
20646}
20647
29e5e2f9
CB
20648/* vld2_lane */
20649
4d0a0237
CB
20650#define __LD2_LANE_FUNC(intype, vectype, largetype, ptrtype, mode, \
20651 qmode, ptrmode, funcsuffix, signedtype) \
a063e204
TC
20652__extension__ extern __inline intype \
20653__attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) \
29e5e2f9
CB
20654vld2_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \
20655{ \
20656 __builtin_aarch64_simd_oi __o; \
20657 largetype __temp; \
20658 __temp.val[0] = \
20659 vcombine_##funcsuffix (__b.val[0], vcreate_##funcsuffix (0)); \
20660 __temp.val[1] = \
20661 vcombine_##funcsuffix (__b.val[1], vcreate_##funcsuffix (0)); \
4d0a0237
CB
20662 __o = __builtin_aarch64_set_qregoi##qmode (__o, \
20663 (signedtype) __temp.val[0], \
20664 0); \
20665 __o = __builtin_aarch64_set_qregoi##qmode (__o, \
20666 (signedtype) __temp.val[1], \
20667 1); \
29e5e2f9
CB
20668 __o = __builtin_aarch64_ld2_lane##mode ( \
20669 (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \
20670 __b.val[0] = (vectype) __builtin_aarch64_get_dregoidi (__o, 0); \
20671 __b.val[1] = (vectype) __builtin_aarch64_get_dregoidi (__o, 1); \
20672 return __b; \
20673}
20674
7c369485
AL
20675__LD2_LANE_FUNC (float16x4x2_t, float16x4_t, float16x8x2_t, float16_t, v4hf,
20676 v8hf, hf, f16, float16x8_t)
4d0a0237 20677__LD2_LANE_FUNC (float32x2x2_t, float32x2_t, float32x4x2_t, float32_t, v2sf, v4sf,
29e5e2f9 20678 sf, f32, float32x4_t)
4d0a0237 20679__LD2_LANE_FUNC (float64x1x2_t, float64x1_t, float64x2x2_t, float64_t, df, v2df,
29e5e2f9 20680 df, f64, float64x2_t)
4d0a0237 20681__LD2_LANE_FUNC (poly8x8x2_t, poly8x8_t, poly8x16x2_t, poly8_t, v8qi, v16qi, qi, p8,
29e5e2f9 20682 int8x16_t)
4d0a0237 20683__LD2_LANE_FUNC (poly16x4x2_t, poly16x4_t, poly16x8x2_t, poly16_t, v4hi, v8hi, hi,
29e5e2f9 20684 p16, int16x8_t)
159b8724
TC
20685__LD2_LANE_FUNC (poly64x1x2_t, poly64x1_t, poly64x2x2_t, poly64_t, di,
20686 v2di_ssps, di, p64, poly64x2_t)
4d0a0237 20687__LD2_LANE_FUNC (int8x8x2_t, int8x8_t, int8x16x2_t, int8_t, v8qi, v16qi, qi, s8,
29e5e2f9 20688 int8x16_t)
4d0a0237 20689__LD2_LANE_FUNC (int16x4x2_t, int16x4_t, int16x8x2_t, int16_t, v4hi, v8hi, hi, s16,
29e5e2f9 20690 int16x8_t)
4d0a0237 20691__LD2_LANE_FUNC (int32x2x2_t, int32x2_t, int32x4x2_t, int32_t, v2si, v4si, si, s32,
29e5e2f9 20692 int32x4_t)
4d0a0237 20693__LD2_LANE_FUNC (int64x1x2_t, int64x1_t, int64x2x2_t, int64_t, di, v2di, di, s64,
29e5e2f9 20694 int64x2_t)
4d0a0237 20695__LD2_LANE_FUNC (uint8x8x2_t, uint8x8_t, uint8x16x2_t, uint8_t, v8qi, v16qi, qi, u8,
29e5e2f9 20696 int8x16_t)
4d0a0237 20697__LD2_LANE_FUNC (uint16x4x2_t, uint16x4_t, uint16x8x2_t, uint16_t, v4hi, v8hi, hi,
29e5e2f9 20698 u16, int16x8_t)
4d0a0237 20699__LD2_LANE_FUNC (uint32x2x2_t, uint32x2_t, uint32x4x2_t, uint32_t, v2si, v4si, si,
29e5e2f9 20700 u32, int32x4_t)
4d0a0237 20701__LD2_LANE_FUNC (uint64x1x2_t, uint64x1_t, uint64x2x2_t, uint64_t, di, v2di, di,
29e5e2f9
CB
20702 u64, int64x2_t)
20703
29e5e2f9
CB
20704/* vld2q_lane */
20705
44e570d9 20706#define __LD2Q_LANE_FUNC(intype, vtype, ptrtype, mode, ptrmode, funcsuffix) \
a063e204
TC
20707__extension__ extern __inline intype \
20708__attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) \
29e5e2f9
CB
20709vld2q_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \
20710{ \
20711 __builtin_aarch64_simd_oi __o; \
20712 intype ret; \
20713 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); \
20714 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); \
20715 __o = __builtin_aarch64_ld2_lane##mode ( \
20716 (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \
20717 ret.val[0] = (vtype) __builtin_aarch64_get_qregoiv4si (__o, 0); \
20718 ret.val[1] = (vtype) __builtin_aarch64_get_qregoiv4si (__o, 1); \
20719 return ret; \
20720}
20721
44e570d9
AC
20722__LD2Q_LANE_FUNC (float16x8x2_t, float16x8_t, float16_t, v8hf, hf, f16)
20723__LD2Q_LANE_FUNC (float32x4x2_t, float32x4_t, float32_t, v4sf, sf, f32)
20724__LD2Q_LANE_FUNC (float64x2x2_t, float64x2_t, float64_t, v2df, df, f64)
20725__LD2Q_LANE_FUNC (poly8x16x2_t, poly8x16_t, poly8_t, v16qi, qi, p8)
20726__LD2Q_LANE_FUNC (poly16x8x2_t, poly16x8_t, poly16_t, v8hi, hi, p16)
20727__LD2Q_LANE_FUNC (poly64x2x2_t, poly64x2_t, poly64_t, v2di, di, p64)
20728__LD2Q_LANE_FUNC (int8x16x2_t, int8x16_t, int8_t, v16qi, qi, s8)
20729__LD2Q_LANE_FUNC (int16x8x2_t, int16x8_t, int16_t, v8hi, hi, s16)
20730__LD2Q_LANE_FUNC (int32x4x2_t, int32x4_t, int32_t, v4si, si, s32)
20731__LD2Q_LANE_FUNC (int64x2x2_t, int64x2_t, int64_t, v2di, di, s64)
20732__LD2Q_LANE_FUNC (uint8x16x2_t, uint8x16_t, uint8_t, v16qi, qi, u8)
20733__LD2Q_LANE_FUNC (uint16x8x2_t, uint16x8_t, uint16_t, v8hi, hi, u16)
20734__LD2Q_LANE_FUNC (uint32x4x2_t, uint32x4_t, uint32_t, v4si, si, u32)
20735__LD2Q_LANE_FUNC (uint64x2x2_t, uint64x2_t, uint64_t, v2di, di, u64)
29e5e2f9
CB
20736
20737/* vld3_lane */
20738
4d0a0237
CB
20739#define __LD3_LANE_FUNC(intype, vectype, largetype, ptrtype, mode, \
20740 qmode, ptrmode, funcsuffix, signedtype) \
a063e204
TC
20741__extension__ extern __inline intype \
20742__attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) \
29e5e2f9
CB
20743vld3_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \
20744{ \
20745 __builtin_aarch64_simd_ci __o; \
20746 largetype __temp; \
20747 __temp.val[0] = \
20748 vcombine_##funcsuffix (__b.val[0], vcreate_##funcsuffix (0)); \
20749 __temp.val[1] = \
20750 vcombine_##funcsuffix (__b.val[1], vcreate_##funcsuffix (0)); \
20751 __temp.val[2] = \
20752 vcombine_##funcsuffix (__b.val[2], vcreate_##funcsuffix (0)); \
4d0a0237
CB
20753 __o = __builtin_aarch64_set_qregci##qmode (__o, \
20754 (signedtype) __temp.val[0], \
20755 0); \
20756 __o = __builtin_aarch64_set_qregci##qmode (__o, \
20757 (signedtype) __temp.val[1], \
20758 1); \
20759 __o = __builtin_aarch64_set_qregci##qmode (__o, \
20760 (signedtype) __temp.val[2], \
20761 2); \
29e5e2f9
CB
20762 __o = __builtin_aarch64_ld3_lane##mode ( \
20763 (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \
20764 __b.val[0] = (vectype) __builtin_aarch64_get_dregcidi (__o, 0); \
20765 __b.val[1] = (vectype) __builtin_aarch64_get_dregcidi (__o, 1); \
20766 __b.val[2] = (vectype) __builtin_aarch64_get_dregcidi (__o, 2); \
20767 return __b; \
20768}
20769
7c369485
AL
20770__LD3_LANE_FUNC (float16x4x3_t, float16x4_t, float16x8x3_t, float16_t, v4hf,
20771 v8hf, hf, f16, float16x8_t)
4d0a0237 20772__LD3_LANE_FUNC (float32x2x3_t, float32x2_t, float32x4x3_t, float32_t, v2sf, v4sf,
29e5e2f9 20773 sf, f32, float32x4_t)
4d0a0237 20774__LD3_LANE_FUNC (float64x1x3_t, float64x1_t, float64x2x3_t, float64_t, df, v2df,
29e5e2f9 20775 df, f64, float64x2_t)
4d0a0237 20776__LD3_LANE_FUNC (poly8x8x3_t, poly8x8_t, poly8x16x3_t, poly8_t, v8qi, v16qi, qi, p8,
29e5e2f9 20777 int8x16_t)
4d0a0237 20778__LD3_LANE_FUNC (poly16x4x3_t, poly16x4_t, poly16x8x3_t, poly16_t, v4hi, v8hi, hi,
29e5e2f9 20779 p16, int16x8_t)
159b8724
TC
20780__LD3_LANE_FUNC (poly64x1x3_t, poly64x1_t, poly64x2x3_t, poly64_t, di,
20781 v2di_ssps, di, p64, poly64x2_t)
4d0a0237 20782__LD3_LANE_FUNC (int8x8x3_t, int8x8_t, int8x16x3_t, int8_t, v8qi, v16qi, qi, s8,
29e5e2f9 20783 int8x16_t)
4d0a0237 20784__LD3_LANE_FUNC (int16x4x3_t, int16x4_t, int16x8x3_t, int16_t, v4hi, v8hi, hi, s16,
29e5e2f9 20785 int16x8_t)
4d0a0237 20786__LD3_LANE_FUNC (int32x2x3_t, int32x2_t, int32x4x3_t, int32_t, v2si, v4si, si, s32,
29e5e2f9 20787 int32x4_t)
4d0a0237 20788__LD3_LANE_FUNC (int64x1x3_t, int64x1_t, int64x2x3_t, int64_t, di, v2di, di, s64,
29e5e2f9 20789 int64x2_t)
4d0a0237 20790__LD3_LANE_FUNC (uint8x8x3_t, uint8x8_t, uint8x16x3_t, uint8_t, v8qi, v16qi, qi, u8,
29e5e2f9 20791 int8x16_t)
4d0a0237 20792__LD3_LANE_FUNC (uint16x4x3_t, uint16x4_t, uint16x8x3_t, uint16_t, v4hi, v8hi, hi,
29e5e2f9 20793 u16, int16x8_t)
4d0a0237 20794__LD3_LANE_FUNC (uint32x2x3_t, uint32x2_t, uint32x4x3_t, uint32_t, v2si, v4si, si,
29e5e2f9 20795 u32, int32x4_t)
4d0a0237 20796__LD3_LANE_FUNC (uint64x1x3_t, uint64x1_t, uint64x2x3_t, uint64_t, di, v2di, di,
29e5e2f9
CB
20797 u64, int64x2_t)
20798
29e5e2f9
CB
20799/* vld3q_lane */
20800
44e570d9 20801#define __LD3Q_LANE_FUNC(intype, vtype, ptrtype, mode, ptrmode, funcsuffix) \
a063e204
TC
20802__extension__ extern __inline intype \
20803__attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) \
29e5e2f9
CB
20804vld3q_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \
20805{ \
20806 __builtin_aarch64_simd_ci __o; \
20807 intype ret; \
20808 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); \
20809 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); \
20810 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); \
20811 __o = __builtin_aarch64_ld3_lane##mode ( \
20812 (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \
20813 ret.val[0] = (vtype) __builtin_aarch64_get_qregciv4si (__o, 0); \
20814 ret.val[1] = (vtype) __builtin_aarch64_get_qregciv4si (__o, 1); \
20815 ret.val[2] = (vtype) __builtin_aarch64_get_qregciv4si (__o, 2); \
20816 return ret; \
20817}
20818
44e570d9
AC
20819__LD3Q_LANE_FUNC (float16x8x3_t, float16x8_t, float16_t, v8hf, hf, f16)
20820__LD3Q_LANE_FUNC (float32x4x3_t, float32x4_t, float32_t, v4sf, sf, f32)
20821__LD3Q_LANE_FUNC (float64x2x3_t, float64x2_t, float64_t, v2df, df, f64)
20822__LD3Q_LANE_FUNC (poly8x16x3_t, poly8x16_t, poly8_t, v16qi, qi, p8)
20823__LD3Q_LANE_FUNC (poly16x8x3_t, poly16x8_t, poly16_t, v8hi, hi, p16)
20824__LD3Q_LANE_FUNC (poly64x2x3_t, poly64x2_t, poly64_t, v2di, di, p64)
20825__LD3Q_LANE_FUNC (int8x16x3_t, int8x16_t, int8_t, v16qi, qi, s8)
20826__LD3Q_LANE_FUNC (int16x8x3_t, int16x8_t, int16_t, v8hi, hi, s16)
20827__LD3Q_LANE_FUNC (int32x4x3_t, int32x4_t, int32_t, v4si, si, s32)
20828__LD3Q_LANE_FUNC (int64x2x3_t, int64x2_t, int64_t, v2di, di, s64)
20829__LD3Q_LANE_FUNC (uint8x16x3_t, uint8x16_t, uint8_t, v16qi, qi, u8)
20830__LD3Q_LANE_FUNC (uint16x8x3_t, uint16x8_t, uint16_t, v8hi, hi, u16)
20831__LD3Q_LANE_FUNC (uint32x4x3_t, uint32x4_t, uint32_t, v4si, si, u32)
20832__LD3Q_LANE_FUNC (uint64x2x3_t, uint64x2_t, uint64_t, v2di, di, u64)
29e5e2f9
CB
20833
20834/* vld4_lane */
20835
4d0a0237
CB
20836#define __LD4_LANE_FUNC(intype, vectype, largetype, ptrtype, mode, \
20837 qmode, ptrmode, funcsuffix, signedtype) \
a063e204
TC
20838__extension__ extern __inline intype \
20839__attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) \
29e5e2f9
CB
20840vld4_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \
20841{ \
20842 __builtin_aarch64_simd_xi __o; \
20843 largetype __temp; \
20844 __temp.val[0] = \
20845 vcombine_##funcsuffix (__b.val[0], vcreate_##funcsuffix (0)); \
20846 __temp.val[1] = \
20847 vcombine_##funcsuffix (__b.val[1], vcreate_##funcsuffix (0)); \
20848 __temp.val[2] = \
20849 vcombine_##funcsuffix (__b.val[2], vcreate_##funcsuffix (0)); \
20850 __temp.val[3] = \
20851 vcombine_##funcsuffix (__b.val[3], vcreate_##funcsuffix (0)); \
4d0a0237
CB
20852 __o = __builtin_aarch64_set_qregxi##qmode (__o, \
20853 (signedtype) __temp.val[0], \
20854 0); \
20855 __o = __builtin_aarch64_set_qregxi##qmode (__o, \
20856 (signedtype) __temp.val[1], \
20857 1); \
20858 __o = __builtin_aarch64_set_qregxi##qmode (__o, \
20859 (signedtype) __temp.val[2], \
20860 2); \
20861 __o = __builtin_aarch64_set_qregxi##qmode (__o, \
20862 (signedtype) __temp.val[3], \
20863 3); \
29e5e2f9
CB
20864 __o = __builtin_aarch64_ld4_lane##mode ( \
20865 (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \
20866 __b.val[0] = (vectype) __builtin_aarch64_get_dregxidi (__o, 0); \
20867 __b.val[1] = (vectype) __builtin_aarch64_get_dregxidi (__o, 1); \
20868 __b.val[2] = (vectype) __builtin_aarch64_get_dregxidi (__o, 2); \
20869 __b.val[3] = (vectype) __builtin_aarch64_get_dregxidi (__o, 3); \
20870 return __b; \
20871}
20872
20873/* vld4q_lane */
20874
7c369485
AL
20875__LD4_LANE_FUNC (float16x4x4_t, float16x4_t, float16x8x4_t, float16_t, v4hf,
20876 v8hf, hf, f16, float16x8_t)
4d0a0237 20877__LD4_LANE_FUNC (float32x2x4_t, float32x2_t, float32x4x4_t, float32_t, v2sf, v4sf,
29e5e2f9 20878 sf, f32, float32x4_t)
4d0a0237 20879__LD4_LANE_FUNC (float64x1x4_t, float64x1_t, float64x2x4_t, float64_t, df, v2df,
29e5e2f9 20880 df, f64, float64x2_t)
4d0a0237 20881__LD4_LANE_FUNC (poly8x8x4_t, poly8x8_t, poly8x16x4_t, poly8_t, v8qi, v16qi, qi, p8,
29e5e2f9 20882 int8x16_t)
4d0a0237 20883__LD4_LANE_FUNC (poly16x4x4_t, poly16x4_t, poly16x8x4_t, poly16_t, v4hi, v8hi, hi,
29e5e2f9 20884 p16, int16x8_t)
159b8724
TC
20885__LD4_LANE_FUNC (poly64x1x4_t, poly64x1_t, poly64x2x4_t, poly64_t, di,
20886 v2di_ssps, di, p64, poly64x2_t)
4d0a0237 20887__LD4_LANE_FUNC (int8x8x4_t, int8x8_t, int8x16x4_t, int8_t, v8qi, v16qi, qi, s8,
29e5e2f9 20888 int8x16_t)
4d0a0237 20889__LD4_LANE_FUNC (int16x4x4_t, int16x4_t, int16x8x4_t, int16_t, v4hi, v8hi, hi, s16,
29e5e2f9 20890 int16x8_t)
4d0a0237 20891__LD4_LANE_FUNC (int32x2x4_t, int32x2_t, int32x4x4_t, int32_t, v2si, v4si, si, s32,
29e5e2f9 20892 int32x4_t)
4d0a0237 20893__LD4_LANE_FUNC (int64x1x4_t, int64x1_t, int64x2x4_t, int64_t, di, v2di, di, s64,
29e5e2f9 20894 int64x2_t)
4d0a0237 20895__LD4_LANE_FUNC (uint8x8x4_t, uint8x8_t, uint8x16x4_t, uint8_t, v8qi, v16qi, qi, u8,
29e5e2f9 20896 int8x16_t)
4d0a0237 20897__LD4_LANE_FUNC (uint16x4x4_t, uint16x4_t, uint16x8x4_t, uint16_t, v4hi, v8hi, hi,
29e5e2f9 20898 u16, int16x8_t)
4d0a0237 20899__LD4_LANE_FUNC (uint32x2x4_t, uint32x2_t, uint32x4x4_t, uint32_t, v2si, v4si, si,
29e5e2f9 20900 u32, int32x4_t)
4d0a0237 20901__LD4_LANE_FUNC (uint64x1x4_t, uint64x1_t, uint64x2x4_t, uint64_t, di, v2di, di,
29e5e2f9
CB
20902 u64, int64x2_t)
20903
29e5e2f9
CB
20904/* vld4q_lane */
20905
44e570d9 20906#define __LD4Q_LANE_FUNC(intype, vtype, ptrtype, mode, ptrmode, funcsuffix) \
a063e204
TC
20907__extension__ extern __inline intype \
20908__attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) \
29e5e2f9
CB
20909vld4q_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \
20910{ \
20911 __builtin_aarch64_simd_xi __o; \
20912 intype ret; \
20913 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); \
20914 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); \
20915 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); \
20916 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); \
20917 __o = __builtin_aarch64_ld4_lane##mode ( \
20918 (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c); \
20919 ret.val[0] = (vtype) __builtin_aarch64_get_qregxiv4si (__o, 0); \
20920 ret.val[1] = (vtype) __builtin_aarch64_get_qregxiv4si (__o, 1); \
20921 ret.val[2] = (vtype) __builtin_aarch64_get_qregxiv4si (__o, 2); \
20922 ret.val[3] = (vtype) __builtin_aarch64_get_qregxiv4si (__o, 3); \
20923 return ret; \
20924}
20925
44e570d9
AC
20926__LD4Q_LANE_FUNC (float16x8x4_t, float16x8_t, float16_t, v8hf, hf, f16)
20927__LD4Q_LANE_FUNC (float32x4x4_t, float32x4_t, float32_t, v4sf, sf, f32)
20928__LD4Q_LANE_FUNC (float64x2x4_t, float64x2_t, float64_t, v2df, df, f64)
20929__LD4Q_LANE_FUNC (poly8x16x4_t, poly8x16_t, poly8_t, v16qi, qi, p8)
20930__LD4Q_LANE_FUNC (poly16x8x4_t, poly16x8_t, poly16_t, v8hi, hi, p16)
20931__LD4Q_LANE_FUNC (poly64x2x4_t, poly64x2_t, poly64_t, v2di, di, p64)
20932__LD4Q_LANE_FUNC (int8x16x4_t, int8x16_t, int8_t, v16qi, qi, s8)
20933__LD4Q_LANE_FUNC (int16x8x4_t, int16x8_t, int16_t, v8hi, hi, s16)
20934__LD4Q_LANE_FUNC (int32x4x4_t, int32x4_t, int32_t, v4si, si, s32)
20935__LD4Q_LANE_FUNC (int64x2x4_t, int64x2_t, int64_t, v2di, di, s64)
20936__LD4Q_LANE_FUNC (uint8x16x4_t, uint8x16_t, uint8_t, v16qi, qi, u8)
20937__LD4Q_LANE_FUNC (uint16x8x4_t, uint16x8_t, uint16_t, v8hi, hi, u16)
20938__LD4Q_LANE_FUNC (uint32x4x4_t, uint32x4_t, uint32_t, v4si, si, u32)
20939__LD4Q_LANE_FUNC (uint64x2x4_t, uint64x2_t, uint64_t, v2di, di, u64)
29e5e2f9 20940
43e9d192
IB
20941/* vmax */
20942
a063e204
TC
20943__extension__ extern __inline float32x2_t
20944__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
20945vmax_f32 (float32x2_t __a, float32x2_t __b)
20946{
998eaf97 20947 return __builtin_aarch64_smax_nanv2sf (__a, __b);
43e9d192
IB
20948}
20949
a063e204
TC
20950__extension__ extern __inline float64x1_t
20951__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1efafef3
TC
20952vmax_f64 (float64x1_t __a, float64x1_t __b)
20953{
20954 return (float64x1_t)
20955 { __builtin_aarch64_smax_nandf (vget_lane_f64 (__a, 0),
20956 vget_lane_f64 (__b, 0)) };
20957}
20958
a063e204
TC
20959__extension__ extern __inline int8x8_t
20960__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
20961vmax_s8 (int8x8_t __a, int8x8_t __b)
20962{
20963 return __builtin_aarch64_smaxv8qi (__a, __b);
20964}
20965
a063e204
TC
20966__extension__ extern __inline int16x4_t
20967__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
20968vmax_s16 (int16x4_t __a, int16x4_t __b)
20969{
20970 return __builtin_aarch64_smaxv4hi (__a, __b);
20971}
20972
a063e204
TC
20973__extension__ extern __inline int32x2_t
20974__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
20975vmax_s32 (int32x2_t __a, int32x2_t __b)
20976{
20977 return __builtin_aarch64_smaxv2si (__a, __b);
20978}
20979
a063e204
TC
20980__extension__ extern __inline uint8x8_t
20981__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
20982vmax_u8 (uint8x8_t __a, uint8x8_t __b)
20983{
20984 return (uint8x8_t) __builtin_aarch64_umaxv8qi ((int8x8_t) __a,
20985 (int8x8_t) __b);
20986}
20987
a063e204
TC
20988__extension__ extern __inline uint16x4_t
20989__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
20990vmax_u16 (uint16x4_t __a, uint16x4_t __b)
20991{
20992 return (uint16x4_t) __builtin_aarch64_umaxv4hi ((int16x4_t) __a,
20993 (int16x4_t) __b);
20994}
20995
a063e204
TC
20996__extension__ extern __inline uint32x2_t
20997__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
20998vmax_u32 (uint32x2_t __a, uint32x2_t __b)
20999{
21000 return (uint32x2_t) __builtin_aarch64_umaxv2si ((int32x2_t) __a,
21001 (int32x2_t) __b);
21002}
21003
a063e204
TC
21004__extension__ extern __inline float32x4_t
21005__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21006vmaxq_f32 (float32x4_t __a, float32x4_t __b)
21007{
998eaf97 21008 return __builtin_aarch64_smax_nanv4sf (__a, __b);
43e9d192
IB
21009}
21010
a063e204
TC
21011__extension__ extern __inline float64x2_t
21012__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21013vmaxq_f64 (float64x2_t __a, float64x2_t __b)
21014{
998eaf97 21015 return __builtin_aarch64_smax_nanv2df (__a, __b);
43e9d192
IB
21016}
21017
a063e204
TC
21018__extension__ extern __inline int8x16_t
21019__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21020vmaxq_s8 (int8x16_t __a, int8x16_t __b)
21021{
21022 return __builtin_aarch64_smaxv16qi (__a, __b);
21023}
21024
a063e204
TC
21025__extension__ extern __inline int16x8_t
21026__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21027vmaxq_s16 (int16x8_t __a, int16x8_t __b)
21028{
21029 return __builtin_aarch64_smaxv8hi (__a, __b);
21030}
21031
a063e204
TC
21032__extension__ extern __inline int32x4_t
21033__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21034vmaxq_s32 (int32x4_t __a, int32x4_t __b)
21035{
21036 return __builtin_aarch64_smaxv4si (__a, __b);
21037}
21038
a063e204
TC
21039__extension__ extern __inline uint8x16_t
21040__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21041vmaxq_u8 (uint8x16_t __a, uint8x16_t __b)
21042{
21043 return (uint8x16_t) __builtin_aarch64_umaxv16qi ((int8x16_t) __a,
21044 (int8x16_t) __b);
21045}
21046
a063e204
TC
21047__extension__ extern __inline uint16x8_t
21048__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21049vmaxq_u16 (uint16x8_t __a, uint16x8_t __b)
21050{
21051 return (uint16x8_t) __builtin_aarch64_umaxv8hi ((int16x8_t) __a,
21052 (int16x8_t) __b);
21053}
21054
a063e204
TC
21055__extension__ extern __inline uint32x4_t
21056__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21057vmaxq_u32 (uint32x4_t __a, uint32x4_t __b)
21058{
21059 return (uint32x4_t) __builtin_aarch64_umaxv4si ((int32x4_t) __a,
21060 (int32x4_t) __b);
21061}
496ea87d
BB
21062/* vmulx */
21063
a063e204
TC
21064__extension__ extern __inline float32x2_t
21065__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
496ea87d
BB
21066vmulx_f32 (float32x2_t __a, float32x2_t __b)
21067{
21068 return __builtin_aarch64_fmulxv2sf (__a, __b);
21069}
21070
a063e204
TC
21071__extension__ extern __inline float32x4_t
21072__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
496ea87d
BB
21073vmulxq_f32 (float32x4_t __a, float32x4_t __b)
21074{
21075 return __builtin_aarch64_fmulxv4sf (__a, __b);
21076}
21077
a063e204
TC
21078__extension__ extern __inline float64x1_t
21079__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
496ea87d
BB
21080vmulx_f64 (float64x1_t __a, float64x1_t __b)
21081{
21082 return (float64x1_t) {__builtin_aarch64_fmulxdf (__a[0], __b[0])};
21083}
21084
a063e204
TC
21085__extension__ extern __inline float64x2_t
21086__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
496ea87d
BB
21087vmulxq_f64 (float64x2_t __a, float64x2_t __b)
21088{
21089 return __builtin_aarch64_fmulxv2df (__a, __b);
21090}
21091
a063e204
TC
21092__extension__ extern __inline float32_t
21093__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
496ea87d
BB
21094vmulxs_f32 (float32_t __a, float32_t __b)
21095{
21096 return __builtin_aarch64_fmulxsf (__a, __b);
21097}
21098
a063e204
TC
21099__extension__ extern __inline float64_t
21100__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
496ea87d
BB
21101vmulxd_f64 (float64_t __a, float64_t __b)
21102{
21103 return __builtin_aarch64_fmulxdf (__a, __b);
21104}
43e9d192 21105
a063e204
TC
21106__extension__ extern __inline float32x2_t
21107__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9030a4d3
BB
21108vmulx_lane_f32 (float32x2_t __a, float32x2_t __v, const int __lane)
21109{
21110 return vmulx_f32 (__a, __aarch64_vdup_lane_f32 (__v, __lane));
21111}
21112
a063e204
TC
21113__extension__ extern __inline float64x1_t
21114__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9030a4d3
BB
21115vmulx_lane_f64 (float64x1_t __a, float64x1_t __v, const int __lane)
21116{
21117 return vmulx_f64 (__a, __aarch64_vdup_lane_f64 (__v, __lane));
21118}
21119
a063e204
TC
21120__extension__ extern __inline float32x4_t
21121__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9030a4d3
BB
21122vmulxq_lane_f32 (float32x4_t __a, float32x2_t __v, const int __lane)
21123{
21124 return vmulxq_f32 (__a, __aarch64_vdupq_lane_f32 (__v, __lane));
21125}
21126
a063e204
TC
21127__extension__ extern __inline float64x2_t
21128__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9030a4d3
BB
21129vmulxq_lane_f64 (float64x2_t __a, float64x1_t __v, const int __lane)
21130{
21131 return vmulxq_f64 (__a, __aarch64_vdupq_lane_f64 (__v, __lane));
21132}
21133
a063e204
TC
21134__extension__ extern __inline float32x2_t
21135__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9030a4d3
BB
21136vmulx_laneq_f32 (float32x2_t __a, float32x4_t __v, const int __lane)
21137{
21138 return vmulx_f32 (__a, __aarch64_vdup_laneq_f32 (__v, __lane));
21139}
21140
a063e204
TC
21141__extension__ extern __inline float64x1_t
21142__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9030a4d3
BB
21143vmulx_laneq_f64 (float64x1_t __a, float64x2_t __v, const int __lane)
21144{
21145 return vmulx_f64 (__a, __aarch64_vdup_laneq_f64 (__v, __lane));
21146}
21147
a063e204
TC
21148__extension__ extern __inline float32x4_t
21149__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9030a4d3
BB
21150vmulxq_laneq_f32 (float32x4_t __a, float32x4_t __v, const int __lane)
21151{
21152 return vmulxq_f32 (__a, __aarch64_vdupq_laneq_f32 (__v, __lane));
21153}
21154
a063e204
TC
21155__extension__ extern __inline float64x2_t
21156__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9030a4d3
BB
21157vmulxq_laneq_f64 (float64x2_t __a, float64x2_t __v, const int __lane)
21158{
21159 return vmulxq_f64 (__a, __aarch64_vdupq_laneq_f64 (__v, __lane));
21160}
21161
a063e204
TC
21162__extension__ extern __inline float32_t
21163__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9030a4d3
BB
21164vmulxs_lane_f32 (float32_t __a, float32x2_t __v, const int __lane)
21165{
21166 return vmulxs_f32 (__a, __aarch64_vget_lane_any (__v, __lane));
21167}
21168
a063e204
TC
21169__extension__ extern __inline float32_t
21170__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9030a4d3
BB
21171vmulxs_laneq_f32 (float32_t __a, float32x4_t __v, const int __lane)
21172{
21173 return vmulxs_f32 (__a, __aarch64_vget_lane_any (__v, __lane));
21174}
21175
a063e204
TC
21176__extension__ extern __inline float64_t
21177__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9030a4d3
BB
21178vmulxd_lane_f64 (float64_t __a, float64x1_t __v, const int __lane)
21179{
21180 return vmulxd_f64 (__a, __aarch64_vget_lane_any (__v, __lane));
21181}
21182
a063e204
TC
21183__extension__ extern __inline float64_t
21184__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9030a4d3
BB
21185vmulxd_laneq_f64 (float64_t __a, float64x2_t __v, const int __lane)
21186{
21187 return vmulxd_f64 (__a, __aarch64_vget_lane_any (__v, __lane));
21188}
21189
7abab3d1
FY
21190/* vpmax */
21191
a063e204
TC
21192__extension__ extern __inline int8x8_t
21193__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21194vpmax_s8 (int8x8_t __a, int8x8_t __b)
7abab3d1 21195{
9a3afc35 21196 return __builtin_aarch64_smaxpv8qi (__a, __b);
7abab3d1
FY
21197}
21198
a063e204
TC
21199__extension__ extern __inline int16x4_t
21200__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21201vpmax_s16 (int16x4_t __a, int16x4_t __b)
7abab3d1 21202{
9a3afc35 21203 return __builtin_aarch64_smaxpv4hi (__a, __b);
7abab3d1
FY
21204}
21205
a063e204
TC
21206__extension__ extern __inline int32x2_t
21207__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21208vpmax_s32 (int32x2_t __a, int32x2_t __b)
7abab3d1 21209{
9a3afc35 21210 return __builtin_aarch64_smaxpv2si (__a, __b);
7abab3d1
FY
21211}
21212
a063e204
TC
21213__extension__ extern __inline uint8x8_t
21214__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21215vpmax_u8 (uint8x8_t __a, uint8x8_t __b)
7abab3d1 21216{
9a3afc35
KT
21217 return (uint8x8_t) __builtin_aarch64_umaxpv8qi ((int8x8_t) __a,
21218 (int8x8_t) __b);
7abab3d1
FY
21219}
21220
a063e204
TC
21221__extension__ extern __inline uint16x4_t
21222__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21223vpmax_u16 (uint16x4_t __a, uint16x4_t __b)
7abab3d1 21224{
9a3afc35
KT
21225 return (uint16x4_t) __builtin_aarch64_umaxpv4hi ((int16x4_t) __a,
21226 (int16x4_t) __b);
7abab3d1
FY
21227}
21228
a063e204
TC
21229__extension__ extern __inline uint32x2_t
21230__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21231vpmax_u32 (uint32x2_t __a, uint32x2_t __b)
7abab3d1 21232{
9a3afc35
KT
21233 return (uint32x2_t) __builtin_aarch64_umaxpv2si ((int32x2_t) __a,
21234 (int32x2_t) __b);
7abab3d1
FY
21235}
21236
a063e204
TC
21237__extension__ extern __inline int8x16_t
21238__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21239vpmaxq_s8 (int8x16_t __a, int8x16_t __b)
7abab3d1 21240{
9a3afc35 21241 return __builtin_aarch64_smaxpv16qi (__a, __b);
7abab3d1
FY
21242}
21243
a063e204
TC
21244__extension__ extern __inline int16x8_t
21245__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21246vpmaxq_s16 (int16x8_t __a, int16x8_t __b)
7abab3d1 21247{
9a3afc35 21248 return __builtin_aarch64_smaxpv8hi (__a, __b);
7abab3d1
FY
21249}
21250
a063e204
TC
21251__extension__ extern __inline int32x4_t
21252__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21253vpmaxq_s32 (int32x4_t __a, int32x4_t __b)
7abab3d1 21254{
9a3afc35 21255 return __builtin_aarch64_smaxpv4si (__a, __b);
7abab3d1
FY
21256}
21257
a063e204
TC
21258__extension__ extern __inline uint8x16_t
21259__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21260vpmaxq_u8 (uint8x16_t __a, uint8x16_t __b)
7abab3d1 21261{
9a3afc35
KT
21262 return (uint8x16_t) __builtin_aarch64_umaxpv16qi ((int8x16_t) __a,
21263 (int8x16_t) __b);
7abab3d1
FY
21264}
21265
a063e204
TC
21266__extension__ extern __inline uint16x8_t
21267__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21268vpmaxq_u16 (uint16x8_t __a, uint16x8_t __b)
7abab3d1 21269{
9a3afc35
KT
21270 return (uint16x8_t) __builtin_aarch64_umaxpv8hi ((int16x8_t) __a,
21271 (int16x8_t) __b);
7abab3d1
FY
21272}
21273
a063e204
TC
21274__extension__ extern __inline uint32x4_t
21275__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21276vpmaxq_u32 (uint32x4_t __a, uint32x4_t __b)
7abab3d1 21277{
9a3afc35
KT
21278 return (uint32x4_t) __builtin_aarch64_umaxpv4si ((int32x4_t) __a,
21279 (int32x4_t) __b);
7abab3d1
FY
21280}
21281
a063e204
TC
21282__extension__ extern __inline float32x2_t
21283__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21284vpmax_f32 (float32x2_t __a, float32x2_t __b)
7abab3d1 21285{
9a3afc35 21286 return __builtin_aarch64_smax_nanpv2sf (__a, __b);
7abab3d1
FY
21287}
21288
a063e204
TC
21289__extension__ extern __inline float32x4_t
21290__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21291vpmaxq_f32 (float32x4_t __a, float32x4_t __b)
7abab3d1 21292{
9a3afc35 21293 return __builtin_aarch64_smax_nanpv4sf (__a, __b);
7abab3d1
FY
21294}
21295
a063e204
TC
21296__extension__ extern __inline float64x2_t
21297__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21298vpmaxq_f64 (float64x2_t __a, float64x2_t __b)
7abab3d1 21299{
9a3afc35 21300 return __builtin_aarch64_smax_nanpv2df (__a, __b);
7abab3d1
FY
21301}
21302
a063e204
TC
21303__extension__ extern __inline float64_t
21304__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21305vpmaxqd_f64 (float64x2_t __a)
7abab3d1 21306{
9a3afc35 21307 return __builtin_aarch64_reduc_smax_nan_scal_v2df (__a);
7abab3d1
FY
21308}
21309
a063e204
TC
21310__extension__ extern __inline float32_t
21311__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21312vpmaxs_f32 (float32x2_t __a)
7abab3d1 21313{
9a3afc35 21314 return __builtin_aarch64_reduc_smax_nan_scal_v2sf (__a);
7abab3d1
FY
21315}
21316
21317/* vpmaxnm */
21318
a063e204
TC
21319__extension__ extern __inline float32x2_t
21320__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21321vpmaxnm_f32 (float32x2_t __a, float32x2_t __b)
7abab3d1 21322{
9a3afc35 21323 return __builtin_aarch64_smaxpv2sf (__a, __b);
7abab3d1
FY
21324}
21325
a063e204
TC
21326__extension__ extern __inline float32x4_t
21327__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21328vpmaxnmq_f32 (float32x4_t __a, float32x4_t __b)
7abab3d1 21329{
9a3afc35 21330 return __builtin_aarch64_smaxpv4sf (__a, __b);
7abab3d1
FY
21331}
21332
a063e204
TC
21333__extension__ extern __inline float64x2_t
21334__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21335vpmaxnmq_f64 (float64x2_t __a, float64x2_t __b)
7abab3d1 21336{
9a3afc35 21337 return __builtin_aarch64_smaxpv2df (__a, __b);
7abab3d1
FY
21338}
21339
a063e204
TC
21340__extension__ extern __inline float64_t
21341__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21342vpmaxnmqd_f64 (float64x2_t __a)
7abab3d1 21343{
9a3afc35 21344 return __builtin_aarch64_reduc_smax_scal_v2df (__a);
7abab3d1
FY
21345}
21346
a063e204
TC
21347__extension__ extern __inline float32_t
21348__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21349vpmaxnms_f32 (float32x2_t __a)
7abab3d1 21350{
9a3afc35 21351 return __builtin_aarch64_reduc_smax_scal_v2sf (__a);
7abab3d1
FY
21352}
21353
21354/* vpmin */
21355
a063e204
TC
21356__extension__ extern __inline int8x8_t
21357__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21358vpmin_s8 (int8x8_t __a, int8x8_t __b)
7abab3d1 21359{
9a3afc35 21360 return __builtin_aarch64_sminpv8qi (__a, __b);
7abab3d1
FY
21361}
21362
a063e204
TC
21363__extension__ extern __inline int16x4_t
21364__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21365vpmin_s16 (int16x4_t __a, int16x4_t __b)
7abab3d1 21366{
9a3afc35 21367 return __builtin_aarch64_sminpv4hi (__a, __b);
7abab3d1
FY
21368}
21369
a063e204
TC
21370__extension__ extern __inline int32x2_t
21371__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21372vpmin_s32 (int32x2_t __a, int32x2_t __b)
7abab3d1 21373{
9a3afc35 21374 return __builtin_aarch64_sminpv2si (__a, __b);
7abab3d1
FY
21375}
21376
a063e204
TC
21377__extension__ extern __inline uint8x8_t
21378__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21379vpmin_u8 (uint8x8_t __a, uint8x8_t __b)
7abab3d1 21380{
9a3afc35
KT
21381 return (uint8x8_t) __builtin_aarch64_uminpv8qi ((int8x8_t) __a,
21382 (int8x8_t) __b);
7abab3d1
FY
21383}
21384
a063e204
TC
21385__extension__ extern __inline uint16x4_t
21386__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21387vpmin_u16 (uint16x4_t __a, uint16x4_t __b)
7abab3d1 21388{
9a3afc35
KT
21389 return (uint16x4_t) __builtin_aarch64_uminpv4hi ((int16x4_t) __a,
21390 (int16x4_t) __b);
7abab3d1
FY
21391}
21392
a063e204
TC
21393__extension__ extern __inline uint32x2_t
21394__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21395vpmin_u32 (uint32x2_t __a, uint32x2_t __b)
7abab3d1 21396{
9a3afc35
KT
21397 return (uint32x2_t) __builtin_aarch64_uminpv2si ((int32x2_t) __a,
21398 (int32x2_t) __b);
7abab3d1
FY
21399}
21400
a063e204
TC
21401__extension__ extern __inline int8x16_t
21402__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21403vpminq_s8 (int8x16_t __a, int8x16_t __b)
7abab3d1 21404{
9a3afc35 21405 return __builtin_aarch64_sminpv16qi (__a, __b);
7abab3d1
FY
21406}
21407
a063e204
TC
21408__extension__ extern __inline int16x8_t
21409__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21410vpminq_s16 (int16x8_t __a, int16x8_t __b)
7abab3d1 21411{
9a3afc35 21412 return __builtin_aarch64_sminpv8hi (__a, __b);
7abab3d1
FY
21413}
21414
a063e204
TC
21415__extension__ extern __inline int32x4_t
21416__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21417vpminq_s32 (int32x4_t __a, int32x4_t __b)
7abab3d1 21418{
9a3afc35 21419 return __builtin_aarch64_sminpv4si (__a, __b);
7abab3d1
FY
21420}
21421
a063e204
TC
21422__extension__ extern __inline uint8x16_t
21423__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21424vpminq_u8 (uint8x16_t __a, uint8x16_t __b)
7abab3d1 21425{
9a3afc35
KT
21426 return (uint8x16_t) __builtin_aarch64_uminpv16qi ((int8x16_t) __a,
21427 (int8x16_t) __b);
7abab3d1
FY
21428}
21429
a063e204
TC
21430__extension__ extern __inline uint16x8_t
21431__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21432vpminq_u16 (uint16x8_t __a, uint16x8_t __b)
7abab3d1 21433{
9a3afc35
KT
21434 return (uint16x8_t) __builtin_aarch64_uminpv8hi ((int16x8_t) __a,
21435 (int16x8_t) __b);
7abab3d1
FY
21436}
21437
a063e204
TC
21438__extension__ extern __inline uint32x4_t
21439__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21440vpminq_u32 (uint32x4_t __a, uint32x4_t __b)
7abab3d1 21441{
9a3afc35
KT
21442 return (uint32x4_t) __builtin_aarch64_uminpv4si ((int32x4_t) __a,
21443 (int32x4_t) __b);
7abab3d1
FY
21444}
21445
a063e204
TC
21446__extension__ extern __inline float32x2_t
21447__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21448vpmin_f32 (float32x2_t __a, float32x2_t __b)
7abab3d1 21449{
9a3afc35 21450 return __builtin_aarch64_smin_nanpv2sf (__a, __b);
7abab3d1
FY
21451}
21452
a063e204
TC
21453__extension__ extern __inline float32x4_t
21454__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21455vpminq_f32 (float32x4_t __a, float32x4_t __b)
7abab3d1 21456{
9a3afc35 21457 return __builtin_aarch64_smin_nanpv4sf (__a, __b);
7abab3d1
FY
21458}
21459
a063e204
TC
21460__extension__ extern __inline float64x2_t
21461__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21462vpminq_f64 (float64x2_t __a, float64x2_t __b)
7abab3d1 21463{
9a3afc35 21464 return __builtin_aarch64_smin_nanpv2df (__a, __b);
7abab3d1
FY
21465}
21466
a063e204
TC
21467__extension__ extern __inline float64_t
21468__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21469vpminqd_f64 (float64x2_t __a)
7abab3d1 21470{
9a3afc35 21471 return __builtin_aarch64_reduc_smin_nan_scal_v2df (__a);
7abab3d1
FY
21472}
21473
a063e204
TC
21474__extension__ extern __inline float32_t
21475__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21476vpmins_f32 (float32x2_t __a)
7abab3d1 21477{
9a3afc35 21478 return __builtin_aarch64_reduc_smin_nan_scal_v2sf (__a);
7abab3d1
FY
21479}
21480
21481/* vpminnm */
21482
a063e204
TC
21483__extension__ extern __inline float32x2_t
21484__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21485vpminnm_f32 (float32x2_t __a, float32x2_t __b)
7abab3d1 21486{
9a3afc35 21487 return __builtin_aarch64_sminpv2sf (__a, __b);
7abab3d1
FY
21488}
21489
a063e204
TC
21490__extension__ extern __inline float32x4_t
21491__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21492vpminnmq_f32 (float32x4_t __a, float32x4_t __b)
7abab3d1 21493{
9a3afc35 21494 return __builtin_aarch64_sminpv4sf (__a, __b);
7abab3d1
FY
21495}
21496
a063e204
TC
21497__extension__ extern __inline float64x2_t
21498__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21499vpminnmq_f64 (float64x2_t __a, float64x2_t __b)
7abab3d1 21500{
9a3afc35 21501 return __builtin_aarch64_sminpv2df (__a, __b);
7abab3d1
FY
21502}
21503
a063e204
TC
21504__extension__ extern __inline float64_t
21505__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21506vpminnmqd_f64 (float64x2_t __a)
7abab3d1 21507{
9a3afc35 21508 return __builtin_aarch64_reduc_smin_scal_v2df (__a);
7abab3d1
FY
21509}
21510
a063e204
TC
21511__extension__ extern __inline float32_t
21512__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21513vpminnms_f32 (float32x2_t __a)
7abab3d1 21514{
9a3afc35 21515 return __builtin_aarch64_reduc_smin_scal_v2sf (__a);
7abab3d1
FY
21516}
21517
6dce23a8
JG
21518/* vmaxnm */
21519
a063e204
TC
21520__extension__ extern __inline float32x2_t
21521__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21522vmaxnm_f32 (float32x2_t __a, float32x2_t __b)
21523{
8beb9a0d 21524 return __builtin_aarch64_fmaxv2sf (__a, __b);
6dce23a8
JG
21525}
21526
a063e204
TC
21527__extension__ extern __inline float64x1_t
21528__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1efafef3
TC
21529vmaxnm_f64 (float64x1_t __a, float64x1_t __b)
21530{
21531 return (float64x1_t)
21532 { __builtin_aarch64_fmaxdf (vget_lane_f64 (__a, 0),
21533 vget_lane_f64 (__b, 0)) };
21534}
21535
a063e204
TC
21536__extension__ extern __inline float32x4_t
21537__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21538vmaxnmq_f32 (float32x4_t __a, float32x4_t __b)
21539{
8beb9a0d 21540 return __builtin_aarch64_fmaxv4sf (__a, __b);
6dce23a8
JG
21541}
21542
a063e204
TC
21543__extension__ extern __inline float64x2_t
21544__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21545vmaxnmq_f64 (float64x2_t __a, float64x2_t __b)
21546{
8beb9a0d 21547 return __builtin_aarch64_fmaxv2df (__a, __b);
6dce23a8
JG
21548}
21549
21550/* vmaxv */
21551
a063e204
TC
21552__extension__ extern __inline float32_t
21553__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21554vmaxv_f32 (float32x2_t __a)
21555{
64b0f928 21556 return __builtin_aarch64_reduc_smax_nan_scal_v2sf (__a);
6dce23a8
JG
21557}
21558
a063e204
TC
21559__extension__ extern __inline int8_t
21560__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21561vmaxv_s8 (int8x8_t __a)
21562{
64b0f928 21563 return __builtin_aarch64_reduc_smax_scal_v8qi (__a);
6dce23a8
JG
21564}
21565
a063e204
TC
21566__extension__ extern __inline int16_t
21567__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21568vmaxv_s16 (int16x4_t __a)
21569{
64b0f928 21570 return __builtin_aarch64_reduc_smax_scal_v4hi (__a);
6dce23a8
JG
21571}
21572
a063e204
TC
21573__extension__ extern __inline int32_t
21574__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21575vmaxv_s32 (int32x2_t __a)
21576{
64b0f928 21577 return __builtin_aarch64_reduc_smax_scal_v2si (__a);
6dce23a8
JG
21578}
21579
a063e204
TC
21580__extension__ extern __inline uint8_t
21581__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21582vmaxv_u8 (uint8x8_t __a)
21583{
64b0f928 21584 return __builtin_aarch64_reduc_umax_scal_v8qi_uu (__a);
6dce23a8
JG
21585}
21586
a063e204
TC
21587__extension__ extern __inline uint16_t
21588__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21589vmaxv_u16 (uint16x4_t __a)
21590{
64b0f928 21591 return __builtin_aarch64_reduc_umax_scal_v4hi_uu (__a);
6dce23a8
JG
21592}
21593
a063e204
TC
21594__extension__ extern __inline uint32_t
21595__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21596vmaxv_u32 (uint32x2_t __a)
21597{
64b0f928 21598 return __builtin_aarch64_reduc_umax_scal_v2si_uu (__a);
6dce23a8
JG
21599}
21600
a063e204
TC
21601__extension__ extern __inline float32_t
21602__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21603vmaxvq_f32 (float32x4_t __a)
21604{
64b0f928 21605 return __builtin_aarch64_reduc_smax_nan_scal_v4sf (__a);
6dce23a8
JG
21606}
21607
a063e204
TC
21608__extension__ extern __inline float64_t
21609__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21610vmaxvq_f64 (float64x2_t __a)
21611{
64b0f928 21612 return __builtin_aarch64_reduc_smax_nan_scal_v2df (__a);
6dce23a8
JG
21613}
21614
a063e204
TC
21615__extension__ extern __inline int8_t
21616__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21617vmaxvq_s8 (int8x16_t __a)
21618{
64b0f928 21619 return __builtin_aarch64_reduc_smax_scal_v16qi (__a);
6dce23a8
JG
21620}
21621
a063e204
TC
21622__extension__ extern __inline int16_t
21623__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21624vmaxvq_s16 (int16x8_t __a)
21625{
64b0f928 21626 return __builtin_aarch64_reduc_smax_scal_v8hi (__a);
6dce23a8
JG
21627}
21628
a063e204
TC
21629__extension__ extern __inline int32_t
21630__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21631vmaxvq_s32 (int32x4_t __a)
21632{
64b0f928 21633 return __builtin_aarch64_reduc_smax_scal_v4si (__a);
6dce23a8
JG
21634}
21635
a063e204
TC
21636__extension__ extern __inline uint8_t
21637__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21638vmaxvq_u8 (uint8x16_t __a)
21639{
64b0f928 21640 return __builtin_aarch64_reduc_umax_scal_v16qi_uu (__a);
6dce23a8
JG
21641}
21642
a063e204
TC
21643__extension__ extern __inline uint16_t
21644__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21645vmaxvq_u16 (uint16x8_t __a)
21646{
64b0f928 21647 return __builtin_aarch64_reduc_umax_scal_v8hi_uu (__a);
6dce23a8
JG
21648}
21649
a063e204
TC
21650__extension__ extern __inline uint32_t
21651__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21652vmaxvq_u32 (uint32x4_t __a)
21653{
64b0f928 21654 return __builtin_aarch64_reduc_umax_scal_v4si_uu (__a);
6dce23a8
JG
21655}
21656
21657/* vmaxnmv */
21658
a063e204
TC
21659__extension__ extern __inline float32_t
21660__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21661vmaxnmv_f32 (float32x2_t __a)
21662{
64b0f928 21663 return __builtin_aarch64_reduc_smax_scal_v2sf (__a);
6dce23a8
JG
21664}
21665
a063e204
TC
21666__extension__ extern __inline float32_t
21667__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21668vmaxnmvq_f32 (float32x4_t __a)
21669{
64b0f928 21670 return __builtin_aarch64_reduc_smax_scal_v4sf (__a);
6dce23a8
JG
21671}
21672
a063e204
TC
21673__extension__ extern __inline float64_t
21674__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21675vmaxnmvq_f64 (float64x2_t __a)
21676{
64b0f928 21677 return __builtin_aarch64_reduc_smax_scal_v2df (__a);
6dce23a8
JG
21678}
21679
21680/* vmin */
43e9d192 21681
a063e204
TC
21682__extension__ extern __inline float32x2_t
21683__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21684vmin_f32 (float32x2_t __a, float32x2_t __b)
21685{
998eaf97 21686 return __builtin_aarch64_smin_nanv2sf (__a, __b);
43e9d192
IB
21687}
21688
a063e204
TC
21689__extension__ extern __inline float64x1_t
21690__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1efafef3
TC
21691vmin_f64 (float64x1_t __a, float64x1_t __b)
21692{
21693 return (float64x1_t)
21694 { __builtin_aarch64_smin_nandf (vget_lane_f64 (__a, 0),
21695 vget_lane_f64 (__b, 0)) };
21696}
21697
a063e204
TC
21698__extension__ extern __inline int8x8_t
21699__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21700vmin_s8 (int8x8_t __a, int8x8_t __b)
21701{
21702 return __builtin_aarch64_sminv8qi (__a, __b);
21703}
21704
a063e204
TC
21705__extension__ extern __inline int16x4_t
21706__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21707vmin_s16 (int16x4_t __a, int16x4_t __b)
21708{
21709 return __builtin_aarch64_sminv4hi (__a, __b);
21710}
21711
a063e204
TC
21712__extension__ extern __inline int32x2_t
21713__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21714vmin_s32 (int32x2_t __a, int32x2_t __b)
21715{
21716 return __builtin_aarch64_sminv2si (__a, __b);
21717}
21718
a063e204
TC
21719__extension__ extern __inline uint8x8_t
21720__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21721vmin_u8 (uint8x8_t __a, uint8x8_t __b)
21722{
21723 return (uint8x8_t) __builtin_aarch64_uminv8qi ((int8x8_t) __a,
21724 (int8x8_t) __b);
21725}
21726
a063e204
TC
21727__extension__ extern __inline uint16x4_t
21728__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21729vmin_u16 (uint16x4_t __a, uint16x4_t __b)
21730{
21731 return (uint16x4_t) __builtin_aarch64_uminv4hi ((int16x4_t) __a,
21732 (int16x4_t) __b);
21733}
21734
a063e204
TC
21735__extension__ extern __inline uint32x2_t
21736__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21737vmin_u32 (uint32x2_t __a, uint32x2_t __b)
21738{
21739 return (uint32x2_t) __builtin_aarch64_uminv2si ((int32x2_t) __a,
21740 (int32x2_t) __b);
21741}
21742
a063e204
TC
21743__extension__ extern __inline float32x4_t
21744__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21745vminq_f32 (float32x4_t __a, float32x4_t __b)
21746{
998eaf97 21747 return __builtin_aarch64_smin_nanv4sf (__a, __b);
43e9d192
IB
21748}
21749
a063e204
TC
21750__extension__ extern __inline float64x2_t
21751__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21752vminq_f64 (float64x2_t __a, float64x2_t __b)
21753{
998eaf97 21754 return __builtin_aarch64_smin_nanv2df (__a, __b);
43e9d192
IB
21755}
21756
a063e204
TC
21757__extension__ extern __inline int8x16_t
21758__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21759vminq_s8 (int8x16_t __a, int8x16_t __b)
21760{
21761 return __builtin_aarch64_sminv16qi (__a, __b);
21762}
21763
a063e204
TC
21764__extension__ extern __inline int16x8_t
21765__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21766vminq_s16 (int16x8_t __a, int16x8_t __b)
21767{
21768 return __builtin_aarch64_sminv8hi (__a, __b);
21769}
21770
a063e204
TC
21771__extension__ extern __inline int32x4_t
21772__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21773vminq_s32 (int32x4_t __a, int32x4_t __b)
21774{
21775 return __builtin_aarch64_sminv4si (__a, __b);
21776}
21777
a063e204
TC
21778__extension__ extern __inline uint8x16_t
21779__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21780vminq_u8 (uint8x16_t __a, uint8x16_t __b)
21781{
21782 return (uint8x16_t) __builtin_aarch64_uminv16qi ((int8x16_t) __a,
21783 (int8x16_t) __b);
21784}
21785
a063e204
TC
21786__extension__ extern __inline uint16x8_t
21787__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21788vminq_u16 (uint16x8_t __a, uint16x8_t __b)
21789{
21790 return (uint16x8_t) __builtin_aarch64_uminv8hi ((int16x8_t) __a,
21791 (int16x8_t) __b);
21792}
21793
a063e204
TC
21794__extension__ extern __inline uint32x4_t
21795__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
21796vminq_u32 (uint32x4_t __a, uint32x4_t __b)
21797{
21798 return (uint32x4_t) __builtin_aarch64_uminv4si ((int32x4_t) __a,
21799 (int32x4_t) __b);
21800}
21801
6dce23a8
JG
21802/* vminnm */
21803
a063e204
TC
21804__extension__ extern __inline float32x2_t
21805__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21806vminnm_f32 (float32x2_t __a, float32x2_t __b)
21807{
8beb9a0d 21808 return __builtin_aarch64_fminv2sf (__a, __b);
6dce23a8
JG
21809}
21810
a063e204
TC
21811__extension__ extern __inline float64x1_t
21812__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1efafef3
TC
21813vminnm_f64 (float64x1_t __a, float64x1_t __b)
21814{
21815 return (float64x1_t)
1f19ed02 21816 { __builtin_aarch64_fmindf (vget_lane_f64 (__a, 0),
1efafef3
TC
21817 vget_lane_f64 (__b, 0)) };
21818}
21819
a063e204
TC
21820__extension__ extern __inline float32x4_t
21821__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21822vminnmq_f32 (float32x4_t __a, float32x4_t __b)
21823{
8beb9a0d 21824 return __builtin_aarch64_fminv4sf (__a, __b);
6dce23a8
JG
21825}
21826
a063e204
TC
21827__extension__ extern __inline float64x2_t
21828__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21829vminnmq_f64 (float64x2_t __a, float64x2_t __b)
21830{
8beb9a0d 21831 return __builtin_aarch64_fminv2df (__a, __b);
6dce23a8
JG
21832}
21833
21834/* vminv */
21835
a063e204
TC
21836__extension__ extern __inline float32_t
21837__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21838vminv_f32 (float32x2_t __a)
21839{
64b0f928 21840 return __builtin_aarch64_reduc_smin_nan_scal_v2sf (__a);
6dce23a8
JG
21841}
21842
a063e204
TC
21843__extension__ extern __inline int8_t
21844__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21845vminv_s8 (int8x8_t __a)
21846{
64b0f928 21847 return __builtin_aarch64_reduc_smin_scal_v8qi (__a);
6dce23a8
JG
21848}
21849
a063e204
TC
21850__extension__ extern __inline int16_t
21851__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21852vminv_s16 (int16x4_t __a)
21853{
64b0f928 21854 return __builtin_aarch64_reduc_smin_scal_v4hi (__a);
6dce23a8
JG
21855}
21856
a063e204
TC
21857__extension__ extern __inline int32_t
21858__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21859vminv_s32 (int32x2_t __a)
21860{
64b0f928 21861 return __builtin_aarch64_reduc_smin_scal_v2si (__a);
6dce23a8
JG
21862}
21863
a063e204
TC
21864__extension__ extern __inline uint8_t
21865__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21866vminv_u8 (uint8x8_t __a)
21867{
64b0f928 21868 return __builtin_aarch64_reduc_umin_scal_v8qi_uu (__a);
6dce23a8
JG
21869}
21870
a063e204
TC
21871__extension__ extern __inline uint16_t
21872__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21873vminv_u16 (uint16x4_t __a)
21874{
64b0f928 21875 return __builtin_aarch64_reduc_umin_scal_v4hi_uu (__a);
6dce23a8
JG
21876}
21877
a063e204
TC
21878__extension__ extern __inline uint32_t
21879__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21880vminv_u32 (uint32x2_t __a)
21881{
64b0f928 21882 return __builtin_aarch64_reduc_umin_scal_v2si_uu (__a);
6dce23a8
JG
21883}
21884
a063e204
TC
21885__extension__ extern __inline float32_t
21886__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21887vminvq_f32 (float32x4_t __a)
21888{
64b0f928 21889 return __builtin_aarch64_reduc_smin_nan_scal_v4sf (__a);
6dce23a8
JG
21890}
21891
a063e204
TC
21892__extension__ extern __inline float64_t
21893__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21894vminvq_f64 (float64x2_t __a)
21895{
64b0f928 21896 return __builtin_aarch64_reduc_smin_nan_scal_v2df (__a);
6dce23a8
JG
21897}
21898
a063e204
TC
21899__extension__ extern __inline int8_t
21900__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21901vminvq_s8 (int8x16_t __a)
21902{
64b0f928 21903 return __builtin_aarch64_reduc_smin_scal_v16qi (__a);
6dce23a8
JG
21904}
21905
a063e204
TC
21906__extension__ extern __inline int16_t
21907__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21908vminvq_s16 (int16x8_t __a)
21909{
64b0f928 21910 return __builtin_aarch64_reduc_smin_scal_v8hi (__a);
6dce23a8
JG
21911}
21912
a063e204
TC
21913__extension__ extern __inline int32_t
21914__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21915vminvq_s32 (int32x4_t __a)
21916{
64b0f928 21917 return __builtin_aarch64_reduc_smin_scal_v4si (__a);
6dce23a8
JG
21918}
21919
a063e204
TC
21920__extension__ extern __inline uint8_t
21921__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21922vminvq_u8 (uint8x16_t __a)
21923{
64b0f928 21924 return __builtin_aarch64_reduc_umin_scal_v16qi_uu (__a);
6dce23a8
JG
21925}
21926
a063e204
TC
21927__extension__ extern __inline uint16_t
21928__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21929vminvq_u16 (uint16x8_t __a)
21930{
64b0f928 21931 return __builtin_aarch64_reduc_umin_scal_v8hi_uu (__a);
6dce23a8
JG
21932}
21933
a063e204
TC
21934__extension__ extern __inline uint32_t
21935__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21936vminvq_u32 (uint32x4_t __a)
21937{
64b0f928 21938 return __builtin_aarch64_reduc_umin_scal_v4si_uu (__a);
6dce23a8
JG
21939}
21940
21941/* vminnmv */
21942
a063e204
TC
21943__extension__ extern __inline float32_t
21944__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21945vminnmv_f32 (float32x2_t __a)
21946{
64b0f928 21947 return __builtin_aarch64_reduc_smin_scal_v2sf (__a);
6dce23a8
JG
21948}
21949
a063e204
TC
21950__extension__ extern __inline float32_t
21951__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21952vminnmvq_f32 (float32x4_t __a)
21953{
64b0f928 21954 return __builtin_aarch64_reduc_smin_scal_v4sf (__a);
6dce23a8
JG
21955}
21956
a063e204
TC
21957__extension__ extern __inline float64_t
21958__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6dce23a8
JG
21959vminnmvq_f64 (float64x2_t __a)
21960{
64b0f928 21961 return __builtin_aarch64_reduc_smin_scal_v2df (__a);
6dce23a8
JG
21962}
21963
43e9d192
IB
21964/* vmla */
21965
a063e204
TC
21966__extension__ extern __inline float32x2_t
21967__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21968vmla_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c)
43e9d192 21969{
9a3afc35 21970 return __a + __b * __c;
43e9d192
IB
21971}
21972
a063e204
TC
21973__extension__ extern __inline float64x1_t
21974__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1f960ced
KT
21975vmla_f64 (float64x1_t __a, float64x1_t __b, float64x1_t __c)
21976{
21977 return __a + __b * __c;
21978}
21979
a063e204
TC
21980__extension__ extern __inline float32x4_t
21981__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21982vmlaq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
43e9d192 21983{
9a3afc35 21984 return __a + __b * __c;
43e9d192
IB
21985}
21986
a063e204
TC
21987__extension__ extern __inline float64x2_t
21988__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 21989vmlaq_f64 (float64x2_t __a, float64x2_t __b, float64x2_t __c)
43e9d192 21990{
9a3afc35 21991 return __a + __b * __c;
43e9d192
IB
21992}
21993
828e70c1
JG
21994/* vmla_lane */
21995
a063e204
TC
21996__extension__ extern __inline float32x2_t
21997__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
21998vmla_lane_f32 (float32x2_t __a, float32x2_t __b,
21999 float32x2_t __c, const int __lane)
22000{
ed225d0c 22001 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22002}
22003
a063e204
TC
22004__extension__ extern __inline int16x4_t
22005__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22006vmla_lane_s16 (int16x4_t __a, int16x4_t __b,
22007 int16x4_t __c, const int __lane)
22008{
ed225d0c 22009 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22010}
22011
a063e204
TC
22012__extension__ extern __inline int32x2_t
22013__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22014vmla_lane_s32 (int32x2_t __a, int32x2_t __b,
22015 int32x2_t __c, const int __lane)
22016{
ed225d0c 22017 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22018}
22019
a063e204
TC
22020__extension__ extern __inline uint16x4_t
22021__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22022vmla_lane_u16 (uint16x4_t __a, uint16x4_t __b,
22023 uint16x4_t __c, const int __lane)
22024{
ed225d0c 22025 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22026}
22027
a063e204
TC
22028__extension__ extern __inline uint32x2_t
22029__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22030vmla_lane_u32 (uint32x2_t __a, uint32x2_t __b,
22031 uint32x2_t __c, const int __lane)
22032{
ed225d0c 22033 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22034}
22035
22036/* vmla_laneq */
22037
a063e204
TC
22038__extension__ extern __inline float32x2_t
22039__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22040vmla_laneq_f32 (float32x2_t __a, float32x2_t __b,
22041 float32x4_t __c, const int __lane)
22042{
ed225d0c 22043 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22044}
22045
a063e204
TC
22046__extension__ extern __inline int16x4_t
22047__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22048vmla_laneq_s16 (int16x4_t __a, int16x4_t __b,
22049 int16x8_t __c, const int __lane)
22050{
ed225d0c 22051 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22052}
22053
a063e204
TC
22054__extension__ extern __inline int32x2_t
22055__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22056vmla_laneq_s32 (int32x2_t __a, int32x2_t __b,
22057 int32x4_t __c, const int __lane)
22058{
ed225d0c 22059 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22060}
22061
a063e204
TC
22062__extension__ extern __inline uint16x4_t
22063__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22064vmla_laneq_u16 (uint16x4_t __a, uint16x4_t __b,
22065 uint16x8_t __c, const int __lane)
22066{
ed225d0c 22067 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22068}
22069
a063e204
TC
22070__extension__ extern __inline uint32x2_t
22071__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22072vmla_laneq_u32 (uint32x2_t __a, uint32x2_t __b,
22073 uint32x4_t __c, const int __lane)
22074{
ed225d0c 22075 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22076}
22077
22078/* vmlaq_lane */
22079
a063e204
TC
22080__extension__ extern __inline float32x4_t
22081__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22082vmlaq_lane_f32 (float32x4_t __a, float32x4_t __b,
22083 float32x2_t __c, const int __lane)
22084{
ed225d0c 22085 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22086}
22087
a063e204
TC
22088__extension__ extern __inline int16x8_t
22089__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22090vmlaq_lane_s16 (int16x8_t __a, int16x8_t __b,
22091 int16x4_t __c, const int __lane)
22092{
ed225d0c 22093 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22094}
22095
a063e204
TC
22096__extension__ extern __inline int32x4_t
22097__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22098vmlaq_lane_s32 (int32x4_t __a, int32x4_t __b,
22099 int32x2_t __c, const int __lane)
22100{
ed225d0c 22101 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22102}
22103
a063e204
TC
22104__extension__ extern __inline uint16x8_t
22105__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22106vmlaq_lane_u16 (uint16x8_t __a, uint16x8_t __b,
22107 uint16x4_t __c, const int __lane)
22108{
ed225d0c 22109 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22110}
22111
a063e204
TC
22112__extension__ extern __inline uint32x4_t
22113__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22114vmlaq_lane_u32 (uint32x4_t __a, uint32x4_t __b,
22115 uint32x2_t __c, const int __lane)
22116{
ed225d0c 22117 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22118}
22119
22120 /* vmlaq_laneq */
22121
a063e204
TC
22122__extension__ extern __inline float32x4_t
22123__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22124vmlaq_laneq_f32 (float32x4_t __a, float32x4_t __b,
22125 float32x4_t __c, const int __lane)
22126{
ed225d0c 22127 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22128}
22129
a063e204
TC
22130__extension__ extern __inline int16x8_t
22131__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22132vmlaq_laneq_s16 (int16x8_t __a, int16x8_t __b,
22133 int16x8_t __c, const int __lane)
22134{
ed225d0c 22135 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22136}
22137
a063e204
TC
22138__extension__ extern __inline int32x4_t
22139__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22140vmlaq_laneq_s32 (int32x4_t __a, int32x4_t __b,
22141 int32x4_t __c, const int __lane)
22142{
ed225d0c 22143 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22144}
22145
a063e204
TC
22146__extension__ extern __inline uint16x8_t
22147__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22148vmlaq_laneq_u16 (uint16x8_t __a, uint16x8_t __b,
22149 uint16x8_t __c, const int __lane)
22150{
ed225d0c 22151 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22152}
22153
a063e204
TC
22154__extension__ extern __inline uint32x4_t
22155__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22156vmlaq_laneq_u32 (uint32x4_t __a, uint32x4_t __b,
22157 uint32x4_t __c, const int __lane)
22158{
ed225d0c 22159 return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22160}
22161
22162/* vmls */
22163
a063e204
TC
22164__extension__ extern __inline float32x2_t
22165__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 22166vmls_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c)
43e9d192 22167{
9a3afc35 22168 return __a - __b * __c;
43e9d192
IB
22169}
22170
a063e204
TC
22171__extension__ extern __inline float64x1_t
22172__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1f960ced
KT
22173vmls_f64 (float64x1_t __a, float64x1_t __b, float64x1_t __c)
22174{
22175 return __a - __b * __c;
22176}
22177
a063e204
TC
22178__extension__ extern __inline float32x4_t
22179__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 22180vmlsq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
43e9d192 22181{
9a3afc35 22182 return __a - __b * __c;
43e9d192
IB
22183}
22184
a063e204
TC
22185__extension__ extern __inline float64x2_t
22186__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 22187vmlsq_f64 (float64x2_t __a, float64x2_t __b, float64x2_t __c)
43e9d192 22188{
9a3afc35 22189 return __a - __b * __c;
43e9d192
IB
22190}
22191
828e70c1
JG
22192/* vmls_lane */
22193
a063e204
TC
22194__extension__ extern __inline float32x2_t
22195__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22196vmls_lane_f32 (float32x2_t __a, float32x2_t __b,
22197 float32x2_t __c, const int __lane)
22198{
ed225d0c 22199 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22200}
22201
a063e204
TC
22202__extension__ extern __inline int16x4_t
22203__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22204vmls_lane_s16 (int16x4_t __a, int16x4_t __b,
22205 int16x4_t __c, const int __lane)
22206{
ed225d0c 22207 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22208}
22209
a063e204
TC
22210__extension__ extern __inline int32x2_t
22211__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22212vmls_lane_s32 (int32x2_t __a, int32x2_t __b,
22213 int32x2_t __c, const int __lane)
22214{
ed225d0c 22215 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22216}
22217
a063e204
TC
22218__extension__ extern __inline uint16x4_t
22219__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22220vmls_lane_u16 (uint16x4_t __a, uint16x4_t __b,
22221 uint16x4_t __c, const int __lane)
22222{
ed225d0c 22223 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22224}
22225
a063e204
TC
22226__extension__ extern __inline uint32x2_t
22227__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22228vmls_lane_u32 (uint32x2_t __a, uint32x2_t __b,
22229 uint32x2_t __c, const int __lane)
22230{
ed225d0c 22231 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22232}
22233
22234/* vmls_laneq */
22235
a063e204
TC
22236__extension__ extern __inline float32x2_t
22237__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22238vmls_laneq_f32 (float32x2_t __a, float32x2_t __b,
22239 float32x4_t __c, const int __lane)
22240{
ed225d0c 22241 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22242}
22243
a063e204
TC
22244__extension__ extern __inline int16x4_t
22245__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22246vmls_laneq_s16 (int16x4_t __a, int16x4_t __b,
22247 int16x8_t __c, const int __lane)
22248{
ed225d0c 22249 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22250}
22251
a063e204
TC
22252__extension__ extern __inline int32x2_t
22253__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22254vmls_laneq_s32 (int32x2_t __a, int32x2_t __b,
22255 int32x4_t __c, const int __lane)
22256{
ed225d0c 22257 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22258}
22259
a063e204
TC
22260__extension__ extern __inline uint16x4_t
22261__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22262vmls_laneq_u16 (uint16x4_t __a, uint16x4_t __b,
22263 uint16x8_t __c, const int __lane)
22264{
ed225d0c 22265 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22266}
22267
a063e204
TC
22268__extension__ extern __inline uint32x2_t
22269__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22270vmls_laneq_u32 (uint32x2_t __a, uint32x2_t __b,
22271 uint32x4_t __c, const int __lane)
22272{
ed225d0c 22273 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22274}
22275
22276/* vmlsq_lane */
22277
a063e204
TC
22278__extension__ extern __inline float32x4_t
22279__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22280vmlsq_lane_f32 (float32x4_t __a, float32x4_t __b,
22281 float32x2_t __c, const int __lane)
22282{
ed225d0c 22283 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22284}
22285
a063e204
TC
22286__extension__ extern __inline int16x8_t
22287__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22288vmlsq_lane_s16 (int16x8_t __a, int16x8_t __b,
22289 int16x4_t __c, const int __lane)
22290{
ed225d0c 22291 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22292}
22293
a063e204
TC
22294__extension__ extern __inline int32x4_t
22295__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22296vmlsq_lane_s32 (int32x4_t __a, int32x4_t __b,
22297 int32x2_t __c, const int __lane)
22298{
ed225d0c 22299 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22300}
22301
a063e204
TC
22302__extension__ extern __inline uint16x8_t
22303__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22304vmlsq_lane_u16 (uint16x8_t __a, uint16x8_t __b,
22305 uint16x4_t __c, const int __lane)
22306{
ed225d0c 22307 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22308}
22309
a063e204
TC
22310__extension__ extern __inline uint32x4_t
22311__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22312vmlsq_lane_u32 (uint32x4_t __a, uint32x4_t __b,
22313 uint32x2_t __c, const int __lane)
22314{
ed225d0c 22315 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22316}
22317
22318 /* vmlsq_laneq */
22319
a063e204
TC
22320__extension__ extern __inline float32x4_t
22321__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22322vmlsq_laneq_f32 (float32x4_t __a, float32x4_t __b,
22323 float32x4_t __c, const int __lane)
22324{
ed225d0c 22325 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22326}
22327
a063e204
TC
22328__extension__ extern __inline int16x8_t
22329__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22330vmlsq_laneq_s16 (int16x8_t __a, int16x8_t __b,
22331 int16x8_t __c, const int __lane)
22332{
ed225d0c 22333 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22334}
22335
a063e204
TC
22336__extension__ extern __inline int32x4_t
22337__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22338vmlsq_laneq_s32 (int32x4_t __a, int32x4_t __b,
22339 int32x4_t __c, const int __lane)
22340{
ed225d0c 22341 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1 22342}
a063e204
TC
22343__extension__ extern __inline uint16x8_t
22344__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22345vmlsq_laneq_u16 (uint16x8_t __a, uint16x8_t __b,
22346 uint16x8_t __c, const int __lane)
22347{
ed225d0c 22348 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22349}
22350
a063e204
TC
22351__extension__ extern __inline uint32x4_t
22352__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
828e70c1
JG
22353vmlsq_laneq_u32 (uint32x4_t __a, uint32x4_t __b,
22354 uint32x4_t __c, const int __lane)
22355{
ed225d0c 22356 return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
828e70c1
JG
22357}
22358
1e09922c
AV
22359/* vmov_n_ */
22360
a063e204
TC
22361__extension__ extern __inline float16x4_t
22362__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
22363vmov_n_f16 (float16_t __a)
22364{
22365 return vdup_n_f16 (__a);
22366}
22367
a063e204
TC
22368__extension__ extern __inline float32x2_t
22369__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22370vmov_n_f32 (float32_t __a)
22371{
22372 return vdup_n_f32 (__a);
22373}
22374
a063e204
TC
22375__extension__ extern __inline float64x1_t
22376__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22377vmov_n_f64 (float64_t __a)
22378{
c6a29a09 22379 return (float64x1_t) {__a};
1e09922c
AV
22380}
22381
a063e204
TC
22382__extension__ extern __inline poly8x8_t
22383__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22384vmov_n_p8 (poly8_t __a)
22385{
22386 return vdup_n_p8 (__a);
22387}
22388
a063e204
TC
22389__extension__ extern __inline poly16x4_t
22390__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22391vmov_n_p16 (poly16_t __a)
22392{
22393 return vdup_n_p16 (__a);
22394}
22395
159b8724
TC
22396__extension__ extern __inline poly64x1_t
22397__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
22398vmov_n_p64 (poly64_t __a)
22399{
22400 return vdup_n_p64 (__a);
22401}
22402
a063e204
TC
22403__extension__ extern __inline int8x8_t
22404__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22405vmov_n_s8 (int8_t __a)
22406{
22407 return vdup_n_s8 (__a);
22408}
22409
a063e204
TC
22410__extension__ extern __inline int16x4_t
22411__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22412vmov_n_s16 (int16_t __a)
22413{
22414 return vdup_n_s16 (__a);
22415}
22416
a063e204
TC
22417__extension__ extern __inline int32x2_t
22418__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22419vmov_n_s32 (int32_t __a)
22420{
22421 return vdup_n_s32 (__a);
22422}
22423
a063e204
TC
22424__extension__ extern __inline int64x1_t
22425__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22426vmov_n_s64 (int64_t __a)
22427{
096c59be 22428 return (int64x1_t) {__a};
1e09922c
AV
22429}
22430
a063e204
TC
22431__extension__ extern __inline uint8x8_t
22432__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22433vmov_n_u8 (uint8_t __a)
22434{
22435 return vdup_n_u8 (__a);
22436}
22437
a063e204
TC
22438__extension__ extern __inline uint16x4_t
22439__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22440vmov_n_u16 (uint16_t __a)
22441{
22442 return vdup_n_u16 (__a);
22443}
22444
a063e204
TC
22445__extension__ extern __inline uint32x2_t
22446__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22447vmov_n_u32 (uint32_t __a)
22448{
22449 return vdup_n_u32 (__a);
22450}
22451
a063e204
TC
22452__extension__ extern __inline uint64x1_t
22453__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22454vmov_n_u64 (uint64_t __a)
22455{
096c59be 22456 return (uint64x1_t) {__a};
1e09922c
AV
22457}
22458
a063e204
TC
22459__extension__ extern __inline float16x8_t
22460__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
22461vmovq_n_f16 (float16_t __a)
22462{
22463 return vdupq_n_f16 (__a);
22464}
22465
a063e204
TC
22466__extension__ extern __inline float32x4_t
22467__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22468vmovq_n_f32 (float32_t __a)
22469{
22470 return vdupq_n_f32 (__a);
22471}
22472
a063e204
TC
22473__extension__ extern __inline float64x2_t
22474__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22475vmovq_n_f64 (float64_t __a)
22476{
22477 return vdupq_n_f64 (__a);
22478}
22479
a063e204
TC
22480__extension__ extern __inline poly8x16_t
22481__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22482vmovq_n_p8 (poly8_t __a)
22483{
22484 return vdupq_n_p8 (__a);
22485}
22486
a063e204
TC
22487__extension__ extern __inline poly16x8_t
22488__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22489vmovq_n_p16 (poly16_t __a)
22490{
22491 return vdupq_n_p16 (__a);
22492}
22493
159b8724
TC
22494__extension__ extern __inline poly64x2_t
22495__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
22496vmovq_n_p64 (poly64_t __a)
22497{
22498 return vdupq_n_p64 (__a);
22499}
22500
a063e204
TC
22501__extension__ extern __inline int8x16_t
22502__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22503vmovq_n_s8 (int8_t __a)
22504{
22505 return vdupq_n_s8 (__a);
22506}
22507
a063e204
TC
22508__extension__ extern __inline int16x8_t
22509__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22510vmovq_n_s16 (int16_t __a)
22511{
22512 return vdupq_n_s16 (__a);
22513}
22514
a063e204
TC
22515__extension__ extern __inline int32x4_t
22516__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22517vmovq_n_s32 (int32_t __a)
22518{
22519 return vdupq_n_s32 (__a);
22520}
22521
a063e204
TC
22522__extension__ extern __inline int64x2_t
22523__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22524vmovq_n_s64 (int64_t __a)
22525{
22526 return vdupq_n_s64 (__a);
22527}
22528
a063e204
TC
22529__extension__ extern __inline uint8x16_t
22530__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22531vmovq_n_u8 (uint8_t __a)
22532{
22533 return vdupq_n_u8 (__a);
22534}
22535
a063e204
TC
22536__extension__ extern __inline uint16x8_t
22537__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22538vmovq_n_u16 (uint16_t __a)
22539{
22540 return vdupq_n_u16 (__a);
22541}
22542
a063e204
TC
22543__extension__ extern __inline uint32x4_t
22544__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22545vmovq_n_u32 (uint32_t __a)
22546{
22547 return vdupq_n_u32 (__a);
22548}
22549
a063e204
TC
22550__extension__ extern __inline uint64x2_t
22551__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1e09922c
AV
22552vmovq_n_u64 (uint64_t __a)
22553{
22554 return vdupq_n_u64 (__a);
22555}
22556
779aea46
JG
22557/* vmul_lane */
22558
a063e204
TC
22559__extension__ extern __inline float32x2_t
22560__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22561vmul_lane_f32 (float32x2_t __a, float32x2_t __b, const int __lane)
22562{
ed225d0c 22563 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22564}
22565
a063e204
TC
22566__extension__ extern __inline float64x1_t
22567__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22568vmul_lane_f64 (float64x1_t __a, float64x1_t __b, const int __lane)
22569{
22570 return __a * __b;
22571}
22572
a063e204
TC
22573__extension__ extern __inline int16x4_t
22574__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22575vmul_lane_s16 (int16x4_t __a, int16x4_t __b, const int __lane)
22576{
ed225d0c 22577 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22578}
22579
a063e204
TC
22580__extension__ extern __inline int32x2_t
22581__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22582vmul_lane_s32 (int32x2_t __a, int32x2_t __b, const int __lane)
22583{
ed225d0c 22584 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22585}
22586
a063e204
TC
22587__extension__ extern __inline uint16x4_t
22588__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22589vmul_lane_u16 (uint16x4_t __a, uint16x4_t __b, const int __lane)
22590{
ed225d0c 22591 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22592}
22593
a063e204
TC
22594__extension__ extern __inline uint32x2_t
22595__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22596vmul_lane_u32 (uint32x2_t __a, uint32x2_t __b, const int __lane)
22597{
ed225d0c 22598 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22599}
22600
ada5287e
KT
22601/* vmuld_lane */
22602
a063e204
TC
22603__extension__ extern __inline float64_t
22604__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ada5287e
KT
22605vmuld_lane_f64 (float64_t __a, float64x1_t __b, const int __lane)
22606{
ed225d0c 22607 return __a * __aarch64_vget_lane_any (__b, __lane);
ada5287e
KT
22608}
22609
a063e204
TC
22610__extension__ extern __inline float64_t
22611__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ada5287e
KT
22612vmuld_laneq_f64 (float64_t __a, float64x2_t __b, const int __lane)
22613{
ed225d0c 22614 return __a * __aarch64_vget_lane_any (__b, __lane);
ada5287e
KT
22615}
22616
22617/* vmuls_lane */
22618
a063e204
TC
22619__extension__ extern __inline float32_t
22620__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ada5287e
KT
22621vmuls_lane_f32 (float32_t __a, float32x2_t __b, const int __lane)
22622{
ed225d0c 22623 return __a * __aarch64_vget_lane_any (__b, __lane);
ada5287e
KT
22624}
22625
a063e204
TC
22626__extension__ extern __inline float32_t
22627__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ada5287e
KT
22628vmuls_laneq_f32 (float32_t __a, float32x4_t __b, const int __lane)
22629{
ed225d0c 22630 return __a * __aarch64_vget_lane_any (__b, __lane);
ada5287e
KT
22631}
22632
779aea46
JG
22633/* vmul_laneq */
22634
a063e204
TC
22635__extension__ extern __inline float32x2_t
22636__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22637vmul_laneq_f32 (float32x2_t __a, float32x4_t __b, const int __lane)
22638{
ed225d0c 22639 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22640}
22641
a063e204
TC
22642__extension__ extern __inline float64x1_t
22643__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22644vmul_laneq_f64 (float64x1_t __a, float64x2_t __b, const int __lane)
22645{
ed225d0c 22646 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22647}
22648
a063e204
TC
22649__extension__ extern __inline int16x4_t
22650__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22651vmul_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __lane)
22652{
ed225d0c 22653 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22654}
22655
a063e204
TC
22656__extension__ extern __inline int32x2_t
22657__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22658vmul_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __lane)
22659{
ed225d0c 22660 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22661}
22662
a063e204
TC
22663__extension__ extern __inline uint16x4_t
22664__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22665vmul_laneq_u16 (uint16x4_t __a, uint16x8_t __b, const int __lane)
22666{
ed225d0c 22667 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22668}
22669
a063e204
TC
22670__extension__ extern __inline uint32x2_t
22671__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22672vmul_laneq_u32 (uint32x2_t __a, uint32x4_t __b, const int __lane)
22673{
ed225d0c 22674 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22675}
22676
ada5287e
KT
22677/* vmul_n */
22678
a063e204
TC
22679__extension__ extern __inline float64x1_t
22680__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ada5287e
KT
22681vmul_n_f64 (float64x1_t __a, float64_t __b)
22682{
22683 return (float64x1_t) { vget_lane_f64 (__a, 0) * __b };
22684}
22685
779aea46
JG
22686/* vmulq_lane */
22687
a063e204
TC
22688__extension__ extern __inline float32x4_t
22689__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22690vmulq_lane_f32 (float32x4_t __a, float32x2_t __b, const int __lane)
22691{
ed225d0c 22692 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22693}
22694
a063e204
TC
22695__extension__ extern __inline float64x2_t
22696__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22697vmulq_lane_f64 (float64x2_t __a, float64x1_t __b, const int __lane)
22698{
661fce82 22699 __AARCH64_LANE_CHECK (__a, __lane);
c6a29a09 22700 return __a * __b[0];
779aea46
JG
22701}
22702
a063e204
TC
22703__extension__ extern __inline int16x8_t
22704__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22705vmulq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __lane)
22706{
ed225d0c 22707 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22708}
22709
a063e204
TC
22710__extension__ extern __inline int32x4_t
22711__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22712vmulq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __lane)
22713{
ed225d0c 22714 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22715}
22716
a063e204
TC
22717__extension__ extern __inline uint16x8_t
22718__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22719vmulq_lane_u16 (uint16x8_t __a, uint16x4_t __b, const int __lane)
22720{
ed225d0c 22721 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22722}
22723
a063e204
TC
22724__extension__ extern __inline uint32x4_t
22725__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22726vmulq_lane_u32 (uint32x4_t __a, uint32x2_t __b, const int __lane)
22727{
ed225d0c 22728 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22729}
22730
22731/* vmulq_laneq */
22732
a063e204
TC
22733__extension__ extern __inline float32x4_t
22734__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22735vmulq_laneq_f32 (float32x4_t __a, float32x4_t __b, const int __lane)
22736{
ed225d0c 22737 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22738}
22739
a063e204
TC
22740__extension__ extern __inline float64x2_t
22741__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22742vmulq_laneq_f64 (float64x2_t __a, float64x2_t __b, const int __lane)
22743{
ed225d0c 22744 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22745}
22746
a063e204
TC
22747__extension__ extern __inline int16x8_t
22748__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22749vmulq_laneq_s16 (int16x8_t __a, int16x8_t __b, const int __lane)
22750{
ed225d0c 22751 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22752}
22753
a063e204
TC
22754__extension__ extern __inline int32x4_t
22755__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22756vmulq_laneq_s32 (int32x4_t __a, int32x4_t __b, const int __lane)
22757{
ed225d0c 22758 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22759}
22760
a063e204
TC
22761__extension__ extern __inline uint16x8_t
22762__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22763vmulq_laneq_u16 (uint16x8_t __a, uint16x8_t __b, const int __lane)
22764{
ed225d0c 22765 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22766}
22767
a063e204
TC
22768__extension__ extern __inline uint32x4_t
22769__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
779aea46
JG
22770vmulq_laneq_u32 (uint32x4_t __a, uint32x4_t __b, const int __lane)
22771{
ed225d0c 22772 return __a * __aarch64_vget_lane_any (__b, __lane);
779aea46
JG
22773}
22774
daab4562
JW
22775/* vmul_n. */
22776
a063e204
TC
22777__extension__ extern __inline float32x2_t
22778__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daab4562
JW
22779vmul_n_f32 (float32x2_t __a, float32_t __b)
22780{
22781 return __a * __b;
22782}
22783
a063e204
TC
22784__extension__ extern __inline float32x4_t
22785__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daab4562
JW
22786vmulq_n_f32 (float32x4_t __a, float32_t __b)
22787{
22788 return __a * __b;
22789}
22790
a063e204
TC
22791__extension__ extern __inline float64x2_t
22792__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daab4562
JW
22793vmulq_n_f64 (float64x2_t __a, float64_t __b)
22794{
22795 return __a * __b;
22796}
22797
a063e204
TC
22798__extension__ extern __inline int16x4_t
22799__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daab4562
JW
22800vmul_n_s16 (int16x4_t __a, int16_t __b)
22801{
22802 return __a * __b;
22803}
22804
a063e204
TC
22805__extension__ extern __inline int16x8_t
22806__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daab4562
JW
22807vmulq_n_s16 (int16x8_t __a, int16_t __b)
22808{
22809 return __a * __b;
22810}
22811
a063e204
TC
22812__extension__ extern __inline int32x2_t
22813__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daab4562
JW
22814vmul_n_s32 (int32x2_t __a, int32_t __b)
22815{
22816 return __a * __b;
22817}
22818
a063e204
TC
22819__extension__ extern __inline int32x4_t
22820__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daab4562
JW
22821vmulq_n_s32 (int32x4_t __a, int32_t __b)
22822{
22823 return __a * __b;
22824}
22825
a063e204
TC
22826__extension__ extern __inline uint16x4_t
22827__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daab4562
JW
22828vmul_n_u16 (uint16x4_t __a, uint16_t __b)
22829{
22830 return __a * __b;
22831}
22832
a063e204
TC
22833__extension__ extern __inline uint16x8_t
22834__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daab4562
JW
22835vmulq_n_u16 (uint16x8_t __a, uint16_t __b)
22836{
22837 return __a * __b;
22838}
22839
a063e204
TC
22840__extension__ extern __inline uint32x2_t
22841__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daab4562
JW
22842vmul_n_u32 (uint32x2_t __a, uint32_t __b)
22843{
22844 return __a * __b;
22845}
22846
a063e204
TC
22847__extension__ extern __inline uint32x4_t
22848__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daab4562
JW
22849vmulq_n_u32 (uint32x4_t __a, uint32_t __b)
22850{
22851 return __a * __b;
22852}
22853
6f2c6623
JW
22854/* vmvn */
22855
a063e204
TC
22856__extension__ extern __inline poly8x8_t
22857__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6f2c6623
JW
22858vmvn_p8 (poly8x8_t __a)
22859{
22860 return (poly8x8_t) ~((int8x8_t) __a);
22861}
22862
a063e204
TC
22863__extension__ extern __inline int8x8_t
22864__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6f2c6623
JW
22865vmvn_s8 (int8x8_t __a)
22866{
22867 return ~__a;
22868}
22869
a063e204
TC
22870__extension__ extern __inline int16x4_t
22871__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6f2c6623
JW
22872vmvn_s16 (int16x4_t __a)
22873{
22874 return ~__a;
22875}
22876
a063e204
TC
22877__extension__ extern __inline int32x2_t
22878__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6f2c6623
JW
22879vmvn_s32 (int32x2_t __a)
22880{
22881 return ~__a;
22882}
22883
a063e204
TC
22884__extension__ extern __inline uint8x8_t
22885__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6f2c6623
JW
22886vmvn_u8 (uint8x8_t __a)
22887{
22888 return ~__a;
22889}
22890
a063e204
TC
22891__extension__ extern __inline uint16x4_t
22892__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6f2c6623
JW
22893vmvn_u16 (uint16x4_t __a)
22894{
22895 return ~__a;
22896}
22897
a063e204
TC
22898__extension__ extern __inline uint32x2_t
22899__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6f2c6623
JW
22900vmvn_u32 (uint32x2_t __a)
22901{
22902 return ~__a;
22903}
22904
a063e204
TC
22905__extension__ extern __inline poly8x16_t
22906__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6f2c6623
JW
22907vmvnq_p8 (poly8x16_t __a)
22908{
22909 return (poly8x16_t) ~((int8x16_t) __a);
22910}
22911
a063e204
TC
22912__extension__ extern __inline int8x16_t
22913__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6f2c6623
JW
22914vmvnq_s8 (int8x16_t __a)
22915{
22916 return ~__a;
22917}
22918
a063e204
TC
22919__extension__ extern __inline int16x8_t
22920__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6f2c6623
JW
22921vmvnq_s16 (int16x8_t __a)
22922{
22923 return ~__a;
22924}
22925
a063e204
TC
22926__extension__ extern __inline int32x4_t
22927__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6f2c6623
JW
22928vmvnq_s32 (int32x4_t __a)
22929{
22930 return ~__a;
22931}
22932
a063e204
TC
22933__extension__ extern __inline uint8x16_t
22934__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6f2c6623
JW
22935vmvnq_u8 (uint8x16_t __a)
22936{
22937 return ~__a;
22938}
22939
a063e204
TC
22940__extension__ extern __inline uint16x8_t
22941__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6f2c6623
JW
22942vmvnq_u16 (uint16x8_t __a)
22943{
22944 return ~__a;
22945}
22946
a063e204
TC
22947__extension__ extern __inline uint32x4_t
22948__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6f2c6623
JW
22949vmvnq_u32 (uint32x4_t __a)
22950{
22951 return ~__a;
22952}
22953
7df625a6
AV
22954/* vneg */
22955
a063e204
TC
22956__extension__ extern __inline float32x2_t
22957__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7df625a6
AV
22958vneg_f32 (float32x2_t __a)
22959{
22960 return -__a;
22961}
22962
a063e204
TC
22963__extension__ extern __inline float64x1_t
22964__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7df625a6
AV
22965vneg_f64 (float64x1_t __a)
22966{
22967 return -__a;
22968}
22969
a063e204
TC
22970__extension__ extern __inline int8x8_t
22971__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7df625a6
AV
22972vneg_s8 (int8x8_t __a)
22973{
22974 return -__a;
22975}
22976
a063e204
TC
22977__extension__ extern __inline int16x4_t
22978__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7df625a6
AV
22979vneg_s16 (int16x4_t __a)
22980{
22981 return -__a;
22982}
22983
a063e204
TC
22984__extension__ extern __inline int32x2_t
22985__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7df625a6
AV
22986vneg_s32 (int32x2_t __a)
22987{
22988 return -__a;
22989}
22990
a063e204
TC
22991__extension__ extern __inline int64x1_t
22992__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7df625a6
AV
22993vneg_s64 (int64x1_t __a)
22994{
22995 return -__a;
22996}
22997
66da5b53
VL
22998/* According to the ACLE, the negative of the minimum (signed)
22999 value is itself. This leads to a semantics mismatch, as this is
23000 undefined behaviour in C. The value range predictor is not
23001 aware that the negation of a negative number can still be negative
23002 and it may try to fold the expression. See the test in
23003 gcc.target/aarch64/vnegd_s64.c for an example.
23004
23005 The cast below tricks the value range predictor to include
23006 INT64_MIN in the range it computes. So for x in the range
23007 [INT64_MIN, y] the range prediction after vnegd_s64 (x) will
23008 be ~[INT64_MIN + 1, y]. */
23009
23010__extension__ extern __inline int64_t
23011__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
23012vnegd_s64 (int64_t __a)
23013{
23014 return - (uint64_t) __a;
23015}
23016
a063e204
TC
23017__extension__ extern __inline float32x4_t
23018__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7df625a6
AV
23019vnegq_f32 (float32x4_t __a)
23020{
23021 return -__a;
23022}
23023
a063e204
TC
23024__extension__ extern __inline float64x2_t
23025__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7df625a6
AV
23026vnegq_f64 (float64x2_t __a)
23027{
23028 return -__a;
23029}
23030
a063e204
TC
23031__extension__ extern __inline int8x16_t
23032__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7df625a6
AV
23033vnegq_s8 (int8x16_t __a)
23034{
23035 return -__a;
23036}
23037
a063e204
TC
23038__extension__ extern __inline int16x8_t
23039__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7df625a6
AV
23040vnegq_s16 (int16x8_t __a)
23041{
23042 return -__a;
23043}
23044
a063e204
TC
23045__extension__ extern __inline int32x4_t
23046__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7df625a6
AV
23047vnegq_s32 (int32x4_t __a)
23048{
23049 return -__a;
23050}
23051
a063e204
TC
23052__extension__ extern __inline int64x2_t
23053__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7df625a6
AV
23054vnegq_s64 (int64x2_t __a)
23055{
23056 return -__a;
23057}
23058
9052a1e3
JG
23059/* vpadd */
23060
a063e204
TC
23061__extension__ extern __inline float32x2_t
23062__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3629030e
JW
23063vpadd_f32 (float32x2_t __a, float32x2_t __b)
23064{
23065 return __builtin_aarch64_faddpv2sf (__a, __b);
23066}
23067
a063e204
TC
23068__extension__ extern __inline float32x4_t
23069__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3629030e
JW
23070vpaddq_f32 (float32x4_t __a, float32x4_t __b)
23071{
23072 return __builtin_aarch64_faddpv4sf (__a, __b);
23073}
23074
a063e204
TC
23075__extension__ extern __inline float64x2_t
23076__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3629030e
JW
23077vpaddq_f64 (float64x2_t __a, float64x2_t __b)
23078{
23079 return __builtin_aarch64_faddpv2df (__a, __b);
23080}
23081
a063e204
TC
23082__extension__ extern __inline int8x8_t
23083__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9052a1e3
JG
23084vpadd_s8 (int8x8_t __a, int8x8_t __b)
23085{
23086 return __builtin_aarch64_addpv8qi (__a, __b);
23087}
23088
a063e204
TC
23089__extension__ extern __inline int16x4_t
23090__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9052a1e3
JG
23091vpadd_s16 (int16x4_t __a, int16x4_t __b)
23092{
23093 return __builtin_aarch64_addpv4hi (__a, __b);
23094}
23095
a063e204
TC
23096__extension__ extern __inline int32x2_t
23097__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9052a1e3
JG
23098vpadd_s32 (int32x2_t __a, int32x2_t __b)
23099{
23100 return __builtin_aarch64_addpv2si (__a, __b);
23101}
23102
a063e204
TC
23103__extension__ extern __inline uint8x8_t
23104__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9052a1e3
JG
23105vpadd_u8 (uint8x8_t __a, uint8x8_t __b)
23106{
23107 return (uint8x8_t) __builtin_aarch64_addpv8qi ((int8x8_t) __a,
23108 (int8x8_t) __b);
23109}
23110
a063e204
TC
23111__extension__ extern __inline uint16x4_t
23112__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9052a1e3
JG
23113vpadd_u16 (uint16x4_t __a, uint16x4_t __b)
23114{
23115 return (uint16x4_t) __builtin_aarch64_addpv4hi ((int16x4_t) __a,
23116 (int16x4_t) __b);
23117}
23118
a063e204
TC
23119__extension__ extern __inline uint32x2_t
23120__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9052a1e3
JG
23121vpadd_u32 (uint32x2_t __a, uint32x2_t __b)
23122{
23123 return (uint32x2_t) __builtin_aarch64_addpv2si ((int32x2_t) __a,
23124 (int32x2_t) __b);
23125}
23126
a063e204
TC
23127__extension__ extern __inline float32_t
23128__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
3629030e
JW
23129vpadds_f32 (float32x2_t __a)
23130{
23131 return __builtin_aarch64_reduc_plus_scal_v2sf (__a);
23132}
23133
a063e204
TC
23134__extension__ extern __inline float64_t
23135__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9052a1e3
JG
23136vpaddd_f64 (float64x2_t __a)
23137{
f5156c3e 23138 return __builtin_aarch64_reduc_plus_scal_v2df (__a);
9052a1e3
JG
23139}
23140
a063e204
TC
23141__extension__ extern __inline int64_t
23142__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9052a1e3
JG
23143vpaddd_s64 (int64x2_t __a)
23144{
23145 return __builtin_aarch64_addpdi (__a);
23146}
23147
a063e204
TC
23148__extension__ extern __inline uint64_t
23149__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9052a1e3
JG
23150vpaddd_u64 (uint64x2_t __a)
23151{
23152 return __builtin_aarch64_addpdi ((int64x2_t) __a);
23153}
23154
43e9d192
IB
23155/* vqabs */
23156
a063e204
TC
23157__extension__ extern __inline int64x2_t
23158__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23159vqabsq_s64 (int64x2_t __a)
23160{
23161 return (int64x2_t) __builtin_aarch64_sqabsv2di (__a);
23162}
23163
a063e204
TC
23164__extension__ extern __inline int8_t
23165__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23166vqabsb_s8 (int8_t __a)
43e9d192 23167{
02a0ec4a 23168 return (int8_t) __builtin_aarch64_sqabsqi (__a);
43e9d192
IB
23169}
23170
a063e204
TC
23171__extension__ extern __inline int16_t
23172__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23173vqabsh_s16 (int16_t __a)
43e9d192 23174{
02a0ec4a 23175 return (int16_t) __builtin_aarch64_sqabshi (__a);
43e9d192
IB
23176}
23177
a063e204
TC
23178__extension__ extern __inline int32_t
23179__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23180vqabss_s32 (int32_t __a)
43e9d192 23181{
02a0ec4a 23182 return (int32_t) __builtin_aarch64_sqabssi (__a);
43e9d192
IB
23183}
23184
a063e204
TC
23185__extension__ extern __inline int64_t
23186__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9551c7ec
AV
23187vqabsd_s64 (int64_t __a)
23188{
23189 return __builtin_aarch64_sqabsdi (__a);
23190}
23191
43e9d192
IB
23192/* vqadd */
23193
a063e204
TC
23194__extension__ extern __inline int8_t
23195__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23196vqaddb_s8 (int8_t __a, int8_t __b)
43e9d192 23197{
02a0ec4a 23198 return (int8_t) __builtin_aarch64_sqaddqi (__a, __b);
43e9d192
IB
23199}
23200
a063e204
TC
23201__extension__ extern __inline int16_t
23202__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23203vqaddh_s16 (int16_t __a, int16_t __b)
43e9d192 23204{
02a0ec4a 23205 return (int16_t) __builtin_aarch64_sqaddhi (__a, __b);
43e9d192
IB
23206}
23207
a063e204
TC
23208__extension__ extern __inline int32_t
23209__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23210vqadds_s32 (int32_t __a, int32_t __b)
43e9d192 23211{
02a0ec4a 23212 return (int32_t) __builtin_aarch64_sqaddsi (__a, __b);
43e9d192
IB
23213}
23214
a063e204
TC
23215__extension__ extern __inline int64_t
23216__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 23217vqaddd_s64 (int64_t __a, int64_t __b)
43e9d192 23218{
096c59be 23219 return __builtin_aarch64_sqadddi (__a, __b);
43e9d192
IB
23220}
23221
a063e204
TC
23222__extension__ extern __inline uint8_t
23223__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23224vqaddb_u8 (uint8_t __a, uint8_t __b)
43e9d192 23225{
02a0ec4a 23226 return (uint8_t) __builtin_aarch64_uqaddqi_uuu (__a, __b);
43e9d192
IB
23227}
23228
a063e204
TC
23229__extension__ extern __inline uint16_t
23230__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23231vqaddh_u16 (uint16_t __a, uint16_t __b)
43e9d192 23232{
02a0ec4a 23233 return (uint16_t) __builtin_aarch64_uqaddhi_uuu (__a, __b);
43e9d192
IB
23234}
23235
a063e204
TC
23236__extension__ extern __inline uint32_t
23237__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23238vqadds_u32 (uint32_t __a, uint32_t __b)
43e9d192 23239{
02a0ec4a 23240 return (uint32_t) __builtin_aarch64_uqaddsi_uuu (__a, __b);
43e9d192
IB
23241}
23242
a063e204
TC
23243__extension__ extern __inline uint64_t
23244__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 23245vqaddd_u64 (uint64_t __a, uint64_t __b)
43e9d192 23246{
096c59be 23247 return __builtin_aarch64_uqadddi_uuu (__a, __b);
43e9d192
IB
23248}
23249
23250/* vqdmlal */
23251
a063e204
TC
23252__extension__ extern __inline int32x4_t
23253__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23254vqdmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
23255{
23256 return __builtin_aarch64_sqdmlalv4hi (__a, __b, __c);
23257}
23258
a063e204
TC
23259__extension__ extern __inline int32x4_t
23260__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23261vqdmlal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
23262{
23263 return __builtin_aarch64_sqdmlal2v8hi (__a, __b, __c);
23264}
23265
a063e204
TC
23266__extension__ extern __inline int32x4_t
23267__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
278821f2 23268vqdmlal_high_lane_s16 (int32x4_t __a, int16x8_t __b, int16x4_t __c,
43e9d192
IB
23269 int const __d)
23270{
23271 return __builtin_aarch64_sqdmlal2_lanev8hi (__a, __b, __c, __d);
23272}
23273
a063e204
TC
23274__extension__ extern __inline int32x4_t
23275__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23276vqdmlal_high_laneq_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c,
23277 int const __d)
23278{
23279 return __builtin_aarch64_sqdmlal2_laneqv8hi (__a, __b, __c, __d);
23280}
23281
a063e204
TC
23282__extension__ extern __inline int32x4_t
23283__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23284vqdmlal_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)
23285{
23286 return __builtin_aarch64_sqdmlal2_nv8hi (__a, __b, __c);
23287}
23288
a063e204
TC
23289__extension__ extern __inline int32x4_t
23290__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23291vqdmlal_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c, int const __d)
23292{
278821f2 23293 return __builtin_aarch64_sqdmlal_lanev4hi (__a, __b, __c, __d);
43e9d192
IB
23294}
23295
a063e204
TC
23296__extension__ extern __inline int32x4_t
23297__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23298vqdmlal_laneq_s16 (int32x4_t __a, int16x4_t __b, int16x8_t __c, int const __d)
23299{
23300 return __builtin_aarch64_sqdmlal_laneqv4hi (__a, __b, __c, __d);
23301}
23302
a063e204
TC
23303__extension__ extern __inline int32x4_t
23304__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23305vqdmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
23306{
23307 return __builtin_aarch64_sqdmlal_nv4hi (__a, __b, __c);
23308}
23309
a063e204
TC
23310__extension__ extern __inline int64x2_t
23311__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23312vqdmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
23313{
23314 return __builtin_aarch64_sqdmlalv2si (__a, __b, __c);
23315}
23316
a063e204
TC
23317__extension__ extern __inline int64x2_t
23318__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23319vqdmlal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
23320{
23321 return __builtin_aarch64_sqdmlal2v4si (__a, __b, __c);
23322}
23323
a063e204
TC
23324__extension__ extern __inline int64x2_t
23325__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
278821f2 23326vqdmlal_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x2_t __c,
43e9d192
IB
23327 int const __d)
23328{
23329 return __builtin_aarch64_sqdmlal2_lanev4si (__a, __b, __c, __d);
23330}
23331
a063e204
TC
23332__extension__ extern __inline int64x2_t
23333__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23334vqdmlal_high_laneq_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c,
23335 int const __d)
23336{
23337 return __builtin_aarch64_sqdmlal2_laneqv4si (__a, __b, __c, __d);
23338}
23339
a063e204
TC
23340__extension__ extern __inline int64x2_t
23341__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23342vqdmlal_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)
23343{
23344 return __builtin_aarch64_sqdmlal2_nv4si (__a, __b, __c);
23345}
23346
a063e204
TC
23347__extension__ extern __inline int64x2_t
23348__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23349vqdmlal_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c, int const __d)
23350{
278821f2 23351 return __builtin_aarch64_sqdmlal_lanev2si (__a, __b, __c, __d);
43e9d192
IB
23352}
23353
a063e204
TC
23354__extension__ extern __inline int64x2_t
23355__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23356vqdmlal_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __c, int const __d)
23357{
23358 return __builtin_aarch64_sqdmlal_laneqv2si (__a, __b, __c, __d);
23359}
23360
a063e204
TC
23361__extension__ extern __inline int64x2_t
23362__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23363vqdmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
23364{
23365 return __builtin_aarch64_sqdmlal_nv2si (__a, __b, __c);
23366}
23367
a063e204
TC
23368__extension__ extern __inline int32_t
23369__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23370vqdmlalh_s16 (int32_t __a, int16_t __b, int16_t __c)
43e9d192
IB
23371{
23372 return __builtin_aarch64_sqdmlalhi (__a, __b, __c);
23373}
23374
a063e204
TC
23375__extension__ extern __inline int32_t
23376__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23377vqdmlalh_lane_s16 (int32_t __a, int16_t __b, int16x4_t __c, const int __d)
43e9d192
IB
23378{
23379 return __builtin_aarch64_sqdmlal_lanehi (__a, __b, __c, __d);
23380}
23381
a063e204
TC
23382__extension__ extern __inline int32_t
23383__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d2937a2e
KT
23384vqdmlalh_laneq_s16 (int32_t __a, int16_t __b, int16x8_t __c, const int __d)
23385{
23386 return __builtin_aarch64_sqdmlal_laneqhi (__a, __b, __c, __d);
23387}
23388
a063e204
TC
23389__extension__ extern __inline int64_t
23390__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23391vqdmlals_s32 (int64_t __a, int32_t __b, int32_t __c)
43e9d192
IB
23392{
23393 return __builtin_aarch64_sqdmlalsi (__a, __b, __c);
23394}
23395
a063e204
TC
23396__extension__ extern __inline int64_t
23397__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
b8a5fbd2 23398vqdmlals_lane_s32 (int64_t __a, int32_t __b, int32x2_t __c, const int __d)
43e9d192 23399{
b8a5fbd2 23400 return __builtin_aarch64_sqdmlal_lanesi (__a, __b, __c, __d);
43e9d192
IB
23401}
23402
a063e204
TC
23403__extension__ extern __inline int64_t
23404__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d2937a2e
KT
23405vqdmlals_laneq_s32 (int64_t __a, int32_t __b, int32x4_t __c, const int __d)
23406{
23407 return __builtin_aarch64_sqdmlal_laneqsi (__a, __b, __c, __d);
23408}
23409
43e9d192
IB
23410/* vqdmlsl */
23411
a063e204
TC
23412__extension__ extern __inline int32x4_t
23413__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23414vqdmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
23415{
23416 return __builtin_aarch64_sqdmlslv4hi (__a, __b, __c);
23417}
23418
a063e204
TC
23419__extension__ extern __inline int32x4_t
23420__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23421vqdmlsl_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
23422{
23423 return __builtin_aarch64_sqdmlsl2v8hi (__a, __b, __c);
23424}
23425
a063e204
TC
23426__extension__ extern __inline int32x4_t
23427__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
278821f2 23428vqdmlsl_high_lane_s16 (int32x4_t __a, int16x8_t __b, int16x4_t __c,
43e9d192
IB
23429 int const __d)
23430{
23431 return __builtin_aarch64_sqdmlsl2_lanev8hi (__a, __b, __c, __d);
23432}
23433
a063e204
TC
23434__extension__ extern __inline int32x4_t
23435__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23436vqdmlsl_high_laneq_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c,
23437 int const __d)
23438{
23439 return __builtin_aarch64_sqdmlsl2_laneqv8hi (__a, __b, __c, __d);
23440}
23441
a063e204
TC
23442__extension__ extern __inline int32x4_t
23443__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23444vqdmlsl_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)
23445{
23446 return __builtin_aarch64_sqdmlsl2_nv8hi (__a, __b, __c);
23447}
23448
a063e204
TC
23449__extension__ extern __inline int32x4_t
23450__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23451vqdmlsl_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c, int const __d)
23452{
278821f2 23453 return __builtin_aarch64_sqdmlsl_lanev4hi (__a, __b, __c, __d);
43e9d192
IB
23454}
23455
a063e204
TC
23456__extension__ extern __inline int32x4_t
23457__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23458vqdmlsl_laneq_s16 (int32x4_t __a, int16x4_t __b, int16x8_t __c, int const __d)
23459{
23460 return __builtin_aarch64_sqdmlsl_laneqv4hi (__a, __b, __c, __d);
23461}
23462
a063e204
TC
23463__extension__ extern __inline int32x4_t
23464__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23465vqdmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
23466{
23467 return __builtin_aarch64_sqdmlsl_nv4hi (__a, __b, __c);
23468}
23469
a063e204
TC
23470__extension__ extern __inline int64x2_t
23471__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23472vqdmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
23473{
23474 return __builtin_aarch64_sqdmlslv2si (__a, __b, __c);
23475}
23476
a063e204
TC
23477__extension__ extern __inline int64x2_t
23478__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23479vqdmlsl_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
23480{
23481 return __builtin_aarch64_sqdmlsl2v4si (__a, __b, __c);
23482}
23483
a063e204
TC
23484__extension__ extern __inline int64x2_t
23485__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
278821f2 23486vqdmlsl_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x2_t __c,
43e9d192
IB
23487 int const __d)
23488{
23489 return __builtin_aarch64_sqdmlsl2_lanev4si (__a, __b, __c, __d);
23490}
23491
a063e204
TC
23492__extension__ extern __inline int64x2_t
23493__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23494vqdmlsl_high_laneq_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c,
23495 int const __d)
23496{
23497 return __builtin_aarch64_sqdmlsl2_laneqv4si (__a, __b, __c, __d);
23498}
23499
a063e204
TC
23500__extension__ extern __inline int64x2_t
23501__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23502vqdmlsl_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)
23503{
23504 return __builtin_aarch64_sqdmlsl2_nv4si (__a, __b, __c);
23505}
23506
a063e204
TC
23507__extension__ extern __inline int64x2_t
23508__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23509vqdmlsl_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c, int const __d)
23510{
278821f2 23511 return __builtin_aarch64_sqdmlsl_lanev2si (__a, __b, __c, __d);
43e9d192
IB
23512}
23513
a063e204
TC
23514__extension__ extern __inline int64x2_t
23515__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23516vqdmlsl_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __c, int const __d)
23517{
23518 return __builtin_aarch64_sqdmlsl_laneqv2si (__a, __b, __c, __d);
23519}
23520
a063e204
TC
23521__extension__ extern __inline int64x2_t
23522__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23523vqdmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
23524{
23525 return __builtin_aarch64_sqdmlsl_nv2si (__a, __b, __c);
23526}
23527
a063e204
TC
23528__extension__ extern __inline int32_t
23529__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23530vqdmlslh_s16 (int32_t __a, int16_t __b, int16_t __c)
43e9d192
IB
23531{
23532 return __builtin_aarch64_sqdmlslhi (__a, __b, __c);
23533}
23534
a063e204
TC
23535__extension__ extern __inline int32_t
23536__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23537vqdmlslh_lane_s16 (int32_t __a, int16_t __b, int16x4_t __c, const int __d)
43e9d192
IB
23538{
23539 return __builtin_aarch64_sqdmlsl_lanehi (__a, __b, __c, __d);
23540}
23541
a063e204
TC
23542__extension__ extern __inline int32_t
23543__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d2937a2e
KT
23544vqdmlslh_laneq_s16 (int32_t __a, int16_t __b, int16x8_t __c, const int __d)
23545{
23546 return __builtin_aarch64_sqdmlsl_laneqhi (__a, __b, __c, __d);
23547}
23548
a063e204
TC
23549__extension__ extern __inline int64_t
23550__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23551vqdmlsls_s32 (int64_t __a, int32_t __b, int32_t __c)
43e9d192
IB
23552{
23553 return __builtin_aarch64_sqdmlslsi (__a, __b, __c);
23554}
23555
a063e204
TC
23556__extension__ extern __inline int64_t
23557__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
b8a5fbd2 23558vqdmlsls_lane_s32 (int64_t __a, int32_t __b, int32x2_t __c, const int __d)
43e9d192 23559{
b8a5fbd2 23560 return __builtin_aarch64_sqdmlsl_lanesi (__a, __b, __c, __d);
43e9d192
IB
23561}
23562
a063e204
TC
23563__extension__ extern __inline int64_t
23564__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d2937a2e
KT
23565vqdmlsls_laneq_s32 (int64_t __a, int32_t __b, int32x4_t __c, const int __d)
23566{
23567 return __builtin_aarch64_sqdmlsl_laneqsi (__a, __b, __c, __d);
23568}
23569
43e9d192
IB
23570/* vqdmulh */
23571
a063e204
TC
23572__extension__ extern __inline int16x4_t
23573__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23574vqdmulh_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)
23575{
b7d7d917 23576 return __builtin_aarch64_sqdmulh_lanev4hi (__a, __b, __c);
43e9d192
IB
23577}
23578
a063e204
TC
23579__extension__ extern __inline int32x2_t
23580__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23581vqdmulh_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)
23582{
b7d7d917 23583 return __builtin_aarch64_sqdmulh_lanev2si (__a, __b, __c);
43e9d192
IB
23584}
23585
a063e204
TC
23586__extension__ extern __inline int16x8_t
23587__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23588vqdmulhq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __c)
23589{
b7d7d917 23590 return __builtin_aarch64_sqdmulh_lanev8hi (__a, __b, __c);
43e9d192
IB
23591}
23592
a063e204
TC
23593__extension__ extern __inline int32x4_t
23594__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23595vqdmulhq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __c)
23596{
b7d7d917 23597 return __builtin_aarch64_sqdmulh_lanev4si (__a, __b, __c);
43e9d192
IB
23598}
23599
a063e204
TC
23600__extension__ extern __inline int16_t
23601__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23602vqdmulhh_s16 (int16_t __a, int16_t __b)
43e9d192 23603{
02a0ec4a 23604 return (int16_t) __builtin_aarch64_sqdmulhhi (__a, __b);
43e9d192
IB
23605}
23606
a063e204
TC
23607__extension__ extern __inline int16_t
23608__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23609vqdmulhh_lane_s16 (int16_t __a, int16x4_t __b, const int __c)
43e9d192
IB
23610{
23611 return __builtin_aarch64_sqdmulh_lanehi (__a, __b, __c);
23612}
23613
a063e204
TC
23614__extension__ extern __inline int16_t
23615__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d2937a2e
KT
23616vqdmulhh_laneq_s16 (int16_t __a, int16x8_t __b, const int __c)
23617{
23618 return __builtin_aarch64_sqdmulh_laneqhi (__a, __b, __c);
23619}
23620
a063e204
TC
23621__extension__ extern __inline int32_t
23622__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23623vqdmulhs_s32 (int32_t __a, int32_t __b)
43e9d192 23624{
02a0ec4a 23625 return (int32_t) __builtin_aarch64_sqdmulhsi (__a, __b);
43e9d192
IB
23626}
23627
a063e204
TC
23628__extension__ extern __inline int32_t
23629__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23630vqdmulhs_lane_s32 (int32_t __a, int32x2_t __b, const int __c)
43e9d192
IB
23631{
23632 return __builtin_aarch64_sqdmulh_lanesi (__a, __b, __c);
23633}
23634
a063e204
TC
23635__extension__ extern __inline int32_t
23636__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d2937a2e
KT
23637vqdmulhs_laneq_s32 (int32_t __a, int32x4_t __b, const int __c)
23638{
23639 return __builtin_aarch64_sqdmulh_laneqsi (__a, __b, __c);
23640}
23641
43e9d192
IB
23642/* vqdmull */
23643
a063e204
TC
23644__extension__ extern __inline int32x4_t
23645__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23646vqdmull_s16 (int16x4_t __a, int16x4_t __b)
23647{
23648 return __builtin_aarch64_sqdmullv4hi (__a, __b);
23649}
23650
a063e204
TC
23651__extension__ extern __inline int32x4_t
23652__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23653vqdmull_high_s16 (int16x8_t __a, int16x8_t __b)
23654{
23655 return __builtin_aarch64_sqdmull2v8hi (__a, __b);
23656}
23657
a063e204
TC
23658__extension__ extern __inline int32x4_t
23659__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
278821f2 23660vqdmull_high_lane_s16 (int16x8_t __a, int16x4_t __b, int const __c)
43e9d192
IB
23661{
23662 return __builtin_aarch64_sqdmull2_lanev8hi (__a, __b,__c);
23663}
23664
a063e204
TC
23665__extension__ extern __inline int32x4_t
23666__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23667vqdmull_high_laneq_s16 (int16x8_t __a, int16x8_t __b, int const __c)
23668{
23669 return __builtin_aarch64_sqdmull2_laneqv8hi (__a, __b,__c);
23670}
23671
a063e204
TC
23672__extension__ extern __inline int32x4_t
23673__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23674vqdmull_high_n_s16 (int16x8_t __a, int16_t __b)
23675{
23676 return __builtin_aarch64_sqdmull2_nv8hi (__a, __b);
23677}
23678
a063e204
TC
23679__extension__ extern __inline int32x4_t
23680__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23681vqdmull_lane_s16 (int16x4_t __a, int16x4_t __b, int const __c)
23682{
278821f2 23683 return __builtin_aarch64_sqdmull_lanev4hi (__a, __b, __c);
43e9d192
IB
23684}
23685
a063e204
TC
23686__extension__ extern __inline int32x4_t
23687__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23688vqdmull_laneq_s16 (int16x4_t __a, int16x8_t __b, int const __c)
23689{
23690 return __builtin_aarch64_sqdmull_laneqv4hi (__a, __b, __c);
23691}
23692
a063e204
TC
23693__extension__ extern __inline int32x4_t
23694__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23695vqdmull_n_s16 (int16x4_t __a, int16_t __b)
23696{
23697 return __builtin_aarch64_sqdmull_nv4hi (__a, __b);
23698}
23699
a063e204
TC
23700__extension__ extern __inline int64x2_t
23701__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23702vqdmull_s32 (int32x2_t __a, int32x2_t __b)
23703{
23704 return __builtin_aarch64_sqdmullv2si (__a, __b);
23705}
23706
a063e204
TC
23707__extension__ extern __inline int64x2_t
23708__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23709vqdmull_high_s32 (int32x4_t __a, int32x4_t __b)
23710{
23711 return __builtin_aarch64_sqdmull2v4si (__a, __b);
23712}
23713
a063e204
TC
23714__extension__ extern __inline int64x2_t
23715__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
278821f2 23716vqdmull_high_lane_s32 (int32x4_t __a, int32x2_t __b, int const __c)
43e9d192
IB
23717{
23718 return __builtin_aarch64_sqdmull2_lanev4si (__a, __b, __c);
23719}
23720
a063e204
TC
23721__extension__ extern __inline int64x2_t
23722__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23723vqdmull_high_laneq_s32 (int32x4_t __a, int32x4_t __b, int const __c)
23724{
23725 return __builtin_aarch64_sqdmull2_laneqv4si (__a, __b, __c);
23726}
23727
a063e204
TC
23728__extension__ extern __inline int64x2_t
23729__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23730vqdmull_high_n_s32 (int32x4_t __a, int32_t __b)
23731{
23732 return __builtin_aarch64_sqdmull2_nv4si (__a, __b);
23733}
23734
a063e204
TC
23735__extension__ extern __inline int64x2_t
23736__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23737vqdmull_lane_s32 (int32x2_t __a, int32x2_t __b, int const __c)
23738{
278821f2 23739 return __builtin_aarch64_sqdmull_lanev2si (__a, __b, __c);
43e9d192
IB
23740}
23741
a063e204
TC
23742__extension__ extern __inline int64x2_t
23743__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23744vqdmull_laneq_s32 (int32x2_t __a, int32x4_t __b, int const __c)
23745{
23746 return __builtin_aarch64_sqdmull_laneqv2si (__a, __b, __c);
23747}
23748
a063e204
TC
23749__extension__ extern __inline int64x2_t
23750__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23751vqdmull_n_s32 (int32x2_t __a, int32_t __b)
23752{
23753 return __builtin_aarch64_sqdmull_nv2si (__a, __b);
23754}
23755
a063e204
TC
23756__extension__ extern __inline int32_t
23757__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23758vqdmullh_s16 (int16_t __a, int16_t __b)
43e9d192 23759{
02a0ec4a 23760 return (int32_t) __builtin_aarch64_sqdmullhi (__a, __b);
43e9d192
IB
23761}
23762
a063e204
TC
23763__extension__ extern __inline int32_t
23764__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23765vqdmullh_lane_s16 (int16_t __a, int16x4_t __b, const int __c)
43e9d192
IB
23766{
23767 return __builtin_aarch64_sqdmull_lanehi (__a, __b, __c);
23768}
23769
a063e204
TC
23770__extension__ extern __inline int32_t
23771__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2ef16e3e
JG
23772vqdmullh_laneq_s16 (int16_t __a, int16x8_t __b, const int __c)
23773{
23774 return __builtin_aarch64_sqdmull_laneqhi (__a, __b, __c);
23775}
23776
a063e204
TC
23777__extension__ extern __inline int64_t
23778__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23779vqdmulls_s32 (int32_t __a, int32_t __b)
43e9d192 23780{
096c59be 23781 return __builtin_aarch64_sqdmullsi (__a, __b);
43e9d192
IB
23782}
23783
a063e204
TC
23784__extension__ extern __inline int64_t
23785__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23786vqdmulls_lane_s32 (int32_t __a, int32x2_t __b, const int __c)
43e9d192 23787{
2ef16e3e
JG
23788 return __builtin_aarch64_sqdmull_lanesi (__a, __b, __c);
23789}
23790
a063e204
TC
23791__extension__ extern __inline int64_t
23792__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2ef16e3e
JG
23793vqdmulls_laneq_s32 (int32_t __a, int32x4_t __b, const int __c)
23794{
23795 return __builtin_aarch64_sqdmull_laneqsi (__a, __b, __c);
43e9d192
IB
23796}
23797
23798/* vqmovn */
23799
a063e204
TC
23800__extension__ extern __inline int8x8_t
23801__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23802vqmovn_s16 (int16x8_t __a)
23803{
23804 return (int8x8_t) __builtin_aarch64_sqmovnv8hi (__a);
23805}
23806
a063e204
TC
23807__extension__ extern __inline int16x4_t
23808__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23809vqmovn_s32 (int32x4_t __a)
23810{
23811 return (int16x4_t) __builtin_aarch64_sqmovnv4si (__a);
23812}
23813
a063e204
TC
23814__extension__ extern __inline int32x2_t
23815__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23816vqmovn_s64 (int64x2_t __a)
23817{
23818 return (int32x2_t) __builtin_aarch64_sqmovnv2di (__a);
23819}
23820
a063e204
TC
23821__extension__ extern __inline uint8x8_t
23822__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23823vqmovn_u16 (uint16x8_t __a)
23824{
23825 return (uint8x8_t) __builtin_aarch64_uqmovnv8hi ((int16x8_t) __a);
23826}
23827
a063e204
TC
23828__extension__ extern __inline uint16x4_t
23829__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23830vqmovn_u32 (uint32x4_t __a)
23831{
23832 return (uint16x4_t) __builtin_aarch64_uqmovnv4si ((int32x4_t) __a);
23833}
23834
a063e204
TC
23835__extension__ extern __inline uint32x2_t
23836__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23837vqmovn_u64 (uint64x2_t __a)
23838{
23839 return (uint32x2_t) __builtin_aarch64_uqmovnv2di ((int64x2_t) __a);
23840}
23841
a063e204
TC
23842__extension__ extern __inline int8_t
23843__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23844vqmovnh_s16 (int16_t __a)
43e9d192 23845{
02a0ec4a 23846 return (int8_t) __builtin_aarch64_sqmovnhi (__a);
43e9d192
IB
23847}
23848
a063e204
TC
23849__extension__ extern __inline int16_t
23850__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23851vqmovns_s32 (int32_t __a)
43e9d192 23852{
02a0ec4a 23853 return (int16_t) __builtin_aarch64_sqmovnsi (__a);
43e9d192
IB
23854}
23855
a063e204
TC
23856__extension__ extern __inline int32_t
23857__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 23858vqmovnd_s64 (int64_t __a)
43e9d192 23859{
02a0ec4a 23860 return (int32_t) __builtin_aarch64_sqmovndi (__a);
43e9d192
IB
23861}
23862
a063e204
TC
23863__extension__ extern __inline uint8_t
23864__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23865vqmovnh_u16 (uint16_t __a)
43e9d192 23866{
02a0ec4a 23867 return (uint8_t) __builtin_aarch64_uqmovnhi (__a);
43e9d192
IB
23868}
23869
a063e204
TC
23870__extension__ extern __inline uint16_t
23871__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23872vqmovns_u32 (uint32_t __a)
43e9d192 23873{
02a0ec4a 23874 return (uint16_t) __builtin_aarch64_uqmovnsi (__a);
43e9d192
IB
23875}
23876
a063e204
TC
23877__extension__ extern __inline uint32_t
23878__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 23879vqmovnd_u64 (uint64_t __a)
43e9d192 23880{
02a0ec4a 23881 return (uint32_t) __builtin_aarch64_uqmovndi (__a);
43e9d192
IB
23882}
23883
23884/* vqmovun */
23885
a063e204
TC
23886__extension__ extern __inline uint8x8_t
23887__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23888vqmovun_s16 (int16x8_t __a)
23889{
135b0431 23890 return __builtin_aarch64_sqmovunv8hi_us (__a);
43e9d192
IB
23891}
23892
a063e204
TC
23893__extension__ extern __inline uint16x4_t
23894__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23895vqmovun_s32 (int32x4_t __a)
23896{
135b0431 23897 return __builtin_aarch64_sqmovunv4si_us (__a);
43e9d192
IB
23898}
23899
a063e204
TC
23900__extension__ extern __inline uint32x2_t
23901__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23902vqmovun_s64 (int64x2_t __a)
23903{
135b0431 23904 return __builtin_aarch64_sqmovunv2di_us (__a);
43e9d192
IB
23905}
23906
135b0431 23907__extension__ extern __inline uint8_t
a063e204 23908__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23909vqmovunh_s16 (int16_t __a)
43e9d192 23910{
135b0431 23911 return __builtin_aarch64_sqmovunhi_us (__a);
43e9d192
IB
23912}
23913
135b0431 23914__extension__ extern __inline uint16_t
a063e204 23915__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23916vqmovuns_s32 (int32_t __a)
43e9d192 23917{
135b0431 23918 return __builtin_aarch64_sqmovunsi_us (__a);
43e9d192
IB
23919}
23920
135b0431 23921__extension__ extern __inline uint32_t
a063e204 23922__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 23923vqmovund_s64 (int64_t __a)
43e9d192 23924{
135b0431 23925 return __builtin_aarch64_sqmovundi_us (__a);
43e9d192
IB
23926}
23927
23928/* vqneg */
23929
a063e204
TC
23930__extension__ extern __inline int64x2_t
23931__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23932vqnegq_s64 (int64x2_t __a)
23933{
23934 return (int64x2_t) __builtin_aarch64_sqnegv2di (__a);
23935}
23936
a063e204
TC
23937__extension__ extern __inline int8_t
23938__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23939vqnegb_s8 (int8_t __a)
43e9d192 23940{
02a0ec4a 23941 return (int8_t) __builtin_aarch64_sqnegqi (__a);
43e9d192
IB
23942}
23943
a063e204
TC
23944__extension__ extern __inline int16_t
23945__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23946vqnegh_s16 (int16_t __a)
43e9d192 23947{
02a0ec4a 23948 return (int16_t) __builtin_aarch64_sqneghi (__a);
43e9d192
IB
23949}
23950
a063e204
TC
23951__extension__ extern __inline int32_t
23952__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23953vqnegs_s32 (int32_t __a)
43e9d192 23954{
02a0ec4a 23955 return (int32_t) __builtin_aarch64_sqnegsi (__a);
43e9d192
IB
23956}
23957
a063e204
TC
23958__extension__ extern __inline int64_t
23959__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9551c7ec
AV
23960vqnegd_s64 (int64_t __a)
23961{
23962 return __builtin_aarch64_sqnegdi (__a);
23963}
23964
43e9d192
IB
23965/* vqrdmulh */
23966
a063e204
TC
23967__extension__ extern __inline int16x4_t
23968__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23969vqrdmulh_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)
23970{
b7d7d917 23971 return __builtin_aarch64_sqrdmulh_lanev4hi (__a, __b, __c);
43e9d192
IB
23972}
23973
a063e204
TC
23974__extension__ extern __inline int32x2_t
23975__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23976vqrdmulh_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)
23977{
b7d7d917 23978 return __builtin_aarch64_sqrdmulh_lanev2si (__a, __b, __c);
43e9d192
IB
23979}
23980
a063e204
TC
23981__extension__ extern __inline int16x8_t
23982__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23983vqrdmulhq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __c)
23984{
b7d7d917 23985 return __builtin_aarch64_sqrdmulh_lanev8hi (__a, __b, __c);
43e9d192
IB
23986}
23987
a063e204
TC
23988__extension__ extern __inline int32x4_t
23989__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
23990vqrdmulhq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __c)
23991{
b7d7d917 23992 return __builtin_aarch64_sqrdmulh_lanev4si (__a, __b, __c);
43e9d192
IB
23993}
23994
a063e204
TC
23995__extension__ extern __inline int16_t
23996__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 23997vqrdmulhh_s16 (int16_t __a, int16_t __b)
43e9d192 23998{
02a0ec4a 23999 return (int16_t) __builtin_aarch64_sqrdmulhhi (__a, __b);
43e9d192
IB
24000}
24001
a063e204
TC
24002__extension__ extern __inline int16_t
24003__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24004vqrdmulhh_lane_s16 (int16_t __a, int16x4_t __b, const int __c)
43e9d192
IB
24005{
24006 return __builtin_aarch64_sqrdmulh_lanehi (__a, __b, __c);
24007}
24008
a063e204
TC
24009__extension__ extern __inline int16_t
24010__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d2937a2e
KT
24011vqrdmulhh_laneq_s16 (int16_t __a, int16x8_t __b, const int __c)
24012{
24013 return __builtin_aarch64_sqrdmulh_laneqhi (__a, __b, __c);
24014}
24015
a063e204
TC
24016__extension__ extern __inline int32_t
24017__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24018vqrdmulhs_s32 (int32_t __a, int32_t __b)
43e9d192 24019{
02a0ec4a 24020 return (int32_t) __builtin_aarch64_sqrdmulhsi (__a, __b);
43e9d192
IB
24021}
24022
a063e204
TC
24023__extension__ extern __inline int32_t
24024__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24025vqrdmulhs_lane_s32 (int32_t __a, int32x2_t __b, const int __c)
43e9d192
IB
24026{
24027 return __builtin_aarch64_sqrdmulh_lanesi (__a, __b, __c);
24028}
24029
a063e204
TC
24030__extension__ extern __inline int32_t
24031__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d2937a2e
KT
24032vqrdmulhs_laneq_s32 (int32_t __a, int32x4_t __b, const int __c)
24033{
24034 return __builtin_aarch64_sqrdmulh_laneqsi (__a, __b, __c);
24035}
24036
43e9d192
IB
24037/* vqrshl */
24038
a063e204
TC
24039__extension__ extern __inline int8x8_t
24040__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24041vqrshl_s8 (int8x8_t __a, int8x8_t __b)
24042{
24043 return __builtin_aarch64_sqrshlv8qi (__a, __b);
24044}
24045
a063e204
TC
24046__extension__ extern __inline int16x4_t
24047__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24048vqrshl_s16 (int16x4_t __a, int16x4_t __b)
24049{
24050 return __builtin_aarch64_sqrshlv4hi (__a, __b);
24051}
24052
a063e204
TC
24053__extension__ extern __inline int32x2_t
24054__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24055vqrshl_s32 (int32x2_t __a, int32x2_t __b)
24056{
24057 return __builtin_aarch64_sqrshlv2si (__a, __b);
24058}
24059
a063e204
TC
24060__extension__ extern __inline int64x1_t
24061__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24062vqrshl_s64 (int64x1_t __a, int64x1_t __b)
24063{
096c59be 24064 return (int64x1_t) {__builtin_aarch64_sqrshldi (__a[0], __b[0])};
43e9d192
IB
24065}
24066
a063e204
TC
24067__extension__ extern __inline uint8x8_t
24068__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24069vqrshl_u8 (uint8x8_t __a, int8x8_t __b)
24070{
de10bcce 24071 return __builtin_aarch64_uqrshlv8qi_uus ( __a, __b);
43e9d192
IB
24072}
24073
a063e204
TC
24074__extension__ extern __inline uint16x4_t
24075__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24076vqrshl_u16 (uint16x4_t __a, int16x4_t __b)
24077{
de10bcce 24078 return __builtin_aarch64_uqrshlv4hi_uus ( __a, __b);
43e9d192
IB
24079}
24080
a063e204
TC
24081__extension__ extern __inline uint32x2_t
24082__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24083vqrshl_u32 (uint32x2_t __a, int32x2_t __b)
24084{
de10bcce 24085 return __builtin_aarch64_uqrshlv2si_uus ( __a, __b);
43e9d192
IB
24086}
24087
a063e204
TC
24088__extension__ extern __inline uint64x1_t
24089__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24090vqrshl_u64 (uint64x1_t __a, int64x1_t __b)
24091{
096c59be 24092 return (uint64x1_t) {__builtin_aarch64_uqrshldi_uus (__a[0], __b[0])};
43e9d192
IB
24093}
24094
a063e204
TC
24095__extension__ extern __inline int8x16_t
24096__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24097vqrshlq_s8 (int8x16_t __a, int8x16_t __b)
24098{
24099 return __builtin_aarch64_sqrshlv16qi (__a, __b);
24100}
24101
a063e204
TC
24102__extension__ extern __inline int16x8_t
24103__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24104vqrshlq_s16 (int16x8_t __a, int16x8_t __b)
24105{
24106 return __builtin_aarch64_sqrshlv8hi (__a, __b);
24107}
24108
a063e204
TC
24109__extension__ extern __inline int32x4_t
24110__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24111vqrshlq_s32 (int32x4_t __a, int32x4_t __b)
24112{
24113 return __builtin_aarch64_sqrshlv4si (__a, __b);
24114}
24115
a063e204
TC
24116__extension__ extern __inline int64x2_t
24117__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24118vqrshlq_s64 (int64x2_t __a, int64x2_t __b)
24119{
24120 return __builtin_aarch64_sqrshlv2di (__a, __b);
24121}
24122
a063e204
TC
24123__extension__ extern __inline uint8x16_t
24124__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24125vqrshlq_u8 (uint8x16_t __a, int8x16_t __b)
24126{
de10bcce 24127 return __builtin_aarch64_uqrshlv16qi_uus ( __a, __b);
43e9d192
IB
24128}
24129
a063e204
TC
24130__extension__ extern __inline uint16x8_t
24131__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24132vqrshlq_u16 (uint16x8_t __a, int16x8_t __b)
24133{
de10bcce 24134 return __builtin_aarch64_uqrshlv8hi_uus ( __a, __b);
43e9d192
IB
24135}
24136
a063e204
TC
24137__extension__ extern __inline uint32x4_t
24138__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24139vqrshlq_u32 (uint32x4_t __a, int32x4_t __b)
24140{
de10bcce 24141 return __builtin_aarch64_uqrshlv4si_uus ( __a, __b);
43e9d192
IB
24142}
24143
a063e204
TC
24144__extension__ extern __inline uint64x2_t
24145__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24146vqrshlq_u64 (uint64x2_t __a, int64x2_t __b)
24147{
de10bcce 24148 return __builtin_aarch64_uqrshlv2di_uus ( __a, __b);
43e9d192
IB
24149}
24150
a063e204
TC
24151__extension__ extern __inline int8_t
24152__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24153vqrshlb_s8 (int8_t __a, int8_t __b)
43e9d192
IB
24154{
24155 return __builtin_aarch64_sqrshlqi (__a, __b);
24156}
24157
a063e204
TC
24158__extension__ extern __inline int16_t
24159__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24160vqrshlh_s16 (int16_t __a, int16_t __b)
43e9d192
IB
24161{
24162 return __builtin_aarch64_sqrshlhi (__a, __b);
24163}
24164
a063e204
TC
24165__extension__ extern __inline int32_t
24166__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24167vqrshls_s32 (int32_t __a, int32_t __b)
43e9d192
IB
24168{
24169 return __builtin_aarch64_sqrshlsi (__a, __b);
24170}
24171
a063e204
TC
24172__extension__ extern __inline int64_t
24173__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 24174vqrshld_s64 (int64_t __a, int64_t __b)
43e9d192
IB
24175{
24176 return __builtin_aarch64_sqrshldi (__a, __b);
24177}
24178
a063e204
TC
24179__extension__ extern __inline uint8_t
24180__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2d8fbebd 24181vqrshlb_u8 (uint8_t __a, int8_t __b)
43e9d192 24182{
de10bcce 24183 return __builtin_aarch64_uqrshlqi_uus (__a, __b);
43e9d192
IB
24184}
24185
a063e204
TC
24186__extension__ extern __inline uint16_t
24187__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2d8fbebd 24188vqrshlh_u16 (uint16_t __a, int16_t __b)
43e9d192 24189{
de10bcce 24190 return __builtin_aarch64_uqrshlhi_uus (__a, __b);
43e9d192
IB
24191}
24192
a063e204
TC
24193__extension__ extern __inline uint32_t
24194__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2d8fbebd 24195vqrshls_u32 (uint32_t __a, int32_t __b)
43e9d192 24196{
de10bcce 24197 return __builtin_aarch64_uqrshlsi_uus (__a, __b);
43e9d192
IB
24198}
24199
a063e204
TC
24200__extension__ extern __inline uint64_t
24201__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2d8fbebd 24202vqrshld_u64 (uint64_t __a, int64_t __b)
43e9d192 24203{
de10bcce 24204 return __builtin_aarch64_uqrshldi_uus (__a, __b);
43e9d192
IB
24205}
24206
24207/* vqrshrn */
24208
a063e204
TC
24209__extension__ extern __inline int8x8_t
24210__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24211vqrshrn_n_s16 (int16x8_t __a, const int __b)
24212{
24213 return (int8x8_t) __builtin_aarch64_sqrshrn_nv8hi (__a, __b);
24214}
24215
a063e204
TC
24216__extension__ extern __inline int16x4_t
24217__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24218vqrshrn_n_s32 (int32x4_t __a, const int __b)
24219{
24220 return (int16x4_t) __builtin_aarch64_sqrshrn_nv4si (__a, __b);
24221}
24222
a063e204
TC
24223__extension__ extern __inline int32x2_t
24224__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24225vqrshrn_n_s64 (int64x2_t __a, const int __b)
24226{
24227 return (int32x2_t) __builtin_aarch64_sqrshrn_nv2di (__a, __b);
24228}
24229
a063e204
TC
24230__extension__ extern __inline uint8x8_t
24231__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24232vqrshrn_n_u16 (uint16x8_t __a, const int __b)
24233{
de10bcce 24234 return __builtin_aarch64_uqrshrn_nv8hi_uus ( __a, __b);
43e9d192
IB
24235}
24236
a063e204
TC
24237__extension__ extern __inline uint16x4_t
24238__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24239vqrshrn_n_u32 (uint32x4_t __a, const int __b)
24240{
de10bcce 24241 return __builtin_aarch64_uqrshrn_nv4si_uus ( __a, __b);
43e9d192
IB
24242}
24243
a063e204
TC
24244__extension__ extern __inline uint32x2_t
24245__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24246vqrshrn_n_u64 (uint64x2_t __a, const int __b)
24247{
de10bcce 24248 return __builtin_aarch64_uqrshrn_nv2di_uus ( __a, __b);
43e9d192
IB
24249}
24250
a063e204
TC
24251__extension__ extern __inline int8_t
24252__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24253vqrshrnh_n_s16 (int16_t __a, const int __b)
43e9d192 24254{
02a0ec4a 24255 return (int8_t) __builtin_aarch64_sqrshrn_nhi (__a, __b);
43e9d192
IB
24256}
24257
a063e204
TC
24258__extension__ extern __inline int16_t
24259__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24260vqrshrns_n_s32 (int32_t __a, const int __b)
43e9d192 24261{
02a0ec4a 24262 return (int16_t) __builtin_aarch64_sqrshrn_nsi (__a, __b);
43e9d192
IB
24263}
24264
a063e204
TC
24265__extension__ extern __inline int32_t
24266__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 24267vqrshrnd_n_s64 (int64_t __a, const int __b)
43e9d192 24268{
02a0ec4a 24269 return (int32_t) __builtin_aarch64_sqrshrn_ndi (__a, __b);
43e9d192
IB
24270}
24271
a063e204
TC
24272__extension__ extern __inline uint8_t
24273__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24274vqrshrnh_n_u16 (uint16_t __a, const int __b)
43e9d192 24275{
de10bcce 24276 return __builtin_aarch64_uqrshrn_nhi_uus (__a, __b);
43e9d192
IB
24277}
24278
a063e204
TC
24279__extension__ extern __inline uint16_t
24280__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24281vqrshrns_n_u32 (uint32_t __a, const int __b)
43e9d192 24282{
de10bcce 24283 return __builtin_aarch64_uqrshrn_nsi_uus (__a, __b);
43e9d192
IB
24284}
24285
a063e204
TC
24286__extension__ extern __inline uint32_t
24287__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 24288vqrshrnd_n_u64 (uint64_t __a, const int __b)
43e9d192 24289{
de10bcce 24290 return __builtin_aarch64_uqrshrn_ndi_uus (__a, __b);
43e9d192
IB
24291}
24292
24293/* vqrshrun */
24294
a063e204
TC
24295__extension__ extern __inline uint8x8_t
24296__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24297vqrshrun_n_s16 (int16x8_t __a, const int __b)
24298{
24299 return (uint8x8_t) __builtin_aarch64_sqrshrun_nv8hi (__a, __b);
24300}
24301
a063e204
TC
24302__extension__ extern __inline uint16x4_t
24303__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24304vqrshrun_n_s32 (int32x4_t __a, const int __b)
24305{
24306 return (uint16x4_t) __builtin_aarch64_sqrshrun_nv4si (__a, __b);
24307}
24308
a063e204
TC
24309__extension__ extern __inline uint32x2_t
24310__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24311vqrshrun_n_s64 (int64x2_t __a, const int __b)
24312{
24313 return (uint32x2_t) __builtin_aarch64_sqrshrun_nv2di (__a, __b);
24314}
24315
a063e204
TC
24316__extension__ extern __inline int8_t
24317__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24318vqrshrunh_n_s16 (int16_t __a, const int __b)
43e9d192 24319{
02a0ec4a 24320 return (int8_t) __builtin_aarch64_sqrshrun_nhi (__a, __b);
43e9d192
IB
24321}
24322
a063e204
TC
24323__extension__ extern __inline int16_t
24324__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24325vqrshruns_n_s32 (int32_t __a, const int __b)
43e9d192 24326{
02a0ec4a 24327 return (int16_t) __builtin_aarch64_sqrshrun_nsi (__a, __b);
43e9d192
IB
24328}
24329
a063e204
TC
24330__extension__ extern __inline int32_t
24331__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 24332vqrshrund_n_s64 (int64_t __a, const int __b)
43e9d192 24333{
02a0ec4a 24334 return (int32_t) __builtin_aarch64_sqrshrun_ndi (__a, __b);
43e9d192
IB
24335}
24336
24337/* vqshl */
24338
a063e204
TC
24339__extension__ extern __inline int8x8_t
24340__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24341vqshl_s8 (int8x8_t __a, int8x8_t __b)
24342{
24343 return __builtin_aarch64_sqshlv8qi (__a, __b);
24344}
24345
a063e204
TC
24346__extension__ extern __inline int16x4_t
24347__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24348vqshl_s16 (int16x4_t __a, int16x4_t __b)
24349{
24350 return __builtin_aarch64_sqshlv4hi (__a, __b);
24351}
24352
a063e204
TC
24353__extension__ extern __inline int32x2_t
24354__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24355vqshl_s32 (int32x2_t __a, int32x2_t __b)
24356{
24357 return __builtin_aarch64_sqshlv2si (__a, __b);
24358}
24359
a063e204
TC
24360__extension__ extern __inline int64x1_t
24361__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24362vqshl_s64 (int64x1_t __a, int64x1_t __b)
24363{
096c59be 24364 return (int64x1_t) {__builtin_aarch64_sqshldi (__a[0], __b[0])};
43e9d192
IB
24365}
24366
a063e204
TC
24367__extension__ extern __inline uint8x8_t
24368__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24369vqshl_u8 (uint8x8_t __a, int8x8_t __b)
24370{
de10bcce 24371 return __builtin_aarch64_uqshlv8qi_uus ( __a, __b);
43e9d192
IB
24372}
24373
a063e204
TC
24374__extension__ extern __inline uint16x4_t
24375__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24376vqshl_u16 (uint16x4_t __a, int16x4_t __b)
24377{
de10bcce 24378 return __builtin_aarch64_uqshlv4hi_uus ( __a, __b);
43e9d192
IB
24379}
24380
a063e204
TC
24381__extension__ extern __inline uint32x2_t
24382__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24383vqshl_u32 (uint32x2_t __a, int32x2_t __b)
24384{
de10bcce 24385 return __builtin_aarch64_uqshlv2si_uus ( __a, __b);
43e9d192
IB
24386}
24387
a063e204
TC
24388__extension__ extern __inline uint64x1_t
24389__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24390vqshl_u64 (uint64x1_t __a, int64x1_t __b)
24391{
096c59be 24392 return (uint64x1_t) {__builtin_aarch64_uqshldi_uus (__a[0], __b[0])};
43e9d192
IB
24393}
24394
a063e204
TC
24395__extension__ extern __inline int8x16_t
24396__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24397vqshlq_s8 (int8x16_t __a, int8x16_t __b)
24398{
24399 return __builtin_aarch64_sqshlv16qi (__a, __b);
24400}
24401
a063e204
TC
24402__extension__ extern __inline int16x8_t
24403__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24404vqshlq_s16 (int16x8_t __a, int16x8_t __b)
24405{
24406 return __builtin_aarch64_sqshlv8hi (__a, __b);
24407}
24408
a063e204
TC
24409__extension__ extern __inline int32x4_t
24410__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24411vqshlq_s32 (int32x4_t __a, int32x4_t __b)
24412{
24413 return __builtin_aarch64_sqshlv4si (__a, __b);
24414}
24415
a063e204
TC
24416__extension__ extern __inline int64x2_t
24417__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24418vqshlq_s64 (int64x2_t __a, int64x2_t __b)
24419{
24420 return __builtin_aarch64_sqshlv2di (__a, __b);
24421}
24422
a063e204
TC
24423__extension__ extern __inline uint8x16_t
24424__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24425vqshlq_u8 (uint8x16_t __a, int8x16_t __b)
24426{
de10bcce 24427 return __builtin_aarch64_uqshlv16qi_uus ( __a, __b);
43e9d192
IB
24428}
24429
a063e204
TC
24430__extension__ extern __inline uint16x8_t
24431__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24432vqshlq_u16 (uint16x8_t __a, int16x8_t __b)
24433{
de10bcce 24434 return __builtin_aarch64_uqshlv8hi_uus ( __a, __b);
43e9d192
IB
24435}
24436
a063e204
TC
24437__extension__ extern __inline uint32x4_t
24438__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24439vqshlq_u32 (uint32x4_t __a, int32x4_t __b)
24440{
de10bcce 24441 return __builtin_aarch64_uqshlv4si_uus ( __a, __b);
43e9d192
IB
24442}
24443
a063e204
TC
24444__extension__ extern __inline uint64x2_t
24445__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24446vqshlq_u64 (uint64x2_t __a, int64x2_t __b)
24447{
de10bcce 24448 return __builtin_aarch64_uqshlv2di_uus ( __a, __b);
43e9d192
IB
24449}
24450
a063e204
TC
24451__extension__ extern __inline int8_t
24452__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24453vqshlb_s8 (int8_t __a, int8_t __b)
43e9d192
IB
24454{
24455 return __builtin_aarch64_sqshlqi (__a, __b);
24456}
24457
a063e204
TC
24458__extension__ extern __inline int16_t
24459__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24460vqshlh_s16 (int16_t __a, int16_t __b)
43e9d192
IB
24461{
24462 return __builtin_aarch64_sqshlhi (__a, __b);
24463}
24464
a063e204
TC
24465__extension__ extern __inline int32_t
24466__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24467vqshls_s32 (int32_t __a, int32_t __b)
43e9d192
IB
24468{
24469 return __builtin_aarch64_sqshlsi (__a, __b);
24470}
24471
a063e204
TC
24472__extension__ extern __inline int64_t
24473__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 24474vqshld_s64 (int64_t __a, int64_t __b)
43e9d192
IB
24475{
24476 return __builtin_aarch64_sqshldi (__a, __b);
24477}
24478
a063e204
TC
24479__extension__ extern __inline uint8_t
24480__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2d8fbebd 24481vqshlb_u8 (uint8_t __a, int8_t __b)
43e9d192 24482{
de10bcce 24483 return __builtin_aarch64_uqshlqi_uus (__a, __b);
43e9d192
IB
24484}
24485
a063e204
TC
24486__extension__ extern __inline uint16_t
24487__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2d8fbebd 24488vqshlh_u16 (uint16_t __a, int16_t __b)
43e9d192 24489{
de10bcce 24490 return __builtin_aarch64_uqshlhi_uus (__a, __b);
43e9d192
IB
24491}
24492
a063e204
TC
24493__extension__ extern __inline uint32_t
24494__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2d8fbebd 24495vqshls_u32 (uint32_t __a, int32_t __b)
43e9d192 24496{
de10bcce 24497 return __builtin_aarch64_uqshlsi_uus (__a, __b);
43e9d192
IB
24498}
24499
a063e204
TC
24500__extension__ extern __inline uint64_t
24501__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2d8fbebd 24502vqshld_u64 (uint64_t __a, int64_t __b)
43e9d192 24503{
de10bcce 24504 return __builtin_aarch64_uqshldi_uus (__a, __b);
43e9d192
IB
24505}
24506
a063e204
TC
24507__extension__ extern __inline int8x8_t
24508__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24509vqshl_n_s8 (int8x8_t __a, const int __b)
24510{
24511 return (int8x8_t) __builtin_aarch64_sqshl_nv8qi (__a, __b);
24512}
24513
a063e204
TC
24514__extension__ extern __inline int16x4_t
24515__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24516vqshl_n_s16 (int16x4_t __a, const int __b)
24517{
24518 return (int16x4_t) __builtin_aarch64_sqshl_nv4hi (__a, __b);
24519}
24520
a063e204
TC
24521__extension__ extern __inline int32x2_t
24522__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24523vqshl_n_s32 (int32x2_t __a, const int __b)
24524{
24525 return (int32x2_t) __builtin_aarch64_sqshl_nv2si (__a, __b);
24526}
24527
a063e204
TC
24528__extension__ extern __inline int64x1_t
24529__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24530vqshl_n_s64 (int64x1_t __a, const int __b)
24531{
096c59be 24532 return (int64x1_t) {__builtin_aarch64_sqshl_ndi (__a[0], __b)};
43e9d192
IB
24533}
24534
a063e204
TC
24535__extension__ extern __inline uint8x8_t
24536__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24537vqshl_n_u8 (uint8x8_t __a, const int __b)
24538{
de10bcce 24539 return __builtin_aarch64_uqshl_nv8qi_uus (__a, __b);
43e9d192
IB
24540}
24541
a063e204
TC
24542__extension__ extern __inline uint16x4_t
24543__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24544vqshl_n_u16 (uint16x4_t __a, const int __b)
24545{
de10bcce 24546 return __builtin_aarch64_uqshl_nv4hi_uus (__a, __b);
43e9d192
IB
24547}
24548
a063e204
TC
24549__extension__ extern __inline uint32x2_t
24550__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24551vqshl_n_u32 (uint32x2_t __a, const int __b)
24552{
de10bcce 24553 return __builtin_aarch64_uqshl_nv2si_uus (__a, __b);
43e9d192
IB
24554}
24555
a063e204
TC
24556__extension__ extern __inline uint64x1_t
24557__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24558vqshl_n_u64 (uint64x1_t __a, const int __b)
24559{
096c59be 24560 return (uint64x1_t) {__builtin_aarch64_uqshl_ndi_uus (__a[0], __b)};
43e9d192
IB
24561}
24562
a063e204
TC
24563__extension__ extern __inline int8x16_t
24564__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24565vqshlq_n_s8 (int8x16_t __a, const int __b)
24566{
24567 return (int8x16_t) __builtin_aarch64_sqshl_nv16qi (__a, __b);
24568}
24569
a063e204
TC
24570__extension__ extern __inline int16x8_t
24571__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24572vqshlq_n_s16 (int16x8_t __a, const int __b)
24573{
24574 return (int16x8_t) __builtin_aarch64_sqshl_nv8hi (__a, __b);
24575}
24576
a063e204
TC
24577__extension__ extern __inline int32x4_t
24578__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24579vqshlq_n_s32 (int32x4_t __a, const int __b)
24580{
24581 return (int32x4_t) __builtin_aarch64_sqshl_nv4si (__a, __b);
24582}
24583
a063e204
TC
24584__extension__ extern __inline int64x2_t
24585__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24586vqshlq_n_s64 (int64x2_t __a, const int __b)
24587{
24588 return (int64x2_t) __builtin_aarch64_sqshl_nv2di (__a, __b);
24589}
24590
a063e204
TC
24591__extension__ extern __inline uint8x16_t
24592__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24593vqshlq_n_u8 (uint8x16_t __a, const int __b)
24594{
de10bcce 24595 return __builtin_aarch64_uqshl_nv16qi_uus (__a, __b);
43e9d192
IB
24596}
24597
a063e204
TC
24598__extension__ extern __inline uint16x8_t
24599__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24600vqshlq_n_u16 (uint16x8_t __a, const int __b)
24601{
de10bcce 24602 return __builtin_aarch64_uqshl_nv8hi_uus (__a, __b);
43e9d192
IB
24603}
24604
a063e204
TC
24605__extension__ extern __inline uint32x4_t
24606__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24607vqshlq_n_u32 (uint32x4_t __a, const int __b)
24608{
de10bcce 24609 return __builtin_aarch64_uqshl_nv4si_uus (__a, __b);
43e9d192
IB
24610}
24611
a063e204
TC
24612__extension__ extern __inline uint64x2_t
24613__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24614vqshlq_n_u64 (uint64x2_t __a, const int __b)
24615{
de10bcce 24616 return __builtin_aarch64_uqshl_nv2di_uus (__a, __b);
43e9d192
IB
24617}
24618
a063e204
TC
24619__extension__ extern __inline int8_t
24620__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24621vqshlb_n_s8 (int8_t __a, const int __b)
43e9d192 24622{
02a0ec4a 24623 return (int8_t) __builtin_aarch64_sqshl_nqi (__a, __b);
43e9d192
IB
24624}
24625
a063e204
TC
24626__extension__ extern __inline int16_t
24627__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24628vqshlh_n_s16 (int16_t __a, const int __b)
43e9d192 24629{
02a0ec4a 24630 return (int16_t) __builtin_aarch64_sqshl_nhi (__a, __b);
43e9d192
IB
24631}
24632
a063e204
TC
24633__extension__ extern __inline int32_t
24634__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24635vqshls_n_s32 (int32_t __a, const int __b)
43e9d192 24636{
02a0ec4a 24637 return (int32_t) __builtin_aarch64_sqshl_nsi (__a, __b);
43e9d192
IB
24638}
24639
a063e204
TC
24640__extension__ extern __inline int64_t
24641__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 24642vqshld_n_s64 (int64_t __a, const int __b)
43e9d192 24643{
096c59be 24644 return __builtin_aarch64_sqshl_ndi (__a, __b);
43e9d192
IB
24645}
24646
a063e204
TC
24647__extension__ extern __inline uint8_t
24648__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24649vqshlb_n_u8 (uint8_t __a, const int __b)
43e9d192 24650{
de10bcce 24651 return __builtin_aarch64_uqshl_nqi_uus (__a, __b);
43e9d192
IB
24652}
24653
a063e204
TC
24654__extension__ extern __inline uint16_t
24655__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24656vqshlh_n_u16 (uint16_t __a, const int __b)
43e9d192 24657{
de10bcce 24658 return __builtin_aarch64_uqshl_nhi_uus (__a, __b);
43e9d192
IB
24659}
24660
a063e204
TC
24661__extension__ extern __inline uint32_t
24662__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24663vqshls_n_u32 (uint32_t __a, const int __b)
43e9d192 24664{
de10bcce 24665 return __builtin_aarch64_uqshl_nsi_uus (__a, __b);
43e9d192
IB
24666}
24667
a063e204
TC
24668__extension__ extern __inline uint64_t
24669__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 24670vqshld_n_u64 (uint64_t __a, const int __b)
43e9d192 24671{
de10bcce 24672 return __builtin_aarch64_uqshl_ndi_uus (__a, __b);
43e9d192
IB
24673}
24674
24675/* vqshlu */
24676
a063e204
TC
24677__extension__ extern __inline uint8x8_t
24678__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24679vqshlu_n_s8 (int8x8_t __a, const int __b)
24680{
de10bcce 24681 return __builtin_aarch64_sqshlu_nv8qi_uss (__a, __b);
43e9d192
IB
24682}
24683
a063e204
TC
24684__extension__ extern __inline uint16x4_t
24685__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24686vqshlu_n_s16 (int16x4_t __a, const int __b)
24687{
de10bcce 24688 return __builtin_aarch64_sqshlu_nv4hi_uss (__a, __b);
43e9d192
IB
24689}
24690
a063e204
TC
24691__extension__ extern __inline uint32x2_t
24692__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24693vqshlu_n_s32 (int32x2_t __a, const int __b)
24694{
de10bcce 24695 return __builtin_aarch64_sqshlu_nv2si_uss (__a, __b);
43e9d192
IB
24696}
24697
a063e204
TC
24698__extension__ extern __inline uint64x1_t
24699__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24700vqshlu_n_s64 (int64x1_t __a, const int __b)
24701{
096c59be 24702 return (uint64x1_t) {__builtin_aarch64_sqshlu_ndi_uss (__a[0], __b)};
43e9d192
IB
24703}
24704
a063e204
TC
24705__extension__ extern __inline uint8x16_t
24706__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24707vqshluq_n_s8 (int8x16_t __a, const int __b)
24708{
de10bcce 24709 return __builtin_aarch64_sqshlu_nv16qi_uss (__a, __b);
43e9d192
IB
24710}
24711
a063e204
TC
24712__extension__ extern __inline uint16x8_t
24713__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24714vqshluq_n_s16 (int16x8_t __a, const int __b)
24715{
de10bcce 24716 return __builtin_aarch64_sqshlu_nv8hi_uss (__a, __b);
43e9d192
IB
24717}
24718
a063e204
TC
24719__extension__ extern __inline uint32x4_t
24720__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24721vqshluq_n_s32 (int32x4_t __a, const int __b)
24722{
de10bcce 24723 return __builtin_aarch64_sqshlu_nv4si_uss (__a, __b);
43e9d192
IB
24724}
24725
a063e204
TC
24726__extension__ extern __inline uint64x2_t
24727__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24728vqshluq_n_s64 (int64x2_t __a, const int __b)
24729{
de10bcce 24730 return __builtin_aarch64_sqshlu_nv2di_uss (__a, __b);
43e9d192
IB
24731}
24732
a063e204
TC
24733__extension__ extern __inline int8_t
24734__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24735vqshlub_n_s8 (int8_t __a, const int __b)
43e9d192 24736{
02a0ec4a 24737 return (int8_t) __builtin_aarch64_sqshlu_nqi_uss (__a, __b);
43e9d192
IB
24738}
24739
a063e204
TC
24740__extension__ extern __inline int16_t
24741__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24742vqshluh_n_s16 (int16_t __a, const int __b)
43e9d192 24743{
02a0ec4a 24744 return (int16_t) __builtin_aarch64_sqshlu_nhi_uss (__a, __b);
43e9d192
IB
24745}
24746
a063e204
TC
24747__extension__ extern __inline int32_t
24748__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24749vqshlus_n_s32 (int32_t __a, const int __b)
43e9d192 24750{
02a0ec4a 24751 return (int32_t) __builtin_aarch64_sqshlu_nsi_uss (__a, __b);
43e9d192
IB
24752}
24753
a063e204
TC
24754__extension__ extern __inline uint64_t
24755__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 24756vqshlud_n_s64 (int64_t __a, const int __b)
43e9d192 24757{
096c59be 24758 return __builtin_aarch64_sqshlu_ndi_uss (__a, __b);
43e9d192
IB
24759}
24760
24761/* vqshrn */
24762
a063e204
TC
24763__extension__ extern __inline int8x8_t
24764__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24765vqshrn_n_s16 (int16x8_t __a, const int __b)
24766{
24767 return (int8x8_t) __builtin_aarch64_sqshrn_nv8hi (__a, __b);
24768}
24769
a063e204
TC
24770__extension__ extern __inline int16x4_t
24771__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24772vqshrn_n_s32 (int32x4_t __a, const int __b)
24773{
24774 return (int16x4_t) __builtin_aarch64_sqshrn_nv4si (__a, __b);
24775}
24776
a063e204
TC
24777__extension__ extern __inline int32x2_t
24778__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24779vqshrn_n_s64 (int64x2_t __a, const int __b)
24780{
24781 return (int32x2_t) __builtin_aarch64_sqshrn_nv2di (__a, __b);
24782}
24783
a063e204
TC
24784__extension__ extern __inline uint8x8_t
24785__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24786vqshrn_n_u16 (uint16x8_t __a, const int __b)
24787{
de10bcce 24788 return __builtin_aarch64_uqshrn_nv8hi_uus ( __a, __b);
43e9d192
IB
24789}
24790
a063e204
TC
24791__extension__ extern __inline uint16x4_t
24792__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24793vqshrn_n_u32 (uint32x4_t __a, const int __b)
24794{
de10bcce 24795 return __builtin_aarch64_uqshrn_nv4si_uus ( __a, __b);
43e9d192
IB
24796}
24797
a063e204
TC
24798__extension__ extern __inline uint32x2_t
24799__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24800vqshrn_n_u64 (uint64x2_t __a, const int __b)
24801{
de10bcce 24802 return __builtin_aarch64_uqshrn_nv2di_uus ( __a, __b);
43e9d192
IB
24803}
24804
a063e204
TC
24805__extension__ extern __inline int8_t
24806__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24807vqshrnh_n_s16 (int16_t __a, const int __b)
43e9d192 24808{
02a0ec4a 24809 return (int8_t) __builtin_aarch64_sqshrn_nhi (__a, __b);
43e9d192
IB
24810}
24811
a063e204
TC
24812__extension__ extern __inline int16_t
24813__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24814vqshrns_n_s32 (int32_t __a, const int __b)
43e9d192 24815{
02a0ec4a 24816 return (int16_t) __builtin_aarch64_sqshrn_nsi (__a, __b);
43e9d192
IB
24817}
24818
a063e204
TC
24819__extension__ extern __inline int32_t
24820__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 24821vqshrnd_n_s64 (int64_t __a, const int __b)
43e9d192 24822{
02a0ec4a 24823 return (int32_t) __builtin_aarch64_sqshrn_ndi (__a, __b);
43e9d192
IB
24824}
24825
a063e204
TC
24826__extension__ extern __inline uint8_t
24827__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24828vqshrnh_n_u16 (uint16_t __a, const int __b)
43e9d192 24829{
de10bcce 24830 return __builtin_aarch64_uqshrn_nhi_uus (__a, __b);
43e9d192
IB
24831}
24832
a063e204
TC
24833__extension__ extern __inline uint16_t
24834__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24835vqshrns_n_u32 (uint32_t __a, const int __b)
43e9d192 24836{
de10bcce 24837 return __builtin_aarch64_uqshrn_nsi_uus (__a, __b);
43e9d192
IB
24838}
24839
a063e204
TC
24840__extension__ extern __inline uint32_t
24841__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 24842vqshrnd_n_u64 (uint64_t __a, const int __b)
43e9d192 24843{
de10bcce 24844 return __builtin_aarch64_uqshrn_ndi_uus (__a, __b);
43e9d192
IB
24845}
24846
24847/* vqshrun */
24848
a063e204
TC
24849__extension__ extern __inline uint8x8_t
24850__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24851vqshrun_n_s16 (int16x8_t __a, const int __b)
24852{
24853 return (uint8x8_t) __builtin_aarch64_sqshrun_nv8hi (__a, __b);
24854}
24855
a063e204
TC
24856__extension__ extern __inline uint16x4_t
24857__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24858vqshrun_n_s32 (int32x4_t __a, const int __b)
24859{
24860 return (uint16x4_t) __builtin_aarch64_sqshrun_nv4si (__a, __b);
24861}
24862
a063e204
TC
24863__extension__ extern __inline uint32x2_t
24864__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
24865vqshrun_n_s64 (int64x2_t __a, const int __b)
24866{
24867 return (uint32x2_t) __builtin_aarch64_sqshrun_nv2di (__a, __b);
24868}
24869
a063e204
TC
24870__extension__ extern __inline int8_t
24871__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24872vqshrunh_n_s16 (int16_t __a, const int __b)
43e9d192 24873{
02a0ec4a 24874 return (int8_t) __builtin_aarch64_sqshrun_nhi (__a, __b);
43e9d192
IB
24875}
24876
a063e204
TC
24877__extension__ extern __inline int16_t
24878__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24879vqshruns_n_s32 (int32_t __a, const int __b)
43e9d192 24880{
02a0ec4a 24881 return (int16_t) __builtin_aarch64_sqshrun_nsi (__a, __b);
43e9d192
IB
24882}
24883
a063e204
TC
24884__extension__ extern __inline int32_t
24885__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 24886vqshrund_n_s64 (int64_t __a, const int __b)
43e9d192 24887{
02a0ec4a 24888 return (int32_t) __builtin_aarch64_sqshrun_ndi (__a, __b);
43e9d192
IB
24889}
24890
24891/* vqsub */
24892
a063e204
TC
24893__extension__ extern __inline int8_t
24894__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24895vqsubb_s8 (int8_t __a, int8_t __b)
43e9d192 24896{
02a0ec4a 24897 return (int8_t) __builtin_aarch64_sqsubqi (__a, __b);
43e9d192
IB
24898}
24899
a063e204
TC
24900__extension__ extern __inline int16_t
24901__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24902vqsubh_s16 (int16_t __a, int16_t __b)
43e9d192 24903{
02a0ec4a 24904 return (int16_t) __builtin_aarch64_sqsubhi (__a, __b);
43e9d192
IB
24905}
24906
a063e204
TC
24907__extension__ extern __inline int32_t
24908__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24909vqsubs_s32 (int32_t __a, int32_t __b)
43e9d192 24910{
02a0ec4a 24911 return (int32_t) __builtin_aarch64_sqsubsi (__a, __b);
43e9d192
IB
24912}
24913
a063e204
TC
24914__extension__ extern __inline int64_t
24915__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 24916vqsubd_s64 (int64_t __a, int64_t __b)
43e9d192 24917{
096c59be 24918 return __builtin_aarch64_sqsubdi (__a, __b);
43e9d192
IB
24919}
24920
a063e204
TC
24921__extension__ extern __inline uint8_t
24922__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24923vqsubb_u8 (uint8_t __a, uint8_t __b)
43e9d192 24924{
02a0ec4a 24925 return (uint8_t) __builtin_aarch64_uqsubqi_uuu (__a, __b);
43e9d192
IB
24926}
24927
a063e204
TC
24928__extension__ extern __inline uint16_t
24929__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24930vqsubh_u16 (uint16_t __a, uint16_t __b)
43e9d192 24931{
02a0ec4a 24932 return (uint16_t) __builtin_aarch64_uqsubhi_uuu (__a, __b);
43e9d192
IB
24933}
24934
a063e204
TC
24935__extension__ extern __inline uint32_t
24936__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 24937vqsubs_u32 (uint32_t __a, uint32_t __b)
43e9d192 24938{
02a0ec4a 24939 return (uint32_t) __builtin_aarch64_uqsubsi_uuu (__a, __b);
43e9d192
IB
24940}
24941
a063e204
TC
24942__extension__ extern __inline uint64_t
24943__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 24944vqsubd_u64 (uint64_t __a, uint64_t __b)
43e9d192 24945{
096c59be 24946 return __builtin_aarch64_uqsubdi_uuu (__a, __b);
43e9d192
IB
24947}
24948
246cc060
CL
24949/* vqtbl2 */
24950
a063e204
TC
24951__extension__ extern __inline int8x8_t
24952__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 24953vqtbl2_s8 (int8x16x2_t __tab, uint8x8_t __idx)
246cc060
CL
24954{
24955 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
24956 __o = __builtin_aarch64_set_qregoiv16qi (__o, __tab.val[0], 0);
24957 __o = __builtin_aarch64_set_qregoiv16qi (__o, __tab.val[1], 1);
24958 return __builtin_aarch64_tbl3v8qi (__o, (int8x8_t)__idx);
246cc060
CL
24959}
24960
a063e204
TC
24961__extension__ extern __inline uint8x8_t
24962__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 24963vqtbl2_u8 (uint8x16x2_t __tab, uint8x8_t __idx)
246cc060
CL
24964{
24965 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
24966 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0);
24967 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1);
24968 return (uint8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)__idx);
246cc060
CL
24969}
24970
a063e204
TC
24971__extension__ extern __inline poly8x8_t
24972__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 24973vqtbl2_p8 (poly8x16x2_t __tab, uint8x8_t __idx)
246cc060
CL
24974{
24975 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
24976 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0);
24977 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1);
24978 return (poly8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)__idx);
246cc060
CL
24979}
24980
a063e204
TC
24981__extension__ extern __inline int8x16_t
24982__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 24983vqtbl2q_s8 (int8x16x2_t __tab, uint8x16_t __idx)
246cc060
CL
24984{
24985 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
24986 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0);
24987 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1);
24988 return __builtin_aarch64_tbl3v16qi (__o, (int8x16_t)__idx);
246cc060
CL
24989}
24990
a063e204
TC
24991__extension__ extern __inline uint8x16_t
24992__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 24993vqtbl2q_u8 (uint8x16x2_t __tab, uint8x16_t __idx)
246cc060
CL
24994{
24995 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
24996 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0);
24997 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1);
24998 return (uint8x16_t)__builtin_aarch64_tbl3v16qi (__o, (int8x16_t)__idx);
246cc060
CL
24999}
25000
a063e204
TC
25001__extension__ extern __inline poly8x16_t
25002__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25003vqtbl2q_p8 (poly8x16x2_t __tab, uint8x16_t __idx)
246cc060
CL
25004{
25005 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
25006 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25007 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25008 return (poly8x16_t)__builtin_aarch64_tbl3v16qi (__o, (int8x16_t)__idx);
246cc060
CL
25009}
25010
25011/* vqtbl3 */
25012
a063e204
TC
25013__extension__ extern __inline int8x8_t
25014__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25015vqtbl3_s8 (int8x16x3_t __tab, uint8x8_t __idx)
246cc060
CL
25016{
25017 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
25018 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0);
25019 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1);
25020 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2);
25021 return __builtin_aarch64_qtbl3v8qi (__o, (int8x8_t)__idx);
246cc060
CL
25022}
25023
a063e204
TC
25024__extension__ extern __inline uint8x8_t
25025__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25026vqtbl3_u8 (uint8x16x3_t __tab, uint8x8_t __idx)
246cc060
CL
25027{
25028 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
25029 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0);
25030 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1);
25031 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2);
25032 return (uint8x8_t)__builtin_aarch64_qtbl3v8qi (__o, (int8x8_t)__idx);
246cc060
CL
25033}
25034
a063e204
TC
25035__extension__ extern __inline poly8x8_t
25036__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25037vqtbl3_p8 (poly8x16x3_t __tab, uint8x8_t __idx)
246cc060
CL
25038{
25039 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
25040 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0);
25041 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1);
25042 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2);
25043 return (poly8x8_t)__builtin_aarch64_qtbl3v8qi (__o, (int8x8_t)__idx);
246cc060
CL
25044}
25045
a063e204
TC
25046__extension__ extern __inline int8x16_t
25047__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25048vqtbl3q_s8 (int8x16x3_t __tab, uint8x16_t __idx)
246cc060
CL
25049{
25050 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
25051 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0);
25052 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1);
25053 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2);
25054 return __builtin_aarch64_qtbl3v16qi (__o, (int8x16_t)__idx);
246cc060
CL
25055}
25056
a063e204
TC
25057__extension__ extern __inline uint8x16_t
25058__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25059vqtbl3q_u8 (uint8x16x3_t __tab, uint8x16_t __idx)
246cc060
CL
25060{
25061 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
25062 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0);
25063 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1);
25064 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2);
25065 return (uint8x16_t)__builtin_aarch64_qtbl3v16qi (__o, (int8x16_t)__idx);
246cc060
CL
25066}
25067
a063e204
TC
25068__extension__ extern __inline poly8x16_t
25069__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25070vqtbl3q_p8 (poly8x16x3_t __tab, uint8x16_t __idx)
246cc060
CL
25071{
25072 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
25073 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0);
25074 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1);
25075 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2);
25076 return (poly8x16_t)__builtin_aarch64_qtbl3v16qi (__o, (int8x16_t)__idx);
246cc060
CL
25077}
25078
25079/* vqtbl4 */
25080
a063e204
TC
25081__extension__ extern __inline int8x8_t
25082__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25083vqtbl4_s8 (int8x16x4_t __tab, uint8x8_t __idx)
246cc060
CL
25084{
25085 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
25086 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25087 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25088 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2);
25089 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3);
25090 return __builtin_aarch64_qtbl4v8qi (__o, (int8x8_t)__idx);
246cc060
CL
25091}
25092
a063e204
TC
25093__extension__ extern __inline uint8x8_t
25094__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25095vqtbl4_u8 (uint8x16x4_t __tab, uint8x8_t __idx)
246cc060
CL
25096{
25097 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
25098 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25099 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25100 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2);
25101 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3);
25102 return (uint8x8_t)__builtin_aarch64_qtbl4v8qi (__o, (int8x8_t)__idx);
246cc060
CL
25103}
25104
a063e204
TC
25105__extension__ extern __inline poly8x8_t
25106__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25107vqtbl4_p8 (poly8x16x4_t __tab, uint8x8_t __idx)
246cc060
CL
25108{
25109 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
25110 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25111 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25112 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2);
25113 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3);
25114 return (poly8x8_t)__builtin_aarch64_qtbl4v8qi (__o, (int8x8_t)__idx);
246cc060
CL
25115}
25116
a063e204
TC
25117__extension__ extern __inline int8x16_t
25118__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25119vqtbl4q_s8 (int8x16x4_t __tab, uint8x16_t __idx)
246cc060
CL
25120{
25121 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
25122 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25123 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25124 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2);
25125 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3);
25126 return __builtin_aarch64_qtbl4v16qi (__o, (int8x16_t)__idx);
246cc060
CL
25127}
25128
a063e204
TC
25129__extension__ extern __inline uint8x16_t
25130__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25131vqtbl4q_u8 (uint8x16x4_t __tab, uint8x16_t __idx)
246cc060
CL
25132{
25133 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
25134 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25135 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25136 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2);
25137 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3);
25138 return (uint8x16_t)__builtin_aarch64_qtbl4v16qi (__o, (int8x16_t)__idx);
246cc060
CL
25139}
25140
a063e204
TC
25141__extension__ extern __inline poly8x16_t
25142__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25143vqtbl4q_p8 (poly8x16x4_t __tab, uint8x16_t __idx)
246cc060
CL
25144{
25145 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
25146 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25147 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25148 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2);
25149 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3);
25150 return (poly8x16_t)__builtin_aarch64_qtbl4v16qi (__o, (int8x16_t)__idx);
246cc060
CL
25151}
25152
25153
25154/* vqtbx2 */
a063e204
TC
25155__extension__ extern __inline int8x8_t
25156__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25157vqtbx2_s8 (int8x8_t __r, int8x16x2_t __tab, uint8x8_t __idx)
246cc060
CL
25158{
25159 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
25160 __o = __builtin_aarch64_set_qregoiv16qi (__o, __tab.val[0], 0);
25161 __o = __builtin_aarch64_set_qregoiv16qi (__o, __tab.val[1], 1);
25162 return __builtin_aarch64_tbx4v8qi (__r, __o, (int8x8_t)__idx);
246cc060
CL
25163}
25164
a063e204
TC
25165__extension__ extern __inline uint8x8_t
25166__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25167vqtbx2_u8 (uint8x8_t __r, uint8x16x2_t __tab, uint8x8_t __idx)
246cc060
CL
25168{
25169 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
25170 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25171 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25172 return (uint8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o,
25173 (int8x8_t)__idx);
246cc060
CL
25174}
25175
a063e204
TC
25176__extension__ extern __inline poly8x8_t
25177__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25178vqtbx2_p8 (poly8x8_t __r, poly8x16x2_t __tab, uint8x8_t __idx)
246cc060
CL
25179{
25180 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
25181 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25182 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25183 return (poly8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o,
25184 (int8x8_t)__idx);
246cc060
CL
25185}
25186
a063e204
TC
25187__extension__ extern __inline int8x16_t
25188__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25189vqtbx2q_s8 (int8x16_t __r, int8x16x2_t __tab, uint8x16_t __idx)
246cc060
CL
25190{
25191 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
25192 __o = __builtin_aarch64_set_qregoiv16qi (__o, __tab.val[0], 0);
25193 __o = __builtin_aarch64_set_qregoiv16qi (__o, __tab.val[1], 1);
25194 return __builtin_aarch64_tbx4v16qi (__r, __o, (int8x16_t)__idx);
246cc060
CL
25195}
25196
a063e204
TC
25197__extension__ extern __inline uint8x16_t
25198__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25199vqtbx2q_u8 (uint8x16_t __r, uint8x16x2_t __tab, uint8x16_t __idx)
246cc060
CL
25200{
25201 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
25202 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25203 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25204 return (uint8x16_t)__builtin_aarch64_tbx4v16qi ((int8x16_t)__r, __o,
25205 (int8x16_t)__idx);
246cc060
CL
25206}
25207
a063e204
TC
25208__extension__ extern __inline poly8x16_t
25209__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25210vqtbx2q_p8 (poly8x16_t __r, poly8x16x2_t __tab, uint8x16_t __idx)
246cc060
CL
25211{
25212 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
25213 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25214 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25215 return (poly8x16_t)__builtin_aarch64_tbx4v16qi ((int8x16_t)__r, __o,
25216 (int8x16_t)__idx);
246cc060
CL
25217}
25218
25219/* vqtbx3 */
a063e204
TC
25220__extension__ extern __inline int8x8_t
25221__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25222vqtbx3_s8 (int8x8_t __r, int8x16x3_t __tab, uint8x8_t __idx)
246cc060
CL
25223{
25224 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
25225 __o = __builtin_aarch64_set_qregciv16qi (__o, __tab.val[0], 0);
25226 __o = __builtin_aarch64_set_qregciv16qi (__o, __tab.val[1], 1);
25227 __o = __builtin_aarch64_set_qregciv16qi (__o, __tab.val[2], 2);
25228 return __builtin_aarch64_qtbx3v8qi (__r, __o, (int8x8_t)__idx);
246cc060
CL
25229}
25230
a063e204
TC
25231__extension__ extern __inline uint8x8_t
25232__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25233vqtbx3_u8 (uint8x8_t __r, uint8x16x3_t __tab, uint8x8_t __idx)
246cc060
CL
25234{
25235 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
25236 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0);
25237 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1);
25238 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2);
25239 return (uint8x8_t)__builtin_aarch64_qtbx3v8qi ((int8x8_t)__r, __o,
25240 (int8x8_t)__idx);
246cc060
CL
25241}
25242
a063e204
TC
25243__extension__ extern __inline poly8x8_t
25244__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25245vqtbx3_p8 (poly8x8_t __r, poly8x16x3_t __tab, uint8x8_t __idx)
246cc060
CL
25246{
25247 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
25248 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0);
25249 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1);
25250 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2);
25251 return (poly8x8_t)__builtin_aarch64_qtbx3v8qi ((int8x8_t)__r, __o,
25252 (int8x8_t)__idx);
246cc060
CL
25253}
25254
a063e204
TC
25255__extension__ extern __inline int8x16_t
25256__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25257vqtbx3q_s8 (int8x16_t __r, int8x16x3_t __tab, uint8x16_t __idx)
246cc060
CL
25258{
25259 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
25260 __o = __builtin_aarch64_set_qregciv16qi (__o, __tab.val[0], 0);
25261 __o = __builtin_aarch64_set_qregciv16qi (__o, __tab.val[1], 1);
25262 __o = __builtin_aarch64_set_qregciv16qi (__o, __tab.val[2], 2);
25263 return __builtin_aarch64_qtbx3v16qi (__r, __o, (int8x16_t)__idx);
246cc060
CL
25264}
25265
a063e204
TC
25266__extension__ extern __inline uint8x16_t
25267__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25268vqtbx3q_u8 (uint8x16_t __r, uint8x16x3_t __tab, uint8x16_t __idx)
246cc060
CL
25269{
25270 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
25271 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0);
25272 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1);
25273 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2);
25274 return (uint8x16_t)__builtin_aarch64_qtbx3v16qi ((int8x16_t)__r, __o,
25275 (int8x16_t)__idx);
246cc060
CL
25276}
25277
a063e204
TC
25278__extension__ extern __inline poly8x16_t
25279__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25280vqtbx3q_p8 (poly8x16_t __r, poly8x16x3_t __tab, uint8x16_t __idx)
246cc060
CL
25281{
25282 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
25283 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0);
25284 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1);
25285 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2);
25286 return (poly8x16_t)__builtin_aarch64_qtbx3v16qi ((int8x16_t)__r, __o,
25287 (int8x16_t)__idx);
246cc060
CL
25288}
25289
25290/* vqtbx4 */
25291
a063e204
TC
25292__extension__ extern __inline int8x8_t
25293__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25294vqtbx4_s8 (int8x8_t __r, int8x16x4_t __tab, uint8x8_t __idx)
246cc060
CL
25295{
25296 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
25297 __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[0], 0);
25298 __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[1], 1);
25299 __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[2], 2);
25300 __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[3], 3);
25301 return __builtin_aarch64_qtbx4v8qi (__r, __o, (int8x8_t)__idx);
246cc060
CL
25302}
25303
a063e204
TC
25304__extension__ extern __inline uint8x8_t
25305__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25306vqtbx4_u8 (uint8x8_t __r, uint8x16x4_t __tab, uint8x8_t __idx)
246cc060
CL
25307{
25308 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
25309 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25310 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25311 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2);
25312 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3);
25313 return (uint8x8_t)__builtin_aarch64_qtbx4v8qi ((int8x8_t)__r, __o,
25314 (int8x8_t)__idx);
246cc060
CL
25315}
25316
a063e204
TC
25317__extension__ extern __inline poly8x8_t
25318__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25319vqtbx4_p8 (poly8x8_t __r, poly8x16x4_t __tab, uint8x8_t __idx)
246cc060
CL
25320{
25321 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
25322 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25323 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25324 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2);
25325 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3);
25326 return (poly8x8_t)__builtin_aarch64_qtbx4v8qi ((int8x8_t)__r, __o,
25327 (int8x8_t)__idx);
246cc060
CL
25328}
25329
a063e204
TC
25330__extension__ extern __inline int8x16_t
25331__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25332vqtbx4q_s8 (int8x16_t __r, int8x16x4_t __tab, uint8x16_t __idx)
246cc060
CL
25333{
25334 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
25335 __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[0], 0);
25336 __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[1], 1);
25337 __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[2], 2);
25338 __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[3], 3);
25339 return __builtin_aarch64_qtbx4v16qi (__r, __o, (int8x16_t)__idx);
246cc060
CL
25340}
25341
a063e204
TC
25342__extension__ extern __inline uint8x16_t
25343__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25344vqtbx4q_u8 (uint8x16_t __r, uint8x16x4_t __tab, uint8x16_t __idx)
246cc060
CL
25345{
25346 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
25347 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25348 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25349 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2);
25350 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3);
25351 return (uint8x16_t)__builtin_aarch64_qtbx4v16qi ((int8x16_t)__r, __o,
25352 (int8x16_t)__idx);
246cc060
CL
25353}
25354
a063e204
TC
25355__extension__ extern __inline poly8x16_t
25356__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25357vqtbx4q_p8 (poly8x16_t __r, poly8x16x4_t __tab, uint8x16_t __idx)
246cc060
CL
25358{
25359 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
25360 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0);
25361 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1);
25362 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2);
25363 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3);
25364 return (poly8x16_t)__builtin_aarch64_qtbx4v16qi ((int8x16_t)__r, __o,
25365 (int8x16_t)__idx);
246cc060
CL
25366}
25367
cf465d71
AL
25368/* vrbit */
25369
a063e204
TC
25370__extension__ extern __inline poly8x8_t
25371__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
cf465d71
AL
25372vrbit_p8 (poly8x8_t __a)
25373{
25374 return (poly8x8_t) __builtin_aarch64_rbitv8qi ((int8x8_t) __a);
25375}
25376
a063e204
TC
25377__extension__ extern __inline int8x8_t
25378__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
cf465d71
AL
25379vrbit_s8 (int8x8_t __a)
25380{
25381 return __builtin_aarch64_rbitv8qi (__a);
25382}
25383
a063e204
TC
25384__extension__ extern __inline uint8x8_t
25385__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
cf465d71
AL
25386vrbit_u8 (uint8x8_t __a)
25387{
25388 return (uint8x8_t) __builtin_aarch64_rbitv8qi ((int8x8_t) __a);
25389}
25390
a063e204
TC
25391__extension__ extern __inline poly8x16_t
25392__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
cf465d71
AL
25393vrbitq_p8 (poly8x16_t __a)
25394{
25395 return (poly8x16_t) __builtin_aarch64_rbitv16qi ((int8x16_t)__a);
25396}
25397
a063e204
TC
25398__extension__ extern __inline int8x16_t
25399__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
cf465d71
AL
25400vrbitq_s8 (int8x16_t __a)
25401{
25402 return __builtin_aarch64_rbitv16qi (__a);
25403}
25404
a063e204
TC
25405__extension__ extern __inline uint8x16_t
25406__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
cf465d71
AL
25407vrbitq_u8 (uint8x16_t __a)
25408{
25409 return (uint8x16_t) __builtin_aarch64_rbitv16qi ((int8x16_t) __a);
25410}
25411
0050faf8
JG
25412/* vrecpe */
25413
a063e204
TC
25414__extension__ extern __inline uint32x2_t
25415__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
25416vrecpe_u32 (uint32x2_t __a)
25417{
25418 return (uint32x2_t) __builtin_aarch64_urecpev2si ((int32x2_t) __a);
25419}
a063e204
TC
25420
25421__extension__ extern __inline uint32x4_t
25422__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
58a3bd25
FY
25423vrecpeq_u32 (uint32x4_t __a)
25424{
25425 return (uint32x4_t) __builtin_aarch64_urecpev4si ((int32x4_t) __a);
25426}
25427
a063e204
TC
25428__extension__ extern __inline float32_t
25429__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0050faf8
JG
25430vrecpes_f32 (float32_t __a)
25431{
25432 return __builtin_aarch64_frecpesf (__a);
25433}
25434
a063e204
TC
25435__extension__ extern __inline float64_t
25436__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0050faf8
JG
25437vrecped_f64 (float64_t __a)
25438{
25439 return __builtin_aarch64_frecpedf (__a);
25440}
25441
a063e204
TC
25442__extension__ extern __inline float32x2_t
25443__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0050faf8
JG
25444vrecpe_f32 (float32x2_t __a)
25445{
25446 return __builtin_aarch64_frecpev2sf (__a);
25447}
25448
a063e204
TC
25449__extension__ extern __inline float64x1_t
25450__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
636929b8
JG
25451vrecpe_f64 (float64x1_t __a)
25452{
25453 return (float64x1_t) { vrecped_f64 (vget_lane_f64 (__a, 0)) };
25454}
25455
a063e204
TC
25456__extension__ extern __inline float32x4_t
25457__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0050faf8
JG
25458vrecpeq_f32 (float32x4_t __a)
25459{
25460 return __builtin_aarch64_frecpev4sf (__a);
25461}
25462
a063e204
TC
25463__extension__ extern __inline float64x2_t
25464__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0050faf8
JG
25465vrecpeq_f64 (float64x2_t __a)
25466{
25467 return __builtin_aarch64_frecpev2df (__a);
25468}
25469
25470/* vrecps */
25471
a063e204
TC
25472__extension__ extern __inline float32_t
25473__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0050faf8
JG
25474vrecpss_f32 (float32_t __a, float32_t __b)
25475{
25476 return __builtin_aarch64_frecpssf (__a, __b);
25477}
25478
a063e204
TC
25479__extension__ extern __inline float64_t
25480__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0050faf8
JG
25481vrecpsd_f64 (float64_t __a, float64_t __b)
25482{
25483 return __builtin_aarch64_frecpsdf (__a, __b);
25484}
25485
a063e204
TC
25486__extension__ extern __inline float32x2_t
25487__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0050faf8
JG
25488vrecps_f32 (float32x2_t __a, float32x2_t __b)
25489{
25490 return __builtin_aarch64_frecpsv2sf (__a, __b);
25491}
25492
a063e204
TC
25493__extension__ extern __inline float64x1_t
25494__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
636929b8
JG
25495vrecps_f64 (float64x1_t __a, float64x1_t __b)
25496{
25497 return (float64x1_t) { vrecpsd_f64 (vget_lane_f64 (__a, 0),
25498 vget_lane_f64 (__b, 0)) };
25499}
25500
a063e204
TC
25501__extension__ extern __inline float32x4_t
25502__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0050faf8
JG
25503vrecpsq_f32 (float32x4_t __a, float32x4_t __b)
25504{
25505 return __builtin_aarch64_frecpsv4sf (__a, __b);
25506}
25507
a063e204
TC
25508__extension__ extern __inline float64x2_t
25509__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0050faf8
JG
25510vrecpsq_f64 (float64x2_t __a, float64x2_t __b)
25511{
25512 return __builtin_aarch64_frecpsv2df (__a, __b);
25513}
25514
25515/* vrecpx */
25516
a063e204
TC
25517__extension__ extern __inline float32_t
25518__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0050faf8
JG
25519vrecpxs_f32 (float32_t __a)
25520{
25521 return __builtin_aarch64_frecpxsf (__a);
25522}
25523
a063e204
TC
25524__extension__ extern __inline float64_t
25525__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0050faf8
JG
25526vrecpxd_f64 (float64_t __a)
25527{
25528 return __builtin_aarch64_frecpxdf (__a);
25529}
25530
923fcec3
AL
25531
25532/* vrev */
25533
a063e204
TC
25534__extension__ extern __inline poly8x8_t
25535__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25536vrev16_p8 (poly8x8_t __a)
923fcec3 25537{
9a3afc35 25538 return __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
923fcec3
AL
25539}
25540
a063e204
TC
25541__extension__ extern __inline int8x8_t
25542__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25543vrev16_s8 (int8x8_t __a)
923fcec3 25544{
9a3afc35 25545 return __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
923fcec3
AL
25546}
25547
a063e204
TC
25548__extension__ extern __inline uint8x8_t
25549__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25550vrev16_u8 (uint8x8_t __a)
923fcec3 25551{
9a3afc35 25552 return __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
923fcec3
AL
25553}
25554
a063e204
TC
25555__extension__ extern __inline poly8x16_t
25556__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25557vrev16q_p8 (poly8x16_t __a)
923fcec3 25558{
9a3afc35 25559 return __builtin_shuffle (__a,
923fcec3
AL
25560 (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 });
25561}
25562
a063e204
TC
25563__extension__ extern __inline int8x16_t
25564__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25565vrev16q_s8 (int8x16_t __a)
923fcec3 25566{
9a3afc35 25567 return __builtin_shuffle (__a,
923fcec3
AL
25568 (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 });
25569}
25570
a063e204
TC
25571__extension__ extern __inline uint8x16_t
25572__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25573vrev16q_u8 (uint8x16_t __a)
923fcec3 25574{
9a3afc35 25575 return __builtin_shuffle (__a,
923fcec3
AL
25576 (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 });
25577}
25578
a063e204
TC
25579__extension__ extern __inline poly8x8_t
25580__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25581vrev32_p8 (poly8x8_t __a)
923fcec3 25582{
9a3afc35 25583 return __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
923fcec3
AL
25584}
25585
a063e204
TC
25586__extension__ extern __inline poly16x4_t
25587__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25588vrev32_p16 (poly16x4_t __a)
923fcec3 25589{
9a3afc35 25590 return __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 });
923fcec3
AL
25591}
25592
a063e204
TC
25593__extension__ extern __inline int8x8_t
25594__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25595vrev32_s8 (int8x8_t __a)
923fcec3 25596{
9a3afc35 25597 return __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
923fcec3
AL
25598}
25599
a063e204
TC
25600__extension__ extern __inline int16x4_t
25601__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25602vrev32_s16 (int16x4_t __a)
923fcec3 25603{
9a3afc35 25604 return __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 });
923fcec3
AL
25605}
25606
a063e204
TC
25607__extension__ extern __inline uint8x8_t
25608__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25609vrev32_u8 (uint8x8_t __a)
923fcec3 25610{
9a3afc35 25611 return __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
923fcec3
AL
25612}
25613
a063e204
TC
25614__extension__ extern __inline uint16x4_t
25615__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25616vrev32_u16 (uint16x4_t __a)
923fcec3 25617{
9a3afc35 25618 return __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 });
923fcec3
AL
25619}
25620
a063e204
TC
25621__extension__ extern __inline poly8x16_t
25622__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25623vrev32q_p8 (poly8x16_t __a)
923fcec3 25624{
9a3afc35 25625 return __builtin_shuffle (__a,
923fcec3
AL
25626 (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 });
25627}
25628
a063e204
TC
25629__extension__ extern __inline poly16x8_t
25630__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25631vrev32q_p16 (poly16x8_t __a)
923fcec3 25632{
9a3afc35 25633 return __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
923fcec3
AL
25634}
25635
a063e204
TC
25636__extension__ extern __inline int8x16_t
25637__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25638vrev32q_s8 (int8x16_t __a)
923fcec3 25639{
9a3afc35 25640 return __builtin_shuffle (__a,
923fcec3
AL
25641 (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 });
25642}
25643
a063e204
TC
25644__extension__ extern __inline int16x8_t
25645__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25646vrev32q_s16 (int16x8_t __a)
923fcec3 25647{
9a3afc35 25648 return __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
923fcec3
AL
25649}
25650
a063e204
TC
25651__extension__ extern __inline uint8x16_t
25652__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25653vrev32q_u8 (uint8x16_t __a)
923fcec3 25654{
9a3afc35 25655 return __builtin_shuffle (__a,
923fcec3
AL
25656 (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 });
25657}
25658
a063e204
TC
25659__extension__ extern __inline uint16x8_t
25660__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25661vrev32q_u16 (uint16x8_t __a)
923fcec3 25662{
9a3afc35 25663 return __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
923fcec3
AL
25664}
25665
a063e204
TC
25666__extension__ extern __inline float16x4_t
25667__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
25668vrev64_f16 (float16x4_t __a)
25669{
25670 return __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 });
25671}
25672
a063e204
TC
25673__extension__ extern __inline float32x2_t
25674__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25675vrev64_f32 (float32x2_t __a)
923fcec3 25676{
9a3afc35 25677 return __builtin_shuffle (__a, (uint32x2_t) { 1, 0 });
923fcec3
AL
25678}
25679
a063e204
TC
25680__extension__ extern __inline poly8x8_t
25681__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25682vrev64_p8 (poly8x8_t __a)
923fcec3 25683{
9a3afc35 25684 return __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 });
923fcec3
AL
25685}
25686
a063e204
TC
25687__extension__ extern __inline poly16x4_t
25688__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25689vrev64_p16 (poly16x4_t __a)
923fcec3 25690{
9a3afc35 25691 return __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 });
923fcec3
AL
25692}
25693
a063e204
TC
25694__extension__ extern __inline int8x8_t
25695__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25696vrev64_s8 (int8x8_t __a)
923fcec3 25697{
9a3afc35 25698 return __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 });
923fcec3
AL
25699}
25700
a063e204
TC
25701__extension__ extern __inline int16x4_t
25702__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25703vrev64_s16 (int16x4_t __a)
923fcec3 25704{
9a3afc35 25705 return __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 });
923fcec3
AL
25706}
25707
a063e204
TC
25708__extension__ extern __inline int32x2_t
25709__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25710vrev64_s32 (int32x2_t __a)
923fcec3 25711{
9a3afc35 25712 return __builtin_shuffle (__a, (uint32x2_t) { 1, 0 });
923fcec3
AL
25713}
25714
a063e204
TC
25715__extension__ extern __inline uint8x8_t
25716__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25717vrev64_u8 (uint8x8_t __a)
923fcec3 25718{
9a3afc35 25719 return __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 });
923fcec3
AL
25720}
25721
a063e204
TC
25722__extension__ extern __inline uint16x4_t
25723__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25724vrev64_u16 (uint16x4_t __a)
923fcec3 25725{
9a3afc35 25726 return __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 });
923fcec3
AL
25727}
25728
a063e204
TC
25729__extension__ extern __inline uint32x2_t
25730__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25731vrev64_u32 (uint32x2_t __a)
923fcec3 25732{
9a3afc35 25733 return __builtin_shuffle (__a, (uint32x2_t) { 1, 0 });
923fcec3
AL
25734}
25735
a063e204
TC
25736__extension__ extern __inline float16x8_t
25737__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
25738vrev64q_f16 (float16x8_t __a)
25739{
25740 return __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
25741}
25742
a063e204
TC
25743__extension__ extern __inline float32x4_t
25744__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25745vrev64q_f32 (float32x4_t __a)
923fcec3 25746{
9a3afc35 25747 return __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 });
923fcec3
AL
25748}
25749
a063e204
TC
25750__extension__ extern __inline poly8x16_t
25751__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25752vrev64q_p8 (poly8x16_t __a)
923fcec3 25753{
9a3afc35 25754 return __builtin_shuffle (__a,
923fcec3
AL
25755 (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 });
25756}
25757
a063e204
TC
25758__extension__ extern __inline poly16x8_t
25759__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25760vrev64q_p16 (poly16x8_t __a)
923fcec3 25761{
9a3afc35 25762 return __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
923fcec3
AL
25763}
25764
a063e204
TC
25765__extension__ extern __inline int8x16_t
25766__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25767vrev64q_s8 (int8x16_t __a)
923fcec3 25768{
9a3afc35 25769 return __builtin_shuffle (__a,
923fcec3
AL
25770 (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 });
25771}
25772
a063e204
TC
25773__extension__ extern __inline int16x8_t
25774__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25775vrev64q_s16 (int16x8_t __a)
923fcec3 25776{
9a3afc35 25777 return __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
923fcec3
AL
25778}
25779
a063e204
TC
25780__extension__ extern __inline int32x4_t
25781__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25782vrev64q_s32 (int32x4_t __a)
923fcec3 25783{
9a3afc35 25784 return __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 });
923fcec3
AL
25785}
25786
a063e204
TC
25787__extension__ extern __inline uint8x16_t
25788__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25789vrev64q_u8 (uint8x16_t __a)
923fcec3 25790{
9a3afc35 25791 return __builtin_shuffle (__a,
923fcec3
AL
25792 (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 });
25793}
25794
a063e204
TC
25795__extension__ extern __inline uint16x8_t
25796__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25797vrev64q_u16 (uint16x8_t __a)
923fcec3 25798{
9a3afc35 25799 return __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
923fcec3
AL
25800}
25801
a063e204
TC
25802__extension__ extern __inline uint32x4_t
25803__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 25804vrev64q_u32 (uint32x4_t __a)
923fcec3 25805{
9a3afc35 25806 return __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 });
923fcec3
AL
25807}
25808
77a205be
JG
25809/* vrnd */
25810
a063e204
TC
25811__extension__ extern __inline float32x2_t
25812__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25813vrnd_f32 (float32x2_t __a)
25814{
25815 return __builtin_aarch64_btruncv2sf (__a);
25816}
25817
a063e204
TC
25818__extension__ extern __inline float64x1_t
25819__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
74dc11ed
AV
25820vrnd_f64 (float64x1_t __a)
25821{
25822 return vset_lane_f64 (__builtin_trunc (vget_lane_f64 (__a, 0)), __a, 0);
25823}
25824
a063e204
TC
25825__extension__ extern __inline float32x4_t
25826__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25827vrndq_f32 (float32x4_t __a)
25828{
25829 return __builtin_aarch64_btruncv4sf (__a);
25830}
25831
a063e204
TC
25832__extension__ extern __inline float64x2_t
25833__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25834vrndq_f64 (float64x2_t __a)
25835{
25836 return __builtin_aarch64_btruncv2df (__a);
25837}
25838
25839/* vrnda */
25840
a063e204
TC
25841__extension__ extern __inline float32x2_t
25842__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25843vrnda_f32 (float32x2_t __a)
25844{
25845 return __builtin_aarch64_roundv2sf (__a);
25846}
25847
a063e204
TC
25848__extension__ extern __inline float64x1_t
25849__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
74dc11ed
AV
25850vrnda_f64 (float64x1_t __a)
25851{
25852 return vset_lane_f64 (__builtin_round (vget_lane_f64 (__a, 0)), __a, 0);
25853}
25854
a063e204
TC
25855__extension__ extern __inline float32x4_t
25856__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25857vrndaq_f32 (float32x4_t __a)
25858{
25859 return __builtin_aarch64_roundv4sf (__a);
25860}
25861
a063e204
TC
25862__extension__ extern __inline float64x2_t
25863__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25864vrndaq_f64 (float64x2_t __a)
25865{
25866 return __builtin_aarch64_roundv2df (__a);
25867}
25868
25869/* vrndi */
25870
a063e204
TC
25871__extension__ extern __inline float32x2_t
25872__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25873vrndi_f32 (float32x2_t __a)
25874{
25875 return __builtin_aarch64_nearbyintv2sf (__a);
25876}
25877
a063e204
TC
25878__extension__ extern __inline float64x1_t
25879__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
74dc11ed
AV
25880vrndi_f64 (float64x1_t __a)
25881{
25882 return vset_lane_f64 (__builtin_nearbyint (vget_lane_f64 (__a, 0)), __a, 0);
25883}
25884
a063e204
TC
25885__extension__ extern __inline float32x4_t
25886__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25887vrndiq_f32 (float32x4_t __a)
25888{
25889 return __builtin_aarch64_nearbyintv4sf (__a);
25890}
25891
a063e204
TC
25892__extension__ extern __inline float64x2_t
25893__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25894vrndiq_f64 (float64x2_t __a)
25895{
25896 return __builtin_aarch64_nearbyintv2df (__a);
25897}
25898
25899/* vrndm */
25900
a063e204
TC
25901__extension__ extern __inline float32x2_t
25902__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25903vrndm_f32 (float32x2_t __a)
25904{
25905 return __builtin_aarch64_floorv2sf (__a);
25906}
25907
a063e204
TC
25908__extension__ extern __inline float64x1_t
25909__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
74dc11ed
AV
25910vrndm_f64 (float64x1_t __a)
25911{
25912 return vset_lane_f64 (__builtin_floor (vget_lane_f64 (__a, 0)), __a, 0);
25913}
25914
a063e204
TC
25915__extension__ extern __inline float32x4_t
25916__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25917vrndmq_f32 (float32x4_t __a)
25918{
25919 return __builtin_aarch64_floorv4sf (__a);
25920}
25921
a063e204
TC
25922__extension__ extern __inline float64x2_t
25923__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25924vrndmq_f64 (float64x2_t __a)
25925{
25926 return __builtin_aarch64_floorv2df (__a);
25927}
25928
25929/* vrndn */
25930
02b5377b
KT
25931__extension__ extern __inline float32_t
25932__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
25933vrndns_f32 (float32_t __a)
25934{
25935 return __builtin_aarch64_frintnsf (__a);
25936}
25937
a063e204
TC
25938__extension__ extern __inline float32x2_t
25939__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25940vrndn_f32 (float32x2_t __a)
25941{
25942 return __builtin_aarch64_frintnv2sf (__a);
25943}
74dc11ed 25944
a063e204
TC
25945__extension__ extern __inline float64x1_t
25946__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
74dc11ed
AV
25947vrndn_f64 (float64x1_t __a)
25948{
c6a29a09 25949 return (float64x1_t) {__builtin_aarch64_frintndf (__a[0])};
74dc11ed
AV
25950}
25951
a063e204
TC
25952__extension__ extern __inline float32x4_t
25953__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25954vrndnq_f32 (float32x4_t __a)
25955{
25956 return __builtin_aarch64_frintnv4sf (__a);
25957}
25958
a063e204
TC
25959__extension__ extern __inline float64x2_t
25960__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25961vrndnq_f64 (float64x2_t __a)
25962{
25963 return __builtin_aarch64_frintnv2df (__a);
25964}
25965
25966/* vrndp */
25967
a063e204
TC
25968__extension__ extern __inline float32x2_t
25969__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25970vrndp_f32 (float32x2_t __a)
25971{
25972 return __builtin_aarch64_ceilv2sf (__a);
25973}
25974
a063e204
TC
25975__extension__ extern __inline float64x1_t
25976__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
74dc11ed
AV
25977vrndp_f64 (float64x1_t __a)
25978{
25979 return vset_lane_f64 (__builtin_ceil (vget_lane_f64 (__a, 0)), __a, 0);
25980}
25981
a063e204
TC
25982__extension__ extern __inline float32x4_t
25983__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25984vrndpq_f32 (float32x4_t __a)
25985{
25986 return __builtin_aarch64_ceilv4sf (__a);
25987}
25988
a063e204
TC
25989__extension__ extern __inline float64x2_t
25990__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
25991vrndpq_f64 (float64x2_t __a)
25992{
25993 return __builtin_aarch64_ceilv2df (__a);
25994}
25995
25996/* vrndx */
25997
a063e204
TC
25998__extension__ extern __inline float32x2_t
25999__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
26000vrndx_f32 (float32x2_t __a)
26001{
26002 return __builtin_aarch64_rintv2sf (__a);
26003}
26004
a063e204
TC
26005__extension__ extern __inline float64x1_t
26006__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
74dc11ed
AV
26007vrndx_f64 (float64x1_t __a)
26008{
26009 return vset_lane_f64 (__builtin_rint (vget_lane_f64 (__a, 0)), __a, 0);
26010}
26011
a063e204
TC
26012__extension__ extern __inline float32x4_t
26013__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
26014vrndxq_f32 (float32x4_t __a)
26015{
26016 return __builtin_aarch64_rintv4sf (__a);
26017}
26018
a063e204
TC
26019__extension__ extern __inline float64x2_t
26020__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
77a205be
JG
26021vrndxq_f64 (float64x2_t __a)
26022{
26023 return __builtin_aarch64_rintv2df (__a);
26024}
26025
43e9d192
IB
26026/* vrshl */
26027
a063e204
TC
26028__extension__ extern __inline int8x8_t
26029__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26030vrshl_s8 (int8x8_t __a, int8x8_t __b)
26031{
26032 return (int8x8_t) __builtin_aarch64_srshlv8qi (__a, __b);
26033}
26034
a063e204
TC
26035__extension__ extern __inline int16x4_t
26036__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26037vrshl_s16 (int16x4_t __a, int16x4_t __b)
26038{
26039 return (int16x4_t) __builtin_aarch64_srshlv4hi (__a, __b);
26040}
26041
a063e204
TC
26042__extension__ extern __inline int32x2_t
26043__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26044vrshl_s32 (int32x2_t __a, int32x2_t __b)
26045{
26046 return (int32x2_t) __builtin_aarch64_srshlv2si (__a, __b);
26047}
26048
a063e204
TC
26049__extension__ extern __inline int64x1_t
26050__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26051vrshl_s64 (int64x1_t __a, int64x1_t __b)
26052{
096c59be 26053 return (int64x1_t) {__builtin_aarch64_srshldi (__a[0], __b[0])};
43e9d192
IB
26054}
26055
a063e204
TC
26056__extension__ extern __inline uint8x8_t
26057__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26058vrshl_u8 (uint8x8_t __a, int8x8_t __b)
26059{
918621d3 26060 return __builtin_aarch64_urshlv8qi_uus (__a, __b);
43e9d192
IB
26061}
26062
a063e204
TC
26063__extension__ extern __inline uint16x4_t
26064__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26065vrshl_u16 (uint16x4_t __a, int16x4_t __b)
26066{
918621d3 26067 return __builtin_aarch64_urshlv4hi_uus (__a, __b);
43e9d192
IB
26068}
26069
a063e204
TC
26070__extension__ extern __inline uint32x2_t
26071__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26072vrshl_u32 (uint32x2_t __a, int32x2_t __b)
26073{
918621d3 26074 return __builtin_aarch64_urshlv2si_uus (__a, __b);
43e9d192
IB
26075}
26076
a063e204
TC
26077__extension__ extern __inline uint64x1_t
26078__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26079vrshl_u64 (uint64x1_t __a, int64x1_t __b)
26080{
096c59be 26081 return (uint64x1_t) {__builtin_aarch64_urshldi_uus (__a[0], __b[0])};
43e9d192
IB
26082}
26083
a063e204
TC
26084__extension__ extern __inline int8x16_t
26085__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26086vrshlq_s8 (int8x16_t __a, int8x16_t __b)
26087{
26088 return (int8x16_t) __builtin_aarch64_srshlv16qi (__a, __b);
26089}
26090
a063e204
TC
26091__extension__ extern __inline int16x8_t
26092__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26093vrshlq_s16 (int16x8_t __a, int16x8_t __b)
26094{
26095 return (int16x8_t) __builtin_aarch64_srshlv8hi (__a, __b);
26096}
26097
a063e204
TC
26098__extension__ extern __inline int32x4_t
26099__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26100vrshlq_s32 (int32x4_t __a, int32x4_t __b)
26101{
26102 return (int32x4_t) __builtin_aarch64_srshlv4si (__a, __b);
26103}
26104
a063e204
TC
26105__extension__ extern __inline int64x2_t
26106__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26107vrshlq_s64 (int64x2_t __a, int64x2_t __b)
26108{
26109 return (int64x2_t) __builtin_aarch64_srshlv2di (__a, __b);
26110}
26111
a063e204
TC
26112__extension__ extern __inline uint8x16_t
26113__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26114vrshlq_u8 (uint8x16_t __a, int8x16_t __b)
26115{
918621d3 26116 return __builtin_aarch64_urshlv16qi_uus (__a, __b);
43e9d192
IB
26117}
26118
a063e204
TC
26119__extension__ extern __inline uint16x8_t
26120__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26121vrshlq_u16 (uint16x8_t __a, int16x8_t __b)
26122{
918621d3 26123 return __builtin_aarch64_urshlv8hi_uus (__a, __b);
43e9d192
IB
26124}
26125
a063e204
TC
26126__extension__ extern __inline uint32x4_t
26127__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26128vrshlq_u32 (uint32x4_t __a, int32x4_t __b)
26129{
918621d3 26130 return __builtin_aarch64_urshlv4si_uus (__a, __b);
43e9d192
IB
26131}
26132
a063e204
TC
26133__extension__ extern __inline uint64x2_t
26134__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26135vrshlq_u64 (uint64x2_t __a, int64x2_t __b)
26136{
918621d3 26137 return __builtin_aarch64_urshlv2di_uus (__a, __b);
43e9d192
IB
26138}
26139
a063e204
TC
26140__extension__ extern __inline int64_t
26141__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 26142vrshld_s64 (int64_t __a, int64_t __b)
43e9d192 26143{
096c59be 26144 return __builtin_aarch64_srshldi (__a, __b);
43e9d192
IB
26145}
26146
a063e204
TC
26147__extension__ extern __inline uint64_t
26148__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 26149vrshld_u64 (uint64_t __a, int64_t __b)
43e9d192 26150{
918621d3 26151 return __builtin_aarch64_urshldi_uus (__a, __b);
43e9d192
IB
26152}
26153
26154/* vrshr */
26155
a063e204
TC
26156__extension__ extern __inline int8x8_t
26157__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26158vrshr_n_s8 (int8x8_t __a, const int __b)
26159{
26160 return (int8x8_t) __builtin_aarch64_srshr_nv8qi (__a, __b);
26161}
26162
a063e204
TC
26163__extension__ extern __inline int16x4_t
26164__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26165vrshr_n_s16 (int16x4_t __a, const int __b)
26166{
26167 return (int16x4_t) __builtin_aarch64_srshr_nv4hi (__a, __b);
26168}
26169
a063e204
TC
26170__extension__ extern __inline int32x2_t
26171__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26172vrshr_n_s32 (int32x2_t __a, const int __b)
26173{
26174 return (int32x2_t) __builtin_aarch64_srshr_nv2si (__a, __b);
26175}
26176
a063e204
TC
26177__extension__ extern __inline int64x1_t
26178__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26179vrshr_n_s64 (int64x1_t __a, const int __b)
26180{
096c59be 26181 return (int64x1_t) {__builtin_aarch64_srshr_ndi (__a[0], __b)};
43e9d192
IB
26182}
26183
a063e204
TC
26184__extension__ extern __inline uint8x8_t
26185__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26186vrshr_n_u8 (uint8x8_t __a, const int __b)
26187{
918621d3 26188 return __builtin_aarch64_urshr_nv8qi_uus (__a, __b);
43e9d192
IB
26189}
26190
a063e204
TC
26191__extension__ extern __inline uint16x4_t
26192__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26193vrshr_n_u16 (uint16x4_t __a, const int __b)
26194{
918621d3 26195 return __builtin_aarch64_urshr_nv4hi_uus (__a, __b);
43e9d192
IB
26196}
26197
a063e204
TC
26198__extension__ extern __inline uint32x2_t
26199__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26200vrshr_n_u32 (uint32x2_t __a, const int __b)
26201{
918621d3 26202 return __builtin_aarch64_urshr_nv2si_uus (__a, __b);
43e9d192
IB
26203}
26204
a063e204
TC
26205__extension__ extern __inline uint64x1_t
26206__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26207vrshr_n_u64 (uint64x1_t __a, const int __b)
26208{
096c59be 26209 return (uint64x1_t) {__builtin_aarch64_urshr_ndi_uus (__a[0], __b)};
43e9d192
IB
26210}
26211
a063e204
TC
26212__extension__ extern __inline int8x16_t
26213__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26214vrshrq_n_s8 (int8x16_t __a, const int __b)
26215{
26216 return (int8x16_t) __builtin_aarch64_srshr_nv16qi (__a, __b);
26217}
26218
a063e204
TC
26219__extension__ extern __inline int16x8_t
26220__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26221vrshrq_n_s16 (int16x8_t __a, const int __b)
26222{
26223 return (int16x8_t) __builtin_aarch64_srshr_nv8hi (__a, __b);
26224}
26225
a063e204
TC
26226__extension__ extern __inline int32x4_t
26227__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26228vrshrq_n_s32 (int32x4_t __a, const int __b)
26229{
26230 return (int32x4_t) __builtin_aarch64_srshr_nv4si (__a, __b);
26231}
26232
a063e204
TC
26233__extension__ extern __inline int64x2_t
26234__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26235vrshrq_n_s64 (int64x2_t __a, const int __b)
26236{
26237 return (int64x2_t) __builtin_aarch64_srshr_nv2di (__a, __b);
26238}
26239
a063e204
TC
26240__extension__ extern __inline uint8x16_t
26241__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26242vrshrq_n_u8 (uint8x16_t __a, const int __b)
26243{
918621d3 26244 return __builtin_aarch64_urshr_nv16qi_uus (__a, __b);
43e9d192
IB
26245}
26246
a063e204
TC
26247__extension__ extern __inline uint16x8_t
26248__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26249vrshrq_n_u16 (uint16x8_t __a, const int __b)
26250{
918621d3 26251 return __builtin_aarch64_urshr_nv8hi_uus (__a, __b);
43e9d192
IB
26252}
26253
a063e204
TC
26254__extension__ extern __inline uint32x4_t
26255__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26256vrshrq_n_u32 (uint32x4_t __a, const int __b)
26257{
918621d3 26258 return __builtin_aarch64_urshr_nv4si_uus (__a, __b);
43e9d192
IB
26259}
26260
a063e204
TC
26261__extension__ extern __inline uint64x2_t
26262__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26263vrshrq_n_u64 (uint64x2_t __a, const int __b)
26264{
918621d3 26265 return __builtin_aarch64_urshr_nv2di_uus (__a, __b);
43e9d192
IB
26266}
26267
a063e204
TC
26268__extension__ extern __inline int64_t
26269__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 26270vrshrd_n_s64 (int64_t __a, const int __b)
43e9d192 26271{
096c59be 26272 return __builtin_aarch64_srshr_ndi (__a, __b);
43e9d192
IB
26273}
26274
a063e204
TC
26275__extension__ extern __inline uint64_t
26276__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 26277vrshrd_n_u64 (uint64_t __a, const int __b)
43e9d192 26278{
918621d3 26279 return __builtin_aarch64_urshr_ndi_uus (__a, __b);
43e9d192
IB
26280}
26281
2a823433
JW
26282/* vrsqrte. */
26283
a063e204
TC
26284__extension__ extern __inline float32_t
26285__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2a823433
JW
26286vrsqrtes_f32 (float32_t __a)
26287{
26288 return __builtin_aarch64_rsqrtesf (__a);
26289}
26290
a063e204
TC
26291__extension__ extern __inline float64_t
26292__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2a823433
JW
26293vrsqrted_f64 (float64_t __a)
26294{
26295 return __builtin_aarch64_rsqrtedf (__a);
26296}
26297
a063e204
TC
26298__extension__ extern __inline float32x2_t
26299__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2a823433
JW
26300vrsqrte_f32 (float32x2_t __a)
26301{
26302 return __builtin_aarch64_rsqrtev2sf (__a);
26303}
26304
a063e204
TC
26305__extension__ extern __inline float64x1_t
26306__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2a823433
JW
26307vrsqrte_f64 (float64x1_t __a)
26308{
26309 return (float64x1_t) {vrsqrted_f64 (vget_lane_f64 (__a, 0))};
26310}
26311
a063e204
TC
26312__extension__ extern __inline float32x4_t
26313__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2a823433
JW
26314vrsqrteq_f32 (float32x4_t __a)
26315{
26316 return __builtin_aarch64_rsqrtev4sf (__a);
26317}
26318
a063e204
TC
26319__extension__ extern __inline float64x2_t
26320__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2a823433
JW
26321vrsqrteq_f64 (float64x2_t __a)
26322{
26323 return __builtin_aarch64_rsqrtev2df (__a);
26324}
26325
00ea75d4
JW
26326/* vrsqrts. */
26327
a063e204
TC
26328__extension__ extern __inline float32_t
26329__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
00ea75d4
JW
26330vrsqrtss_f32 (float32_t __a, float32_t __b)
26331{
26332 return __builtin_aarch64_rsqrtssf (__a, __b);
26333}
26334
a063e204
TC
26335__extension__ extern __inline float64_t
26336__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
00ea75d4
JW
26337vrsqrtsd_f64 (float64_t __a, float64_t __b)
26338{
26339 return __builtin_aarch64_rsqrtsdf (__a, __b);
26340}
26341
a063e204
TC
26342__extension__ extern __inline float32x2_t
26343__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
00ea75d4
JW
26344vrsqrts_f32 (float32x2_t __a, float32x2_t __b)
26345{
26346 return __builtin_aarch64_rsqrtsv2sf (__a, __b);
26347}
26348
a063e204
TC
26349__extension__ extern __inline float64x1_t
26350__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
00ea75d4
JW
26351vrsqrts_f64 (float64x1_t __a, float64x1_t __b)
26352{
26353 return (float64x1_t) {vrsqrtsd_f64 (vget_lane_f64 (__a, 0),
26354 vget_lane_f64 (__b, 0))};
26355}
26356
a063e204
TC
26357__extension__ extern __inline float32x4_t
26358__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
00ea75d4
JW
26359vrsqrtsq_f32 (float32x4_t __a, float32x4_t __b)
26360{
26361 return __builtin_aarch64_rsqrtsv4sf (__a, __b);
26362}
26363
a063e204
TC
26364__extension__ extern __inline float64x2_t
26365__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
00ea75d4
JW
26366vrsqrtsq_f64 (float64x2_t __a, float64x2_t __b)
26367{
26368 return __builtin_aarch64_rsqrtsv2df (__a, __b);
26369}
26370
43e9d192
IB
26371/* vrsra */
26372
a063e204
TC
26373__extension__ extern __inline int8x8_t
26374__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26375vrsra_n_s8 (int8x8_t __a, int8x8_t __b, const int __c)
26376{
26377 return (int8x8_t) __builtin_aarch64_srsra_nv8qi (__a, __b, __c);
26378}
26379
a063e204
TC
26380__extension__ extern __inline int16x4_t
26381__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26382vrsra_n_s16 (int16x4_t __a, int16x4_t __b, const int __c)
26383{
26384 return (int16x4_t) __builtin_aarch64_srsra_nv4hi (__a, __b, __c);
26385}
26386
a063e204
TC
26387__extension__ extern __inline int32x2_t
26388__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26389vrsra_n_s32 (int32x2_t __a, int32x2_t __b, const int __c)
26390{
26391 return (int32x2_t) __builtin_aarch64_srsra_nv2si (__a, __b, __c);
26392}
26393
a063e204
TC
26394__extension__ extern __inline int64x1_t
26395__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26396vrsra_n_s64 (int64x1_t __a, int64x1_t __b, const int __c)
26397{
096c59be 26398 return (int64x1_t) {__builtin_aarch64_srsra_ndi (__a[0], __b[0], __c)};
43e9d192
IB
26399}
26400
a063e204
TC
26401__extension__ extern __inline uint8x8_t
26402__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26403vrsra_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c)
26404{
de10bcce 26405 return __builtin_aarch64_ursra_nv8qi_uuus (__a, __b, __c);
43e9d192
IB
26406}
26407
a063e204
TC
26408__extension__ extern __inline uint16x4_t
26409__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26410vrsra_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
26411{
de10bcce 26412 return __builtin_aarch64_ursra_nv4hi_uuus (__a, __b, __c);
43e9d192
IB
26413}
26414
a063e204
TC
26415__extension__ extern __inline uint32x2_t
26416__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26417vrsra_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
26418{
de10bcce 26419 return __builtin_aarch64_ursra_nv2si_uuus (__a, __b, __c);
43e9d192
IB
26420}
26421
a063e204
TC
26422__extension__ extern __inline uint64x1_t
26423__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26424vrsra_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c)
26425{
096c59be 26426 return (uint64x1_t) {__builtin_aarch64_ursra_ndi_uuus (__a[0], __b[0], __c)};
43e9d192
IB
26427}
26428
a063e204
TC
26429__extension__ extern __inline int8x16_t
26430__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26431vrsraq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c)
26432{
26433 return (int8x16_t) __builtin_aarch64_srsra_nv16qi (__a, __b, __c);
26434}
26435
a063e204
TC
26436__extension__ extern __inline int16x8_t
26437__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26438vrsraq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c)
26439{
26440 return (int16x8_t) __builtin_aarch64_srsra_nv8hi (__a, __b, __c);
26441}
26442
a063e204
TC
26443__extension__ extern __inline int32x4_t
26444__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26445vrsraq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c)
26446{
26447 return (int32x4_t) __builtin_aarch64_srsra_nv4si (__a, __b, __c);
26448}
26449
a063e204
TC
26450__extension__ extern __inline int64x2_t
26451__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26452vrsraq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c)
26453{
26454 return (int64x2_t) __builtin_aarch64_srsra_nv2di (__a, __b, __c);
26455}
26456
a063e204
TC
26457__extension__ extern __inline uint8x16_t
26458__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26459vrsraq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c)
26460{
de10bcce 26461 return __builtin_aarch64_ursra_nv16qi_uuus (__a, __b, __c);
43e9d192
IB
26462}
26463
a063e204
TC
26464__extension__ extern __inline uint16x8_t
26465__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26466vrsraq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c)
26467{
de10bcce 26468 return __builtin_aarch64_ursra_nv8hi_uuus (__a, __b, __c);
43e9d192
IB
26469}
26470
a063e204
TC
26471__extension__ extern __inline uint32x4_t
26472__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26473vrsraq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c)
26474{
de10bcce 26475 return __builtin_aarch64_ursra_nv4si_uuus (__a, __b, __c);
43e9d192
IB
26476}
26477
a063e204
TC
26478__extension__ extern __inline uint64x2_t
26479__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26480vrsraq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c)
26481{
de10bcce 26482 return __builtin_aarch64_ursra_nv2di_uuus (__a, __b, __c);
43e9d192
IB
26483}
26484
a063e204
TC
26485__extension__ extern __inline int64_t
26486__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 26487vrsrad_n_s64 (int64_t __a, int64_t __b, const int __c)
43e9d192 26488{
096c59be 26489 return __builtin_aarch64_srsra_ndi (__a, __b, __c);
43e9d192
IB
26490}
26491
a063e204
TC
26492__extension__ extern __inline uint64_t
26493__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 26494vrsrad_n_u64 (uint64_t __a, uint64_t __b, const int __c)
43e9d192 26495{
de10bcce 26496 return __builtin_aarch64_ursra_ndi_uuus (__a, __b, __c);
43e9d192
IB
26497}
26498
e4ea20c8
KT
26499#pragma GCC push_options
26500#pragma GCC target ("+nothing+crypto")
30442682
TB
26501
26502/* vsha1 */
26503
a063e204
TC
26504__extension__ extern __inline uint32x4_t
26505__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 26506vsha1cq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk)
30442682 26507{
9a3afc35 26508 return __builtin_aarch64_crypto_sha1cv4si_uuuu (__hash_abcd, __hash_e, __wk);
30442682 26509}
44ae5cd2 26510
a063e204
TC
26511__extension__ extern __inline uint32x4_t
26512__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 26513vsha1mq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk)
30442682 26514{
9a3afc35 26515 return __builtin_aarch64_crypto_sha1mv4si_uuuu (__hash_abcd, __hash_e, __wk);
30442682 26516}
44ae5cd2 26517
a063e204
TC
26518__extension__ extern __inline uint32x4_t
26519__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 26520vsha1pq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk)
30442682 26521{
9a3afc35 26522 return __builtin_aarch64_crypto_sha1pv4si_uuuu (__hash_abcd, __hash_e, __wk);
30442682
TB
26523}
26524
a063e204
TC
26525__extension__ extern __inline uint32_t
26526__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 26527vsha1h_u32 (uint32_t __hash_e)
30442682 26528{
9a3afc35 26529 return __builtin_aarch64_crypto_sha1hsi_uu (__hash_e);
30442682
TB
26530}
26531
a063e204
TC
26532__extension__ extern __inline uint32x4_t
26533__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 26534vsha1su0q_u32 (uint32x4_t __w0_3, uint32x4_t __w4_7, uint32x4_t __w8_11)
30442682 26535{
9a3afc35 26536 return __builtin_aarch64_crypto_sha1su0v4si_uuuu (__w0_3, __w4_7, __w8_11);
30442682
TB
26537}
26538
a063e204
TC
26539__extension__ extern __inline uint32x4_t
26540__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 26541vsha1su1q_u32 (uint32x4_t __tw0_3, uint32x4_t __w12_15)
30442682 26542{
9a3afc35 26543 return __builtin_aarch64_crypto_sha1su1v4si_uuu (__tw0_3, __w12_15);
30442682
TB
26544}
26545
a063e204
TC
26546__extension__ extern __inline uint32x4_t
26547__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 26548vsha256hq_u32 (uint32x4_t __hash_abcd, uint32x4_t __hash_efgh, uint32x4_t __wk)
b9cb0a44 26549{
9a3afc35
KT
26550 return __builtin_aarch64_crypto_sha256hv4si_uuuu (__hash_abcd, __hash_efgh,
26551 __wk);
b9cb0a44
TB
26552}
26553
a063e204
TC
26554__extension__ extern __inline uint32x4_t
26555__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 26556vsha256h2q_u32 (uint32x4_t __hash_efgh, uint32x4_t __hash_abcd, uint32x4_t __wk)
b9cb0a44 26557{
9a3afc35
KT
26558 return __builtin_aarch64_crypto_sha256h2v4si_uuuu (__hash_efgh, __hash_abcd,
26559 __wk);
b9cb0a44
TB
26560}
26561
a063e204
TC
26562__extension__ extern __inline uint32x4_t
26563__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 26564vsha256su0q_u32 (uint32x4_t __w0_3, uint32x4_t __w4_7)
b9cb0a44 26565{
9a3afc35 26566 return __builtin_aarch64_crypto_sha256su0v4si_uuu (__w0_3, __w4_7);
b9cb0a44
TB
26567}
26568
a063e204
TC
26569__extension__ extern __inline uint32x4_t
26570__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 26571vsha256su1q_u32 (uint32x4_t __tw0_3, uint32x4_t __w8_11, uint32x4_t __w12_15)
b9cb0a44 26572{
9a3afc35
KT
26573 return __builtin_aarch64_crypto_sha256su1v4si_uuuu (__tw0_3, __w8_11,
26574 __w12_15);
b9cb0a44
TB
26575}
26576
a063e204
TC
26577__extension__ extern __inline poly128_t
26578__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 26579vmull_p64 (poly64_t __a, poly64_t __b)
7baa225d
TB
26580{
26581 return
9a3afc35 26582 __builtin_aarch64_crypto_pmulldi_ppp (__a, __b);
7baa225d
TB
26583}
26584
a063e204
TC
26585__extension__ extern __inline poly128_t
26586__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 26587vmull_high_p64 (poly64x2_t __a, poly64x2_t __b)
7baa225d 26588{
9a3afc35 26589 return __builtin_aarch64_crypto_pmullv2di_ppp (__a, __b);
7baa225d
TB
26590}
26591
e4ea20c8 26592#pragma GCC pop_options
30442682 26593
43e9d192
IB
26594/* vshl */
26595
a063e204
TC
26596__extension__ extern __inline int8x8_t
26597__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26598vshl_n_s8 (int8x8_t __a, const int __b)
26599{
0ddec79f 26600 return (int8x8_t) __builtin_aarch64_ashlv8qi (__a, __b);
43e9d192
IB
26601}
26602
a063e204
TC
26603__extension__ extern __inline int16x4_t
26604__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26605vshl_n_s16 (int16x4_t __a, const int __b)
26606{
0ddec79f 26607 return (int16x4_t) __builtin_aarch64_ashlv4hi (__a, __b);
43e9d192
IB
26608}
26609
a063e204
TC
26610__extension__ extern __inline int32x2_t
26611__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26612vshl_n_s32 (int32x2_t __a, const int __b)
26613{
0ddec79f 26614 return (int32x2_t) __builtin_aarch64_ashlv2si (__a, __b);
43e9d192
IB
26615}
26616
a063e204
TC
26617__extension__ extern __inline int64x1_t
26618__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26619vshl_n_s64 (int64x1_t __a, const int __b)
26620{
096c59be 26621 return (int64x1_t) {__builtin_aarch64_ashldi (__a[0], __b)};
43e9d192
IB
26622}
26623
a063e204
TC
26624__extension__ extern __inline uint8x8_t
26625__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26626vshl_n_u8 (uint8x8_t __a, const int __b)
26627{
0ddec79f 26628 return (uint8x8_t) __builtin_aarch64_ashlv8qi ((int8x8_t) __a, __b);
43e9d192
IB
26629}
26630
a063e204
TC
26631__extension__ extern __inline uint16x4_t
26632__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26633vshl_n_u16 (uint16x4_t __a, const int __b)
26634{
0ddec79f 26635 return (uint16x4_t) __builtin_aarch64_ashlv4hi ((int16x4_t) __a, __b);
43e9d192
IB
26636}
26637
a063e204
TC
26638__extension__ extern __inline uint32x2_t
26639__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26640vshl_n_u32 (uint32x2_t __a, const int __b)
26641{
0ddec79f 26642 return (uint32x2_t) __builtin_aarch64_ashlv2si ((int32x2_t) __a, __b);
43e9d192
IB
26643}
26644
a063e204
TC
26645__extension__ extern __inline uint64x1_t
26646__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26647vshl_n_u64 (uint64x1_t __a, const int __b)
26648{
096c59be 26649 return (uint64x1_t) {__builtin_aarch64_ashldi ((int64_t) __a[0], __b)};
43e9d192
IB
26650}
26651
a063e204
TC
26652__extension__ extern __inline int8x16_t
26653__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26654vshlq_n_s8 (int8x16_t __a, const int __b)
26655{
0ddec79f 26656 return (int8x16_t) __builtin_aarch64_ashlv16qi (__a, __b);
43e9d192
IB
26657}
26658
a063e204
TC
26659__extension__ extern __inline int16x8_t
26660__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26661vshlq_n_s16 (int16x8_t __a, const int __b)
26662{
0ddec79f 26663 return (int16x8_t) __builtin_aarch64_ashlv8hi (__a, __b);
43e9d192
IB
26664}
26665
a063e204
TC
26666__extension__ extern __inline int32x4_t
26667__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26668vshlq_n_s32 (int32x4_t __a, const int __b)
26669{
0ddec79f 26670 return (int32x4_t) __builtin_aarch64_ashlv4si (__a, __b);
43e9d192
IB
26671}
26672
a063e204
TC
26673__extension__ extern __inline int64x2_t
26674__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26675vshlq_n_s64 (int64x2_t __a, const int __b)
26676{
0ddec79f 26677 return (int64x2_t) __builtin_aarch64_ashlv2di (__a, __b);
43e9d192
IB
26678}
26679
a063e204
TC
26680__extension__ extern __inline uint8x16_t
26681__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26682vshlq_n_u8 (uint8x16_t __a, const int __b)
26683{
0ddec79f 26684 return (uint8x16_t) __builtin_aarch64_ashlv16qi ((int8x16_t) __a, __b);
43e9d192
IB
26685}
26686
a063e204
TC
26687__extension__ extern __inline uint16x8_t
26688__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26689vshlq_n_u16 (uint16x8_t __a, const int __b)
26690{
0ddec79f 26691 return (uint16x8_t) __builtin_aarch64_ashlv8hi ((int16x8_t) __a, __b);
43e9d192
IB
26692}
26693
a063e204
TC
26694__extension__ extern __inline uint32x4_t
26695__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26696vshlq_n_u32 (uint32x4_t __a, const int __b)
26697{
0ddec79f 26698 return (uint32x4_t) __builtin_aarch64_ashlv4si ((int32x4_t) __a, __b);
43e9d192
IB
26699}
26700
a063e204
TC
26701__extension__ extern __inline uint64x2_t
26702__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26703vshlq_n_u64 (uint64x2_t __a, const int __b)
26704{
0ddec79f 26705 return (uint64x2_t) __builtin_aarch64_ashlv2di ((int64x2_t) __a, __b);
43e9d192
IB
26706}
26707
a063e204
TC
26708__extension__ extern __inline int64_t
26709__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 26710vshld_n_s64 (int64_t __a, const int __b)
43e9d192 26711{
096c59be 26712 return __builtin_aarch64_ashldi (__a, __b);
43e9d192
IB
26713}
26714
a063e204
TC
26715__extension__ extern __inline uint64_t
26716__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 26717vshld_n_u64 (uint64_t __a, const int __b)
43e9d192 26718{
096c59be 26719 return (uint64_t) __builtin_aarch64_ashldi (__a, __b);
43e9d192
IB
26720}
26721
a063e204
TC
26722__extension__ extern __inline int8x8_t
26723__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26724vshl_s8 (int8x8_t __a, int8x8_t __b)
26725{
918621d3 26726 return __builtin_aarch64_sshlv8qi (__a, __b);
43e9d192
IB
26727}
26728
a063e204
TC
26729__extension__ extern __inline int16x4_t
26730__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26731vshl_s16 (int16x4_t __a, int16x4_t __b)
26732{
918621d3 26733 return __builtin_aarch64_sshlv4hi (__a, __b);
43e9d192
IB
26734}
26735
a063e204
TC
26736__extension__ extern __inline int32x2_t
26737__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26738vshl_s32 (int32x2_t __a, int32x2_t __b)
26739{
918621d3 26740 return __builtin_aarch64_sshlv2si (__a, __b);
43e9d192
IB
26741}
26742
a063e204
TC
26743__extension__ extern __inline int64x1_t
26744__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26745vshl_s64 (int64x1_t __a, int64x1_t __b)
26746{
096c59be 26747 return (int64x1_t) {__builtin_aarch64_sshldi (__a[0], __b[0])};
43e9d192
IB
26748}
26749
a063e204
TC
26750__extension__ extern __inline uint8x8_t
26751__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26752vshl_u8 (uint8x8_t __a, int8x8_t __b)
26753{
918621d3 26754 return __builtin_aarch64_ushlv8qi_uus (__a, __b);
43e9d192
IB
26755}
26756
a063e204
TC
26757__extension__ extern __inline uint16x4_t
26758__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26759vshl_u16 (uint16x4_t __a, int16x4_t __b)
26760{
918621d3 26761 return __builtin_aarch64_ushlv4hi_uus (__a, __b);
43e9d192
IB
26762}
26763
a063e204
TC
26764__extension__ extern __inline uint32x2_t
26765__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26766vshl_u32 (uint32x2_t __a, int32x2_t __b)
26767{
918621d3 26768 return __builtin_aarch64_ushlv2si_uus (__a, __b);
43e9d192
IB
26769}
26770
a063e204
TC
26771__extension__ extern __inline uint64x1_t
26772__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26773vshl_u64 (uint64x1_t __a, int64x1_t __b)
26774{
096c59be 26775 return (uint64x1_t) {__builtin_aarch64_ushldi_uus (__a[0], __b[0])};
43e9d192
IB
26776}
26777
a063e204
TC
26778__extension__ extern __inline int8x16_t
26779__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26780vshlq_s8 (int8x16_t __a, int8x16_t __b)
26781{
918621d3 26782 return __builtin_aarch64_sshlv16qi (__a, __b);
43e9d192
IB
26783}
26784
a063e204
TC
26785__extension__ extern __inline int16x8_t
26786__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26787vshlq_s16 (int16x8_t __a, int16x8_t __b)
26788{
918621d3 26789 return __builtin_aarch64_sshlv8hi (__a, __b);
43e9d192
IB
26790}
26791
a063e204
TC
26792__extension__ extern __inline int32x4_t
26793__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26794vshlq_s32 (int32x4_t __a, int32x4_t __b)
26795{
918621d3 26796 return __builtin_aarch64_sshlv4si (__a, __b);
43e9d192
IB
26797}
26798
a063e204
TC
26799__extension__ extern __inline int64x2_t
26800__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26801vshlq_s64 (int64x2_t __a, int64x2_t __b)
26802{
918621d3 26803 return __builtin_aarch64_sshlv2di (__a, __b);
43e9d192
IB
26804}
26805
a063e204
TC
26806__extension__ extern __inline uint8x16_t
26807__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26808vshlq_u8 (uint8x16_t __a, int8x16_t __b)
26809{
918621d3 26810 return __builtin_aarch64_ushlv16qi_uus (__a, __b);
43e9d192
IB
26811}
26812
a063e204
TC
26813__extension__ extern __inline uint16x8_t
26814__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26815vshlq_u16 (uint16x8_t __a, int16x8_t __b)
26816{
918621d3 26817 return __builtin_aarch64_ushlv8hi_uus (__a, __b);
43e9d192
IB
26818}
26819
a063e204
TC
26820__extension__ extern __inline uint32x4_t
26821__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26822vshlq_u32 (uint32x4_t __a, int32x4_t __b)
26823{
918621d3 26824 return __builtin_aarch64_ushlv4si_uus (__a, __b);
43e9d192
IB
26825}
26826
a063e204
TC
26827__extension__ extern __inline uint64x2_t
26828__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26829vshlq_u64 (uint64x2_t __a, int64x2_t __b)
26830{
918621d3 26831 return __builtin_aarch64_ushlv2di_uus (__a, __b);
43e9d192
IB
26832}
26833
a063e204
TC
26834__extension__ extern __inline int64_t
26835__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 26836vshld_s64 (int64_t __a, int64_t __b)
43e9d192 26837{
918621d3 26838 return __builtin_aarch64_sshldi (__a, __b);
43e9d192
IB
26839}
26840
a063e204
TC
26841__extension__ extern __inline uint64_t
26842__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
2d8fbebd 26843vshld_u64 (uint64_t __a, int64_t __b)
43e9d192 26844{
918621d3 26845 return __builtin_aarch64_ushldi_uus (__a, __b);
43e9d192
IB
26846}
26847
a063e204
TC
26848__extension__ extern __inline int16x8_t
26849__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26850vshll_high_n_s8 (int8x16_t __a, const int __b)
26851{
26852 return __builtin_aarch64_sshll2_nv16qi (__a, __b);
26853}
26854
a063e204
TC
26855__extension__ extern __inline int32x4_t
26856__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26857vshll_high_n_s16 (int16x8_t __a, const int __b)
26858{
26859 return __builtin_aarch64_sshll2_nv8hi (__a, __b);
26860}
26861
a063e204
TC
26862__extension__ extern __inline int64x2_t
26863__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26864vshll_high_n_s32 (int32x4_t __a, const int __b)
26865{
26866 return __builtin_aarch64_sshll2_nv4si (__a, __b);
26867}
26868
a063e204
TC
26869__extension__ extern __inline uint16x8_t
26870__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26871vshll_high_n_u8 (uint8x16_t __a, const int __b)
26872{
26873 return (uint16x8_t) __builtin_aarch64_ushll2_nv16qi ((int8x16_t) __a, __b);
26874}
26875
a063e204
TC
26876__extension__ extern __inline uint32x4_t
26877__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26878vshll_high_n_u16 (uint16x8_t __a, const int __b)
26879{
26880 return (uint32x4_t) __builtin_aarch64_ushll2_nv8hi ((int16x8_t) __a, __b);
26881}
26882
a063e204
TC
26883__extension__ extern __inline uint64x2_t
26884__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26885vshll_high_n_u32 (uint32x4_t __a, const int __b)
26886{
26887 return (uint64x2_t) __builtin_aarch64_ushll2_nv4si ((int32x4_t) __a, __b);
26888}
26889
a063e204
TC
26890__extension__ extern __inline int16x8_t
26891__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26892vshll_n_s8 (int8x8_t __a, const int __b)
26893{
26894 return __builtin_aarch64_sshll_nv8qi (__a, __b);
26895}
26896
a063e204
TC
26897__extension__ extern __inline int32x4_t
26898__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26899vshll_n_s16 (int16x4_t __a, const int __b)
26900{
26901 return __builtin_aarch64_sshll_nv4hi (__a, __b);
26902}
26903
a063e204
TC
26904__extension__ extern __inline int64x2_t
26905__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26906vshll_n_s32 (int32x2_t __a, const int __b)
26907{
26908 return __builtin_aarch64_sshll_nv2si (__a, __b);
26909}
26910
a063e204
TC
26911__extension__ extern __inline uint16x8_t
26912__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26913vshll_n_u8 (uint8x8_t __a, const int __b)
26914{
918621d3 26915 return __builtin_aarch64_ushll_nv8qi_uus (__a, __b);
43e9d192
IB
26916}
26917
a063e204
TC
26918__extension__ extern __inline uint32x4_t
26919__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26920vshll_n_u16 (uint16x4_t __a, const int __b)
26921{
918621d3 26922 return __builtin_aarch64_ushll_nv4hi_uus (__a, __b);
43e9d192
IB
26923}
26924
a063e204
TC
26925__extension__ extern __inline uint64x2_t
26926__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26927vshll_n_u32 (uint32x2_t __a, const int __b)
26928{
918621d3 26929 return __builtin_aarch64_ushll_nv2si_uus (__a, __b);
43e9d192
IB
26930}
26931
26932/* vshr */
26933
a063e204
TC
26934__extension__ extern __inline int8x8_t
26935__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26936vshr_n_s8 (int8x8_t __a, const int __b)
26937{
0ddec79f 26938 return (int8x8_t) __builtin_aarch64_ashrv8qi (__a, __b);
43e9d192
IB
26939}
26940
a063e204
TC
26941__extension__ extern __inline int16x4_t
26942__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26943vshr_n_s16 (int16x4_t __a, const int __b)
26944{
0ddec79f 26945 return (int16x4_t) __builtin_aarch64_ashrv4hi (__a, __b);
43e9d192
IB
26946}
26947
a063e204
TC
26948__extension__ extern __inline int32x2_t
26949__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26950vshr_n_s32 (int32x2_t __a, const int __b)
26951{
0ddec79f 26952 return (int32x2_t) __builtin_aarch64_ashrv2si (__a, __b);
43e9d192
IB
26953}
26954
a063e204
TC
26955__extension__ extern __inline int64x1_t
26956__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26957vshr_n_s64 (int64x1_t __a, const int __b)
26958{
096c59be 26959 return (int64x1_t) {__builtin_aarch64_ashr_simddi (__a[0], __b)};
43e9d192
IB
26960}
26961
a063e204
TC
26962__extension__ extern __inline uint8x8_t
26963__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26964vshr_n_u8 (uint8x8_t __a, const int __b)
26965{
0ddec79f 26966 return (uint8x8_t) __builtin_aarch64_lshrv8qi ((int8x8_t) __a, __b);
43e9d192
IB
26967}
26968
a063e204
TC
26969__extension__ extern __inline uint16x4_t
26970__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26971vshr_n_u16 (uint16x4_t __a, const int __b)
26972{
0ddec79f 26973 return (uint16x4_t) __builtin_aarch64_lshrv4hi ((int16x4_t) __a, __b);
43e9d192
IB
26974}
26975
a063e204
TC
26976__extension__ extern __inline uint32x2_t
26977__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26978vshr_n_u32 (uint32x2_t __a, const int __b)
26979{
0ddec79f 26980 return (uint32x2_t) __builtin_aarch64_lshrv2si ((int32x2_t) __a, __b);
43e9d192
IB
26981}
26982
a063e204
TC
26983__extension__ extern __inline uint64x1_t
26984__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26985vshr_n_u64 (uint64x1_t __a, const int __b)
26986{
096c59be 26987 return (uint64x1_t) {__builtin_aarch64_lshr_simddi_uus ( __a[0], __b)};
43e9d192
IB
26988}
26989
a063e204
TC
26990__extension__ extern __inline int8x16_t
26991__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26992vshrq_n_s8 (int8x16_t __a, const int __b)
26993{
0ddec79f 26994 return (int8x16_t) __builtin_aarch64_ashrv16qi (__a, __b);
43e9d192
IB
26995}
26996
a063e204
TC
26997__extension__ extern __inline int16x8_t
26998__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
26999vshrq_n_s16 (int16x8_t __a, const int __b)
27000{
0ddec79f 27001 return (int16x8_t) __builtin_aarch64_ashrv8hi (__a, __b);
43e9d192
IB
27002}
27003
a063e204
TC
27004__extension__ extern __inline int32x4_t
27005__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27006vshrq_n_s32 (int32x4_t __a, const int __b)
27007{
0ddec79f 27008 return (int32x4_t) __builtin_aarch64_ashrv4si (__a, __b);
43e9d192
IB
27009}
27010
a063e204
TC
27011__extension__ extern __inline int64x2_t
27012__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27013vshrq_n_s64 (int64x2_t __a, const int __b)
27014{
0ddec79f 27015 return (int64x2_t) __builtin_aarch64_ashrv2di (__a, __b);
43e9d192
IB
27016}
27017
a063e204
TC
27018__extension__ extern __inline uint8x16_t
27019__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27020vshrq_n_u8 (uint8x16_t __a, const int __b)
27021{
0ddec79f 27022 return (uint8x16_t) __builtin_aarch64_lshrv16qi ((int8x16_t) __a, __b);
43e9d192
IB
27023}
27024
a063e204
TC
27025__extension__ extern __inline uint16x8_t
27026__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27027vshrq_n_u16 (uint16x8_t __a, const int __b)
27028{
0ddec79f 27029 return (uint16x8_t) __builtin_aarch64_lshrv8hi ((int16x8_t) __a, __b);
43e9d192
IB
27030}
27031
a063e204
TC
27032__extension__ extern __inline uint32x4_t
27033__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27034vshrq_n_u32 (uint32x4_t __a, const int __b)
27035{
0ddec79f 27036 return (uint32x4_t) __builtin_aarch64_lshrv4si ((int32x4_t) __a, __b);
43e9d192
IB
27037}
27038
a063e204
TC
27039__extension__ extern __inline uint64x2_t
27040__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27041vshrq_n_u64 (uint64x2_t __a, const int __b)
27042{
0ddec79f 27043 return (uint64x2_t) __builtin_aarch64_lshrv2di ((int64x2_t) __a, __b);
43e9d192
IB
27044}
27045
a063e204
TC
27046__extension__ extern __inline int64_t
27047__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 27048vshrd_n_s64 (int64_t __a, const int __b)
43e9d192 27049{
096c59be 27050 return __builtin_aarch64_ashr_simddi (__a, __b);
43e9d192
IB
27051}
27052
a063e204
TC
27053__extension__ extern __inline uint64_t
27054__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
252c7556 27055vshrd_n_u64 (uint64_t __a, const int __b)
43e9d192 27056{
252c7556 27057 return __builtin_aarch64_lshr_simddi_uus (__a, __b);
43e9d192
IB
27058}
27059
27060/* vsli */
27061
a063e204
TC
27062__extension__ extern __inline int8x8_t
27063__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27064vsli_n_s8 (int8x8_t __a, int8x8_t __b, const int __c)
27065{
27066 return (int8x8_t) __builtin_aarch64_ssli_nv8qi (__a, __b, __c);
27067}
27068
a063e204
TC
27069__extension__ extern __inline int16x4_t
27070__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27071vsli_n_s16 (int16x4_t __a, int16x4_t __b, const int __c)
27072{
27073 return (int16x4_t) __builtin_aarch64_ssli_nv4hi (__a, __b, __c);
27074}
27075
a063e204
TC
27076__extension__ extern __inline int32x2_t
27077__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27078vsli_n_s32 (int32x2_t __a, int32x2_t __b, const int __c)
27079{
27080 return (int32x2_t) __builtin_aarch64_ssli_nv2si (__a, __b, __c);
27081}
27082
a063e204
TC
27083__extension__ extern __inline int64x1_t
27084__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27085vsli_n_s64 (int64x1_t __a, int64x1_t __b, const int __c)
27086{
096c59be 27087 return (int64x1_t) {__builtin_aarch64_ssli_ndi (__a[0], __b[0], __c)};
43e9d192
IB
27088}
27089
a063e204
TC
27090__extension__ extern __inline uint8x8_t
27091__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27092vsli_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c)
27093{
de10bcce 27094 return __builtin_aarch64_usli_nv8qi_uuus (__a, __b, __c);
43e9d192
IB
27095}
27096
a063e204
TC
27097__extension__ extern __inline uint16x4_t
27098__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27099vsli_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
27100{
de10bcce 27101 return __builtin_aarch64_usli_nv4hi_uuus (__a, __b, __c);
43e9d192
IB
27102}
27103
a063e204
TC
27104__extension__ extern __inline uint32x2_t
27105__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27106vsli_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
27107{
de10bcce 27108 return __builtin_aarch64_usli_nv2si_uuus (__a, __b, __c);
43e9d192
IB
27109}
27110
a063e204
TC
27111__extension__ extern __inline uint64x1_t
27112__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27113vsli_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c)
27114{
096c59be 27115 return (uint64x1_t) {__builtin_aarch64_usli_ndi_uuus (__a[0], __b[0], __c)};
43e9d192
IB
27116}
27117
159b8724
TC
27118__extension__ extern __inline poly64x1_t
27119__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
27120vsli_n_p64 (poly64x1_t __a, poly64x1_t __b, const int __c)
27121{
27122 return (poly64x1_t) {__builtin_aarch64_ssli_ndi_ppps (__a[0], __b[0], __c)};
27123}
27124
a063e204
TC
27125__extension__ extern __inline int8x16_t
27126__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27127vsliq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c)
27128{
27129 return (int8x16_t) __builtin_aarch64_ssli_nv16qi (__a, __b, __c);
27130}
27131
a063e204
TC
27132__extension__ extern __inline int16x8_t
27133__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27134vsliq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c)
27135{
27136 return (int16x8_t) __builtin_aarch64_ssli_nv8hi (__a, __b, __c);
27137}
27138
a063e204
TC
27139__extension__ extern __inline int32x4_t
27140__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27141vsliq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c)
27142{
27143 return (int32x4_t) __builtin_aarch64_ssli_nv4si (__a, __b, __c);
27144}
27145
a063e204
TC
27146__extension__ extern __inline int64x2_t
27147__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27148vsliq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c)
27149{
27150 return (int64x2_t) __builtin_aarch64_ssli_nv2di (__a, __b, __c);
27151}
27152
a063e204
TC
27153__extension__ extern __inline uint8x16_t
27154__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27155vsliq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c)
27156{
de10bcce 27157 return __builtin_aarch64_usli_nv16qi_uuus (__a, __b, __c);
43e9d192
IB
27158}
27159
a063e204
TC
27160__extension__ extern __inline uint16x8_t
27161__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27162vsliq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c)
27163{
de10bcce 27164 return __builtin_aarch64_usli_nv8hi_uuus (__a, __b, __c);
43e9d192
IB
27165}
27166
a063e204
TC
27167__extension__ extern __inline uint32x4_t
27168__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27169vsliq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c)
27170{
de10bcce 27171 return __builtin_aarch64_usli_nv4si_uuus (__a, __b, __c);
43e9d192
IB
27172}
27173
a063e204
TC
27174__extension__ extern __inline uint64x2_t
27175__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27176vsliq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c)
27177{
de10bcce 27178 return __builtin_aarch64_usli_nv2di_uuus (__a, __b, __c);
43e9d192
IB
27179}
27180
159b8724
TC
27181__extension__ extern __inline poly64x2_t
27182__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
27183vsliq_n_p64 (poly64x2_t __a, poly64x2_t __b, const int __c)
27184{
27185 return __builtin_aarch64_ssli_nv2di_ppps (__a, __b, __c);
27186}
27187
a063e204
TC
27188__extension__ extern __inline int64_t
27189__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 27190vslid_n_s64 (int64_t __a, int64_t __b, const int __c)
43e9d192 27191{
096c59be 27192 return __builtin_aarch64_ssli_ndi (__a, __b, __c);
43e9d192
IB
27193}
27194
a063e204
TC
27195__extension__ extern __inline uint64_t
27196__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 27197vslid_n_u64 (uint64_t __a, uint64_t __b, const int __c)
43e9d192 27198{
de10bcce 27199 return __builtin_aarch64_usli_ndi_uuus (__a, __b, __c);
43e9d192
IB
27200}
27201
27202/* vsqadd */
27203
a063e204
TC
27204__extension__ extern __inline uint8x8_t
27205__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27206vsqadd_u8 (uint8x8_t __a, int8x8_t __b)
27207{
de10bcce 27208 return __builtin_aarch64_usqaddv8qi_uus (__a, __b);
43e9d192
IB
27209}
27210
a063e204
TC
27211__extension__ extern __inline uint16x4_t
27212__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27213vsqadd_u16 (uint16x4_t __a, int16x4_t __b)
27214{
de10bcce 27215 return __builtin_aarch64_usqaddv4hi_uus (__a, __b);
43e9d192
IB
27216}
27217
a063e204
TC
27218__extension__ extern __inline uint32x2_t
27219__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27220vsqadd_u32 (uint32x2_t __a, int32x2_t __b)
27221{
de10bcce 27222 return __builtin_aarch64_usqaddv2si_uus (__a, __b);
43e9d192
IB
27223}
27224
a063e204
TC
27225__extension__ extern __inline uint64x1_t
27226__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27227vsqadd_u64 (uint64x1_t __a, int64x1_t __b)
27228{
096c59be 27229 return (uint64x1_t) {__builtin_aarch64_usqadddi_uus (__a[0], __b[0])};
43e9d192
IB
27230}
27231
a063e204
TC
27232__extension__ extern __inline uint8x16_t
27233__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27234vsqaddq_u8 (uint8x16_t __a, int8x16_t __b)
27235{
de10bcce 27236 return __builtin_aarch64_usqaddv16qi_uus (__a, __b);
43e9d192
IB
27237}
27238
a063e204
TC
27239__extension__ extern __inline uint16x8_t
27240__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27241vsqaddq_u16 (uint16x8_t __a, int16x8_t __b)
27242{
de10bcce 27243 return __builtin_aarch64_usqaddv8hi_uus (__a, __b);
43e9d192
IB
27244}
27245
a063e204
TC
27246__extension__ extern __inline uint32x4_t
27247__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27248vsqaddq_u32 (uint32x4_t __a, int32x4_t __b)
27249{
de10bcce 27250 return __builtin_aarch64_usqaddv4si_uus (__a, __b);
43e9d192
IB
27251}
27252
a063e204
TC
27253__extension__ extern __inline uint64x2_t
27254__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27255vsqaddq_u64 (uint64x2_t __a, int64x2_t __b)
27256{
de10bcce 27257 return __builtin_aarch64_usqaddv2di_uus (__a, __b);
43e9d192
IB
27258}
27259
a063e204
TC
27260__extension__ extern __inline uint8_t
27261__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 27262vsqaddb_u8 (uint8_t __a, int8_t __b)
43e9d192 27263{
de10bcce 27264 return __builtin_aarch64_usqaddqi_uus (__a, __b);
43e9d192
IB
27265}
27266
a063e204
TC
27267__extension__ extern __inline uint16_t
27268__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 27269vsqaddh_u16 (uint16_t __a, int16_t __b)
43e9d192 27270{
de10bcce 27271 return __builtin_aarch64_usqaddhi_uus (__a, __b);
43e9d192
IB
27272}
27273
a063e204
TC
27274__extension__ extern __inline uint32_t
27275__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 27276vsqadds_u32 (uint32_t __a, int32_t __b)
43e9d192 27277{
de10bcce 27278 return __builtin_aarch64_usqaddsi_uus (__a, __b);
43e9d192
IB
27279}
27280
a063e204
TC
27281__extension__ extern __inline uint64_t
27282__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 27283vsqaddd_u64 (uint64_t __a, int64_t __b)
43e9d192 27284{
de10bcce 27285 return __builtin_aarch64_usqadddi_uus (__a, __b);
43e9d192
IB
27286}
27287
27288/* vsqrt */
a063e204
TC
27289__extension__ extern __inline float32x2_t
27290__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27291vsqrt_f32 (float32x2_t __a)
43e9d192 27292{
9a3afc35 27293 return __builtin_aarch64_sqrtv2sf (__a);
43e9d192
IB
27294}
27295
a063e204
TC
27296__extension__ extern __inline float32x4_t
27297__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27298vsqrtq_f32 (float32x4_t __a)
43e9d192 27299{
9a3afc35 27300 return __builtin_aarch64_sqrtv4sf (__a);
43e9d192
IB
27301}
27302
a063e204
TC
27303__extension__ extern __inline float64x1_t
27304__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27305vsqrt_f64 (float64x1_t __a)
522b094f 27306{
9a3afc35 27307 return (float64x1_t) { __builtin_aarch64_sqrtdf (__a[0]) };
522b094f
KT
27308}
27309
a063e204
TC
27310__extension__ extern __inline float64x2_t
27311__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27312vsqrtq_f64 (float64x2_t __a)
43e9d192 27313{
9a3afc35 27314 return __builtin_aarch64_sqrtv2df (__a);
43e9d192
IB
27315}
27316
27317/* vsra */
27318
a063e204
TC
27319__extension__ extern __inline int8x8_t
27320__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27321vsra_n_s8 (int8x8_t __a, int8x8_t __b, const int __c)
27322{
27323 return (int8x8_t) __builtin_aarch64_ssra_nv8qi (__a, __b, __c);
27324}
27325
a063e204
TC
27326__extension__ extern __inline int16x4_t
27327__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27328vsra_n_s16 (int16x4_t __a, int16x4_t __b, const int __c)
27329{
27330 return (int16x4_t) __builtin_aarch64_ssra_nv4hi (__a, __b, __c);
27331}
27332
a063e204
TC
27333__extension__ extern __inline int32x2_t
27334__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27335vsra_n_s32 (int32x2_t __a, int32x2_t __b, const int __c)
27336{
27337 return (int32x2_t) __builtin_aarch64_ssra_nv2si (__a, __b, __c);
27338}
27339
a063e204
TC
27340__extension__ extern __inline int64x1_t
27341__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27342vsra_n_s64 (int64x1_t __a, int64x1_t __b, const int __c)
27343{
096c59be 27344 return (int64x1_t) {__builtin_aarch64_ssra_ndi (__a[0], __b[0], __c)};
43e9d192
IB
27345}
27346
a063e204
TC
27347__extension__ extern __inline uint8x8_t
27348__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27349vsra_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c)
27350{
de10bcce 27351 return __builtin_aarch64_usra_nv8qi_uuus (__a, __b, __c);
43e9d192
IB
27352}
27353
a063e204
TC
27354__extension__ extern __inline uint16x4_t
27355__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27356vsra_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
27357{
de10bcce 27358 return __builtin_aarch64_usra_nv4hi_uuus (__a, __b, __c);
43e9d192
IB
27359}
27360
a063e204
TC
27361__extension__ extern __inline uint32x2_t
27362__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27363vsra_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
27364{
de10bcce 27365 return __builtin_aarch64_usra_nv2si_uuus (__a, __b, __c);
43e9d192
IB
27366}
27367
a063e204
TC
27368__extension__ extern __inline uint64x1_t
27369__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27370vsra_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c)
27371{
096c59be 27372 return (uint64x1_t) {__builtin_aarch64_usra_ndi_uuus (__a[0], __b[0], __c)};
43e9d192
IB
27373}
27374
a063e204
TC
27375__extension__ extern __inline int8x16_t
27376__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27377vsraq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c)
27378{
27379 return (int8x16_t) __builtin_aarch64_ssra_nv16qi (__a, __b, __c);
27380}
27381
a063e204
TC
27382__extension__ extern __inline int16x8_t
27383__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27384vsraq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c)
27385{
27386 return (int16x8_t) __builtin_aarch64_ssra_nv8hi (__a, __b, __c);
27387}
27388
a063e204
TC
27389__extension__ extern __inline int32x4_t
27390__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27391vsraq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c)
27392{
27393 return (int32x4_t) __builtin_aarch64_ssra_nv4si (__a, __b, __c);
27394}
27395
a063e204
TC
27396__extension__ extern __inline int64x2_t
27397__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27398vsraq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c)
27399{
27400 return (int64x2_t) __builtin_aarch64_ssra_nv2di (__a, __b, __c);
27401}
27402
a063e204
TC
27403__extension__ extern __inline uint8x16_t
27404__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27405vsraq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c)
27406{
de10bcce 27407 return __builtin_aarch64_usra_nv16qi_uuus (__a, __b, __c);
43e9d192
IB
27408}
27409
a063e204
TC
27410__extension__ extern __inline uint16x8_t
27411__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27412vsraq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c)
27413{
de10bcce 27414 return __builtin_aarch64_usra_nv8hi_uuus (__a, __b, __c);
43e9d192
IB
27415}
27416
a063e204
TC
27417__extension__ extern __inline uint32x4_t
27418__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27419vsraq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c)
27420{
de10bcce 27421 return __builtin_aarch64_usra_nv4si_uuus (__a, __b, __c);
43e9d192
IB
27422}
27423
a063e204
TC
27424__extension__ extern __inline uint64x2_t
27425__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27426vsraq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c)
27427{
de10bcce 27428 return __builtin_aarch64_usra_nv2di_uuus (__a, __b, __c);
43e9d192
IB
27429}
27430
a063e204
TC
27431__extension__ extern __inline int64_t
27432__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 27433vsrad_n_s64 (int64_t __a, int64_t __b, const int __c)
43e9d192 27434{
096c59be 27435 return __builtin_aarch64_ssra_ndi (__a, __b, __c);
43e9d192
IB
27436}
27437
a063e204
TC
27438__extension__ extern __inline uint64_t
27439__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 27440vsrad_n_u64 (uint64_t __a, uint64_t __b, const int __c)
43e9d192 27441{
de10bcce 27442 return __builtin_aarch64_usra_ndi_uuus (__a, __b, __c);
43e9d192
IB
27443}
27444
27445/* vsri */
27446
a063e204
TC
27447__extension__ extern __inline int8x8_t
27448__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27449vsri_n_s8 (int8x8_t __a, int8x8_t __b, const int __c)
27450{
27451 return (int8x8_t) __builtin_aarch64_ssri_nv8qi (__a, __b, __c);
27452}
27453
a063e204
TC
27454__extension__ extern __inline int16x4_t
27455__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27456vsri_n_s16 (int16x4_t __a, int16x4_t __b, const int __c)
27457{
27458 return (int16x4_t) __builtin_aarch64_ssri_nv4hi (__a, __b, __c);
27459}
27460
a063e204
TC
27461__extension__ extern __inline int32x2_t
27462__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27463vsri_n_s32 (int32x2_t __a, int32x2_t __b, const int __c)
27464{
27465 return (int32x2_t) __builtin_aarch64_ssri_nv2si (__a, __b, __c);
27466}
27467
a063e204
TC
27468__extension__ extern __inline int64x1_t
27469__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27470vsri_n_s64 (int64x1_t __a, int64x1_t __b, const int __c)
27471{
096c59be 27472 return (int64x1_t) {__builtin_aarch64_ssri_ndi (__a[0], __b[0], __c)};
43e9d192
IB
27473}
27474
a063e204
TC
27475__extension__ extern __inline uint8x8_t
27476__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27477vsri_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c)
27478{
de10bcce 27479 return __builtin_aarch64_usri_nv8qi_uuus (__a, __b, __c);
43e9d192
IB
27480}
27481
a063e204
TC
27482__extension__ extern __inline uint16x4_t
27483__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27484vsri_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
27485{
de10bcce 27486 return __builtin_aarch64_usri_nv4hi_uuus (__a, __b, __c);
43e9d192
IB
27487}
27488
a063e204
TC
27489__extension__ extern __inline uint32x2_t
27490__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27491vsri_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
27492{
de10bcce 27493 return __builtin_aarch64_usri_nv2si_uuus (__a, __b, __c);
43e9d192
IB
27494}
27495
a063e204
TC
27496__extension__ extern __inline uint64x1_t
27497__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27498vsri_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c)
27499{
096c59be 27500 return (uint64x1_t) {__builtin_aarch64_usri_ndi_uuus (__a[0], __b[0], __c)};
43e9d192
IB
27501}
27502
a063e204
TC
27503__extension__ extern __inline int8x16_t
27504__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27505vsriq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c)
27506{
27507 return (int8x16_t) __builtin_aarch64_ssri_nv16qi (__a, __b, __c);
27508}
27509
a063e204
TC
27510__extension__ extern __inline int16x8_t
27511__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27512vsriq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c)
27513{
27514 return (int16x8_t) __builtin_aarch64_ssri_nv8hi (__a, __b, __c);
27515}
27516
a063e204
TC
27517__extension__ extern __inline int32x4_t
27518__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27519vsriq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c)
27520{
27521 return (int32x4_t) __builtin_aarch64_ssri_nv4si (__a, __b, __c);
27522}
27523
a063e204
TC
27524__extension__ extern __inline int64x2_t
27525__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27526vsriq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c)
27527{
27528 return (int64x2_t) __builtin_aarch64_ssri_nv2di (__a, __b, __c);
27529}
27530
a063e204
TC
27531__extension__ extern __inline uint8x16_t
27532__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27533vsriq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c)
27534{
de10bcce 27535 return __builtin_aarch64_usri_nv16qi_uuus (__a, __b, __c);
43e9d192
IB
27536}
27537
a063e204
TC
27538__extension__ extern __inline uint16x8_t
27539__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27540vsriq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c)
27541{
de10bcce 27542 return __builtin_aarch64_usri_nv8hi_uuus (__a, __b, __c);
43e9d192
IB
27543}
27544
a063e204
TC
27545__extension__ extern __inline uint32x4_t
27546__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27547vsriq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c)
27548{
de10bcce 27549 return __builtin_aarch64_usri_nv4si_uuus (__a, __b, __c);
43e9d192
IB
27550}
27551
a063e204
TC
27552__extension__ extern __inline uint64x2_t
27553__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
27554vsriq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c)
27555{
de10bcce 27556 return __builtin_aarch64_usri_nv2di_uuus (__a, __b, __c);
43e9d192
IB
27557}
27558
a063e204
TC
27559__extension__ extern __inline int64_t
27560__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 27561vsrid_n_s64 (int64_t __a, int64_t __b, const int __c)
43e9d192 27562{
096c59be 27563 return __builtin_aarch64_ssri_ndi (__a, __b, __c);
43e9d192
IB
27564}
27565
a063e204
TC
27566__extension__ extern __inline uint64_t
27567__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 27568vsrid_n_u64 (uint64_t __a, uint64_t __b, const int __c)
43e9d192 27569{
de10bcce 27570 return __builtin_aarch64_usri_ndi_uuus (__a, __b, __c);
43e9d192
IB
27571}
27572
dec11868
JG
27573/* vst1 */
27574
a063e204
TC
27575__extension__ extern __inline void
27576__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
71a11456
AL
27577vst1_f16 (float16_t *__a, float16x4_t __b)
27578{
27579 __builtin_aarch64_st1v4hf (__a, __b);
27580}
27581
a063e204
TC
27582__extension__ extern __inline void
27583__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27584vst1_f32 (float32_t *__a, float32x2_t __b)
dec11868 27585{
9a3afc35 27586 __builtin_aarch64_st1v2sf ((__builtin_aarch64_simd_sf *) __a, __b);
dec11868
JG
27587}
27588
a063e204
TC
27589__extension__ extern __inline void
27590__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27591vst1_f64 (float64_t *__a, float64x1_t __b)
dec11868 27592{
9a3afc35 27593 *__a = __b[0];
dec11868
JG
27594}
27595
a063e204
TC
27596__extension__ extern __inline void
27597__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27598vst1_p8 (poly8_t *__a, poly8x8_t __b)
dec11868 27599{
9a3afc35
KT
27600 __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi *) __a,
27601 (int8x8_t) __b);
dec11868
JG
27602}
27603
a063e204
TC
27604__extension__ extern __inline void
27605__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27606vst1_p16 (poly16_t *__a, poly16x4_t __b)
dec11868 27607{
9a3afc35
KT
27608 __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi *) __a,
27609 (int16x4_t) __b);
dec11868
JG
27610}
27611
159b8724
TC
27612__extension__ extern __inline void
27613__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27614vst1_p64 (poly64_t *__a, poly64x1_t __b)
159b8724 27615{
9a3afc35 27616 *__a = __b[0];
159b8724
TC
27617}
27618
a063e204
TC
27619__extension__ extern __inline void
27620__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27621vst1_s8 (int8_t *__a, int8x8_t __b)
dec11868 27622{
9a3afc35 27623 __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi *) __a, __b);
dec11868
JG
27624}
27625
a063e204
TC
27626__extension__ extern __inline void
27627__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27628vst1_s16 (int16_t *__a, int16x4_t __b)
dec11868 27629{
9a3afc35 27630 __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi *) __a, __b);
dec11868
JG
27631}
27632
a063e204
TC
27633__extension__ extern __inline void
27634__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27635vst1_s32 (int32_t *__a, int32x2_t __b)
dec11868 27636{
9a3afc35 27637 __builtin_aarch64_st1v2si ((__builtin_aarch64_simd_si *) __a, __b);
dec11868
JG
27638}
27639
a063e204
TC
27640__extension__ extern __inline void
27641__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27642vst1_s64 (int64_t *__a, int64x1_t __b)
dec11868 27643{
9a3afc35 27644 *__a = __b[0];
dec11868
JG
27645}
27646
a063e204
TC
27647__extension__ extern __inline void
27648__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27649vst1_u8 (uint8_t *__a, uint8x8_t __b)
dec11868 27650{
9a3afc35
KT
27651 __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi *) __a,
27652 (int8x8_t) __b);
dec11868
JG
27653}
27654
a063e204
TC
27655__extension__ extern __inline void
27656__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27657vst1_u16 (uint16_t *__a, uint16x4_t __b)
dec11868 27658{
9a3afc35
KT
27659 __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi *) __a,
27660 (int16x4_t) __b);
dec11868
JG
27661}
27662
a063e204
TC
27663__extension__ extern __inline void
27664__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27665vst1_u32 (uint32_t *__a, uint32x2_t __b)
dec11868 27666{
9a3afc35
KT
27667 __builtin_aarch64_st1v2si ((__builtin_aarch64_simd_si *) __a,
27668 (int32x2_t) __b);
dec11868
JG
27669}
27670
a063e204
TC
27671__extension__ extern __inline void
27672__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27673vst1_u64 (uint64_t *__a, uint64x1_t __b)
dec11868 27674{
9a3afc35 27675 *__a = __b[0];
dec11868
JG
27676}
27677
5543f941
AL
27678/* vst1q */
27679
a063e204
TC
27680__extension__ extern __inline void
27681__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
71a11456
AL
27682vst1q_f16 (float16_t *__a, float16x8_t __b)
27683{
27684 __builtin_aarch64_st1v8hf (__a, __b);
27685}
27686
a063e204
TC
27687__extension__ extern __inline void
27688__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27689vst1q_f32 (float32_t *__a, float32x4_t __b)
dec11868 27690{
9a3afc35 27691 __builtin_aarch64_st1v4sf ((__builtin_aarch64_simd_sf *) __a, __b);
dec11868
JG
27692}
27693
a063e204
TC
27694__extension__ extern __inline void
27695__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27696vst1q_f64 (float64_t *__a, float64x2_t __b)
dec11868 27697{
9a3afc35 27698 __builtin_aarch64_st1v2df ((__builtin_aarch64_simd_df *) __a, __b);
dec11868
JG
27699}
27700
a063e204
TC
27701__extension__ extern __inline void
27702__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27703vst1q_p8 (poly8_t *__a, poly8x16_t __b)
dec11868 27704{
9a3afc35
KT
27705 __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi *) __a,
27706 (int8x16_t) __b);
dec11868
JG
27707}
27708
a063e204
TC
27709__extension__ extern __inline void
27710__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27711vst1q_p16 (poly16_t *__a, poly16x8_t __b)
dec11868 27712{
9a3afc35
KT
27713 __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi *) __a,
27714 (int16x8_t) __b);
dec11868
JG
27715}
27716
159b8724
TC
27717__extension__ extern __inline void
27718__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27719vst1q_p64 (poly64_t *__a, poly64x2_t __b)
159b8724 27720{
9a3afc35
KT
27721 __builtin_aarch64_st1v2di_sp ((__builtin_aarch64_simd_di *) __a,
27722 (poly64x2_t) __b);
159b8724
TC
27723}
27724
a063e204
TC
27725__extension__ extern __inline void
27726__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27727vst1q_s8 (int8_t *__a, int8x16_t __b)
dec11868 27728{
9a3afc35 27729 __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi *) __a, __b);
dec11868
JG
27730}
27731
a063e204
TC
27732__extension__ extern __inline void
27733__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27734vst1q_s16 (int16_t *__a, int16x8_t __b)
dec11868 27735{
9a3afc35 27736 __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi *) __a, __b);
dec11868
JG
27737}
27738
a063e204
TC
27739__extension__ extern __inline void
27740__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27741vst1q_s32 (int32_t *__a, int32x4_t __b)
dec11868 27742{
9a3afc35 27743 __builtin_aarch64_st1v4si ((__builtin_aarch64_simd_si *) __a, __b);
dec11868
JG
27744}
27745
a063e204
TC
27746__extension__ extern __inline void
27747__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27748vst1q_s64 (int64_t *__a, int64x2_t __b)
dec11868 27749{
9a3afc35 27750 __builtin_aarch64_st1v2di ((__builtin_aarch64_simd_di *) __a, __b);
dec11868
JG
27751}
27752
a063e204
TC
27753__extension__ extern __inline void
27754__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27755vst1q_u8 (uint8_t *__a, uint8x16_t __b)
dec11868 27756{
9a3afc35
KT
27757 __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi *) __a,
27758 (int8x16_t) __b);
dec11868
JG
27759}
27760
a063e204
TC
27761__extension__ extern __inline void
27762__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27763vst1q_u16 (uint16_t *__a, uint16x8_t __b)
dec11868 27764{
9a3afc35
KT
27765 __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi *) __a,
27766 (int16x8_t) __b);
dec11868
JG
27767}
27768
a063e204
TC
27769__extension__ extern __inline void
27770__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27771vst1q_u32 (uint32_t *__a, uint32x4_t __b)
dec11868 27772{
9a3afc35
KT
27773 __builtin_aarch64_st1v4si ((__builtin_aarch64_simd_si *) __a,
27774 (int32x4_t) __b);
dec11868
JG
27775}
27776
a063e204
TC
27777__extension__ extern __inline void
27778__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27779vst1q_u64 (uint64_t *__a, uint64x2_t __b)
dec11868 27780{
9a3afc35
KT
27781 __builtin_aarch64_st1v2di ((__builtin_aarch64_simd_di *) __a,
27782 (int64x2_t) __b);
dec11868
JG
27783}
27784
5543f941
AL
27785/* vst1_lane */
27786
a063e204
TC
27787__extension__ extern __inline void
27788__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
71a11456
AL
27789vst1_lane_f16 (float16_t *__a, float16x4_t __b, const int __lane)
27790{
27791 *__a = __aarch64_vget_lane_any (__b, __lane);
27792}
27793
a063e204
TC
27794__extension__ extern __inline void
27795__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27796vst1_lane_f32 (float32_t *__a, float32x2_t __b, const int __lane)
27797{
27798 *__a = __aarch64_vget_lane_any (__b, __lane);
27799}
27800
a063e204
TC
27801__extension__ extern __inline void
27802__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27803vst1_lane_f64 (float64_t *__a, float64x1_t __b, const int __lane)
27804{
27805 *__a = __aarch64_vget_lane_any (__b, __lane);
27806}
27807
a063e204
TC
27808__extension__ extern __inline void
27809__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27810vst1_lane_p8 (poly8_t *__a, poly8x8_t __b, const int __lane)
27811{
27812 *__a = __aarch64_vget_lane_any (__b, __lane);
27813}
27814
a063e204
TC
27815__extension__ extern __inline void
27816__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27817vst1_lane_p16 (poly16_t *__a, poly16x4_t __b, const int __lane)
27818{
27819 *__a = __aarch64_vget_lane_any (__b, __lane);
27820}
27821
159b8724
TC
27822__extension__ extern __inline void
27823__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
27824vst1_lane_p64 (poly64_t *__a, poly64x1_t __b, const int __lane)
27825{
27826 *__a = __aarch64_vget_lane_any (__b, __lane);
27827}
27828
a063e204
TC
27829__extension__ extern __inline void
27830__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27831vst1_lane_s8 (int8_t *__a, int8x8_t __b, const int __lane)
27832{
27833 *__a = __aarch64_vget_lane_any (__b, __lane);
27834}
27835
a063e204
TC
27836__extension__ extern __inline void
27837__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27838vst1_lane_s16 (int16_t *__a, int16x4_t __b, const int __lane)
27839{
27840 *__a = __aarch64_vget_lane_any (__b, __lane);
27841}
27842
a063e204
TC
27843__extension__ extern __inline void
27844__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27845vst1_lane_s32 (int32_t *__a, int32x2_t __b, const int __lane)
27846{
27847 *__a = __aarch64_vget_lane_any (__b, __lane);
27848}
27849
a063e204
TC
27850__extension__ extern __inline void
27851__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27852vst1_lane_s64 (int64_t *__a, int64x1_t __b, const int __lane)
27853{
27854 *__a = __aarch64_vget_lane_any (__b, __lane);
27855}
27856
a063e204
TC
27857__extension__ extern __inline void
27858__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27859vst1_lane_u8 (uint8_t *__a, uint8x8_t __b, const int __lane)
27860{
27861 *__a = __aarch64_vget_lane_any (__b, __lane);
27862}
27863
a063e204
TC
27864__extension__ extern __inline void
27865__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27866vst1_lane_u16 (uint16_t *__a, uint16x4_t __b, const int __lane)
27867{
27868 *__a = __aarch64_vget_lane_any (__b, __lane);
27869}
27870
a063e204
TC
27871__extension__ extern __inline void
27872__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27873vst1_lane_u32 (uint32_t *__a, uint32x2_t __b, const int __lane)
27874{
27875 *__a = __aarch64_vget_lane_any (__b, __lane);
27876}
27877
a063e204
TC
27878__extension__ extern __inline void
27879__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27880vst1_lane_u64 (uint64_t *__a, uint64x1_t __b, const int __lane)
27881{
27882 *__a = __aarch64_vget_lane_any (__b, __lane);
27883}
27884
27885/* vst1q_lane */
27886
a063e204
TC
27887__extension__ extern __inline void
27888__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
71a11456
AL
27889vst1q_lane_f16 (float16_t *__a, float16x8_t __b, const int __lane)
27890{
27891 *__a = __aarch64_vget_lane_any (__b, __lane);
27892}
27893
a063e204
TC
27894__extension__ extern __inline void
27895__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27896vst1q_lane_f32 (float32_t *__a, float32x4_t __b, const int __lane)
27897{
27898 *__a = __aarch64_vget_lane_any (__b, __lane);
27899}
27900
a063e204
TC
27901__extension__ extern __inline void
27902__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27903vst1q_lane_f64 (float64_t *__a, float64x2_t __b, const int __lane)
27904{
27905 *__a = __aarch64_vget_lane_any (__b, __lane);
27906}
27907
a063e204
TC
27908__extension__ extern __inline void
27909__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27910vst1q_lane_p8 (poly8_t *__a, poly8x16_t __b, const int __lane)
27911{
27912 *__a = __aarch64_vget_lane_any (__b, __lane);
27913}
27914
a063e204
TC
27915__extension__ extern __inline void
27916__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27917vst1q_lane_p16 (poly16_t *__a, poly16x8_t __b, const int __lane)
27918{
27919 *__a = __aarch64_vget_lane_any (__b, __lane);
27920}
27921
159b8724
TC
27922__extension__ extern __inline void
27923__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
27924vst1q_lane_p64 (poly64_t *__a, poly64x2_t __b, const int __lane)
27925{
27926 *__a = __aarch64_vget_lane_any (__b, __lane);
27927}
27928
a063e204
TC
27929__extension__ extern __inline void
27930__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27931vst1q_lane_s8 (int8_t *__a, int8x16_t __b, const int __lane)
27932{
27933 *__a = __aarch64_vget_lane_any (__b, __lane);
27934}
27935
a063e204
TC
27936__extension__ extern __inline void
27937__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27938vst1q_lane_s16 (int16_t *__a, int16x8_t __b, const int __lane)
27939{
27940 *__a = __aarch64_vget_lane_any (__b, __lane);
27941}
27942
a063e204
TC
27943__extension__ extern __inline void
27944__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27945vst1q_lane_s32 (int32_t *__a, int32x4_t __b, const int __lane)
27946{
27947 *__a = __aarch64_vget_lane_any (__b, __lane);
27948}
27949
a063e204
TC
27950__extension__ extern __inline void
27951__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27952vst1q_lane_s64 (int64_t *__a, int64x2_t __b, const int __lane)
27953{
27954 *__a = __aarch64_vget_lane_any (__b, __lane);
27955}
27956
a063e204
TC
27957__extension__ extern __inline void
27958__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27959vst1q_lane_u8 (uint8_t *__a, uint8x16_t __b, const int __lane)
27960{
27961 *__a = __aarch64_vget_lane_any (__b, __lane);
27962}
27963
a063e204
TC
27964__extension__ extern __inline void
27965__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27966vst1q_lane_u16 (uint16_t *__a, uint16x8_t __b, const int __lane)
27967{
27968 *__a = __aarch64_vget_lane_any (__b, __lane);
27969}
27970
a063e204
TC
27971__extension__ extern __inline void
27972__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27973vst1q_lane_u32 (uint32_t *__a, uint32x4_t __b, const int __lane)
27974{
27975 *__a = __aarch64_vget_lane_any (__b, __lane);
27976}
27977
a063e204
TC
27978__extension__ extern __inline void
27979__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
5543f941
AL
27980vst1q_lane_u64 (uint64_t *__a, uint64x2_t __b, const int __lane)
27981{
27982 *__a = __aarch64_vget_lane_any (__b, __lane);
27983}
27984
568421ba
SD
27985/* vst1x2 */
27986
27987__extension__ extern __inline void
27988__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 27989vst1_s64_x2 (int64_t * __a, int64x1x2_t __val)
568421ba
SD
27990{
27991 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
27992 int64x2x2_t __temp;
27993 __temp.val[0]
27994 = vcombine_s64 (__val.val[0], vcreate_s64 (__AARCH64_INT64_C (0)));
27995 __temp.val[1]
27996 = vcombine_s64 (__val.val[1], vcreate_s64 (__AARCH64_INT64_C (0)));
27997 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[0], 0);
27998 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[1], 1);
568421ba
SD
27999 __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o);
28000}
28001
28002__extension__ extern __inline void
28003__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28004vst1_u64_x2 (uint64_t * __a, uint64x1x2_t __val)
568421ba
SD
28005{
28006 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28007 uint64x2x2_t __temp;
28008 __temp.val[0]
28009 = vcombine_u64 (__val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0)));
28010 __temp.val[1]
28011 = vcombine_u64 (__val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0)));
28012 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[0], 0);
28013 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[1], 1);
568421ba
SD
28014 __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o);
28015}
28016
28017__extension__ extern __inline void
28018__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28019vst1_f64_x2 (float64_t * __a, float64x1x2_t __val)
568421ba
SD
28020{
28021 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28022 float64x2x2_t __temp;
28023 __temp.val[0]
28024 = vcombine_f64 (__val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0)));
28025 __temp.val[1]
28026 = vcombine_f64 (__val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0)));
28027 __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __temp.val[0], 0);
28028 __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __temp.val[1], 1);
568421ba
SD
28029 __builtin_aarch64_st1x2df ((__builtin_aarch64_simd_df *) __a, __o);
28030}
28031
28032__extension__ extern __inline void
28033__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28034vst1_s8_x2 (int8_t * __a, int8x8x2_t __val)
568421ba
SD
28035{
28036 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28037 int8x16x2_t __temp;
28038 __temp.val[0]
28039 = vcombine_s8 (__val.val[0], vcreate_s8 (__AARCH64_INT64_C (0)));
28040 __temp.val[1]
28041 = vcombine_s8 (__val.val[1], vcreate_s8 (__AARCH64_INT64_C (0)));
28042 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0);
28043 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1);
568421ba
SD
28044 __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
28045}
28046
28047__extension__ extern __inline void
28048__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28049vst1_p8_x2 (poly8_t * __a, poly8x8x2_t __val)
568421ba
SD
28050{
28051 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28052 poly8x16x2_t __temp;
28053 __temp.val[0]
28054 = vcombine_p8 (__val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0)));
28055 __temp.val[1]
28056 = vcombine_p8 (__val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0)));
28057 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0);
28058 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1);
568421ba
SD
28059 __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
28060}
28061
28062__extension__ extern __inline void
28063__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28064vst1_s16_x2 (int16_t * __a, int16x4x2_t __val)
568421ba
SD
28065{
28066 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28067 int16x8x2_t __temp;
28068 __temp.val[0]
28069 = vcombine_s16 (__val.val[0], vcreate_s16 (__AARCH64_INT64_C (0)));
28070 __temp.val[1]
28071 = vcombine_s16 (__val.val[1], vcreate_s16 (__AARCH64_INT64_C (0)));
28072 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0);
28073 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1);
568421ba
SD
28074 __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
28075}
28076
28077__extension__ extern __inline void
28078__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28079vst1_p16_x2 (poly16_t * __a, poly16x4x2_t __val)
568421ba
SD
28080{
28081 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28082 poly16x8x2_t __temp;
28083 __temp.val[0]
28084 = vcombine_p16 (__val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0)));
28085 __temp.val[1]
28086 = vcombine_p16 (__val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0)));
28087 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0);
28088 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1);
568421ba
SD
28089 __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
28090}
28091
28092__extension__ extern __inline void
28093__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28094vst1_s32_x2 (int32_t * __a, int32x2x2_t __val)
568421ba
SD
28095{
28096 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28097 int32x4x2_t __temp;
28098 __temp.val[0]
28099 = vcombine_s32 (__val.val[0], vcreate_s32 (__AARCH64_INT64_C (0)));
28100 __temp.val[1]
28101 = vcombine_s32 (__val.val[1], vcreate_s32 (__AARCH64_INT64_C (0)));
28102 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[0], 0);
28103 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[1], 1);
568421ba
SD
28104 __builtin_aarch64_st1x2v2si ((__builtin_aarch64_simd_si *) __a, __o);
28105}
28106
28107__extension__ extern __inline void
28108__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28109vst1_u8_x2 (uint8_t * __a, uint8x8x2_t __val)
568421ba
SD
28110{
28111 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28112 uint8x16x2_t __temp;
28113 __temp.val[0] = vcombine_u8 (__val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0)));
28114 __temp.val[1] = vcombine_u8 (__val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0)));
28115 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0);
28116 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1);
568421ba
SD
28117 __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
28118}
28119
28120__extension__ extern __inline void
28121__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28122vst1_u16_x2 (uint16_t * __a, uint16x4x2_t __val)
568421ba
SD
28123{
28124 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28125 uint16x8x2_t __temp;
28126 __temp.val[0] = vcombine_u16 (__val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0)));
28127 __temp.val[1] = vcombine_u16 (__val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0)));
28128 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0);
28129 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1);
568421ba
SD
28130 __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
28131}
28132
28133__extension__ extern __inline void
28134__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28135vst1_u32_x2 (uint32_t * __a, uint32x2x2_t __val)
568421ba
SD
28136{
28137 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28138 uint32x4x2_t __temp;
28139 __temp.val[0] = vcombine_u32 (__val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0)));
28140 __temp.val[1] = vcombine_u32 (__val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0)));
28141 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[0], 0);
28142 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[1], 1);
568421ba
SD
28143 __builtin_aarch64_st1x2v2si ((__builtin_aarch64_simd_si *) __a, __o);
28144}
28145
28146__extension__ extern __inline void
28147__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28148vst1_f16_x2 (float16_t * __a, float16x4x2_t __val)
568421ba
SD
28149{
28150 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28151 float16x8x2_t __temp;
28152 __temp.val[0] = vcombine_f16 (__val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0)));
28153 __temp.val[1] = vcombine_f16 (__val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0)));
28154 __o = __builtin_aarch64_set_qregoiv8hf (__o, __temp.val[0], 0);
28155 __o = __builtin_aarch64_set_qregoiv8hf (__o, __temp.val[1], 1);
568421ba
SD
28156 __builtin_aarch64_st1x2v4hf (__a, __o);
28157}
28158
28159__extension__ extern __inline void
28160__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28161vst1_f32_x2 (float32_t * __a, float32x2x2_t __val)
568421ba
SD
28162{
28163 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28164 float32x4x2_t __temp;
28165 __temp.val[0] = vcombine_f32 (__val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0)));
28166 __temp.val[1] = vcombine_f32 (__val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0)));
28167 __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __temp.val[0], 0);
28168 __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __temp.val[1], 1);
568421ba
SD
28169 __builtin_aarch64_st1x2v2sf ((__builtin_aarch64_simd_sf *) __a, __o);
28170}
28171
28172__extension__ extern __inline void
28173__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28174vst1_p64_x2 (poly64_t * __a, poly64x1x2_t __val)
568421ba
SD
28175{
28176 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28177 poly64x2x2_t __temp;
28178 __temp.val[0] = vcombine_p64 (__val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0)));
28179 __temp.val[1] = vcombine_p64 (__val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0)));
568421ba 28180 __o = __builtin_aarch64_set_qregoiv2di_ssps (__o,
9a3afc35 28181 (poly64x2_t) __temp.val[0], 0);
568421ba 28182 __o = __builtin_aarch64_set_qregoiv2di_ssps (__o,
9a3afc35 28183 (poly64x2_t) __temp.val[1], 1);
568421ba
SD
28184 __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o);
28185}
28186
28187__extension__ extern __inline void
28188__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28189vst1q_s8_x2 (int8_t * __a, int8x16x2_t __val)
568421ba
SD
28190{
28191 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28192 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[0], 0);
28193 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[1], 1);
568421ba
SD
28194 __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
28195}
28196
28197__extension__ extern __inline void
28198__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28199vst1q_p8_x2 (poly8_t * __a, poly8x16x2_t __val)
568421ba
SD
28200{
28201 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28202 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[0], 0);
28203 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[1], 1);
568421ba
SD
28204 __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
28205}
28206
28207__extension__ extern __inline void
28208__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28209vst1q_s16_x2 (int16_t * __a, int16x8x2_t __val)
568421ba
SD
28210{
28211 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28212 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[0], 0);
28213 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[1], 1);
568421ba
SD
28214 __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
28215}
28216
28217__extension__ extern __inline void
28218__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28219vst1q_p16_x2 (poly16_t * __a, poly16x8x2_t __val)
568421ba
SD
28220{
28221 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28222 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[0], 0);
28223 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[1], 1);
568421ba
SD
28224 __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
28225}
28226
28227__extension__ extern __inline void
28228__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28229vst1q_s32_x2 (int32_t * __a, int32x4x2_t __val)
568421ba
SD
28230{
28231 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28232 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[0], 0);
28233 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[1], 1);
568421ba
SD
28234 __builtin_aarch64_st1x2v4si ((__builtin_aarch64_simd_si *) __a, __o);
28235}
28236
28237__extension__ extern __inline void
28238__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28239vst1q_s64_x2 (int64_t * __a, int64x2x2_t __val)
568421ba
SD
28240{
28241 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28242 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[0], 0);
28243 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[1], 1);
568421ba
SD
28244 __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o);
28245}
28246
28247__extension__ extern __inline void
28248__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28249vst1q_u8_x2 (uint8_t * __a, uint8x16x2_t __val)
568421ba
SD
28250{
28251 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28252 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[0], 0);
28253 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[1], 1);
568421ba
SD
28254 __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
28255}
28256
28257__extension__ extern __inline void
28258__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28259vst1q_u16_x2 (uint16_t * __a, uint16x8x2_t __val)
568421ba
SD
28260{
28261 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28262 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[0], 0);
28263 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[1], 1);
568421ba
SD
28264 __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
28265}
28266
28267__extension__ extern __inline void
28268__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28269vst1q_u32_x2 (uint32_t * __a, uint32x4x2_t __val)
568421ba
SD
28270{
28271 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28272 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[0], 0);
28273 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[1], 1);
568421ba
SD
28274 __builtin_aarch64_st1x2v4si ((__builtin_aarch64_simd_si *) __a, __o);
28275}
28276
28277__extension__ extern __inline void
28278__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28279vst1q_u64_x2 (uint64_t * __a, uint64x2x2_t __val)
568421ba
SD
28280{
28281 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28282 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[0], 0);
28283 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[1], 1);
568421ba
SD
28284 __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o);
28285}
28286
28287__extension__ extern __inline void
28288__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28289vst1q_f16_x2 (float16_t * __a, float16x8x2_t __val)
568421ba
SD
28290{
28291 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28292 __o = __builtin_aarch64_set_qregoiv8hf (__o, __val.val[0], 0);
28293 __o = __builtin_aarch64_set_qregoiv8hf (__o, __val.val[1], 1);
568421ba
SD
28294 __builtin_aarch64_st1x2v8hf (__a, __o);
28295}
28296
28297__extension__ extern __inline void
28298__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28299vst1q_f32_x2 (float32_t * __a, float32x4x2_t __val)
568421ba
SD
28300{
28301 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28302 __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __val.val[0], 0);
28303 __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __val.val[1], 1);
568421ba
SD
28304 __builtin_aarch64_st1x2v4sf ((__builtin_aarch64_simd_sf *) __a, __o);
28305}
28306
28307__extension__ extern __inline void
28308__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28309vst1q_f64_x2 (float64_t * __a, float64x2x2_t __val)
568421ba
SD
28310{
28311 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28312 __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __val.val[0], 0);
28313 __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __val.val[1], 1);
568421ba
SD
28314 __builtin_aarch64_st1x2v2df ((__builtin_aarch64_simd_df *) __a, __o);
28315}
28316
28317__extension__ extern __inline void
28318__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28319vst1q_p64_x2 (poly64_t * __a, poly64x2x2_t __val)
568421ba
SD
28320{
28321 __builtin_aarch64_simd_oi __o;
28322 __o = __builtin_aarch64_set_qregoiv2di_ssps (__o,
9a3afc35 28323 (poly64x2_t) __val.val[0], 0);
568421ba 28324 __o = __builtin_aarch64_set_qregoiv2di_ssps (__o,
9a3afc35 28325 (poly64x2_t) __val.val[1], 1);
568421ba
SD
28326 __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o);
28327}
28328
28329/* vst1x3 */
28330
28331__extension__ extern __inline void
28332__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28333vst1_s64_x3 (int64_t * __a, int64x1x3_t __val)
568421ba
SD
28334{
28335 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28336 int64x2x3_t __temp;
28337 __temp.val[0] = vcombine_s64 (__val.val[0], vcreate_s64 (__AARCH64_INT64_C (0)));
28338 __temp.val[1] = vcombine_s64 (__val.val[1], vcreate_s64 (__AARCH64_INT64_C (0)));
28339 __temp.val[2] = vcombine_s64 (__val.val[2], vcreate_s64 (__AARCH64_INT64_C (0)));
28340 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[0], 0);
28341 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[1], 1);
28342 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[2], 2);
568421ba
SD
28343 __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o);
28344}
28345
28346__extension__ extern __inline void
28347__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28348vst1_u64_x3 (uint64_t * __a, uint64x1x3_t __val)
568421ba
SD
28349{
28350 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28351 uint64x2x3_t __temp;
28352 __temp.val[0] = vcombine_u64 (__val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0)));
28353 __temp.val[1] = vcombine_u64 (__val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0)));
28354 __temp.val[2] = vcombine_u64 (__val.val[2], vcreate_u64 (__AARCH64_UINT64_C (0)));
28355 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[0], 0);
28356 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[1], 1);
28357 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[2], 2);
568421ba
SD
28358 __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o);
28359}
28360
28361__extension__ extern __inline void
28362__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28363vst1_f64_x3 (float64_t * __a, float64x1x3_t __val)
568421ba
SD
28364{
28365 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28366 float64x2x3_t __temp;
28367 __temp.val[0] = vcombine_f64 (__val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0)));
28368 __temp.val[1] = vcombine_f64 (__val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0)));
28369 __temp.val[2] = vcombine_f64 (__val.val[2], vcreate_f64 (__AARCH64_UINT64_C (0)));
28370 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[0], 0);
28371 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[1], 1);
28372 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[2], 2);
568421ba
SD
28373 __builtin_aarch64_st1x3df ((__builtin_aarch64_simd_df *) __a, __o);
28374}
28375
28376__extension__ extern __inline void
28377__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28378vst1_s8_x3 (int8_t * __a, int8x8x3_t __val)
568421ba
SD
28379{
28380 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28381 int8x16x3_t __temp;
28382 __temp.val[0] = vcombine_s8 (__val.val[0], vcreate_s8 (__AARCH64_INT64_C (0)));
28383 __temp.val[1] = vcombine_s8 (__val.val[1], vcreate_s8 (__AARCH64_INT64_C (0)));
28384 __temp.val[2] = vcombine_s8 (__val.val[2], vcreate_s8 (__AARCH64_INT64_C (0)));
28385 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0);
28386 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1);
28387 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2);
568421ba
SD
28388 __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
28389}
28390
28391__extension__ extern __inline void
28392__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28393vst1_p8_x3 (poly8_t * __a, poly8x8x3_t __val)
568421ba
SD
28394{
28395 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28396 poly8x16x3_t __temp;
28397 __temp.val[0] = vcombine_p8 (__val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0)));
28398 __temp.val[1] = vcombine_p8 (__val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0)));
28399 __temp.val[2] = vcombine_p8 (__val.val[2], vcreate_p8 (__AARCH64_UINT64_C (0)));
28400 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0);
28401 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1);
28402 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2);
568421ba
SD
28403 __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
28404}
28405
28406__extension__ extern __inline void
28407__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28408vst1_s16_x3 (int16_t * __a, int16x4x3_t __val)
568421ba
SD
28409{
28410 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28411 int16x8x3_t __temp;
28412 __temp.val[0] = vcombine_s16 (__val.val[0], vcreate_s16 (__AARCH64_INT64_C (0)));
28413 __temp.val[1] = vcombine_s16 (__val.val[1], vcreate_s16 (__AARCH64_INT64_C (0)));
28414 __temp.val[2] = vcombine_s16 (__val.val[2], vcreate_s16 (__AARCH64_INT64_C (0)));
28415 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0);
28416 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1);
28417 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2);
568421ba
SD
28418 __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
28419}
28420
28421__extension__ extern __inline void
28422__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28423vst1_p16_x3 (poly16_t * __a, poly16x4x3_t __val)
568421ba
SD
28424{
28425 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28426 poly16x8x3_t __temp;
28427 __temp.val[0] = vcombine_p16 (__val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0)));
28428 __temp.val[1] = vcombine_p16 (__val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0)));
28429 __temp.val[2] = vcombine_p16 (__val.val[2], vcreate_p16 (__AARCH64_UINT64_C (0)));
28430 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0);
28431 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1);
28432 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2);
568421ba
SD
28433 __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
28434}
28435
28436__extension__ extern __inline void
28437__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28438vst1_s32_x3 (int32_t * __a, int32x2x3_t __val)
568421ba
SD
28439{
28440 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28441 int32x4x3_t __temp;
28442 __temp.val[0] = vcombine_s32 (__val.val[0], vcreate_s32 (__AARCH64_INT64_C (0)));
28443 __temp.val[1] = vcombine_s32 (__val.val[1], vcreate_s32 (__AARCH64_INT64_C (0)));
28444 __temp.val[2] = vcombine_s32 (__val.val[2], vcreate_s32 (__AARCH64_INT64_C (0)));
28445 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[0], 0);
28446 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[1], 1);
28447 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[2], 2);
568421ba
SD
28448 __builtin_aarch64_st1x3v2si ((__builtin_aarch64_simd_si *) __a, __o);
28449}
28450
28451__extension__ extern __inline void
28452__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28453vst1_u8_x3 (uint8_t * __a, uint8x8x3_t __val)
568421ba
SD
28454{
28455 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28456 uint8x16x3_t __temp;
28457 __temp.val[0] = vcombine_u8 (__val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0)));
28458 __temp.val[1] = vcombine_u8 (__val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0)));
28459 __temp.val[2] = vcombine_u8 (__val.val[2], vcreate_u8 (__AARCH64_UINT64_C (0)));
28460 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0);
28461 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1);
28462 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2);
568421ba
SD
28463 __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
28464}
28465
28466__extension__ extern __inline void
28467__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28468vst1_u16_x3 (uint16_t * __a, uint16x4x3_t __val)
568421ba
SD
28469{
28470 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28471 uint16x8x3_t __temp;
28472 __temp.val[0] = vcombine_u16 (__val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0)));
28473 __temp.val[1] = vcombine_u16 (__val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0)));
28474 __temp.val[2] = vcombine_u16 (__val.val[2], vcreate_u16 (__AARCH64_UINT64_C (0)));
28475 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0);
28476 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1);
28477 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2);
568421ba
SD
28478 __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
28479}
28480
28481__extension__ extern __inline void
28482__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28483vst1_u32_x3 (uint32_t * __a, uint32x2x3_t __val)
568421ba
SD
28484{
28485 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28486 uint32x4x3_t __temp;
28487 __temp.val[0] = vcombine_u32 (__val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0)));
28488 __temp.val[1] = vcombine_u32 (__val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0)));
28489 __temp.val[2] = vcombine_u32 (__val.val[2], vcreate_u32 (__AARCH64_UINT64_C (0)));
28490 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[0], 0);
28491 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[1], 1);
28492 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[2], 2);
568421ba
SD
28493 __builtin_aarch64_st1x3v2si ((__builtin_aarch64_simd_si *) __a, __o);
28494}
28495
28496__extension__ extern __inline void
28497__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28498vst1_f16_x3 (float16_t * __a, float16x4x3_t __val)
568421ba
SD
28499{
28500 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28501 float16x8x3_t __temp;
28502 __temp.val[0] = vcombine_f16 (__val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0)));
28503 __temp.val[1] = vcombine_f16 (__val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0)));
28504 __temp.val[2] = vcombine_f16 (__val.val[2], vcreate_f16 (__AARCH64_UINT64_C (0)));
28505 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[0], 0);
28506 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[1], 1);
28507 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[2], 2);
568421ba
SD
28508 __builtin_aarch64_st1x3v4hf ((__builtin_aarch64_simd_hf *) __a, __o);
28509}
28510
28511__extension__ extern __inline void
28512__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28513vst1_f32_x3 (float32_t * __a, float32x2x3_t __val)
568421ba
SD
28514{
28515 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28516 float32x4x3_t __temp;
28517 __temp.val[0] = vcombine_f32 (__val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0)));
28518 __temp.val[1] = vcombine_f32 (__val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0)));
28519 __temp.val[2] = vcombine_f32 (__val.val[2], vcreate_f32 (__AARCH64_UINT64_C (0)));
28520 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[0], 0);
28521 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[1], 1);
28522 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[2], 2);
568421ba
SD
28523 __builtin_aarch64_st1x3v2sf ((__builtin_aarch64_simd_sf *) __a, __o);
28524}
28525
28526__extension__ extern __inline void
28527__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28528vst1_p64_x3 (poly64_t * __a, poly64x1x3_t __val)
568421ba
SD
28529{
28530 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28531 poly64x2x3_t __temp;
28532 __temp.val[0] = vcombine_p64 (__val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0)));
28533 __temp.val[1] = vcombine_p64 (__val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0)));
28534 __temp.val[2] = vcombine_p64 (__val.val[2], vcreate_p64 (__AARCH64_UINT64_C (0)));
568421ba 28535 __o = __builtin_aarch64_set_qregciv2di_ssps (__o,
9a3afc35 28536 (poly64x2_t) __temp.val[0], 0);
568421ba 28537 __o = __builtin_aarch64_set_qregciv2di_ssps (__o,
9a3afc35 28538 (poly64x2_t) __temp.val[1], 1);
568421ba 28539 __o = __builtin_aarch64_set_qregciv2di_ssps (__o,
9a3afc35 28540 (poly64x2_t) __temp.val[2], 2);
568421ba
SD
28541 __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o);
28542}
28543
28544__extension__ extern __inline void
28545__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28546vst1q_s8_x3 (int8_t * __a, int8x16x3_t __val)
568421ba
SD
28547{
28548 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28549 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[0], 0);
28550 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[1], 1);
28551 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[2], 2);
568421ba
SD
28552 __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
28553}
28554
28555__extension__ extern __inline void
28556__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28557vst1q_p8_x3 (poly8_t * __a, poly8x16x3_t __val)
568421ba
SD
28558{
28559 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28560 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[0], 0);
28561 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[1], 1);
28562 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[2], 2);
568421ba
SD
28563 __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
28564}
28565
28566__extension__ extern __inline void
28567__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28568vst1q_s16_x3 (int16_t * __a, int16x8x3_t __val)
568421ba
SD
28569{
28570 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28571 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[0], 0);
28572 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[1], 1);
28573 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[2], 2);
568421ba
SD
28574 __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
28575}
28576
28577__extension__ extern __inline void
28578__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28579vst1q_p16_x3 (poly16_t * __a, poly16x8x3_t __val)
568421ba
SD
28580{
28581 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28582 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[0], 0);
28583 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[1], 1);
28584 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[2], 2);
568421ba
SD
28585 __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
28586}
28587
28588__extension__ extern __inline void
28589__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28590vst1q_s32_x3 (int32_t * __a, int32x4x3_t __val)
568421ba
SD
28591{
28592 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28593 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[0], 0);
28594 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[1], 1);
28595 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[2], 2);
568421ba
SD
28596 __builtin_aarch64_st1x3v4si ((__builtin_aarch64_simd_si *) __a, __o);
28597}
28598
28599__extension__ extern __inline void
28600__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28601vst1q_s64_x3 (int64_t * __a, int64x2x3_t __val)
568421ba
SD
28602{
28603 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28604 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[0], 0);
28605 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[1], 1);
28606 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[2], 2);
568421ba
SD
28607 __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o);
28608}
28609
28610__extension__ extern __inline void
28611__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28612vst1q_u8_x3 (uint8_t * __a, uint8x16x3_t __val)
568421ba
SD
28613{
28614 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28615 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[0], 0);
28616 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[1], 1);
28617 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[2], 2);
568421ba
SD
28618 __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
28619}
28620
28621__extension__ extern __inline void
28622__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28623vst1q_u16_x3 (uint16_t * __a, uint16x8x3_t __val)
568421ba
SD
28624{
28625 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28626 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[0], 0);
28627 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[1], 1);
28628 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[2], 2);
568421ba
SD
28629 __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
28630}
28631
28632__extension__ extern __inline void
28633__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28634vst1q_u32_x3 (uint32_t * __a, uint32x4x3_t __val)
568421ba
SD
28635{
28636 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28637 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[0], 0);
28638 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[1], 1);
28639 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[2], 2);
568421ba
SD
28640 __builtin_aarch64_st1x3v4si ((__builtin_aarch64_simd_si *) __a, __o);
28641}
28642
28643__extension__ extern __inline void
28644__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28645vst1q_u64_x3 (uint64_t * __a, uint64x2x3_t __val)
568421ba
SD
28646{
28647 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28648 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[0], 0);
28649 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[1], 1);
28650 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[2], 2);
568421ba
SD
28651 __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o);
28652}
28653
28654__extension__ extern __inline void
28655__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28656vst1q_f16_x3 (float16_t * __a, float16x8x3_t __val)
568421ba
SD
28657{
28658 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28659 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __val.val[0], 0);
28660 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __val.val[1], 1);
28661 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __val.val[2], 2);
568421ba
SD
28662 __builtin_aarch64_st1x3v8hf ((__builtin_aarch64_simd_hf *) __a, __o);
28663}
28664
28665__extension__ extern __inline void
28666__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28667vst1q_f32_x3 (float32_t * __a, float32x4x3_t __val)
568421ba
SD
28668{
28669 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28670 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __val.val[0], 0);
28671 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __val.val[1], 1);
28672 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __val.val[2], 2);
568421ba
SD
28673 __builtin_aarch64_st1x3v4sf ((__builtin_aarch64_simd_sf *) __a, __o);
28674}
28675
28676__extension__ extern __inline void
28677__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28678vst1q_f64_x3 (float64_t * __a, float64x2x3_t __val)
568421ba
SD
28679{
28680 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
28681 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __val.val[0], 0);
28682 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __val.val[1], 1);
28683 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __val.val[2], 2);
568421ba
SD
28684 __builtin_aarch64_st1x3v2df ((__builtin_aarch64_simd_df *) __a, __o);
28685}
28686
28687__extension__ extern __inline void
28688__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28689vst1q_p64_x3 (poly64_t * __a, poly64x2x3_t __val)
568421ba
SD
28690{
28691 __builtin_aarch64_simd_ci __o;
28692 __o = __builtin_aarch64_set_qregciv2di_ssps (__o,
9a3afc35 28693 (poly64x2_t) __val.val[0], 0);
568421ba 28694 __o = __builtin_aarch64_set_qregciv2di_ssps (__o,
9a3afc35 28695 (poly64x2_t) __val.val[1], 1);
568421ba 28696 __o = __builtin_aarch64_set_qregciv2di_ssps (__o,
9a3afc35 28697 (poly64x2_t) __val.val[2], 2);
568421ba
SD
28698 __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o);
28699}
28700
39162588
ST
28701/* vst1(q)_x4. */
28702
28703__extension__ extern __inline void
28704__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28705vst1_s8_x4 (int8_t * __a, int8x8x4_t val)
28706{
28707 union { int8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28708 __builtin_aarch64_st1x4v8qi ((__builtin_aarch64_simd_qi *) __a, __u.__o);
28709}
28710
28711__extension__ extern __inline void
28712__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28713vst1q_s8_x4 (int8_t * __a, int8x16x4_t val)
28714{
28715 union { int8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28716 __builtin_aarch64_st1x4v16qi ((__builtin_aarch64_simd_qi *) __a, __u.__o);
28717}
28718
28719__extension__ extern __inline void
28720__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28721vst1_s16_x4 (int16_t * __a, int16x4x4_t val)
28722{
28723 union { int16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28724 __builtin_aarch64_st1x4v4hi ((__builtin_aarch64_simd_hi *) __a, __u.__o);
28725}
28726
28727__extension__ extern __inline void
28728__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28729vst1q_s16_x4 (int16_t * __a, int16x8x4_t val)
28730{
28731 union { int16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28732 __builtin_aarch64_st1x4v8hi ((__builtin_aarch64_simd_hi *) __a, __u.__o);
28733}
28734
28735__extension__ extern __inline void
28736__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28737vst1_s32_x4 (int32_t * __a, int32x2x4_t val)
28738{
28739 union { int32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28740 __builtin_aarch64_st1x4v2si ((__builtin_aarch64_simd_si *) __a, __u.__o);
28741}
28742
28743__extension__ extern __inline void
28744__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28745vst1q_s32_x4 (int32_t * __a, int32x4x4_t val)
28746{
28747 union { int32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28748 __builtin_aarch64_st1x4v4si ((__builtin_aarch64_simd_si *) __a, __u.__o);
28749}
28750
28751__extension__ extern __inline void
28752__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28753vst1_u8_x4 (uint8_t * __a, uint8x8x4_t val)
28754{
28755 union { uint8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28756 __builtin_aarch64_st1x4v8qi ((__builtin_aarch64_simd_qi *) __a, __u.__o);
28757}
28758
28759__extension__ extern __inline void
28760__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28761vst1q_u8_x4 (uint8_t * __a, uint8x16x4_t val)
28762{
28763 union { uint8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28764 __builtin_aarch64_st1x4v16qi ((__builtin_aarch64_simd_qi *) __a, __u.__o);
28765}
28766
28767__extension__ extern __inline void
28768__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28769vst1_u16_x4 (uint16_t * __a, uint16x4x4_t val)
28770{
28771 union { uint16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28772 __builtin_aarch64_st1x4v4hi ((__builtin_aarch64_simd_hi *) __a, __u.__o);
28773}
28774
28775__extension__ extern __inline void
28776__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28777vst1q_u16_x4 (uint16_t * __a, uint16x8x4_t val)
28778{
28779 union { uint16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28780 __builtin_aarch64_st1x4v8hi ((__builtin_aarch64_simd_hi *) __a, __u.__o);
28781}
28782
28783__extension__ extern __inline void
28784__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28785vst1_u32_x4 (uint32_t * __a, uint32x2x4_t val)
28786{
28787 union { uint32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28788 __builtin_aarch64_st1x4v2si ((__builtin_aarch64_simd_si *) __a, __u.__o);
28789}
28790
28791__extension__ extern __inline void
28792__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28793vst1q_u32_x4 (uint32_t * __a, uint32x4x4_t val)
28794{
28795 union { uint32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28796 __builtin_aarch64_st1x4v4si ((__builtin_aarch64_simd_si *) __a, __u.__o);
28797}
28798
28799__extension__ extern __inline void
28800__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28801vst1_f16_x4 (float16_t * __a, float16x4x4_t val)
28802{
28803 union { float16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28804 __builtin_aarch64_st1x4v4hf ((__builtin_aarch64_simd_hf *) __a, __u.__o);
28805}
28806
28807__extension__ extern __inline void
28808__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28809vst1q_f16_x4 (float16_t * __a, float16x8x4_t val)
28810{
28811 union { float16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28812 __builtin_aarch64_st1x4v8hf ((__builtin_aarch64_simd_hf *) __a, __u.__o);
28813}
28814
28815__extension__ extern __inline void
28816__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28817vst1_f32_x4 (float32_t * __a, float32x2x4_t val)
28818{
28819 union { float32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28820 __builtin_aarch64_st1x4v2sf ((__builtin_aarch64_simd_sf *) __a, __u.__o);
28821}
28822
28823__extension__ extern __inline void
28824__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28825vst1q_f32_x4 (float32_t * __a, float32x4x4_t val)
28826{
28827 union { float32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28828 __builtin_aarch64_st1x4v4sf ((__builtin_aarch64_simd_sf *) __a, __u.__o);
28829}
28830
28831__extension__ extern __inline void
28832__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28833vst1_p8_x4 (poly8_t * __a, poly8x8x4_t val)
28834{
28835 union { poly8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28836 __builtin_aarch64_st1x4v8qi ((__builtin_aarch64_simd_qi *) __a, __u.__o);
28837}
28838
28839__extension__ extern __inline void
28840__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28841vst1q_p8_x4 (poly8_t * __a, poly8x16x4_t val)
28842{
28843 union { poly8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28844 __builtin_aarch64_st1x4v16qi ((__builtin_aarch64_simd_qi *) __a, __u.__o);
28845}
28846
28847__extension__ extern __inline void
28848__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28849vst1_p16_x4 (poly16_t * __a, poly16x4x4_t val)
28850{
28851 union { poly16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28852 __builtin_aarch64_st1x4v4hi ((__builtin_aarch64_simd_hi *) __a, __u.__o);
28853}
28854
28855__extension__ extern __inline void
28856__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28857vst1q_p16_x4 (poly16_t * __a, poly16x8x4_t val)
28858{
28859 union { poly16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28860 __builtin_aarch64_st1x4v8hi ((__builtin_aarch64_simd_hi *) __a, __u.__o);
28861}
28862
28863__extension__ extern __inline void
28864__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28865vst1_s64_x4 (int64_t * __a, int64x1x4_t val)
28866{
28867 union { int64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28868 __builtin_aarch64_st1x4di ((__builtin_aarch64_simd_di *) __a, __u.__o);
28869}
28870
28871__extension__ extern __inline void
28872__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28873vst1_u64_x4 (uint64_t * __a, uint64x1x4_t val)
28874{
28875 union { uint64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28876 __builtin_aarch64_st1x4di ((__builtin_aarch64_simd_di *) __a, __u.__o);
28877}
28878
28879__extension__ extern __inline void
28880__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28881vst1_p64_x4 (poly64_t * __a, poly64x1x4_t val)
28882{
28883 union { poly64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28884 __builtin_aarch64_st1x4di ((__builtin_aarch64_simd_di *) __a, __u.__o);
28885}
28886
28887__extension__ extern __inline void
28888__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28889vst1q_s64_x4 (int64_t * __a, int64x2x4_t val)
28890{
28891 union { int64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28892 __builtin_aarch64_st1x4v2di ((__builtin_aarch64_simd_di *) __a, __u.__o);
28893}
28894
28895__extension__ extern __inline void
28896__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28897vst1q_u64_x4 (uint64_t * __a, uint64x2x4_t val)
28898{
28899 union { uint64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28900 __builtin_aarch64_st1x4v2di ((__builtin_aarch64_simd_di *) __a, __u.__o);
28901}
28902
28903__extension__ extern __inline void
28904__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28905vst1q_p64_x4 (poly64_t * __a, poly64x2x4_t val)
28906{
28907 union { poly64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28908 __builtin_aarch64_st1x4v2di ((__builtin_aarch64_simd_di *) __a, __u.__o);
28909}
28910
28911__extension__ extern __inline void
28912__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28913vst1_f64_x4 (float64_t * __a, float64x1x4_t val)
28914{
28915 union { float64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28916 __builtin_aarch64_st1x4df ((__builtin_aarch64_simd_df *) __a, __u.__o);
28917}
28918
28919__extension__ extern __inline void
28920__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
28921vst1q_f64_x4 (float64_t * __a, float64x2x4_t val)
28922{
28923 union { float64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
28924 __builtin_aarch64_st1x4v2df ((__builtin_aarch64_simd_df *) __a, __u.__o);
28925}
28926
43e9d192
IB
28927/* vstn */
28928
a063e204 28929__extension__ extern __inline void
c55b5440 28930__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28931vst2_s64 (int64_t * __a, int64x1x2_t __val)
43e9d192
IB
28932{
28933 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28934 int64x2x2_t __temp;
28935 __temp.val[0] = vcombine_s64 (__val.val[0], vcreate_s64 (__AARCH64_INT64_C (0)));
28936 __temp.val[1] = vcombine_s64 (__val.val[1], vcreate_s64 (__AARCH64_INT64_C (0)));
28937 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[0], 0);
28938 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[1], 1);
43e9d192
IB
28939 __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o);
28940}
28941
a063e204 28942__extension__ extern __inline void
c55b5440 28943__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28944vst2_u64 (uint64_t * __a, uint64x1x2_t __val)
43e9d192
IB
28945{
28946 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28947 uint64x2x2_t __temp;
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 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[0], 0);
28951 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[1], 1);
43e9d192
IB
28952 __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o);
28953}
28954
a063e204 28955__extension__ extern __inline void
c55b5440 28956__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28957vst2_f64 (float64_t * __a, float64x1x2_t __val)
43e9d192
IB
28958{
28959 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28960 float64x2x2_t __temp;
28961 __temp.val[0] = vcombine_f64 (__val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0)));
28962 __temp.val[1] = vcombine_f64 (__val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0)));
28963 __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __temp.val[0], 0);
28964 __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __temp.val[1], 1);
43e9d192
IB
28965 __builtin_aarch64_st2df ((__builtin_aarch64_simd_df *) __a, __o);
28966}
28967
a063e204 28968__extension__ extern __inline void
c55b5440 28969__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28970vst2_s8 (int8_t * __a, int8x8x2_t __val)
43e9d192
IB
28971{
28972 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28973 int8x16x2_t __temp;
28974 __temp.val[0] = vcombine_s8 (__val.val[0], vcreate_s8 (__AARCH64_INT64_C (0)));
28975 __temp.val[1] = vcombine_s8 (__val.val[1], vcreate_s8 (__AARCH64_INT64_C (0)));
28976 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0);
28977 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1);
43e9d192
IB
28978 __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
28979}
28980
a063e204
TC
28981__extension__ extern __inline void
28982__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28983vst2_p8 (poly8_t * __a, poly8x8x2_t __val)
43e9d192
IB
28984{
28985 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28986 poly8x16x2_t __temp;
28987 __temp.val[0] = vcombine_p8 (__val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0)));
28988 __temp.val[1] = vcombine_p8 (__val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0)));
28989 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0);
28990 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1);
43e9d192
IB
28991 __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
28992}
28993
a063e204
TC
28994__extension__ extern __inline void
28995__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 28996vst2_s16 (int16_t * __a, int16x4x2_t __val)
43e9d192
IB
28997{
28998 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
28999 int16x8x2_t __temp;
29000 __temp.val[0] = vcombine_s16 (__val.val[0], vcreate_s16 (__AARCH64_INT64_C (0)));
29001 __temp.val[1] = vcombine_s16 (__val.val[1], vcreate_s16 (__AARCH64_INT64_C (0)));
29002 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0);
29003 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1);
43e9d192
IB
29004 __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
29005}
29006
a063e204
TC
29007__extension__ extern __inline void
29008__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29009vst2_p16 (poly16_t * __a, poly16x4x2_t __val)
43e9d192
IB
29010{
29011 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29012 poly16x8x2_t __temp;
29013 __temp.val[0] = vcombine_p16 (__val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0)));
29014 __temp.val[1] = vcombine_p16 (__val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0)));
29015 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0);
29016 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1);
43e9d192
IB
29017 __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
29018}
29019
a063e204
TC
29020__extension__ extern __inline void
29021__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29022vst2_s32 (int32_t * __a, int32x2x2_t __val)
43e9d192
IB
29023{
29024 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29025 int32x4x2_t __temp;
29026 __temp.val[0] = vcombine_s32 (__val.val[0], vcreate_s32 (__AARCH64_INT64_C (0)));
29027 __temp.val[1] = vcombine_s32 (__val.val[1], vcreate_s32 (__AARCH64_INT64_C (0)));
29028 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[0], 0);
29029 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[1], 1);
43e9d192
IB
29030 __builtin_aarch64_st2v2si ((__builtin_aarch64_simd_si *) __a, __o);
29031}
29032
a063e204
TC
29033__extension__ extern __inline void
29034__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29035vst2_u8 (uint8_t * __a, uint8x8x2_t __val)
43e9d192
IB
29036{
29037 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29038 uint8x16x2_t __temp;
29039 __temp.val[0] = vcombine_u8 (__val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0)));
29040 __temp.val[1] = vcombine_u8 (__val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0)));
29041 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0);
29042 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1);
43e9d192
IB
29043 __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
29044}
29045
a063e204
TC
29046__extension__ extern __inline void
29047__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29048vst2_u16 (uint16_t * __a, uint16x4x2_t __val)
43e9d192
IB
29049{
29050 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29051 uint16x8x2_t __temp;
29052 __temp.val[0] = vcombine_u16 (__val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0)));
29053 __temp.val[1] = vcombine_u16 (__val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0)));
29054 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0);
29055 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1);
43e9d192
IB
29056 __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
29057}
29058
a063e204
TC
29059__extension__ extern __inline void
29060__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29061vst2_u32 (uint32_t * __a, uint32x2x2_t __val)
43e9d192
IB
29062{
29063 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29064 uint32x4x2_t __temp;
29065 __temp.val[0] = vcombine_u32 (__val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0)));
29066 __temp.val[1] = vcombine_u32 (__val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0)));
29067 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[0], 0);
29068 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[1], 1);
43e9d192
IB
29069 __builtin_aarch64_st2v2si ((__builtin_aarch64_simd_si *) __a, __o);
29070}
29071
a063e204
TC
29072__extension__ extern __inline void
29073__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29074vst2_f16 (float16_t * __a, float16x4x2_t __val)
7c369485
AL
29075{
29076 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29077 float16x8x2_t __temp;
29078 __temp.val[0] = vcombine_f16 (__val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0)));
29079 __temp.val[1] = vcombine_f16 (__val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0)));
29080 __o = __builtin_aarch64_set_qregoiv8hf (__o, __temp.val[0], 0);
29081 __o = __builtin_aarch64_set_qregoiv8hf (__o, __temp.val[1], 1);
7c369485
AL
29082 __builtin_aarch64_st2v4hf (__a, __o);
29083}
29084
a063e204
TC
29085__extension__ extern __inline void
29086__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29087vst2_f32 (float32_t * __a, float32x2x2_t __val)
43e9d192
IB
29088{
29089 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29090 float32x4x2_t __temp;
29091 __temp.val[0] = vcombine_f32 (__val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0)));
29092 __temp.val[1] = vcombine_f32 (__val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0)));
29093 __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __temp.val[0], 0);
29094 __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __temp.val[1], 1);
43e9d192
IB
29095 __builtin_aarch64_st2v2sf ((__builtin_aarch64_simd_sf *) __a, __o);
29096}
29097
159b8724
TC
29098__extension__ extern __inline void
29099__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29100vst2_p64 (poly64_t * __a, poly64x1x2_t __val)
159b8724
TC
29101{
29102 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29103 poly64x2x2_t __temp;
29104 __temp.val[0] = vcombine_p64 (__val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0)));
29105 __temp.val[1] = vcombine_p64 (__val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0)));
159b8724 29106 __o = __builtin_aarch64_set_qregoiv2di_ssps (__o,
9a3afc35 29107 (poly64x2_t) __temp.val[0], 0);
159b8724 29108 __o = __builtin_aarch64_set_qregoiv2di_ssps (__o,
9a3afc35 29109 (poly64x2_t) __temp.val[1], 1);
159b8724
TC
29110 __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o);
29111}
29112
a063e204
TC
29113__extension__ extern __inline void
29114__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29115vst2q_s8 (int8_t * __a, int8x16x2_t __val)
43e9d192
IB
29116{
29117 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29118 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[0], 0);
29119 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[1], 1);
43e9d192
IB
29120 __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
29121}
29122
a063e204
TC
29123__extension__ extern __inline void
29124__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29125vst2q_p8 (poly8_t * __a, poly8x16x2_t __val)
43e9d192
IB
29126{
29127 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29128 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[0], 0);
29129 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[1], 1);
43e9d192
IB
29130 __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
29131}
29132
a063e204
TC
29133__extension__ extern __inline void
29134__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29135vst2q_s16 (int16_t * __a, int16x8x2_t __val)
43e9d192
IB
29136{
29137 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29138 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[0], 0);
29139 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[1], 1);
43e9d192
IB
29140 __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
29141}
29142
a063e204
TC
29143__extension__ extern __inline void
29144__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29145vst2q_p16 (poly16_t * __a, poly16x8x2_t __val)
43e9d192
IB
29146{
29147 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29148 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[0], 0);
29149 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[1], 1);
43e9d192
IB
29150 __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
29151}
29152
a063e204
TC
29153__extension__ extern __inline void
29154__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29155vst2q_s32 (int32_t * __a, int32x4x2_t __val)
43e9d192
IB
29156{
29157 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29158 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[0], 0);
29159 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[1], 1);
43e9d192
IB
29160 __builtin_aarch64_st2v4si ((__builtin_aarch64_simd_si *) __a, __o);
29161}
29162
a063e204
TC
29163__extension__ extern __inline void
29164__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29165vst2q_s64 (int64_t * __a, int64x2x2_t __val)
43e9d192
IB
29166{
29167 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29168 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[0], 0);
29169 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[1], 1);
43e9d192
IB
29170 __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o);
29171}
29172
a063e204
TC
29173__extension__ extern __inline void
29174__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29175vst2q_u8 (uint8_t * __a, uint8x16x2_t __val)
43e9d192
IB
29176{
29177 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29178 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[0], 0);
29179 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[1], 1);
43e9d192
IB
29180 __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
29181}
29182
a063e204
TC
29183__extension__ extern __inline void
29184__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29185vst2q_u16 (uint16_t * __a, uint16x8x2_t __val)
43e9d192
IB
29186{
29187 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29188 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[0], 0);
29189 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[1], 1);
43e9d192
IB
29190 __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
29191}
29192
a063e204
TC
29193__extension__ extern __inline void
29194__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29195vst2q_u32 (uint32_t * __a, uint32x4x2_t __val)
43e9d192
IB
29196{
29197 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29198 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[0], 0);
29199 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[1], 1);
43e9d192
IB
29200 __builtin_aarch64_st2v4si ((__builtin_aarch64_simd_si *) __a, __o);
29201}
29202
a063e204
TC
29203__extension__ extern __inline void
29204__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29205vst2q_u64 (uint64_t * __a, uint64x2x2_t __val)
43e9d192
IB
29206{
29207 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29208 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[0], 0);
29209 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[1], 1);
43e9d192
IB
29210 __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o);
29211}
29212
a063e204
TC
29213__extension__ extern __inline void
29214__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29215vst2q_f16 (float16_t * __a, float16x8x2_t __val)
7c369485
AL
29216{
29217 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29218 __o = __builtin_aarch64_set_qregoiv8hf (__o, __val.val[0], 0);
29219 __o = __builtin_aarch64_set_qregoiv8hf (__o, __val.val[1], 1);
7c369485
AL
29220 __builtin_aarch64_st2v8hf (__a, __o);
29221}
29222
a063e204
TC
29223__extension__ extern __inline void
29224__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29225vst2q_f32 (float32_t * __a, float32x4x2_t __val)
43e9d192
IB
29226{
29227 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29228 __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __val.val[0], 0);
29229 __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __val.val[1], 1);
43e9d192
IB
29230 __builtin_aarch64_st2v4sf ((__builtin_aarch64_simd_sf *) __a, __o);
29231}
29232
a063e204
TC
29233__extension__ extern __inline void
29234__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29235vst2q_f64 (float64_t * __a, float64x2x2_t __val)
43e9d192
IB
29236{
29237 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
29238 __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __val.val[0], 0);
29239 __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __val.val[1], 1);
43e9d192
IB
29240 __builtin_aarch64_st2v2df ((__builtin_aarch64_simd_df *) __a, __o);
29241}
29242
159b8724
TC
29243__extension__ extern __inline void
29244__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29245vst2q_p64 (poly64_t * __a, poly64x2x2_t __val)
159b8724
TC
29246{
29247 __builtin_aarch64_simd_oi __o;
29248 __o = __builtin_aarch64_set_qregoiv2di_ssps (__o,
9a3afc35 29249 (poly64x2_t) __val.val[0], 0);
159b8724 29250 __o = __builtin_aarch64_set_qregoiv2di_ssps (__o,
9a3afc35 29251 (poly64x2_t) __val.val[1], 1);
159b8724
TC
29252 __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o);
29253}
29254
a063e204 29255__extension__ extern __inline void
c55b5440 29256__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29257vst3_s64 (int64_t * __a, int64x1x3_t __val)
43e9d192
IB
29258{
29259 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29260 int64x2x3_t __temp;
29261 __temp.val[0] = vcombine_s64 (__val.val[0], vcreate_s64 (__AARCH64_INT64_C (0)));
29262 __temp.val[1] = vcombine_s64 (__val.val[1], vcreate_s64 (__AARCH64_INT64_C (0)));
29263 __temp.val[2] = vcombine_s64 (__val.val[2], vcreate_s64 (__AARCH64_INT64_C (0)));
29264 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[0], 0);
29265 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[1], 1);
29266 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[2], 2);
43e9d192
IB
29267 __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o);
29268}
29269
a063e204 29270__extension__ extern __inline void
c55b5440 29271__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29272vst3_u64 (uint64_t * __a, uint64x1x3_t __val)
43e9d192
IB
29273{
29274 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29275 uint64x2x3_t __temp;
29276 __temp.val[0] = vcombine_u64 (__val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0)));
29277 __temp.val[1] = vcombine_u64 (__val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0)));
29278 __temp.val[2] = vcombine_u64 (__val.val[2], vcreate_u64 (__AARCH64_UINT64_C (0)));
29279 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[0], 0);
29280 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[1], 1);
29281 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[2], 2);
43e9d192
IB
29282 __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o);
29283}
29284
a063e204 29285__extension__ extern __inline void
c55b5440 29286__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29287vst3_f64 (float64_t * __a, float64x1x3_t __val)
43e9d192
IB
29288{
29289 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29290 float64x2x3_t __temp;
29291 __temp.val[0] = vcombine_f64 (__val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0)));
29292 __temp.val[1] = vcombine_f64 (__val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0)));
29293 __temp.val[2] = vcombine_f64 (__val.val[2], vcreate_f64 (__AARCH64_UINT64_C (0)));
29294 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[0], 0);
29295 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[1], 1);
29296 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[2], 2);
43e9d192
IB
29297 __builtin_aarch64_st3df ((__builtin_aarch64_simd_df *) __a, __o);
29298}
29299
a063e204 29300__extension__ extern __inline void
c55b5440 29301__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29302vst3_s8 (int8_t * __a, int8x8x3_t __val)
43e9d192
IB
29303{
29304 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29305 int8x16x3_t __temp;
29306 __temp.val[0] = vcombine_s8 (__val.val[0], vcreate_s8 (__AARCH64_INT64_C (0)));
29307 __temp.val[1] = vcombine_s8 (__val.val[1], vcreate_s8 (__AARCH64_INT64_C (0)));
29308 __temp.val[2] = vcombine_s8 (__val.val[2], vcreate_s8 (__AARCH64_INT64_C (0)));
29309 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0);
29310 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1);
29311 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2);
43e9d192
IB
29312 __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
29313}
29314
a063e204
TC
29315__extension__ extern __inline void
29316__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29317vst3_p8 (poly8_t * __a, poly8x8x3_t __val)
43e9d192
IB
29318{
29319 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29320 poly8x16x3_t __temp;
29321 __temp.val[0] = vcombine_p8 (__val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0)));
29322 __temp.val[1] = vcombine_p8 (__val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0)));
29323 __temp.val[2] = vcombine_p8 (__val.val[2], vcreate_p8 (__AARCH64_UINT64_C (0)));
29324 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0);
29325 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1);
29326 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2);
43e9d192
IB
29327 __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
29328}
29329
a063e204
TC
29330__extension__ extern __inline void
29331__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29332vst3_s16 (int16_t * __a, int16x4x3_t __val)
43e9d192
IB
29333{
29334 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29335 int16x8x3_t __temp;
29336 __temp.val[0] = vcombine_s16 (__val.val[0], vcreate_s16 (__AARCH64_INT64_C (0)));
29337 __temp.val[1] = vcombine_s16 (__val.val[1], vcreate_s16 (__AARCH64_INT64_C (0)));
29338 __temp.val[2] = vcombine_s16 (__val.val[2], vcreate_s16 (__AARCH64_INT64_C (0)));
29339 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0);
29340 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1);
29341 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2);
43e9d192
IB
29342 __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
29343}
29344
a063e204
TC
29345__extension__ extern __inline void
29346__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29347vst3_p16 (poly16_t * __a, poly16x4x3_t __val)
43e9d192
IB
29348{
29349 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29350 poly16x8x3_t __temp;
29351 __temp.val[0] = vcombine_p16 (__val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0)));
29352 __temp.val[1] = vcombine_p16 (__val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0)));
29353 __temp.val[2] = vcombine_p16 (__val.val[2], vcreate_p16 (__AARCH64_UINT64_C (0)));
29354 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0);
29355 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1);
29356 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2);
43e9d192
IB
29357 __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
29358}
29359
a063e204
TC
29360__extension__ extern __inline void
29361__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29362vst3_s32 (int32_t * __a, int32x2x3_t __val)
43e9d192
IB
29363{
29364 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29365 int32x4x3_t __temp;
29366 __temp.val[0] = vcombine_s32 (__val.val[0], vcreate_s32 (__AARCH64_INT64_C (0)));
29367 __temp.val[1] = vcombine_s32 (__val.val[1], vcreate_s32 (__AARCH64_INT64_C (0)));
29368 __temp.val[2] = vcombine_s32 (__val.val[2], vcreate_s32 (__AARCH64_INT64_C (0)));
29369 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[0], 0);
29370 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[1], 1);
29371 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[2], 2);
43e9d192
IB
29372 __builtin_aarch64_st3v2si ((__builtin_aarch64_simd_si *) __a, __o);
29373}
29374
a063e204
TC
29375__extension__ extern __inline void
29376__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29377vst3_u8 (uint8_t * __a, uint8x8x3_t __val)
43e9d192
IB
29378{
29379 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29380 uint8x16x3_t __temp;
29381 __temp.val[0] = vcombine_u8 (__val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0)));
29382 __temp.val[1] = vcombine_u8 (__val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0)));
29383 __temp.val[2] = vcombine_u8 (__val.val[2], vcreate_u8 (__AARCH64_UINT64_C (0)));
29384 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0);
29385 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1);
29386 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2);
43e9d192
IB
29387 __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
29388}
29389
a063e204
TC
29390__extension__ extern __inline void
29391__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29392vst3_u16 (uint16_t * __a, uint16x4x3_t __val)
43e9d192
IB
29393{
29394 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29395 uint16x8x3_t __temp;
29396 __temp.val[0] = vcombine_u16 (__val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0)));
29397 __temp.val[1] = vcombine_u16 (__val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0)));
29398 __temp.val[2] = vcombine_u16 (__val.val[2], vcreate_u16 (__AARCH64_UINT64_C (0)));
29399 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0);
29400 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1);
29401 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2);
43e9d192
IB
29402 __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
29403}
29404
a063e204
TC
29405__extension__ extern __inline void
29406__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29407vst3_u32 (uint32_t * __a, uint32x2x3_t __val)
43e9d192
IB
29408{
29409 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29410 uint32x4x3_t __temp;
29411 __temp.val[0] = vcombine_u32 (__val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0)));
29412 __temp.val[1] = vcombine_u32 (__val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0)));
29413 __temp.val[2] = vcombine_u32 (__val.val[2], vcreate_u32 (__AARCH64_UINT64_C (0)));
29414 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[0], 0);
29415 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[1], 1);
29416 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[2], 2);
43e9d192
IB
29417 __builtin_aarch64_st3v2si ((__builtin_aarch64_simd_si *) __a, __o);
29418}
29419
a063e204
TC
29420__extension__ extern __inline void
29421__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29422vst3_f16 (float16_t * __a, float16x4x3_t __val)
7c369485
AL
29423{
29424 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29425 float16x8x3_t __temp;
29426 __temp.val[0] = vcombine_f16 (__val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0)));
29427 __temp.val[1] = vcombine_f16 (__val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0)));
29428 __temp.val[2] = vcombine_f16 (__val.val[2], vcreate_f16 (__AARCH64_UINT64_C (0)));
29429 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[0], 0);
29430 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[1], 1);
29431 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[2], 2);
7c369485
AL
29432 __builtin_aarch64_st3v4hf ((__builtin_aarch64_simd_hf *) __a, __o);
29433}
29434
a063e204
TC
29435__extension__ extern __inline void
29436__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29437vst3_f32 (float32_t * __a, float32x2x3_t __val)
43e9d192
IB
29438{
29439 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29440 float32x4x3_t __temp;
29441 __temp.val[0] = vcombine_f32 (__val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0)));
29442 __temp.val[1] = vcombine_f32 (__val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0)));
29443 __temp.val[2] = vcombine_f32 (__val.val[2], vcreate_f32 (__AARCH64_UINT64_C (0)));
29444 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[0], 0);
29445 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[1], 1);
29446 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[2], 2);
43e9d192
IB
29447 __builtin_aarch64_st3v2sf ((__builtin_aarch64_simd_sf *) __a, __o);
29448}
29449
159b8724
TC
29450__extension__ extern __inline void
29451__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29452vst3_p64 (poly64_t * __a, poly64x1x3_t __val)
159b8724
TC
29453{
29454 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29455 poly64x2x3_t __temp;
29456 __temp.val[0] = vcombine_p64 (__val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0)));
29457 __temp.val[1] = vcombine_p64 (__val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0)));
29458 __temp.val[2] = vcombine_p64 (__val.val[2], vcreate_p64 (__AARCH64_UINT64_C (0)));
159b8724 29459 __o = __builtin_aarch64_set_qregciv2di_ssps (__o,
9a3afc35 29460 (poly64x2_t) __temp.val[0], 0);
159b8724 29461 __o = __builtin_aarch64_set_qregciv2di_ssps (__o,
9a3afc35 29462 (poly64x2_t) __temp.val[1], 1);
159b8724 29463 __o = __builtin_aarch64_set_qregciv2di_ssps (__o,
9a3afc35 29464 (poly64x2_t) __temp.val[2], 2);
159b8724
TC
29465 __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o);
29466}
29467
a063e204
TC
29468__extension__ extern __inline void
29469__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29470vst3q_s8 (int8_t * __a, int8x16x3_t __val)
43e9d192
IB
29471{
29472 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29473 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[0], 0);
29474 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[1], 1);
29475 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[2], 2);
43e9d192
IB
29476 __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
29477}
29478
a063e204
TC
29479__extension__ extern __inline void
29480__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29481vst3q_p8 (poly8_t * __a, poly8x16x3_t __val)
43e9d192
IB
29482{
29483 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29484 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[0], 0);
29485 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[1], 1);
29486 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[2], 2);
43e9d192
IB
29487 __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
29488}
29489
a063e204
TC
29490__extension__ extern __inline void
29491__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29492vst3q_s16 (int16_t * __a, int16x8x3_t __val)
43e9d192
IB
29493{
29494 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29495 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[0], 0);
29496 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[1], 1);
29497 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[2], 2);
43e9d192
IB
29498 __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
29499}
29500
a063e204
TC
29501__extension__ extern __inline void
29502__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29503vst3q_p16 (poly16_t * __a, poly16x8x3_t __val)
43e9d192
IB
29504{
29505 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29506 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[0], 0);
29507 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[1], 1);
29508 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[2], 2);
43e9d192
IB
29509 __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
29510}
29511
a063e204
TC
29512__extension__ extern __inline void
29513__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29514vst3q_s32 (int32_t * __a, int32x4x3_t __val)
43e9d192
IB
29515{
29516 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29517 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[0], 0);
29518 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[1], 1);
29519 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[2], 2);
43e9d192
IB
29520 __builtin_aarch64_st3v4si ((__builtin_aarch64_simd_si *) __a, __o);
29521}
29522
a063e204
TC
29523__extension__ extern __inline void
29524__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29525vst3q_s64 (int64_t * __a, int64x2x3_t __val)
43e9d192
IB
29526{
29527 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29528 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[0], 0);
29529 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[1], 1);
29530 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[2], 2);
43e9d192
IB
29531 __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o);
29532}
29533
a063e204
TC
29534__extension__ extern __inline void
29535__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29536vst3q_u8 (uint8_t * __a, uint8x16x3_t __val)
43e9d192
IB
29537{
29538 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29539 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[0], 0);
29540 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[1], 1);
29541 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[2], 2);
43e9d192
IB
29542 __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
29543}
29544
a063e204
TC
29545__extension__ extern __inline void
29546__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29547vst3q_u16 (uint16_t * __a, uint16x8x3_t __val)
43e9d192
IB
29548{
29549 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29550 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[0], 0);
29551 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[1], 1);
29552 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[2], 2);
43e9d192
IB
29553 __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
29554}
29555
a063e204
TC
29556__extension__ extern __inline void
29557__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29558vst3q_u32 (uint32_t * __a, uint32x4x3_t __val)
43e9d192
IB
29559{
29560 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29561 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[0], 0);
29562 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[1], 1);
29563 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[2], 2);
43e9d192
IB
29564 __builtin_aarch64_st3v4si ((__builtin_aarch64_simd_si *) __a, __o);
29565}
29566
a063e204
TC
29567__extension__ extern __inline void
29568__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29569vst3q_u64 (uint64_t * __a, uint64x2x3_t __val)
43e9d192
IB
29570{
29571 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29572 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[0], 0);
29573 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[1], 1);
29574 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[2], 2);
43e9d192
IB
29575 __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o);
29576}
29577
a063e204
TC
29578__extension__ extern __inline void
29579__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29580vst3q_f16 (float16_t * __a, float16x8x3_t __val)
7c369485
AL
29581{
29582 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29583 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __val.val[0], 0);
29584 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __val.val[1], 1);
29585 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __val.val[2], 2);
7c369485
AL
29586 __builtin_aarch64_st3v8hf ((__builtin_aarch64_simd_hf *) __a, __o);
29587}
29588
a063e204
TC
29589__extension__ extern __inline void
29590__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29591vst3q_f32 (float32_t * __a, float32x4x3_t __val)
43e9d192
IB
29592{
29593 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29594 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __val.val[0], 0);
29595 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __val.val[1], 1);
29596 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __val.val[2], 2);
43e9d192
IB
29597 __builtin_aarch64_st3v4sf ((__builtin_aarch64_simd_sf *) __a, __o);
29598}
29599
a063e204
TC
29600__extension__ extern __inline void
29601__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29602vst3q_f64 (float64_t * __a, float64x2x3_t __val)
43e9d192
IB
29603{
29604 __builtin_aarch64_simd_ci __o;
9a3afc35
KT
29605 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __val.val[0], 0);
29606 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __val.val[1], 1);
29607 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __val.val[2], 2);
43e9d192
IB
29608 __builtin_aarch64_st3v2df ((__builtin_aarch64_simd_df *) __a, __o);
29609}
29610
159b8724
TC
29611__extension__ extern __inline void
29612__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29613vst3q_p64 (poly64_t * __a, poly64x2x3_t __val)
159b8724
TC
29614{
29615 __builtin_aarch64_simd_ci __o;
29616 __o = __builtin_aarch64_set_qregciv2di_ssps (__o,
9a3afc35 29617 (poly64x2_t) __val.val[0], 0);
159b8724 29618 __o = __builtin_aarch64_set_qregciv2di_ssps (__o,
9a3afc35 29619 (poly64x2_t) __val.val[1], 1);
159b8724 29620 __o = __builtin_aarch64_set_qregciv2di_ssps (__o,
9a3afc35 29621 (poly64x2_t) __val.val[2], 2);
159b8724
TC
29622 __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o);
29623}
29624
a063e204 29625__extension__ extern __inline void
c55b5440 29626__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29627vst4_s64 (int64_t * __a, int64x1x4_t __val)
43e9d192
IB
29628{
29629 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29630 int64x2x4_t __temp;
29631 __temp.val[0] = vcombine_s64 (__val.val[0], vcreate_s64 (__AARCH64_INT64_C (0)));
29632 __temp.val[1] = vcombine_s64 (__val.val[1], vcreate_s64 (__AARCH64_INT64_C (0)));
29633 __temp.val[2] = vcombine_s64 (__val.val[2], vcreate_s64 (__AARCH64_INT64_C (0)));
29634 __temp.val[3] = vcombine_s64 (__val.val[3], vcreate_s64 (__AARCH64_INT64_C (0)));
29635 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[0], 0);
29636 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[1], 1);
29637 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[2], 2);
29638 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[3], 3);
43e9d192
IB
29639 __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o);
29640}
29641
a063e204 29642__extension__ extern __inline void
c55b5440 29643__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29644vst4_u64 (uint64_t * __a, uint64x1x4_t __val)
43e9d192
IB
29645{
29646 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29647 uint64x2x4_t __temp;
29648 __temp.val[0] = vcombine_u64 (__val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0)));
29649 __temp.val[1] = vcombine_u64 (__val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0)));
29650 __temp.val[2] = vcombine_u64 (__val.val[2], vcreate_u64 (__AARCH64_UINT64_C (0)));
29651 __temp.val[3] = vcombine_u64 (__val.val[3], vcreate_u64 (__AARCH64_UINT64_C (0)));
29652 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[0], 0);
29653 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[1], 1);
29654 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[2], 2);
29655 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[3], 3);
43e9d192
IB
29656 __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o);
29657}
29658
a063e204 29659__extension__ extern __inline void
c55b5440 29660__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29661vst4_f64 (float64_t * __a, float64x1x4_t __val)
43e9d192
IB
29662{
29663 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29664 float64x2x4_t __temp;
29665 __temp.val[0] = vcombine_f64 (__val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0)));
29666 __temp.val[1] = vcombine_f64 (__val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0)));
29667 __temp.val[2] = vcombine_f64 (__val.val[2], vcreate_f64 (__AARCH64_UINT64_C (0)));
29668 __temp.val[3] = vcombine_f64 (__val.val[3], vcreate_f64 (__AARCH64_UINT64_C (0)));
29669 __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[0], 0);
29670 __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[1], 1);
29671 __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[2], 2);
29672 __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[3], 3);
43e9d192
IB
29673 __builtin_aarch64_st4df ((__builtin_aarch64_simd_df *) __a, __o);
29674}
29675
a063e204 29676__extension__ extern __inline void
c55b5440 29677__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29678vst4_s8 (int8_t * __a, int8x8x4_t __val)
43e9d192
IB
29679{
29680 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29681 int8x16x4_t __temp;
29682 __temp.val[0] = vcombine_s8 (__val.val[0], vcreate_s8 (__AARCH64_INT64_C (0)));
29683 __temp.val[1] = vcombine_s8 (__val.val[1], vcreate_s8 (__AARCH64_INT64_C (0)));
29684 __temp.val[2] = vcombine_s8 (__val.val[2], vcreate_s8 (__AARCH64_INT64_C (0)));
29685 __temp.val[3] = vcombine_s8 (__val.val[3], vcreate_s8 (__AARCH64_INT64_C (0)));
29686 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[0], 0);
29687 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[1], 1);
29688 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[2], 2);
29689 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[3], 3);
43e9d192
IB
29690 __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
29691}
29692
a063e204
TC
29693__extension__ extern __inline void
29694__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29695vst4_p8 (poly8_t * __a, poly8x8x4_t __val)
43e9d192
IB
29696{
29697 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29698 poly8x16x4_t __temp;
29699 __temp.val[0] = vcombine_p8 (__val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0)));
29700 __temp.val[1] = vcombine_p8 (__val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0)));
29701 __temp.val[2] = vcombine_p8 (__val.val[2], vcreate_p8 (__AARCH64_UINT64_C (0)));
29702 __temp.val[3] = vcombine_p8 (__val.val[3], vcreate_p8 (__AARCH64_UINT64_C (0)));
29703 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[0], 0);
29704 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[1], 1);
29705 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[2], 2);
29706 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[3], 3);
43e9d192
IB
29707 __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
29708}
29709
a063e204
TC
29710__extension__ extern __inline void
29711__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29712vst4_s16 (int16_t * __a, int16x4x4_t __val)
43e9d192
IB
29713{
29714 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29715 int16x8x4_t __temp;
29716 __temp.val[0] = vcombine_s16 (__val.val[0], vcreate_s16 (__AARCH64_INT64_C (0)));
29717 __temp.val[1] = vcombine_s16 (__val.val[1], vcreate_s16 (__AARCH64_INT64_C (0)));
29718 __temp.val[2] = vcombine_s16 (__val.val[2], vcreate_s16 (__AARCH64_INT64_C (0)));
29719 __temp.val[3] = vcombine_s16 (__val.val[3], vcreate_s16 (__AARCH64_INT64_C (0)));
29720 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[0], 0);
29721 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[1], 1);
29722 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[2], 2);
29723 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[3], 3);
43e9d192
IB
29724 __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
29725}
29726
a063e204
TC
29727__extension__ extern __inline void
29728__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29729vst4_p16 (poly16_t * __a, poly16x4x4_t __val)
43e9d192
IB
29730{
29731 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29732 poly16x8x4_t __temp;
29733 __temp.val[0] = vcombine_p16 (__val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0)));
29734 __temp.val[1] = vcombine_p16 (__val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0)));
29735 __temp.val[2] = vcombine_p16 (__val.val[2], vcreate_p16 (__AARCH64_UINT64_C (0)));
29736 __temp.val[3] = vcombine_p16 (__val.val[3], vcreate_p16 (__AARCH64_UINT64_C (0)));
29737 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[0], 0);
29738 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[1], 1);
29739 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[2], 2);
29740 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[3], 3);
43e9d192
IB
29741 __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
29742}
29743
a063e204
TC
29744__extension__ extern __inline void
29745__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29746vst4_s32 (int32_t * __a, int32x2x4_t __val)
43e9d192
IB
29747{
29748 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29749 int32x4x4_t __temp;
29750 __temp.val[0] = vcombine_s32 (__val.val[0], vcreate_s32 (__AARCH64_INT64_C (0)));
29751 __temp.val[1] = vcombine_s32 (__val.val[1], vcreate_s32 (__AARCH64_INT64_C (0)));
29752 __temp.val[2] = vcombine_s32 (__val.val[2], vcreate_s32 (__AARCH64_INT64_C (0)));
29753 __temp.val[3] = vcombine_s32 (__val.val[3], vcreate_s32 (__AARCH64_INT64_C (0)));
29754 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[0], 0);
29755 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[1], 1);
29756 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[2], 2);
29757 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[3], 3);
43e9d192
IB
29758 __builtin_aarch64_st4v2si ((__builtin_aarch64_simd_si *) __a, __o);
29759}
29760
a063e204
TC
29761__extension__ extern __inline void
29762__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29763vst4_u8 (uint8_t * __a, uint8x8x4_t __val)
43e9d192
IB
29764{
29765 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29766 uint8x16x4_t __temp;
29767 __temp.val[0] = vcombine_u8 (__val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0)));
29768 __temp.val[1] = vcombine_u8 (__val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0)));
29769 __temp.val[2] = vcombine_u8 (__val.val[2], vcreate_u8 (__AARCH64_UINT64_C (0)));
29770 __temp.val[3] = vcombine_u8 (__val.val[3], vcreate_u8 (__AARCH64_UINT64_C (0)));
29771 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[0], 0);
29772 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[1], 1);
29773 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[2], 2);
29774 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[3], 3);
43e9d192
IB
29775 __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
29776}
29777
a063e204
TC
29778__extension__ extern __inline void
29779__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29780vst4_u16 (uint16_t * __a, uint16x4x4_t __val)
43e9d192
IB
29781{
29782 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29783 uint16x8x4_t __temp;
29784 __temp.val[0] = vcombine_u16 (__val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0)));
29785 __temp.val[1] = vcombine_u16 (__val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0)));
29786 __temp.val[2] = vcombine_u16 (__val.val[2], vcreate_u16 (__AARCH64_UINT64_C (0)));
29787 __temp.val[3] = vcombine_u16 (__val.val[3], vcreate_u16 (__AARCH64_UINT64_C (0)));
29788 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[0], 0);
29789 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[1], 1);
29790 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[2], 2);
29791 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[3], 3);
43e9d192
IB
29792 __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o);
29793}
29794
a063e204
TC
29795__extension__ extern __inline void
29796__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29797vst4_u32 (uint32_t * __a, uint32x2x4_t __val)
43e9d192
IB
29798{
29799 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29800 uint32x4x4_t __temp;
29801 __temp.val[0] = vcombine_u32 (__val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0)));
29802 __temp.val[1] = vcombine_u32 (__val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0)));
29803 __temp.val[2] = vcombine_u32 (__val.val[2], vcreate_u32 (__AARCH64_UINT64_C (0)));
29804 __temp.val[3] = vcombine_u32 (__val.val[3], vcreate_u32 (__AARCH64_UINT64_C (0)));
29805 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[0], 0);
29806 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[1], 1);
29807 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[2], 2);
29808 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[3], 3);
43e9d192
IB
29809 __builtin_aarch64_st4v2si ((__builtin_aarch64_simd_si *) __a, __o);
29810}
29811
a063e204
TC
29812__extension__ extern __inline void
29813__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29814vst4_f16 (float16_t * __a, float16x4x4_t __val)
7c369485
AL
29815{
29816 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29817 float16x8x4_t __temp;
29818 __temp.val[0] = vcombine_f16 (__val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0)));
29819 __temp.val[1] = vcombine_f16 (__val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0)));
29820 __temp.val[2] = vcombine_f16 (__val.val[2], vcreate_f16 (__AARCH64_UINT64_C (0)));
29821 __temp.val[3] = vcombine_f16 (__val.val[3], vcreate_f16 (__AARCH64_UINT64_C (0)));
29822 __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[0], 0);
29823 __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[1], 1);
29824 __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[2], 2);
29825 __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[3], 3);
7c369485
AL
29826 __builtin_aarch64_st4v4hf ((__builtin_aarch64_simd_hf *) __a, __o);
29827}
29828
a063e204
TC
29829__extension__ extern __inline void
29830__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29831vst4_f32 (float32_t * __a, float32x2x4_t __val)
43e9d192
IB
29832{
29833 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29834 float32x4x4_t __temp;
29835 __temp.val[0] = vcombine_f32 (__val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0)));
29836 __temp.val[1] = vcombine_f32 (__val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0)));
29837 __temp.val[2] = vcombine_f32 (__val.val[2], vcreate_f32 (__AARCH64_UINT64_C (0)));
29838 __temp.val[3] = vcombine_f32 (__val.val[3], vcreate_f32 (__AARCH64_UINT64_C (0)));
29839 __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[0], 0);
29840 __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[1], 1);
29841 __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[2], 2);
29842 __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[3], 3);
43e9d192
IB
29843 __builtin_aarch64_st4v2sf ((__builtin_aarch64_simd_sf *) __a, __o);
29844}
29845
159b8724
TC
29846__extension__ extern __inline void
29847__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29848vst4_p64 (poly64_t * __a, poly64x1x4_t __val)
159b8724
TC
29849{
29850 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29851 poly64x2x4_t __temp;
29852 __temp.val[0] = vcombine_p64 (__val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0)));
29853 __temp.val[1] = vcombine_p64 (__val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0)));
29854 __temp.val[2] = vcombine_p64 (__val.val[2], vcreate_p64 (__AARCH64_UINT64_C (0)));
29855 __temp.val[3] = vcombine_p64 (__val.val[3], vcreate_p64 (__AARCH64_UINT64_C (0)));
159b8724 29856 __o = __builtin_aarch64_set_qregxiv2di_ssps (__o,
9a3afc35 29857 (poly64x2_t) __temp.val[0], 0);
159b8724 29858 __o = __builtin_aarch64_set_qregxiv2di_ssps (__o,
9a3afc35 29859 (poly64x2_t) __temp.val[1], 1);
159b8724 29860 __o = __builtin_aarch64_set_qregxiv2di_ssps (__o,
9a3afc35 29861 (poly64x2_t) __temp.val[2], 2);
159b8724 29862 __o = __builtin_aarch64_set_qregxiv2di_ssps (__o,
9a3afc35 29863 (poly64x2_t) __temp.val[3], 3);
159b8724
TC
29864 __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o);
29865}
29866
a063e204
TC
29867__extension__ extern __inline void
29868__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29869vst4q_s8 (int8_t * __a, int8x16x4_t __val)
43e9d192
IB
29870{
29871 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29872 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[0], 0);
29873 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[1], 1);
29874 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[2], 2);
29875 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[3], 3);
43e9d192
IB
29876 __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
29877}
29878
a063e204
TC
29879__extension__ extern __inline void
29880__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29881vst4q_p8 (poly8_t * __a, poly8x16x4_t __val)
43e9d192
IB
29882{
29883 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29884 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[0], 0);
29885 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[1], 1);
29886 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[2], 2);
29887 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[3], 3);
43e9d192
IB
29888 __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
29889}
29890
a063e204
TC
29891__extension__ extern __inline void
29892__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29893vst4q_s16 (int16_t * __a, int16x8x4_t __val)
43e9d192
IB
29894{
29895 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29896 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[0], 0);
29897 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[1], 1);
29898 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[2], 2);
29899 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[3], 3);
43e9d192
IB
29900 __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
29901}
29902
a063e204
TC
29903__extension__ extern __inline void
29904__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29905vst4q_p16 (poly16_t * __a, poly16x8x4_t __val)
43e9d192
IB
29906{
29907 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29908 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[0], 0);
29909 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[1], 1);
29910 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[2], 2);
29911 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[3], 3);
43e9d192
IB
29912 __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
29913}
29914
a063e204
TC
29915__extension__ extern __inline void
29916__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29917vst4q_s32 (int32_t * __a, int32x4x4_t __val)
43e9d192
IB
29918{
29919 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29920 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[0], 0);
29921 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[1], 1);
29922 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[2], 2);
29923 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[3], 3);
43e9d192
IB
29924 __builtin_aarch64_st4v4si ((__builtin_aarch64_simd_si *) __a, __o);
29925}
29926
a063e204
TC
29927__extension__ extern __inline void
29928__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29929vst4q_s64 (int64_t * __a, int64x2x4_t __val)
43e9d192
IB
29930{
29931 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29932 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[0], 0);
29933 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[1], 1);
29934 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[2], 2);
29935 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[3], 3);
43e9d192
IB
29936 __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o);
29937}
29938
a063e204
TC
29939__extension__ extern __inline void
29940__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29941vst4q_u8 (uint8_t * __a, uint8x16x4_t __val)
43e9d192
IB
29942{
29943 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29944 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[0], 0);
29945 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[1], 1);
29946 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[2], 2);
29947 __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[3], 3);
43e9d192
IB
29948 __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o);
29949}
29950
a063e204
TC
29951__extension__ extern __inline void
29952__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29953vst4q_u16 (uint16_t * __a, uint16x8x4_t __val)
43e9d192
IB
29954{
29955 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29956 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[0], 0);
29957 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[1], 1);
29958 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[2], 2);
29959 __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[3], 3);
43e9d192
IB
29960 __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o);
29961}
29962
a063e204
TC
29963__extension__ extern __inline void
29964__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29965vst4q_u32 (uint32_t * __a, uint32x4x4_t __val)
43e9d192
IB
29966{
29967 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29968 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[0], 0);
29969 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[1], 1);
29970 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[2], 2);
29971 __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[3], 3);
43e9d192
IB
29972 __builtin_aarch64_st4v4si ((__builtin_aarch64_simd_si *) __a, __o);
29973}
29974
a063e204
TC
29975__extension__ extern __inline void
29976__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29977vst4q_u64 (uint64_t * __a, uint64x2x4_t __val)
43e9d192
IB
29978{
29979 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29980 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[0], 0);
29981 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[1], 1);
29982 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[2], 2);
29983 __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[3], 3);
43e9d192
IB
29984 __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o);
29985}
29986
a063e204
TC
29987__extension__ extern __inline void
29988__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 29989vst4q_f16 (float16_t * __a, float16x8x4_t __val)
7c369485
AL
29990{
29991 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
29992 __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __val.val[0], 0);
29993 __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __val.val[1], 1);
29994 __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __val.val[2], 2);
29995 __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __val.val[3], 3);
7c369485
AL
29996 __builtin_aarch64_st4v8hf ((__builtin_aarch64_simd_hf *) __a, __o);
29997}
29998
a063e204
TC
29999__extension__ extern __inline void
30000__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30001vst4q_f32 (float32_t * __a, float32x4x4_t __val)
43e9d192
IB
30002{
30003 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
30004 __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __val.val[0], 0);
30005 __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __val.val[1], 1);
30006 __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __val.val[2], 2);
30007 __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __val.val[3], 3);
43e9d192
IB
30008 __builtin_aarch64_st4v4sf ((__builtin_aarch64_simd_sf *) __a, __o);
30009}
30010
a063e204
TC
30011__extension__ extern __inline void
30012__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30013vst4q_f64 (float64_t * __a, float64x2x4_t __val)
43e9d192
IB
30014{
30015 __builtin_aarch64_simd_xi __o;
9a3afc35
KT
30016 __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __val.val[0], 0);
30017 __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __val.val[1], 1);
30018 __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __val.val[2], 2);
30019 __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __val.val[3], 3);
43e9d192
IB
30020 __builtin_aarch64_st4v2df ((__builtin_aarch64_simd_df *) __a, __o);
30021}
30022
159b8724
TC
30023__extension__ extern __inline void
30024__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30025vst4q_p64 (poly64_t * __a, poly64x2x4_t __val)
159b8724
TC
30026{
30027 __builtin_aarch64_simd_xi __o;
30028 __o = __builtin_aarch64_set_qregxiv2di_ssps (__o,
9a3afc35 30029 (poly64x2_t) __val.val[0], 0);
159b8724 30030 __o = __builtin_aarch64_set_qregxiv2di_ssps (__o,
9a3afc35 30031 (poly64x2_t) __val.val[1], 1);
159b8724 30032 __o = __builtin_aarch64_set_qregxiv2di_ssps (__o,
9a3afc35 30033 (poly64x2_t) __val.val[2], 2);
159b8724 30034 __o = __builtin_aarch64_set_qregxiv2di_ssps (__o,
9a3afc35 30035 (poly64x2_t) __val.val[3], 3);
159b8724
TC
30036 __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o);
30037}
30038
d23ea1e8
KT
30039__extension__ extern __inline void
30040__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
30041vstrq_p128 (poly128_t * __ptr, poly128_t __val)
30042{
30043 *__ptr = __val;
30044}
30045
43e9d192
IB
30046/* vsub */
30047
a063e204
TC
30048__extension__ extern __inline int64_t
30049__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 30050vsubd_s64 (int64_t __a, int64_t __b)
43e9d192
IB
30051{
30052 return __a - __b;
30053}
30054
a063e204
TC
30055__extension__ extern __inline uint64_t
30056__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 30057vsubd_u64 (uint64_t __a, uint64_t __b)
43e9d192
IB
30058{
30059 return __a - __b;
30060}
30061
793c28b8
JG
30062/* vtbx1 */
30063
a063e204
TC
30064__extension__ extern __inline int8x8_t
30065__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
793c28b8
JG
30066vtbx1_s8 (int8x8_t __r, int8x8_t __tab, int8x8_t __idx)
30067{
30068 uint8x8_t __mask = vclt_u8 (vreinterpret_u8_s8 (__idx),
30069 vmov_n_u8 (8));
30070 int8x8_t __tbl = vtbl1_s8 (__tab, __idx);
30071
30072 return vbsl_s8 (__mask, __tbl, __r);
30073}
30074
a063e204
TC
30075__extension__ extern __inline uint8x8_t
30076__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
793c28b8
JG
30077vtbx1_u8 (uint8x8_t __r, uint8x8_t __tab, uint8x8_t __idx)
30078{
30079 uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (8));
30080 uint8x8_t __tbl = vtbl1_u8 (__tab, __idx);
30081
30082 return vbsl_u8 (__mask, __tbl, __r);
30083}
30084
a063e204
TC
30085__extension__ extern __inline poly8x8_t
30086__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
793c28b8
JG
30087vtbx1_p8 (poly8x8_t __r, poly8x8_t __tab, uint8x8_t __idx)
30088{
30089 uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (8));
30090 poly8x8_t __tbl = vtbl1_p8 (__tab, __idx);
30091
30092 return vbsl_p8 (__mask, __tbl, __r);
30093}
30094
30095/* vtbx3 */
30096
a063e204
TC
30097__extension__ extern __inline int8x8_t
30098__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
793c28b8
JG
30099vtbx3_s8 (int8x8_t __r, int8x8x3_t __tab, int8x8_t __idx)
30100{
30101 uint8x8_t __mask = vclt_u8 (vreinterpret_u8_s8 (__idx),
30102 vmov_n_u8 (24));
30103 int8x8_t __tbl = vtbl3_s8 (__tab, __idx);
30104
30105 return vbsl_s8 (__mask, __tbl, __r);
30106}
30107
a063e204
TC
30108__extension__ extern __inline uint8x8_t
30109__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
793c28b8
JG
30110vtbx3_u8 (uint8x8_t __r, uint8x8x3_t __tab, uint8x8_t __idx)
30111{
30112 uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (24));
30113 uint8x8_t __tbl = vtbl3_u8 (__tab, __idx);
30114
30115 return vbsl_u8 (__mask, __tbl, __r);
30116}
30117
a063e204
TC
30118__extension__ extern __inline poly8x8_t
30119__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
793c28b8
JG
30120vtbx3_p8 (poly8x8_t __r, poly8x8x3_t __tab, uint8x8_t __idx)
30121{
30122 uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (24));
30123 poly8x8_t __tbl = vtbl3_p8 (__tab, __idx);
30124
30125 return vbsl_p8 (__mask, __tbl, __r);
30126}
30127
9371aecc
CL
30128/* vtbx4 */
30129
a063e204
TC
30130__extension__ extern __inline int8x8_t
30131__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9371aecc
CL
30132vtbx4_s8 (int8x8_t __r, int8x8x4_t __tab, int8x8_t __idx)
30133{
9a3afc35
KT
30134 int8x8_t __result;
30135 int8x16x2_t __temp;
9371aecc 30136 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
30137 __temp.val[0] = vcombine_s8 (__tab.val[0], __tab.val[1]);
30138 __temp.val[1] = vcombine_s8 (__tab.val[2], __tab.val[3]);
9371aecc 30139 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35 30140 (int8x16_t) __temp.val[0], 0);
9371aecc 30141 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35
KT
30142 (int8x16_t) __temp.val[1], 1);
30143 __result = __builtin_aarch64_tbx4v8qi (__r, __o, __idx);
30144 return __result;
9371aecc
CL
30145}
30146
a063e204
TC
30147__extension__ extern __inline uint8x8_t
30148__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9371aecc
CL
30149vtbx4_u8 (uint8x8_t __r, uint8x8x4_t __tab, uint8x8_t __idx)
30150{
9a3afc35
KT
30151 uint8x8_t __result;
30152 uint8x16x2_t __temp;
9371aecc 30153 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
30154 __temp.val[0] = vcombine_u8 (__tab.val[0], __tab.val[1]);
30155 __temp.val[1] = vcombine_u8 (__tab.val[2], __tab.val[3]);
9371aecc 30156 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35 30157 (int8x16_t) __temp.val[0], 0);
9371aecc 30158 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35
KT
30159 (int8x16_t) __temp.val[1], 1);
30160 __result = (uint8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o,
9371aecc 30161 (int8x8_t)__idx);
9a3afc35 30162 return __result;
9371aecc
CL
30163}
30164
a063e204
TC
30165__extension__ extern __inline poly8x8_t
30166__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9371aecc
CL
30167vtbx4_p8 (poly8x8_t __r, poly8x8x4_t __tab, uint8x8_t __idx)
30168{
9a3afc35
KT
30169 poly8x8_t __result;
30170 poly8x16x2_t __temp;
9371aecc 30171 __builtin_aarch64_simd_oi __o;
9a3afc35
KT
30172 __temp.val[0] = vcombine_p8 (__tab.val[0], __tab.val[1]);
30173 __temp.val[1] = vcombine_p8 (__tab.val[2], __tab.val[3]);
9371aecc 30174 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35 30175 (int8x16_t) __temp.val[0], 0);
9371aecc 30176 __o = __builtin_aarch64_set_qregoiv16qi (__o,
9a3afc35
KT
30177 (int8x16_t) __temp.val[1], 1);
30178 __result = (poly8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o,
9371aecc 30179 (int8x8_t)__idx);
9a3afc35 30180 return __result;
9371aecc
CL
30181}
30182
43e9d192
IB
30183/* vtrn */
30184
a063e204
TC
30185__extension__ extern __inline float16x4_t
30186__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
30187vtrn1_f16 (float16x4_t __a, float16x4_t __b)
30188{
30189#ifdef __AARCH64EB__
30190 return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3});
30191#else
30192 return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6});
30193#endif
30194}
30195
a063e204
TC
30196__extension__ extern __inline float32x2_t
30197__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30198vtrn1_f32 (float32x2_t __a, float32x2_t __b)
30199{
30200#ifdef __AARCH64EB__
30201 return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1});
30202#else
30203 return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2});
30204#endif
30205}
30206
a063e204
TC
30207__extension__ extern __inline poly8x8_t
30208__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30209vtrn1_p8 (poly8x8_t __a, poly8x8_t __b)
30210{
30211#ifdef __AARCH64EB__
30212 return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7});
30213#else
30214 return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14});
30215#endif
30216}
30217
a063e204
TC
30218__extension__ extern __inline poly16x4_t
30219__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30220vtrn1_p16 (poly16x4_t __a, poly16x4_t __b)
30221{
30222#ifdef __AARCH64EB__
30223 return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3});
30224#else
30225 return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6});
30226#endif
30227}
30228
a063e204
TC
30229__extension__ extern __inline int8x8_t
30230__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30231vtrn1_s8 (int8x8_t __a, int8x8_t __b)
30232{
30233#ifdef __AARCH64EB__
30234 return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7});
30235#else
30236 return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14});
30237#endif
30238}
30239
a063e204
TC
30240__extension__ extern __inline int16x4_t
30241__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30242vtrn1_s16 (int16x4_t __a, int16x4_t __b)
30243{
30244#ifdef __AARCH64EB__
30245 return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3});
30246#else
30247 return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6});
30248#endif
30249}
30250
a063e204
TC
30251__extension__ extern __inline int32x2_t
30252__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30253vtrn1_s32 (int32x2_t __a, int32x2_t __b)
30254{
30255#ifdef __AARCH64EB__
30256 return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1});
30257#else
30258 return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2});
30259#endif
30260}
30261
a063e204
TC
30262__extension__ extern __inline uint8x8_t
30263__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30264vtrn1_u8 (uint8x8_t __a, uint8x8_t __b)
30265{
30266#ifdef __AARCH64EB__
30267 return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7});
30268#else
30269 return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14});
30270#endif
30271}
30272
a063e204
TC
30273__extension__ extern __inline uint16x4_t
30274__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30275vtrn1_u16 (uint16x4_t __a, uint16x4_t __b)
30276{
30277#ifdef __AARCH64EB__
30278 return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3});
30279#else
30280 return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6});
30281#endif
30282}
30283
a063e204
TC
30284__extension__ extern __inline uint32x2_t
30285__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30286vtrn1_u32 (uint32x2_t __a, uint32x2_t __b)
30287{
30288#ifdef __AARCH64EB__
30289 return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1});
30290#else
30291 return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2});
30292#endif
30293}
30294
a063e204
TC
30295__extension__ extern __inline float16x8_t
30296__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
30297vtrn1q_f16 (float16x8_t __a, float16x8_t __b)
30298{
30299#ifdef __AARCH64EB__
30300 return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7});
30301#else
30302 return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14});
30303#endif
30304}
30305
a063e204
TC
30306__extension__ extern __inline float32x4_t
30307__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30308vtrn1q_f32 (float32x4_t __a, float32x4_t __b)
30309{
30310#ifdef __AARCH64EB__
30311 return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3});
30312#else
30313 return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6});
30314#endif
30315}
30316
a063e204
TC
30317__extension__ extern __inline float64x2_t
30318__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30319vtrn1q_f64 (float64x2_t __a, float64x2_t __b)
30320{
30321#ifdef __AARCH64EB__
30322 return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1});
30323#else
30324 return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2});
30325#endif
30326}
30327
a063e204
TC
30328__extension__ extern __inline poly8x16_t
30329__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30330vtrn1q_p8 (poly8x16_t __a, poly8x16_t __b)
30331{
30332#ifdef __AARCH64EB__
30333 return __builtin_shuffle (__a, __b,
30334 (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15});
30335#else
30336 return __builtin_shuffle (__a, __b,
30337 (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30});
30338#endif
30339}
30340
a063e204
TC
30341__extension__ extern __inline poly16x8_t
30342__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30343vtrn1q_p16 (poly16x8_t __a, poly16x8_t __b)
30344{
30345#ifdef __AARCH64EB__
30346 return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7});
30347#else
30348 return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14});
30349#endif
30350}
30351
a063e204
TC
30352__extension__ extern __inline int8x16_t
30353__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30354vtrn1q_s8 (int8x16_t __a, int8x16_t __b)
30355{
30356#ifdef __AARCH64EB__
30357 return __builtin_shuffle (__a, __b,
30358 (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15});
30359#else
30360 return __builtin_shuffle (__a, __b,
30361 (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30});
30362#endif
30363}
30364
a063e204
TC
30365__extension__ extern __inline int16x8_t
30366__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30367vtrn1q_s16 (int16x8_t __a, int16x8_t __b)
30368{
30369#ifdef __AARCH64EB__
30370 return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7});
30371#else
30372 return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14});
30373#endif
30374}
30375
a063e204
TC
30376__extension__ extern __inline int32x4_t
30377__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30378vtrn1q_s32 (int32x4_t __a, int32x4_t __b)
30379{
30380#ifdef __AARCH64EB__
30381 return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3});
30382#else
30383 return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6});
30384#endif
30385}
30386
a063e204
TC
30387__extension__ extern __inline int64x2_t
30388__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30389vtrn1q_s64 (int64x2_t __a, int64x2_t __b)
30390{
30391#ifdef __AARCH64EB__
30392 return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1});
30393#else
30394 return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2});
30395#endif
30396}
30397
a063e204
TC
30398__extension__ extern __inline uint8x16_t
30399__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30400vtrn1q_u8 (uint8x16_t __a, uint8x16_t __b)
30401{
30402#ifdef __AARCH64EB__
30403 return __builtin_shuffle (__a, __b,
30404 (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15});
30405#else
30406 return __builtin_shuffle (__a, __b,
30407 (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30});
30408#endif
30409}
30410
a063e204
TC
30411__extension__ extern __inline uint16x8_t
30412__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30413vtrn1q_u16 (uint16x8_t __a, uint16x8_t __b)
30414{
30415#ifdef __AARCH64EB__
30416 return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7});
30417#else
30418 return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14});
30419#endif
30420}
30421
a063e204
TC
30422__extension__ extern __inline uint32x4_t
30423__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30424vtrn1q_u32 (uint32x4_t __a, uint32x4_t __b)
30425{
30426#ifdef __AARCH64EB__
30427 return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3});
30428#else
30429 return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6});
30430#endif
30431}
30432
e8e81839
KT
30433__extension__ extern __inline poly64x2_t
30434__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
30435vtrn1q_p64 (poly64x2_t __a, poly64x2_t __b)
30436{
30437#ifdef __AARCH64EB__
30438 return __builtin_shuffle (__a, __b, (poly64x2_t) {3, 1});
30439#else
30440 return __builtin_shuffle (__a, __b, (poly64x2_t) {0, 2});
30441#endif
30442}
30443
a063e204
TC
30444__extension__ extern __inline uint64x2_t
30445__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30446vtrn1q_u64 (uint64x2_t __a, uint64x2_t __b)
30447{
30448#ifdef __AARCH64EB__
30449 return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1});
30450#else
30451 return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2});
30452#endif
30453}
30454
a063e204
TC
30455__extension__ extern __inline float16x4_t
30456__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
30457vtrn2_f16 (float16x4_t __a, float16x4_t __b)
30458{
30459#ifdef __AARCH64EB__
30460 return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2});
30461#else
30462 return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7});
30463#endif
30464}
30465
a063e204
TC
30466__extension__ extern __inline float32x2_t
30467__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30468vtrn2_f32 (float32x2_t __a, float32x2_t __b)
30469{
30470#ifdef __AARCH64EB__
30471 return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0});
30472#else
30473 return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3});
30474#endif
30475}
30476
a063e204
TC
30477__extension__ extern __inline poly8x8_t
30478__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30479vtrn2_p8 (poly8x8_t __a, poly8x8_t __b)
30480{
30481#ifdef __AARCH64EB__
30482 return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6});
30483#else
30484 return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15});
30485#endif
30486}
30487
a063e204
TC
30488__extension__ extern __inline poly16x4_t
30489__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30490vtrn2_p16 (poly16x4_t __a, poly16x4_t __b)
30491{
30492#ifdef __AARCH64EB__
30493 return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2});
30494#else
30495 return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7});
30496#endif
30497}
30498
a063e204
TC
30499__extension__ extern __inline int8x8_t
30500__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30501vtrn2_s8 (int8x8_t __a, int8x8_t __b)
30502{
30503#ifdef __AARCH64EB__
30504 return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6});
30505#else
30506 return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15});
30507#endif
30508}
30509
a063e204
TC
30510__extension__ extern __inline int16x4_t
30511__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30512vtrn2_s16 (int16x4_t __a, int16x4_t __b)
30513{
30514#ifdef __AARCH64EB__
30515 return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2});
30516#else
30517 return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7});
30518#endif
30519}
30520
a063e204
TC
30521__extension__ extern __inline int32x2_t
30522__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30523vtrn2_s32 (int32x2_t __a, int32x2_t __b)
30524{
30525#ifdef __AARCH64EB__
30526 return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0});
30527#else
30528 return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3});
30529#endif
30530}
30531
a063e204
TC
30532__extension__ extern __inline uint8x8_t
30533__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30534vtrn2_u8 (uint8x8_t __a, uint8x8_t __b)
30535{
30536#ifdef __AARCH64EB__
30537 return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6});
30538#else
30539 return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15});
30540#endif
30541}
30542
a063e204
TC
30543__extension__ extern __inline uint16x4_t
30544__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30545vtrn2_u16 (uint16x4_t __a, uint16x4_t __b)
30546{
30547#ifdef __AARCH64EB__
30548 return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2});
30549#else
30550 return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7});
30551#endif
30552}
30553
a063e204
TC
30554__extension__ extern __inline uint32x2_t
30555__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30556vtrn2_u32 (uint32x2_t __a, uint32x2_t __b)
30557{
30558#ifdef __AARCH64EB__
30559 return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0});
30560#else
30561 return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3});
30562#endif
30563}
30564
a063e204
TC
30565__extension__ extern __inline float16x8_t
30566__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
30567vtrn2q_f16 (float16x8_t __a, float16x8_t __b)
30568{
30569#ifdef __AARCH64EB__
30570 return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6});
30571#else
30572 return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15});
30573#endif
30574}
30575
a063e204
TC
30576__extension__ extern __inline float32x4_t
30577__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30578vtrn2q_f32 (float32x4_t __a, float32x4_t __b)
30579{
30580#ifdef __AARCH64EB__
30581 return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2});
30582#else
30583 return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7});
30584#endif
30585}
30586
a063e204
TC
30587__extension__ extern __inline float64x2_t
30588__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30589vtrn2q_f64 (float64x2_t __a, float64x2_t __b)
30590{
30591#ifdef __AARCH64EB__
30592 return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0});
30593#else
30594 return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3});
30595#endif
30596}
30597
a063e204
TC
30598__extension__ extern __inline poly8x16_t
30599__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30600vtrn2q_p8 (poly8x16_t __a, poly8x16_t __b)
30601{
30602#ifdef __AARCH64EB__
30603 return __builtin_shuffle (__a, __b,
30604 (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14});
30605#else
30606 return __builtin_shuffle (__a, __b,
30607 (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31});
30608#endif
30609}
30610
a063e204
TC
30611__extension__ extern __inline poly16x8_t
30612__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30613vtrn2q_p16 (poly16x8_t __a, poly16x8_t __b)
30614{
30615#ifdef __AARCH64EB__
30616 return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6});
30617#else
30618 return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15});
30619#endif
30620}
30621
a063e204
TC
30622__extension__ extern __inline int8x16_t
30623__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30624vtrn2q_s8 (int8x16_t __a, int8x16_t __b)
30625{
30626#ifdef __AARCH64EB__
30627 return __builtin_shuffle (__a, __b,
30628 (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14});
30629#else
30630 return __builtin_shuffle (__a, __b,
30631 (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31});
30632#endif
30633}
30634
a063e204
TC
30635__extension__ extern __inline int16x8_t
30636__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30637vtrn2q_s16 (int16x8_t __a, int16x8_t __b)
30638{
30639#ifdef __AARCH64EB__
30640 return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6});
30641#else
30642 return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15});
30643#endif
30644}
30645
a063e204
TC
30646__extension__ extern __inline int32x4_t
30647__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30648vtrn2q_s32 (int32x4_t __a, int32x4_t __b)
30649{
30650#ifdef __AARCH64EB__
30651 return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2});
30652#else
30653 return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7});
30654#endif
30655}
30656
a063e204
TC
30657__extension__ extern __inline int64x2_t
30658__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30659vtrn2q_s64 (int64x2_t __a, int64x2_t __b)
30660{
30661#ifdef __AARCH64EB__
30662 return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0});
30663#else
30664 return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3});
30665#endif
30666}
30667
a063e204
TC
30668__extension__ extern __inline uint8x16_t
30669__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30670vtrn2q_u8 (uint8x16_t __a, uint8x16_t __b)
30671{
30672#ifdef __AARCH64EB__
30673 return __builtin_shuffle (__a, __b,
30674 (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14});
30675#else
30676 return __builtin_shuffle (__a, __b,
30677 (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31});
30678#endif
30679}
30680
a063e204
TC
30681__extension__ extern __inline uint16x8_t
30682__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30683vtrn2q_u16 (uint16x8_t __a, uint16x8_t __b)
30684{
30685#ifdef __AARCH64EB__
30686 return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6});
30687#else
30688 return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15});
30689#endif
30690}
30691
a063e204
TC
30692__extension__ extern __inline uint32x4_t
30693__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30694vtrn2q_u32 (uint32x4_t __a, uint32x4_t __b)
30695{
30696#ifdef __AARCH64EB__
30697 return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2});
30698#else
30699 return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7});
30700#endif
30701}
30702
a063e204
TC
30703__extension__ extern __inline uint64x2_t
30704__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
1d175503
AL
30705vtrn2q_u64 (uint64x2_t __a, uint64x2_t __b)
30706{
30707#ifdef __AARCH64EB__
30708 return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0});
30709#else
30710 return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3});
30711#endif
30712}
30713
e8e81839
KT
30714
30715__extension__ extern __inline poly64x2_t
30716__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
30717vtrn2q_p64 (poly64x2_t __a, poly64x2_t __b)
30718{
30719#ifdef __AARCH64EB__
30720 return __builtin_shuffle (__a, __b, (poly64x2_t) {2, 0});
30721#else
30722 return __builtin_shuffle (__a, __b, (poly64x2_t) {1, 3});
30723#endif
30724}
30725
a063e204
TC
30726__extension__ extern __inline float16x4x2_t
30727__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
30728vtrn_f16 (float16x4_t __a, float16x4_t __b)
30729{
30730 return (float16x4x2_t) {vtrn1_f16 (__a, __b), vtrn2_f16 (__a, __b)};
30731}
30732
a063e204
TC
30733__extension__ extern __inline float32x2x2_t
30734__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30735vtrn_f32 (float32x2_t __a, float32x2_t __b)
43e9d192 30736{
9a3afc35 30737 return (float32x2x2_t) {vtrn1_f32 (__a, __b), vtrn2_f32 (__a, __b)};
43e9d192
IB
30738}
30739
a063e204
TC
30740__extension__ extern __inline poly8x8x2_t
30741__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30742vtrn_p8 (poly8x8_t __a, poly8x8_t __b)
43e9d192 30743{
9a3afc35 30744 return (poly8x8x2_t) {vtrn1_p8 (__a, __b), vtrn2_p8 (__a, __b)};
43e9d192
IB
30745}
30746
a063e204
TC
30747__extension__ extern __inline poly16x4x2_t
30748__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30749vtrn_p16 (poly16x4_t __a, poly16x4_t __b)
43e9d192 30750{
9a3afc35 30751 return (poly16x4x2_t) {vtrn1_p16 (__a, __b), vtrn2_p16 (__a, __b)};
43e9d192
IB
30752}
30753
a063e204
TC
30754__extension__ extern __inline int8x8x2_t
30755__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30756vtrn_s8 (int8x8_t __a, int8x8_t __b)
43e9d192 30757{
9a3afc35 30758 return (int8x8x2_t) {vtrn1_s8 (__a, __b), vtrn2_s8 (__a, __b)};
43e9d192
IB
30759}
30760
a063e204
TC
30761__extension__ extern __inline int16x4x2_t
30762__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30763vtrn_s16 (int16x4_t __a, int16x4_t __b)
43e9d192 30764{
9a3afc35 30765 return (int16x4x2_t) {vtrn1_s16 (__a, __b), vtrn2_s16 (__a, __b)};
43e9d192
IB
30766}
30767
a063e204
TC
30768__extension__ extern __inline int32x2x2_t
30769__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30770vtrn_s32 (int32x2_t __a, int32x2_t __b)
43e9d192 30771{
9a3afc35 30772 return (int32x2x2_t) {vtrn1_s32 (__a, __b), vtrn2_s32 (__a, __b)};
43e9d192
IB
30773}
30774
a063e204
TC
30775__extension__ extern __inline uint8x8x2_t
30776__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30777vtrn_u8 (uint8x8_t __a, uint8x8_t __b)
43e9d192 30778{
9a3afc35 30779 return (uint8x8x2_t) {vtrn1_u8 (__a, __b), vtrn2_u8 (__a, __b)};
43e9d192
IB
30780}
30781
a063e204
TC
30782__extension__ extern __inline uint16x4x2_t
30783__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30784vtrn_u16 (uint16x4_t __a, uint16x4_t __b)
43e9d192 30785{
9a3afc35 30786 return (uint16x4x2_t) {vtrn1_u16 (__a, __b), vtrn2_u16 (__a, __b)};
43e9d192
IB
30787}
30788
a063e204
TC
30789__extension__ extern __inline uint32x2x2_t
30790__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30791vtrn_u32 (uint32x2_t __a, uint32x2_t __b)
43e9d192 30792{
9a3afc35 30793 return (uint32x2x2_t) {vtrn1_u32 (__a, __b), vtrn2_u32 (__a, __b)};
43e9d192
IB
30794}
30795
a063e204
TC
30796__extension__ extern __inline float16x8x2_t
30797__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
30798vtrnq_f16 (float16x8_t __a, float16x8_t __b)
30799{
30800 return (float16x8x2_t) {vtrn1q_f16 (__a, __b), vtrn2q_f16 (__a, __b)};
30801}
30802
a063e204
TC
30803__extension__ extern __inline float32x4x2_t
30804__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30805vtrnq_f32 (float32x4_t __a, float32x4_t __b)
43e9d192 30806{
9a3afc35 30807 return (float32x4x2_t) {vtrn1q_f32 (__a, __b), vtrn2q_f32 (__a, __b)};
43e9d192
IB
30808}
30809
a063e204
TC
30810__extension__ extern __inline poly8x16x2_t
30811__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30812vtrnq_p8 (poly8x16_t __a, poly8x16_t __b)
43e9d192 30813{
9a3afc35 30814 return (poly8x16x2_t) {vtrn1q_p8 (__a, __b), vtrn2q_p8 (__a, __b)};
43e9d192
IB
30815}
30816
a063e204
TC
30817__extension__ extern __inline poly16x8x2_t
30818__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30819vtrnq_p16 (poly16x8_t __a, poly16x8_t __b)
43e9d192 30820{
9a3afc35 30821 return (poly16x8x2_t) {vtrn1q_p16 (__a, __b), vtrn2q_p16 (__a, __b)};
43e9d192
IB
30822}
30823
a063e204
TC
30824__extension__ extern __inline int8x16x2_t
30825__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30826vtrnq_s8 (int8x16_t __a, int8x16_t __b)
43e9d192 30827{
9a3afc35 30828 return (int8x16x2_t) {vtrn1q_s8 (__a, __b), vtrn2q_s8 (__a, __b)};
43e9d192
IB
30829}
30830
a063e204
TC
30831__extension__ extern __inline int16x8x2_t
30832__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30833vtrnq_s16 (int16x8_t __a, int16x8_t __b)
43e9d192 30834{
9a3afc35 30835 return (int16x8x2_t) {vtrn1q_s16 (__a, __b), vtrn2q_s16 (__a, __b)};
43e9d192
IB
30836}
30837
a063e204
TC
30838__extension__ extern __inline int32x4x2_t
30839__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30840vtrnq_s32 (int32x4_t __a, int32x4_t __b)
43e9d192 30841{
9a3afc35 30842 return (int32x4x2_t) {vtrn1q_s32 (__a, __b), vtrn2q_s32 (__a, __b)};
43e9d192
IB
30843}
30844
a063e204
TC
30845__extension__ extern __inline uint8x16x2_t
30846__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30847vtrnq_u8 (uint8x16_t __a, uint8x16_t __b)
43e9d192 30848{
9a3afc35 30849 return (uint8x16x2_t) {vtrn1q_u8 (__a, __b), vtrn2q_u8 (__a, __b)};
43e9d192
IB
30850}
30851
a063e204
TC
30852__extension__ extern __inline uint16x8x2_t
30853__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30854vtrnq_u16 (uint16x8_t __a, uint16x8_t __b)
43e9d192 30855{
9a3afc35 30856 return (uint16x8x2_t) {vtrn1q_u16 (__a, __b), vtrn2q_u16 (__a, __b)};
43e9d192
IB
30857}
30858
a063e204
TC
30859__extension__ extern __inline uint32x4x2_t
30860__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 30861vtrnq_u32 (uint32x4_t __a, uint32x4_t __b)
43e9d192 30862{
9a3afc35 30863 return (uint32x4x2_t) {vtrn1q_u32 (__a, __b), vtrn2q_u32 (__a, __b)};
43e9d192
IB
30864}
30865
30866/* vtst */
30867
a063e204
TC
30868__extension__ extern __inline uint8x8_t
30869__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30870vtst_s8 (int8x8_t __a, int8x8_t __b)
30871{
5726d376 30872 return (uint8x8_t) ((__a & __b) != 0);
43e9d192
IB
30873}
30874
a063e204
TC
30875__extension__ extern __inline uint16x4_t
30876__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30877vtst_s16 (int16x4_t __a, int16x4_t __b)
30878{
5726d376 30879 return (uint16x4_t) ((__a & __b) != 0);
43e9d192
IB
30880}
30881
a063e204
TC
30882__extension__ extern __inline uint32x2_t
30883__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30884vtst_s32 (int32x2_t __a, int32x2_t __b)
30885{
5726d376 30886 return (uint32x2_t) ((__a & __b) != 0);
43e9d192
IB
30887}
30888
a063e204
TC
30889__extension__ extern __inline uint64x1_t
30890__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30891vtst_s64 (int64x1_t __a, int64x1_t __b)
30892{
a8105959 30893 return (uint64x1_t) ((__a & __b) != __AARCH64_INT64_C (0));
43e9d192
IB
30894}
30895
a063e204
TC
30896__extension__ extern __inline uint8x8_t
30897__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30898vtst_u8 (uint8x8_t __a, uint8x8_t __b)
30899{
5726d376 30900 return ((__a & __b) != 0);
43e9d192
IB
30901}
30902
a063e204
TC
30903__extension__ extern __inline uint16x4_t
30904__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30905vtst_u16 (uint16x4_t __a, uint16x4_t __b)
30906{
5726d376 30907 return ((__a & __b) != 0);
43e9d192
IB
30908}
30909
a063e204
TC
30910__extension__ extern __inline uint32x2_t
30911__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30912vtst_u32 (uint32x2_t __a, uint32x2_t __b)
30913{
5726d376 30914 return ((__a & __b) != 0);
43e9d192
IB
30915}
30916
a063e204
TC
30917__extension__ extern __inline uint64x1_t
30918__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30919vtst_u64 (uint64x1_t __a, uint64x1_t __b)
30920{
a8105959 30921 return ((__a & __b) != __AARCH64_UINT64_C (0));
43e9d192
IB
30922}
30923
a063e204
TC
30924__extension__ extern __inline uint8x16_t
30925__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30926vtstq_s8 (int8x16_t __a, int8x16_t __b)
30927{
5726d376 30928 return (uint8x16_t) ((__a & __b) != 0);
43e9d192
IB
30929}
30930
a063e204
TC
30931__extension__ extern __inline uint16x8_t
30932__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30933vtstq_s16 (int16x8_t __a, int16x8_t __b)
30934{
5726d376 30935 return (uint16x8_t) ((__a & __b) != 0);
43e9d192
IB
30936}
30937
a063e204
TC
30938__extension__ extern __inline uint32x4_t
30939__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30940vtstq_s32 (int32x4_t __a, int32x4_t __b)
30941{
5726d376 30942 return (uint32x4_t) ((__a & __b) != 0);
43e9d192
IB
30943}
30944
a063e204
TC
30945__extension__ extern __inline uint64x2_t
30946__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30947vtstq_s64 (int64x2_t __a, int64x2_t __b)
30948{
5726d376 30949 return (uint64x2_t) ((__a & __b) != __AARCH64_INT64_C (0));
43e9d192
IB
30950}
30951
a063e204
TC
30952__extension__ extern __inline uint8x16_t
30953__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30954vtstq_u8 (uint8x16_t __a, uint8x16_t __b)
30955{
5726d376 30956 return ((__a & __b) != 0);
43e9d192
IB
30957}
30958
a063e204
TC
30959__extension__ extern __inline uint16x8_t
30960__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30961vtstq_u16 (uint16x8_t __a, uint16x8_t __b)
30962{
5726d376 30963 return ((__a & __b) != 0);
43e9d192
IB
30964}
30965
a063e204
TC
30966__extension__ extern __inline uint32x4_t
30967__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30968vtstq_u32 (uint32x4_t __a, uint32x4_t __b)
30969{
5726d376 30970 return ((__a & __b) != 0);
43e9d192
IB
30971}
30972
a063e204
TC
30973__extension__ extern __inline uint64x2_t
30974__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30975vtstq_u64 (uint64x2_t __a, uint64x2_t __b)
30976{
5726d376 30977 return ((__a & __b) != __AARCH64_UINT64_C (0));
43e9d192
IB
30978}
30979
a063e204
TC
30980__extension__ extern __inline uint64_t
30981__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 30982vtstd_s64 (int64_t __a, int64_t __b)
43e9d192 30983{
bb60efd9 30984 return (__a & __b) ? -1ll : 0ll;
43e9d192
IB
30985}
30986
a063e204
TC
30987__extension__ extern __inline uint64_t
30988__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 30989vtstd_u64 (uint64_t __a, uint64_t __b)
43e9d192 30990{
bb60efd9 30991 return (__a & __b) ? -1ll : 0ll;
43e9d192
IB
30992}
30993
30994/* vuqadd */
30995
a063e204
TC
30996__extension__ extern __inline int8x8_t
30997__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
30998vuqadd_s8 (int8x8_t __a, uint8x8_t __b)
30999{
918621d3 31000 return __builtin_aarch64_suqaddv8qi_ssu (__a, __b);
43e9d192
IB
31001}
31002
a063e204
TC
31003__extension__ extern __inline int16x4_t
31004__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
31005vuqadd_s16 (int16x4_t __a, uint16x4_t __b)
31006{
918621d3 31007 return __builtin_aarch64_suqaddv4hi_ssu (__a, __b);
43e9d192
IB
31008}
31009
a063e204
TC
31010__extension__ extern __inline int32x2_t
31011__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
31012vuqadd_s32 (int32x2_t __a, uint32x2_t __b)
31013{
918621d3 31014 return __builtin_aarch64_suqaddv2si_ssu (__a, __b);
43e9d192
IB
31015}
31016
a063e204
TC
31017__extension__ extern __inline int64x1_t
31018__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
31019vuqadd_s64 (int64x1_t __a, uint64x1_t __b)
31020{
096c59be 31021 return (int64x1_t) {__builtin_aarch64_suqadddi_ssu (__a[0], __b[0])};
43e9d192
IB
31022}
31023
a063e204
TC
31024__extension__ extern __inline int8x16_t
31025__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
31026vuqaddq_s8 (int8x16_t __a, uint8x16_t __b)
31027{
918621d3 31028 return __builtin_aarch64_suqaddv16qi_ssu (__a, __b);
43e9d192
IB
31029}
31030
a063e204
TC
31031__extension__ extern __inline int16x8_t
31032__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
31033vuqaddq_s16 (int16x8_t __a, uint16x8_t __b)
31034{
918621d3 31035 return __builtin_aarch64_suqaddv8hi_ssu (__a, __b);
43e9d192
IB
31036}
31037
a063e204
TC
31038__extension__ extern __inline int32x4_t
31039__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
31040vuqaddq_s32 (int32x4_t __a, uint32x4_t __b)
31041{
918621d3 31042 return __builtin_aarch64_suqaddv4si_ssu (__a, __b);
43e9d192
IB
31043}
31044
a063e204
TC
31045__extension__ extern __inline int64x2_t
31046__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
43e9d192
IB
31047vuqaddq_s64 (int64x2_t __a, uint64x2_t __b)
31048{
918621d3 31049 return __builtin_aarch64_suqaddv2di_ssu (__a, __b);
43e9d192
IB
31050}
31051
a063e204
TC
31052__extension__ extern __inline int8_t
31053__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 31054vuqaddb_s8 (int8_t __a, uint8_t __b)
43e9d192 31055{
918621d3 31056 return __builtin_aarch64_suqaddqi_ssu (__a, __b);
43e9d192
IB
31057}
31058
a063e204
TC
31059__extension__ extern __inline int16_t
31060__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 31061vuqaddh_s16 (int16_t __a, uint16_t __b)
43e9d192 31062{
918621d3 31063 return __builtin_aarch64_suqaddhi_ssu (__a, __b);
43e9d192
IB
31064}
31065
a063e204
TC
31066__extension__ extern __inline int32_t
31067__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
02a0ec4a 31068vuqadds_s32 (int32_t __a, uint32_t __b)
43e9d192 31069{
918621d3 31070 return __builtin_aarch64_suqaddsi_ssu (__a, __b);
43e9d192
IB
31071}
31072
a063e204
TC
31073__extension__ extern __inline int64_t
31074__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
096c59be 31075vuqaddd_s64 (int64_t __a, uint64_t __b)
43e9d192 31076{
918621d3 31077 return __builtin_aarch64_suqadddi_ssu (__a, __b);
43e9d192
IB
31078}
31079
31080#define __DEFINTERLEAVE(op, rettype, intype, funcsuffix, Q) \
a063e204
TC
31081 __extension__ extern __inline rettype \
31082 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \
43e9d192
IB
31083 v ## op ## Q ## _ ## funcsuffix (intype a, intype b) \
31084 { \
31085 return (rettype) {v ## op ## 1 ## Q ## _ ## funcsuffix (a, b), \
31086 v ## op ## 2 ## Q ## _ ## funcsuffix (a, b)}; \
31087 }
31088
31089#define __INTERLEAVE_LIST(op) \
358decd5 31090 __DEFINTERLEAVE (op, float16x4x2_t, float16x4_t, f16,) \
43e9d192
IB
31091 __DEFINTERLEAVE (op, float32x2x2_t, float32x2_t, f32,) \
31092 __DEFINTERLEAVE (op, poly8x8x2_t, poly8x8_t, p8,) \
31093 __DEFINTERLEAVE (op, poly16x4x2_t, poly16x4_t, p16,) \
31094 __DEFINTERLEAVE (op, int8x8x2_t, int8x8_t, s8,) \
31095 __DEFINTERLEAVE (op, int16x4x2_t, int16x4_t, s16,) \
31096 __DEFINTERLEAVE (op, int32x2x2_t, int32x2_t, s32,) \
31097 __DEFINTERLEAVE (op, uint8x8x2_t, uint8x8_t, u8,) \
31098 __DEFINTERLEAVE (op, uint16x4x2_t, uint16x4_t, u16,) \
31099 __DEFINTERLEAVE (op, uint32x2x2_t, uint32x2_t, u32,) \
358decd5 31100 __DEFINTERLEAVE (op, float16x8x2_t, float16x8_t, f16, q) \
43e9d192
IB
31101 __DEFINTERLEAVE (op, float32x4x2_t, float32x4_t, f32, q) \
31102 __DEFINTERLEAVE (op, poly8x16x2_t, poly8x16_t, p8, q) \
31103 __DEFINTERLEAVE (op, poly16x8x2_t, poly16x8_t, p16, q) \
31104 __DEFINTERLEAVE (op, int8x16x2_t, int8x16_t, s8, q) \
31105 __DEFINTERLEAVE (op, int16x8x2_t, int16x8_t, s16, q) \
31106 __DEFINTERLEAVE (op, int32x4x2_t, int32x4_t, s32, q) \
31107 __DEFINTERLEAVE (op, uint8x16x2_t, uint8x16_t, u8, q) \
31108 __DEFINTERLEAVE (op, uint16x8x2_t, uint16x8_t, u16, q) \
31109 __DEFINTERLEAVE (op, uint32x4x2_t, uint32x4_t, u32, q)
31110
31111/* vuzp */
31112
a063e204
TC
31113__extension__ extern __inline float16x4_t
31114__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
31115vuzp1_f16 (float16x4_t __a, float16x4_t __b)
31116{
31117#ifdef __AARCH64EB__
31118 return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3});
31119#else
31120 return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6});
31121#endif
31122}
31123
a063e204
TC
31124__extension__ extern __inline float32x2_t
31125__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31126vuzp1_f32 (float32x2_t __a, float32x2_t __b)
31127{
31128#ifdef __AARCH64EB__
31129 return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1});
31130#else
31131 return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2});
31132#endif
31133}
31134
a063e204
TC
31135__extension__ extern __inline poly8x8_t
31136__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31137vuzp1_p8 (poly8x8_t __a, poly8x8_t __b)
31138{
31139#ifdef __AARCH64EB__
31140 return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7});
31141#else
31142 return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14});
31143#endif
31144}
31145
a063e204
TC
31146__extension__ extern __inline poly16x4_t
31147__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31148vuzp1_p16 (poly16x4_t __a, poly16x4_t __b)
31149{
31150#ifdef __AARCH64EB__
31151 return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3});
31152#else
31153 return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6});
31154#endif
31155}
31156
a063e204
TC
31157__extension__ extern __inline int8x8_t
31158__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31159vuzp1_s8 (int8x8_t __a, int8x8_t __b)
31160{
31161#ifdef __AARCH64EB__
31162 return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7});
31163#else
31164 return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14});
31165#endif
31166}
31167
a063e204
TC
31168__extension__ extern __inline int16x4_t
31169__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31170vuzp1_s16 (int16x4_t __a, int16x4_t __b)
31171{
31172#ifdef __AARCH64EB__
31173 return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3});
31174#else
31175 return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6});
31176#endif
31177}
31178
a063e204
TC
31179__extension__ extern __inline int32x2_t
31180__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31181vuzp1_s32 (int32x2_t __a, int32x2_t __b)
31182{
31183#ifdef __AARCH64EB__
31184 return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1});
31185#else
31186 return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2});
31187#endif
31188}
31189
a063e204
TC
31190__extension__ extern __inline uint8x8_t
31191__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31192vuzp1_u8 (uint8x8_t __a, uint8x8_t __b)
31193{
31194#ifdef __AARCH64EB__
31195 return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7});
31196#else
31197 return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14});
31198#endif
31199}
31200
a063e204
TC
31201__extension__ extern __inline uint16x4_t
31202__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31203vuzp1_u16 (uint16x4_t __a, uint16x4_t __b)
31204{
31205#ifdef __AARCH64EB__
31206 return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3});
31207#else
31208 return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6});
31209#endif
31210}
31211
a063e204
TC
31212__extension__ extern __inline uint32x2_t
31213__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31214vuzp1_u32 (uint32x2_t __a, uint32x2_t __b)
31215{
31216#ifdef __AARCH64EB__
31217 return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1});
31218#else
31219 return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2});
31220#endif
31221}
31222
a063e204
TC
31223__extension__ extern __inline float16x8_t
31224__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
31225vuzp1q_f16 (float16x8_t __a, float16x8_t __b)
31226{
31227#ifdef __AARCH64EB__
31228 return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7});
31229#else
31230 return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14});
31231#endif
31232}
31233
a063e204
TC
31234__extension__ extern __inline float32x4_t
31235__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31236vuzp1q_f32 (float32x4_t __a, float32x4_t __b)
31237{
31238#ifdef __AARCH64EB__
31239 return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3});
31240#else
31241 return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6});
31242#endif
31243}
31244
a063e204
TC
31245__extension__ extern __inline float64x2_t
31246__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31247vuzp1q_f64 (float64x2_t __a, float64x2_t __b)
31248{
31249#ifdef __AARCH64EB__
31250 return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1});
31251#else
31252 return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2});
31253#endif
31254}
31255
a063e204
TC
31256__extension__ extern __inline poly8x16_t
31257__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31258vuzp1q_p8 (poly8x16_t __a, poly8x16_t __b)
31259{
31260#ifdef __AARCH64EB__
31261 return __builtin_shuffle (__a, __b, (uint8x16_t)
31262 {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15});
31263#else
31264 return __builtin_shuffle (__a, __b, (uint8x16_t)
31265 {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30});
31266#endif
31267}
31268
a063e204
TC
31269__extension__ extern __inline poly16x8_t
31270__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31271vuzp1q_p16 (poly16x8_t __a, poly16x8_t __b)
31272{
31273#ifdef __AARCH64EB__
31274 return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7});
31275#else
31276 return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14});
31277#endif
31278}
31279
a063e204
TC
31280__extension__ extern __inline int8x16_t
31281__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31282vuzp1q_s8 (int8x16_t __a, int8x16_t __b)
31283{
31284#ifdef __AARCH64EB__
31285 return __builtin_shuffle (__a, __b,
31286 (uint8x16_t) {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15});
31287#else
31288 return __builtin_shuffle (__a, __b,
31289 (uint8x16_t) {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30});
31290#endif
31291}
31292
a063e204
TC
31293__extension__ extern __inline int16x8_t
31294__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31295vuzp1q_s16 (int16x8_t __a, int16x8_t __b)
31296{
31297#ifdef __AARCH64EB__
31298 return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7});
31299#else
31300 return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14});
31301#endif
31302}
31303
a063e204
TC
31304__extension__ extern __inline int32x4_t
31305__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31306vuzp1q_s32 (int32x4_t __a, int32x4_t __b)
31307{
31308#ifdef __AARCH64EB__
31309 return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3});
31310#else
31311 return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6});
31312#endif
31313}
31314
a063e204
TC
31315__extension__ extern __inline int64x2_t
31316__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31317vuzp1q_s64 (int64x2_t __a, int64x2_t __b)
31318{
31319#ifdef __AARCH64EB__
31320 return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1});
31321#else
31322 return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2});
31323#endif
31324}
31325
a063e204
TC
31326__extension__ extern __inline uint8x16_t
31327__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31328vuzp1q_u8 (uint8x16_t __a, uint8x16_t __b)
31329{
31330#ifdef __AARCH64EB__
31331 return __builtin_shuffle (__a, __b,
31332 (uint8x16_t) {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15});
31333#else
31334 return __builtin_shuffle (__a, __b,
31335 (uint8x16_t) {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30});
31336#endif
31337}
31338
a063e204
TC
31339__extension__ extern __inline uint16x8_t
31340__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31341vuzp1q_u16 (uint16x8_t __a, uint16x8_t __b)
31342{
31343#ifdef __AARCH64EB__
31344 return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7});
31345#else
31346 return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14});
31347#endif
31348}
31349
a063e204
TC
31350__extension__ extern __inline uint32x4_t
31351__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31352vuzp1q_u32 (uint32x4_t __a, uint32x4_t __b)
31353{
31354#ifdef __AARCH64EB__
31355 return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3});
31356#else
31357 return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6});
31358#endif
31359}
31360
a063e204
TC
31361__extension__ extern __inline uint64x2_t
31362__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31363vuzp1q_u64 (uint64x2_t __a, uint64x2_t __b)
31364{
31365#ifdef __AARCH64EB__
31366 return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1});
31367#else
31368 return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2});
31369#endif
31370}
31371
e8e81839
KT
31372__extension__ extern __inline poly64x2_t
31373__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
31374vuzp1q_p64 (poly64x2_t __a, poly64x2_t __b)
31375{
31376#ifdef __AARCH64EB__
31377 return __builtin_shuffle (__a, __b, (poly64x2_t) {3, 1});
31378#else
31379 return __builtin_shuffle (__a, __b, (poly64x2_t) {0, 2});
31380#endif
31381}
31382
a063e204
TC
31383__extension__ extern __inline float16x4_t
31384__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
31385vuzp2_f16 (float16x4_t __a, float16x4_t __b)
31386{
31387#ifdef __AARCH64EB__
31388 return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2});
31389#else
31390 return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7});
31391#endif
31392}
31393
a063e204
TC
31394__extension__ extern __inline float32x2_t
31395__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31396vuzp2_f32 (float32x2_t __a, float32x2_t __b)
31397{
31398#ifdef __AARCH64EB__
31399 return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0});
31400#else
31401 return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3});
31402#endif
31403}
31404
a063e204
TC
31405__extension__ extern __inline poly8x8_t
31406__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31407vuzp2_p8 (poly8x8_t __a, poly8x8_t __b)
31408{
31409#ifdef __AARCH64EB__
31410 return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6});
31411#else
31412 return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15});
31413#endif
31414}
31415
a063e204
TC
31416__extension__ extern __inline poly16x4_t
31417__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31418vuzp2_p16 (poly16x4_t __a, poly16x4_t __b)
31419{
31420#ifdef __AARCH64EB__
31421 return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2});
31422#else
31423 return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7});
31424#endif
31425}
31426
a063e204
TC
31427__extension__ extern __inline int8x8_t
31428__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31429vuzp2_s8 (int8x8_t __a, int8x8_t __b)
31430{
31431#ifdef __AARCH64EB__
31432 return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6});
31433#else
31434 return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15});
31435#endif
31436}
31437
a063e204
TC
31438__extension__ extern __inline int16x4_t
31439__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31440vuzp2_s16 (int16x4_t __a, int16x4_t __b)
31441{
31442#ifdef __AARCH64EB__
31443 return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2});
31444#else
31445 return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7});
31446#endif
31447}
31448
a063e204
TC
31449__extension__ extern __inline int32x2_t
31450__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31451vuzp2_s32 (int32x2_t __a, int32x2_t __b)
31452{
31453#ifdef __AARCH64EB__
31454 return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0});
31455#else
31456 return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3});
31457#endif
31458}
31459
a063e204
TC
31460__extension__ extern __inline uint8x8_t
31461__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31462vuzp2_u8 (uint8x8_t __a, uint8x8_t __b)
31463{
31464#ifdef __AARCH64EB__
31465 return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6});
31466#else
31467 return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15});
31468#endif
31469}
31470
a063e204
TC
31471__extension__ extern __inline uint16x4_t
31472__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31473vuzp2_u16 (uint16x4_t __a, uint16x4_t __b)
31474{
31475#ifdef __AARCH64EB__
31476 return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2});
31477#else
31478 return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7});
31479#endif
31480}
31481
a063e204
TC
31482__extension__ extern __inline uint32x2_t
31483__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31484vuzp2_u32 (uint32x2_t __a, uint32x2_t __b)
31485{
31486#ifdef __AARCH64EB__
31487 return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0});
31488#else
31489 return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3});
31490#endif
31491}
31492
a063e204
TC
31493__extension__ extern __inline float16x8_t
31494__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
31495vuzp2q_f16 (float16x8_t __a, float16x8_t __b)
31496{
31497#ifdef __AARCH64EB__
31498 return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6});
31499#else
31500 return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15});
31501#endif
31502}
31503
a063e204
TC
31504__extension__ extern __inline float32x4_t
31505__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31506vuzp2q_f32 (float32x4_t __a, float32x4_t __b)
31507{
31508#ifdef __AARCH64EB__
31509 return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2});
31510#else
31511 return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7});
31512#endif
31513}
31514
a063e204
TC
31515__extension__ extern __inline float64x2_t
31516__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31517vuzp2q_f64 (float64x2_t __a, float64x2_t __b)
31518{
31519#ifdef __AARCH64EB__
31520 return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0});
31521#else
31522 return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3});
31523#endif
31524}
31525
a063e204
TC
31526__extension__ extern __inline poly8x16_t
31527__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31528vuzp2q_p8 (poly8x16_t __a, poly8x16_t __b)
31529{
31530#ifdef __AARCH64EB__
31531 return __builtin_shuffle (__a, __b,
31532 (uint8x16_t) {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14});
31533#else
31534 return __builtin_shuffle (__a, __b,
31535 (uint8x16_t) {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31});
31536#endif
31537}
31538
a063e204
TC
31539__extension__ extern __inline poly16x8_t
31540__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31541vuzp2q_p16 (poly16x8_t __a, poly16x8_t __b)
31542{
31543#ifdef __AARCH64EB__
31544 return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6});
31545#else
31546 return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15});
31547#endif
31548}
31549
a063e204
TC
31550__extension__ extern __inline int8x16_t
31551__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31552vuzp2q_s8 (int8x16_t __a, int8x16_t __b)
31553{
31554#ifdef __AARCH64EB__
31555 return __builtin_shuffle (__a, __b,
31556 (uint8x16_t) {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14});
31557#else
31558 return __builtin_shuffle (__a, __b,
31559 (uint8x16_t) {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31});
31560#endif
31561}
31562
a063e204
TC
31563__extension__ extern __inline int16x8_t
31564__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31565vuzp2q_s16 (int16x8_t __a, int16x8_t __b)
31566{
31567#ifdef __AARCH64EB__
31568 return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6});
31569#else
31570 return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15});
31571#endif
31572}
31573
a063e204
TC
31574__extension__ extern __inline int32x4_t
31575__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31576vuzp2q_s32 (int32x4_t __a, int32x4_t __b)
31577{
31578#ifdef __AARCH64EB__
31579 return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2});
31580#else
31581 return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7});
31582#endif
31583}
31584
a063e204
TC
31585__extension__ extern __inline int64x2_t
31586__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31587vuzp2q_s64 (int64x2_t __a, int64x2_t __b)
31588{
31589#ifdef __AARCH64EB__
31590 return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0});
31591#else
31592 return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3});
31593#endif
31594}
31595
a063e204
TC
31596__extension__ extern __inline uint8x16_t
31597__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31598vuzp2q_u8 (uint8x16_t __a, uint8x16_t __b)
31599{
31600#ifdef __AARCH64EB__
31601 return __builtin_shuffle (__a, __b, (uint8x16_t)
31602 {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14});
31603#else
31604 return __builtin_shuffle (__a, __b, (uint8x16_t)
31605 {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31});
31606#endif
31607}
31608
a063e204
TC
31609__extension__ extern __inline uint16x8_t
31610__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31611vuzp2q_u16 (uint16x8_t __a, uint16x8_t __b)
31612{
31613#ifdef __AARCH64EB__
31614 return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6});
31615#else
31616 return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15});
31617#endif
31618}
31619
a063e204
TC
31620__extension__ extern __inline uint32x4_t
31621__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31622vuzp2q_u32 (uint32x4_t __a, uint32x4_t __b)
31623{
31624#ifdef __AARCH64EB__
31625 return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2});
31626#else
31627 return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7});
31628#endif
31629}
31630
a063e204
TC
31631__extension__ extern __inline uint64x2_t
31632__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7211512a
AL
31633vuzp2q_u64 (uint64x2_t __a, uint64x2_t __b)
31634{
31635#ifdef __AARCH64EB__
31636 return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0});
31637#else
31638 return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3});
31639#endif
31640}
31641
e8e81839
KT
31642__extension__ extern __inline poly64x2_t
31643__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
31644vuzp2q_p64 (poly64x2_t __a, poly64x2_t __b)
31645{
31646#ifdef __AARCH64EB__
31647 return __builtin_shuffle (__a, __b, (poly64x2_t) {2, 0});
31648#else
31649 return __builtin_shuffle (__a, __b, (poly64x2_t) {1, 3});
31650#endif
31651}
31652
43e9d192
IB
31653__INTERLEAVE_LIST (uzp)
31654
31655/* vzip */
31656
a063e204
TC
31657__extension__ extern __inline float16x4_t
31658__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
31659vzip1_f16 (float16x4_t __a, float16x4_t __b)
31660{
31661#ifdef __AARCH64EB__
31662 return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3});
31663#else
31664 return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5});
31665#endif
31666}
31667
a063e204
TC
31668__extension__ extern __inline float32x2_t
31669__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31670vzip1_f32 (float32x2_t __a, float32x2_t __b)
31671{
31672#ifdef __AARCH64EB__
31673 return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1});
31674#else
31675 return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2});
31676#endif
31677}
31678
a063e204
TC
31679__extension__ extern __inline poly8x8_t
31680__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31681vzip1_p8 (poly8x8_t __a, poly8x8_t __b)
31682{
31683#ifdef __AARCH64EB__
31684 return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7});
31685#else
31686 return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11});
31687#endif
31688}
31689
a063e204
TC
31690__extension__ extern __inline poly16x4_t
31691__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31692vzip1_p16 (poly16x4_t __a, poly16x4_t __b)
31693{
31694#ifdef __AARCH64EB__
31695 return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3});
31696#else
31697 return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5});
31698#endif
31699}
31700
a063e204
TC
31701__extension__ extern __inline int8x8_t
31702__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31703vzip1_s8 (int8x8_t __a, int8x8_t __b)
31704{
31705#ifdef __AARCH64EB__
31706 return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7});
31707#else
31708 return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11});
31709#endif
31710}
31711
a063e204
TC
31712__extension__ extern __inline int16x4_t
31713__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31714vzip1_s16 (int16x4_t __a, int16x4_t __b)
31715{
31716#ifdef __AARCH64EB__
31717 return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3});
31718#else
31719 return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5});
31720#endif
31721}
31722
a063e204
TC
31723__extension__ extern __inline int32x2_t
31724__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31725vzip1_s32 (int32x2_t __a, int32x2_t __b)
31726{
31727#ifdef __AARCH64EB__
31728 return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1});
31729#else
31730 return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2});
31731#endif
31732}
31733
a063e204
TC
31734__extension__ extern __inline uint8x8_t
31735__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31736vzip1_u8 (uint8x8_t __a, uint8x8_t __b)
31737{
31738#ifdef __AARCH64EB__
31739 return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7});
31740#else
31741 return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11});
31742#endif
31743}
31744
a063e204
TC
31745__extension__ extern __inline uint16x4_t
31746__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31747vzip1_u16 (uint16x4_t __a, uint16x4_t __b)
31748{
31749#ifdef __AARCH64EB__
31750 return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3});
31751#else
31752 return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5});
31753#endif
31754}
31755
a063e204
TC
31756__extension__ extern __inline uint32x2_t
31757__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31758vzip1_u32 (uint32x2_t __a, uint32x2_t __b)
31759{
31760#ifdef __AARCH64EB__
31761 return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1});
31762#else
31763 return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2});
31764#endif
31765}
31766
a063e204
TC
31767__extension__ extern __inline float16x8_t
31768__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
31769vzip1q_f16 (float16x8_t __a, float16x8_t __b)
31770{
31771#ifdef __AARCH64EB__
31772 return __builtin_shuffle (__a, __b,
31773 (uint16x8_t) {12, 4, 13, 5, 14, 6, 15, 7});
31774#else
31775 return __builtin_shuffle (__a, __b,
31776 (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11});
31777#endif
31778}
31779
a063e204
TC
31780__extension__ extern __inline float32x4_t
31781__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31782vzip1q_f32 (float32x4_t __a, float32x4_t __b)
31783{
31784#ifdef __AARCH64EB__
31785 return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3});
31786#else
31787 return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5});
31788#endif
31789}
31790
a063e204
TC
31791__extension__ extern __inline float64x2_t
31792__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31793vzip1q_f64 (float64x2_t __a, float64x2_t __b)
31794{
31795#ifdef __AARCH64EB__
31796 return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1});
31797#else
31798 return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2});
31799#endif
31800}
31801
a063e204
TC
31802__extension__ extern __inline poly8x16_t
31803__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31804vzip1q_p8 (poly8x16_t __a, poly8x16_t __b)
31805{
31806#ifdef __AARCH64EB__
31807 return __builtin_shuffle (__a, __b, (uint8x16_t)
31808 {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15});
31809#else
31810 return __builtin_shuffle (__a, __b, (uint8x16_t)
31811 {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23});
31812#endif
31813}
31814
a063e204
TC
31815__extension__ extern __inline poly16x8_t
31816__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31817vzip1q_p16 (poly16x8_t __a, poly16x8_t __b)
31818{
31819#ifdef __AARCH64EB__
31820 return __builtin_shuffle (__a, __b, (uint16x8_t)
31821 {12, 4, 13, 5, 14, 6, 15, 7});
31822#else
31823 return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11});
31824#endif
31825}
31826
a063e204
TC
31827__extension__ extern __inline int8x16_t
31828__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31829vzip1q_s8 (int8x16_t __a, int8x16_t __b)
31830{
31831#ifdef __AARCH64EB__
31832 return __builtin_shuffle (__a, __b, (uint8x16_t)
31833 {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15});
31834#else
31835 return __builtin_shuffle (__a, __b, (uint8x16_t)
31836 {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23});
31837#endif
31838}
31839
a063e204
TC
31840__extension__ extern __inline int16x8_t
31841__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31842vzip1q_s16 (int16x8_t __a, int16x8_t __b)
31843{
31844#ifdef __AARCH64EB__
31845 return __builtin_shuffle (__a, __b, (uint16x8_t)
31846 {12, 4, 13, 5, 14, 6, 15, 7});
31847#else
31848 return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11});
31849#endif
31850}
31851
a063e204
TC
31852__extension__ extern __inline int32x4_t
31853__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31854vzip1q_s32 (int32x4_t __a, int32x4_t __b)
31855{
31856#ifdef __AARCH64EB__
31857 return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3});
31858#else
31859 return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5});
31860#endif
31861}
31862
a063e204
TC
31863__extension__ extern __inline int64x2_t
31864__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31865vzip1q_s64 (int64x2_t __a, int64x2_t __b)
31866{
31867#ifdef __AARCH64EB__
31868 return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1});
31869#else
31870 return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2});
31871#endif
31872}
31873
a063e204
TC
31874__extension__ extern __inline uint8x16_t
31875__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31876vzip1q_u8 (uint8x16_t __a, uint8x16_t __b)
31877{
31878#ifdef __AARCH64EB__
31879 return __builtin_shuffle (__a, __b, (uint8x16_t)
31880 {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15});
31881#else
31882 return __builtin_shuffle (__a, __b, (uint8x16_t)
31883 {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23});
31884#endif
31885}
31886
a063e204
TC
31887__extension__ extern __inline uint16x8_t
31888__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31889vzip1q_u16 (uint16x8_t __a, uint16x8_t __b)
31890{
31891#ifdef __AARCH64EB__
31892 return __builtin_shuffle (__a, __b, (uint16x8_t)
31893 {12, 4, 13, 5, 14, 6, 15, 7});
31894#else
31895 return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11});
31896#endif
31897}
31898
a063e204
TC
31899__extension__ extern __inline uint32x4_t
31900__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31901vzip1q_u32 (uint32x4_t __a, uint32x4_t __b)
31902{
31903#ifdef __AARCH64EB__
31904 return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3});
31905#else
31906 return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5});
31907#endif
31908}
31909
a063e204
TC
31910__extension__ extern __inline uint64x2_t
31911__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31912vzip1q_u64 (uint64x2_t __a, uint64x2_t __b)
31913{
31914#ifdef __AARCH64EB__
31915 return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1});
31916#else
31917 return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2});
31918#endif
31919}
31920
e8e81839
KT
31921__extension__ extern __inline poly64x2_t
31922__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
31923vzip1q_p64 (poly64x2_t __a, poly64x2_t __b)
31924{
31925#ifdef __AARCH64EB__
31926 return __builtin_shuffle (__a, __b, (poly64x2_t) {3, 1});
31927#else
31928 return __builtin_shuffle (__a, __b, (poly64x2_t) {0, 2});
31929#endif
31930}
31931
a063e204
TC
31932__extension__ extern __inline float16x4_t
31933__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
31934vzip2_f16 (float16x4_t __a, float16x4_t __b)
31935{
31936#ifdef __AARCH64EB__
31937 return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1});
31938#else
31939 return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7});
31940#endif
31941}
31942
a063e204
TC
31943__extension__ extern __inline float32x2_t
31944__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31945vzip2_f32 (float32x2_t __a, float32x2_t __b)
31946{
31947#ifdef __AARCH64EB__
31948 return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0});
31949#else
31950 return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3});
31951#endif
31952}
31953
a063e204
TC
31954__extension__ extern __inline poly8x8_t
31955__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31956vzip2_p8 (poly8x8_t __a, poly8x8_t __b)
31957{
31958#ifdef __AARCH64EB__
31959 return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3});
31960#else
31961 return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15});
31962#endif
31963}
31964
a063e204
TC
31965__extension__ extern __inline poly16x4_t
31966__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31967vzip2_p16 (poly16x4_t __a, poly16x4_t __b)
31968{
31969#ifdef __AARCH64EB__
31970 return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1});
31971#else
31972 return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7});
31973#endif
31974}
31975
a063e204
TC
31976__extension__ extern __inline int8x8_t
31977__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31978vzip2_s8 (int8x8_t __a, int8x8_t __b)
31979{
31980#ifdef __AARCH64EB__
31981 return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3});
31982#else
31983 return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15});
31984#endif
31985}
31986
a063e204
TC
31987__extension__ extern __inline int16x4_t
31988__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
31989vzip2_s16 (int16x4_t __a, int16x4_t __b)
31990{
31991#ifdef __AARCH64EB__
31992 return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1});
31993#else
31994 return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7});
31995#endif
31996}
31997
a063e204
TC
31998__extension__ extern __inline int32x2_t
31999__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32000vzip2_s32 (int32x2_t __a, int32x2_t __b)
32001{
32002#ifdef __AARCH64EB__
32003 return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0});
32004#else
32005 return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3});
32006#endif
32007}
32008
a063e204
TC
32009__extension__ extern __inline uint8x8_t
32010__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32011vzip2_u8 (uint8x8_t __a, uint8x8_t __b)
32012{
32013#ifdef __AARCH64EB__
32014 return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3});
32015#else
32016 return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15});
32017#endif
32018}
32019
a063e204
TC
32020__extension__ extern __inline uint16x4_t
32021__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32022vzip2_u16 (uint16x4_t __a, uint16x4_t __b)
32023{
32024#ifdef __AARCH64EB__
32025 return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1});
32026#else
32027 return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7});
32028#endif
32029}
32030
a063e204
TC
32031__extension__ extern __inline uint32x2_t
32032__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32033vzip2_u32 (uint32x2_t __a, uint32x2_t __b)
32034{
32035#ifdef __AARCH64EB__
32036 return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0});
32037#else
32038 return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3});
32039#endif
32040}
32041
a063e204
TC
32042__extension__ extern __inline float16x8_t
32043__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
358decd5
JW
32044vzip2q_f16 (float16x8_t __a, float16x8_t __b)
32045{
32046#ifdef __AARCH64EB__
32047 return __builtin_shuffle (__a, __b,
32048 (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3});
32049#else
32050 return __builtin_shuffle (__a, __b,
32051 (uint16x8_t) {4, 12, 5, 13, 6, 14, 7, 15});
32052#endif
32053}
32054
a063e204
TC
32055__extension__ extern __inline float32x4_t
32056__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32057vzip2q_f32 (float32x4_t __a, float32x4_t __b)
32058{
32059#ifdef __AARCH64EB__
32060 return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1});
32061#else
32062 return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7});
32063#endif
32064}
32065
a063e204
TC
32066__extension__ extern __inline float64x2_t
32067__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32068vzip2q_f64 (float64x2_t __a, float64x2_t __b)
32069{
32070#ifdef __AARCH64EB__
32071 return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0});
32072#else
32073 return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3});
32074#endif
32075}
32076
a063e204
TC
32077__extension__ extern __inline poly8x16_t
32078__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32079vzip2q_p8 (poly8x16_t __a, poly8x16_t __b)
32080{
32081#ifdef __AARCH64EB__
32082 return __builtin_shuffle (__a, __b, (uint8x16_t)
32083 {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7});
32084#else
32085 return __builtin_shuffle (__a, __b, (uint8x16_t)
32086 {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31});
32087#endif
32088}
32089
a063e204
TC
32090__extension__ extern __inline poly16x8_t
32091__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32092vzip2q_p16 (poly16x8_t __a, poly16x8_t __b)
32093{
32094#ifdef __AARCH64EB__
32095 return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3});
32096#else
32097 return __builtin_shuffle (__a, __b, (uint16x8_t)
32098 {4, 12, 5, 13, 6, 14, 7, 15});
32099#endif
32100}
32101
a063e204
TC
32102__extension__ extern __inline int8x16_t
32103__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32104vzip2q_s8 (int8x16_t __a, int8x16_t __b)
32105{
32106#ifdef __AARCH64EB__
32107 return __builtin_shuffle (__a, __b, (uint8x16_t)
32108 {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7});
32109#else
32110 return __builtin_shuffle (__a, __b, (uint8x16_t)
32111 {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31});
32112#endif
32113}
32114
a063e204
TC
32115__extension__ extern __inline int16x8_t
32116__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32117vzip2q_s16 (int16x8_t __a, int16x8_t __b)
32118{
32119#ifdef __AARCH64EB__
32120 return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3});
32121#else
32122 return __builtin_shuffle (__a, __b, (uint16x8_t)
32123 {4, 12, 5, 13, 6, 14, 7, 15});
32124#endif
32125}
32126
a063e204
TC
32127__extension__ extern __inline int32x4_t
32128__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32129vzip2q_s32 (int32x4_t __a, int32x4_t __b)
32130{
32131#ifdef __AARCH64EB__
32132 return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1});
32133#else
32134 return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7});
32135#endif
32136}
32137
a063e204
TC
32138__extension__ extern __inline int64x2_t
32139__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32140vzip2q_s64 (int64x2_t __a, int64x2_t __b)
32141{
32142#ifdef __AARCH64EB__
32143 return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0});
32144#else
32145 return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3});
32146#endif
32147}
32148
a063e204
TC
32149__extension__ extern __inline uint8x16_t
32150__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32151vzip2q_u8 (uint8x16_t __a, uint8x16_t __b)
32152{
32153#ifdef __AARCH64EB__
32154 return __builtin_shuffle (__a, __b, (uint8x16_t)
32155 {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7});
32156#else
32157 return __builtin_shuffle (__a, __b, (uint8x16_t)
32158 {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31});
32159#endif
32160}
32161
a063e204
TC
32162__extension__ extern __inline uint16x8_t
32163__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32164vzip2q_u16 (uint16x8_t __a, uint16x8_t __b)
32165{
32166#ifdef __AARCH64EB__
32167 return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3});
32168#else
32169 return __builtin_shuffle (__a, __b, (uint16x8_t)
32170 {4, 12, 5, 13, 6, 14, 7, 15});
32171#endif
32172}
32173
a063e204
TC
32174__extension__ extern __inline uint32x4_t
32175__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32176vzip2q_u32 (uint32x4_t __a, uint32x4_t __b)
32177{
32178#ifdef __AARCH64EB__
32179 return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1});
32180#else
32181 return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7});
32182#endif
32183}
32184
a063e204
TC
32185__extension__ extern __inline uint64x2_t
32186__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
7cb0403f
AL
32187vzip2q_u64 (uint64x2_t __a, uint64x2_t __b)
32188{
32189#ifdef __AARCH64EB__
32190 return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0});
32191#else
32192 return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3});
32193#endif
32194}
32195
e8e81839
KT
32196__extension__ extern __inline poly64x2_t
32197__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
32198vzip2q_p64 (poly64x2_t __a, poly64x2_t __b)
32199{
32200#ifdef __AARCH64EB__
32201 return __builtin_shuffle (__a, __b, (poly64x2_t) {2, 0});
32202#else
32203 return __builtin_shuffle (__a, __b, (poly64x2_t) {1, 3});
32204#endif
32205}
32206
43e9d192
IB
32207__INTERLEAVE_LIST (zip)
32208
32209#undef __INTERLEAVE_LIST
32210#undef __DEFINTERLEAVE
32211
32212/* End of optimal implementations in approved order. */
32213
daef0a8c
JW
32214#pragma GCC pop_options
32215
32216/* ARMv8.2-A FP16 intrinsics. */
32217
d7f33f07
JW
32218#include "arm_fp16.h"
32219
daef0a8c
JW
32220#pragma GCC push_options
32221#pragma GCC target ("arch=armv8.2-a+fp16")
32222
32223/* ARMv8.2-A FP16 one operand vector intrinsics. */
32224
a063e204
TC
32225__extension__ extern __inline float16x4_t
32226__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32227vabs_f16 (float16x4_t __a)
32228{
32229 return __builtin_aarch64_absv4hf (__a);
32230}
32231
a063e204
TC
32232__extension__ extern __inline float16x8_t
32233__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32234vabsq_f16 (float16x8_t __a)
32235{
32236 return __builtin_aarch64_absv8hf (__a);
32237}
32238
a063e204
TC
32239__extension__ extern __inline uint16x4_t
32240__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32241vceqz_f16 (float16x4_t __a)
32242{
32243 return __builtin_aarch64_cmeqv4hf_uss (__a, vdup_n_f16 (0.0f));
32244}
32245
a063e204
TC
32246__extension__ extern __inline uint16x8_t
32247__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32248vceqzq_f16 (float16x8_t __a)
32249{
32250 return __builtin_aarch64_cmeqv8hf_uss (__a, vdupq_n_f16 (0.0f));
32251}
32252
a063e204
TC
32253__extension__ extern __inline uint16x4_t
32254__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32255vcgez_f16 (float16x4_t __a)
32256{
32257 return __builtin_aarch64_cmgev4hf_uss (__a, vdup_n_f16 (0.0f));
32258}
32259
a063e204
TC
32260__extension__ extern __inline uint16x8_t
32261__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32262vcgezq_f16 (float16x8_t __a)
32263{
32264 return __builtin_aarch64_cmgev8hf_uss (__a, vdupq_n_f16 (0.0f));
32265}
32266
a063e204
TC
32267__extension__ extern __inline uint16x4_t
32268__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32269vcgtz_f16 (float16x4_t __a)
32270{
32271 return __builtin_aarch64_cmgtv4hf_uss (__a, vdup_n_f16 (0.0f));
32272}
32273
a063e204
TC
32274__extension__ extern __inline uint16x8_t
32275__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32276vcgtzq_f16 (float16x8_t __a)
32277{
32278 return __builtin_aarch64_cmgtv8hf_uss (__a, vdupq_n_f16 (0.0f));
32279}
32280
a063e204
TC
32281__extension__ extern __inline uint16x4_t
32282__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32283vclez_f16 (float16x4_t __a)
32284{
32285 return __builtin_aarch64_cmlev4hf_uss (__a, vdup_n_f16 (0.0f));
32286}
32287
a063e204
TC
32288__extension__ extern __inline uint16x8_t
32289__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32290vclezq_f16 (float16x8_t __a)
32291{
32292 return __builtin_aarch64_cmlev8hf_uss (__a, vdupq_n_f16 (0.0f));
32293}
32294
a063e204
TC
32295__extension__ extern __inline uint16x4_t
32296__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32297vcltz_f16 (float16x4_t __a)
32298{
32299 return __builtin_aarch64_cmltv4hf_uss (__a, vdup_n_f16 (0.0f));
32300}
32301
a063e204
TC
32302__extension__ extern __inline uint16x8_t
32303__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32304vcltzq_f16 (float16x8_t __a)
32305{
32306 return __builtin_aarch64_cmltv8hf_uss (__a, vdupq_n_f16 (0.0f));
32307}
32308
a063e204
TC
32309__extension__ extern __inline float16x4_t
32310__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32311vcvt_f16_s16 (int16x4_t __a)
32312{
32313 return __builtin_aarch64_floatv4hiv4hf (__a);
32314}
32315
a063e204
TC
32316__extension__ extern __inline float16x8_t
32317__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32318vcvtq_f16_s16 (int16x8_t __a)
32319{
32320 return __builtin_aarch64_floatv8hiv8hf (__a);
32321}
32322
a063e204
TC
32323__extension__ extern __inline float16x4_t
32324__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32325vcvt_f16_u16 (uint16x4_t __a)
32326{
32327 return __builtin_aarch64_floatunsv4hiv4hf ((int16x4_t) __a);
32328}
32329
a063e204
TC
32330__extension__ extern __inline float16x8_t
32331__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32332vcvtq_f16_u16 (uint16x8_t __a)
32333{
32334 return __builtin_aarch64_floatunsv8hiv8hf ((int16x8_t) __a);
32335}
32336
a063e204
TC
32337__extension__ extern __inline int16x4_t
32338__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32339vcvt_s16_f16 (float16x4_t __a)
32340{
32341 return __builtin_aarch64_lbtruncv4hfv4hi (__a);
32342}
32343
a063e204
TC
32344__extension__ extern __inline int16x8_t
32345__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32346vcvtq_s16_f16 (float16x8_t __a)
32347{
32348 return __builtin_aarch64_lbtruncv8hfv8hi (__a);
32349}
32350
a063e204
TC
32351__extension__ extern __inline uint16x4_t
32352__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32353vcvt_u16_f16 (float16x4_t __a)
32354{
32355 return __builtin_aarch64_lbtruncuv4hfv4hi_us (__a);
32356}
32357
a063e204
TC
32358__extension__ extern __inline uint16x8_t
32359__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32360vcvtq_u16_f16 (float16x8_t __a)
32361{
32362 return __builtin_aarch64_lbtruncuv8hfv8hi_us (__a);
32363}
32364
a063e204
TC
32365__extension__ extern __inline int16x4_t
32366__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32367vcvta_s16_f16 (float16x4_t __a)
32368{
32369 return __builtin_aarch64_lroundv4hfv4hi (__a);
32370}
32371
a063e204
TC
32372__extension__ extern __inline int16x8_t
32373__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32374vcvtaq_s16_f16 (float16x8_t __a)
32375{
32376 return __builtin_aarch64_lroundv8hfv8hi (__a);
32377}
32378
a063e204
TC
32379__extension__ extern __inline uint16x4_t
32380__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32381vcvta_u16_f16 (float16x4_t __a)
32382{
32383 return __builtin_aarch64_lrounduv4hfv4hi_us (__a);
32384}
32385
a063e204
TC
32386__extension__ extern __inline uint16x8_t
32387__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32388vcvtaq_u16_f16 (float16x8_t __a)
32389{
32390 return __builtin_aarch64_lrounduv8hfv8hi_us (__a);
32391}
32392
a063e204
TC
32393__extension__ extern __inline int16x4_t
32394__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32395vcvtm_s16_f16 (float16x4_t __a)
32396{
32397 return __builtin_aarch64_lfloorv4hfv4hi (__a);
32398}
32399
a063e204
TC
32400__extension__ extern __inline int16x8_t
32401__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32402vcvtmq_s16_f16 (float16x8_t __a)
32403{
32404 return __builtin_aarch64_lfloorv8hfv8hi (__a);
32405}
32406
a063e204
TC
32407__extension__ extern __inline uint16x4_t
32408__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32409vcvtm_u16_f16 (float16x4_t __a)
32410{
32411 return __builtin_aarch64_lflooruv4hfv4hi_us (__a);
32412}
32413
a063e204
TC
32414__extension__ extern __inline uint16x8_t
32415__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32416vcvtmq_u16_f16 (float16x8_t __a)
32417{
32418 return __builtin_aarch64_lflooruv8hfv8hi_us (__a);
32419}
32420
a063e204
TC
32421__extension__ extern __inline int16x4_t
32422__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32423vcvtn_s16_f16 (float16x4_t __a)
32424{
32425 return __builtin_aarch64_lfrintnv4hfv4hi (__a);
32426}
32427
a063e204
TC
32428__extension__ extern __inline int16x8_t
32429__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32430vcvtnq_s16_f16 (float16x8_t __a)
32431{
32432 return __builtin_aarch64_lfrintnv8hfv8hi (__a);
32433}
32434
a063e204
TC
32435__extension__ extern __inline uint16x4_t
32436__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32437vcvtn_u16_f16 (float16x4_t __a)
32438{
32439 return __builtin_aarch64_lfrintnuv4hfv4hi_us (__a);
32440}
32441
a063e204
TC
32442__extension__ extern __inline uint16x8_t
32443__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32444vcvtnq_u16_f16 (float16x8_t __a)
32445{
32446 return __builtin_aarch64_lfrintnuv8hfv8hi_us (__a);
32447}
32448
a063e204
TC
32449__extension__ extern __inline int16x4_t
32450__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32451vcvtp_s16_f16 (float16x4_t __a)
32452{
32453 return __builtin_aarch64_lceilv4hfv4hi (__a);
32454}
32455
a063e204
TC
32456__extension__ extern __inline int16x8_t
32457__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32458vcvtpq_s16_f16 (float16x8_t __a)
32459{
32460 return __builtin_aarch64_lceilv8hfv8hi (__a);
32461}
32462
a063e204
TC
32463__extension__ extern __inline uint16x4_t
32464__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32465vcvtp_u16_f16 (float16x4_t __a)
32466{
32467 return __builtin_aarch64_lceiluv4hfv4hi_us (__a);
32468}
32469
a063e204
TC
32470__extension__ extern __inline uint16x8_t
32471__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32472vcvtpq_u16_f16 (float16x8_t __a)
32473{
32474 return __builtin_aarch64_lceiluv8hfv8hi_us (__a);
32475}
32476
a063e204
TC
32477__extension__ extern __inline float16x4_t
32478__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32479vneg_f16 (float16x4_t __a)
32480{
32481 return -__a;
32482}
32483
a063e204
TC
32484__extension__ extern __inline float16x8_t
32485__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32486vnegq_f16 (float16x8_t __a)
32487{
32488 return -__a;
32489}
32490
a063e204
TC
32491__extension__ extern __inline float16x4_t
32492__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32493vrecpe_f16 (float16x4_t __a)
32494{
32495 return __builtin_aarch64_frecpev4hf (__a);
32496}
32497
a063e204
TC
32498__extension__ extern __inline float16x8_t
32499__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32500vrecpeq_f16 (float16x8_t __a)
32501{
32502 return __builtin_aarch64_frecpev8hf (__a);
32503}
32504
a063e204
TC
32505__extension__ extern __inline float16x4_t
32506__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32507vrnd_f16 (float16x4_t __a)
32508{
32509 return __builtin_aarch64_btruncv4hf (__a);
32510}
32511
a063e204
TC
32512__extension__ extern __inline float16x8_t
32513__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32514vrndq_f16 (float16x8_t __a)
32515{
32516 return __builtin_aarch64_btruncv8hf (__a);
32517}
32518
a063e204
TC
32519__extension__ extern __inline float16x4_t
32520__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32521vrnda_f16 (float16x4_t __a)
32522{
32523 return __builtin_aarch64_roundv4hf (__a);
32524}
32525
a063e204
TC
32526__extension__ extern __inline float16x8_t
32527__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32528vrndaq_f16 (float16x8_t __a)
32529{
32530 return __builtin_aarch64_roundv8hf (__a);
32531}
32532
a063e204
TC
32533__extension__ extern __inline float16x4_t
32534__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32535vrndi_f16 (float16x4_t __a)
32536{
32537 return __builtin_aarch64_nearbyintv4hf (__a);
32538}
32539
a063e204
TC
32540__extension__ extern __inline float16x8_t
32541__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32542vrndiq_f16 (float16x8_t __a)
32543{
32544 return __builtin_aarch64_nearbyintv8hf (__a);
32545}
32546
a063e204
TC
32547__extension__ extern __inline float16x4_t
32548__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32549vrndm_f16 (float16x4_t __a)
32550{
32551 return __builtin_aarch64_floorv4hf (__a);
32552}
32553
a063e204
TC
32554__extension__ extern __inline float16x8_t
32555__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32556vrndmq_f16 (float16x8_t __a)
32557{
32558 return __builtin_aarch64_floorv8hf (__a);
32559}
32560
a063e204
TC
32561__extension__ extern __inline float16x4_t
32562__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32563vrndn_f16 (float16x4_t __a)
32564{
32565 return __builtin_aarch64_frintnv4hf (__a);
32566}
32567
a063e204
TC
32568__extension__ extern __inline float16x8_t
32569__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32570vrndnq_f16 (float16x8_t __a)
32571{
32572 return __builtin_aarch64_frintnv8hf (__a);
32573}
32574
a063e204
TC
32575__extension__ extern __inline float16x4_t
32576__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32577vrndp_f16 (float16x4_t __a)
32578{
32579 return __builtin_aarch64_ceilv4hf (__a);
32580}
32581
a063e204
TC
32582__extension__ extern __inline float16x8_t
32583__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32584vrndpq_f16 (float16x8_t __a)
32585{
32586 return __builtin_aarch64_ceilv8hf (__a);
32587}
32588
a063e204
TC
32589__extension__ extern __inline float16x4_t
32590__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32591vrndx_f16 (float16x4_t __a)
32592{
32593 return __builtin_aarch64_rintv4hf (__a);
32594}
32595
a063e204
TC
32596__extension__ extern __inline float16x8_t
32597__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
daef0a8c
JW
32598vrndxq_f16 (float16x8_t __a)
32599{
32600 return __builtin_aarch64_rintv8hf (__a);
32601}
32602
a063e204
TC
32603__extension__ extern __inline float16x4_t
32604__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32605vrsqrte_f16 (float16x4_t __a)
daef0a8c 32606{
9a3afc35 32607 return __builtin_aarch64_rsqrtev4hf (__a);
daef0a8c
JW
32608}
32609
a063e204
TC
32610__extension__ extern __inline float16x8_t
32611__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32612vrsqrteq_f16 (float16x8_t __a)
daef0a8c 32613{
9a3afc35 32614 return __builtin_aarch64_rsqrtev8hf (__a);
daef0a8c
JW
32615}
32616
a063e204
TC
32617__extension__ extern __inline float16x4_t
32618__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32619vsqrt_f16 (float16x4_t __a)
daef0a8c 32620{
9a3afc35 32621 return __builtin_aarch64_sqrtv4hf (__a);
daef0a8c
JW
32622}
32623
a063e204
TC
32624__extension__ extern __inline float16x8_t
32625__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32626vsqrtq_f16 (float16x8_t __a)
daef0a8c 32627{
9a3afc35 32628 return __builtin_aarch64_sqrtv8hf (__a);
daef0a8c
JW
32629}
32630
33d72b63
JW
32631/* ARMv8.2-A FP16 two operands vector intrinsics. */
32632
a063e204
TC
32633__extension__ extern __inline float16x4_t
32634__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32635vadd_f16 (float16x4_t __a, float16x4_t __b)
32636{
32637 return __a + __b;
32638}
32639
a063e204
TC
32640__extension__ extern __inline float16x8_t
32641__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32642vaddq_f16 (float16x8_t __a, float16x8_t __b)
32643{
32644 return __a + __b;
32645}
32646
a063e204
TC
32647__extension__ extern __inline float16x4_t
32648__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32649vabd_f16 (float16x4_t __a, float16x4_t __b)
33d72b63 32650{
9a3afc35 32651 return __builtin_aarch64_fabdv4hf (__a, __b);
33d72b63
JW
32652}
32653
a063e204
TC
32654__extension__ extern __inline float16x8_t
32655__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32656vabdq_f16 (float16x8_t __a, float16x8_t __b)
33d72b63 32657{
9a3afc35 32658 return __builtin_aarch64_fabdv8hf (__a, __b);
33d72b63
JW
32659}
32660
a063e204
TC
32661__extension__ extern __inline uint16x4_t
32662__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32663vcage_f16 (float16x4_t __a, float16x4_t __b)
32664{
32665 return __builtin_aarch64_facgev4hf_uss (__a, __b);
32666}
32667
a063e204
TC
32668__extension__ extern __inline uint16x8_t
32669__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32670vcageq_f16 (float16x8_t __a, float16x8_t __b)
32671{
32672 return __builtin_aarch64_facgev8hf_uss (__a, __b);
32673}
32674
a063e204
TC
32675__extension__ extern __inline uint16x4_t
32676__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32677vcagt_f16 (float16x4_t __a, float16x4_t __b)
32678{
32679 return __builtin_aarch64_facgtv4hf_uss (__a, __b);
32680}
32681
a063e204
TC
32682__extension__ extern __inline uint16x8_t
32683__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32684vcagtq_f16 (float16x8_t __a, float16x8_t __b)
32685{
32686 return __builtin_aarch64_facgtv8hf_uss (__a, __b);
32687}
32688
a063e204
TC
32689__extension__ extern __inline uint16x4_t
32690__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32691vcale_f16 (float16x4_t __a, float16x4_t __b)
32692{
32693 return __builtin_aarch64_faclev4hf_uss (__a, __b);
32694}
32695
a063e204
TC
32696__extension__ extern __inline uint16x8_t
32697__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32698vcaleq_f16 (float16x8_t __a, float16x8_t __b)
32699{
32700 return __builtin_aarch64_faclev8hf_uss (__a, __b);
32701}
32702
a063e204
TC
32703__extension__ extern __inline uint16x4_t
32704__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32705vcalt_f16 (float16x4_t __a, float16x4_t __b)
32706{
32707 return __builtin_aarch64_facltv4hf_uss (__a, __b);
32708}
32709
a063e204
TC
32710__extension__ extern __inline uint16x8_t
32711__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32712vcaltq_f16 (float16x8_t __a, float16x8_t __b)
32713{
32714 return __builtin_aarch64_facltv8hf_uss (__a, __b);
32715}
32716
a063e204
TC
32717__extension__ extern __inline uint16x4_t
32718__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32719vceq_f16 (float16x4_t __a, float16x4_t __b)
32720{
32721 return __builtin_aarch64_cmeqv4hf_uss (__a, __b);
32722}
32723
a063e204
TC
32724__extension__ extern __inline uint16x8_t
32725__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32726vceqq_f16 (float16x8_t __a, float16x8_t __b)
32727{
32728 return __builtin_aarch64_cmeqv8hf_uss (__a, __b);
32729}
32730
a063e204
TC
32731__extension__ extern __inline uint16x4_t
32732__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32733vcge_f16 (float16x4_t __a, float16x4_t __b)
32734{
32735 return __builtin_aarch64_cmgev4hf_uss (__a, __b);
32736}
32737
a063e204
TC
32738__extension__ extern __inline uint16x8_t
32739__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32740vcgeq_f16 (float16x8_t __a, float16x8_t __b)
32741{
32742 return __builtin_aarch64_cmgev8hf_uss (__a, __b);
32743}
32744
a063e204
TC
32745__extension__ extern __inline uint16x4_t
32746__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32747vcgt_f16 (float16x4_t __a, float16x4_t __b)
32748{
32749 return __builtin_aarch64_cmgtv4hf_uss (__a, __b);
32750}
32751
a063e204
TC
32752__extension__ extern __inline uint16x8_t
32753__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32754vcgtq_f16 (float16x8_t __a, float16x8_t __b)
32755{
32756 return __builtin_aarch64_cmgtv8hf_uss (__a, __b);
32757}
32758
a063e204
TC
32759__extension__ extern __inline uint16x4_t
32760__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32761vcle_f16 (float16x4_t __a, float16x4_t __b)
32762{
32763 return __builtin_aarch64_cmlev4hf_uss (__a, __b);
32764}
32765
a063e204
TC
32766__extension__ extern __inline uint16x8_t
32767__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32768vcleq_f16 (float16x8_t __a, float16x8_t __b)
32769{
32770 return __builtin_aarch64_cmlev8hf_uss (__a, __b);
32771}
32772
a063e204
TC
32773__extension__ extern __inline uint16x4_t
32774__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32775vclt_f16 (float16x4_t __a, float16x4_t __b)
32776{
32777 return __builtin_aarch64_cmltv4hf_uss (__a, __b);
32778}
32779
a063e204
TC
32780__extension__ extern __inline uint16x8_t
32781__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32782vcltq_f16 (float16x8_t __a, float16x8_t __b)
32783{
32784 return __builtin_aarch64_cmltv8hf_uss (__a, __b);
32785}
32786
a063e204
TC
32787__extension__ extern __inline float16x4_t
32788__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32789vcvt_n_f16_s16 (int16x4_t __a, const int __b)
32790{
32791 return __builtin_aarch64_scvtfv4hi (__a, __b);
32792}
32793
a063e204
TC
32794__extension__ extern __inline float16x8_t
32795__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32796vcvtq_n_f16_s16 (int16x8_t __a, const int __b)
32797{
32798 return __builtin_aarch64_scvtfv8hi (__a, __b);
32799}
32800
a063e204
TC
32801__extension__ extern __inline float16x4_t
32802__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32803vcvt_n_f16_u16 (uint16x4_t __a, const int __b)
32804{
32805 return __builtin_aarch64_ucvtfv4hi_sus (__a, __b);
32806}
32807
a063e204
TC
32808__extension__ extern __inline float16x8_t
32809__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32810vcvtq_n_f16_u16 (uint16x8_t __a, const int __b)
32811{
32812 return __builtin_aarch64_ucvtfv8hi_sus (__a, __b);
32813}
32814
a063e204
TC
32815__extension__ extern __inline int16x4_t
32816__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32817vcvt_n_s16_f16 (float16x4_t __a, const int __b)
32818{
32819 return __builtin_aarch64_fcvtzsv4hf (__a, __b);
32820}
32821
a063e204
TC
32822__extension__ extern __inline int16x8_t
32823__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32824vcvtq_n_s16_f16 (float16x8_t __a, const int __b)
32825{
32826 return __builtin_aarch64_fcvtzsv8hf (__a, __b);
32827}
32828
a063e204
TC
32829__extension__ extern __inline uint16x4_t
32830__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32831vcvt_n_u16_f16 (float16x4_t __a, const int __b)
32832{
32833 return __builtin_aarch64_fcvtzuv4hf_uss (__a, __b);
32834}
32835
a063e204
TC
32836__extension__ extern __inline uint16x8_t
32837__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32838vcvtq_n_u16_f16 (float16x8_t __a, const int __b)
32839{
32840 return __builtin_aarch64_fcvtzuv8hf_uss (__a, __b);
32841}
32842
a063e204
TC
32843__extension__ extern __inline float16x4_t
32844__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32845vdiv_f16 (float16x4_t __a, float16x4_t __b)
32846{
32847 return __a / __b;
32848}
32849
a063e204
TC
32850__extension__ extern __inline float16x8_t
32851__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32852vdivq_f16 (float16x8_t __a, float16x8_t __b)
32853{
32854 return __a / __b;
32855}
32856
a063e204
TC
32857__extension__ extern __inline float16x4_t
32858__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32859vmax_f16 (float16x4_t __a, float16x4_t __b)
32860{
32861 return __builtin_aarch64_smax_nanv4hf (__a, __b);
32862}
32863
a063e204
TC
32864__extension__ extern __inline float16x8_t
32865__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32866vmaxq_f16 (float16x8_t __a, float16x8_t __b)
32867{
32868 return __builtin_aarch64_smax_nanv8hf (__a, __b);
32869}
32870
a063e204
TC
32871__extension__ extern __inline float16x4_t
32872__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32873vmaxnm_f16 (float16x4_t __a, float16x4_t __b)
32874{
32875 return __builtin_aarch64_fmaxv4hf (__a, __b);
32876}
32877
a063e204
TC
32878__extension__ extern __inline float16x8_t
32879__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32880vmaxnmq_f16 (float16x8_t __a, float16x8_t __b)
32881{
32882 return __builtin_aarch64_fmaxv8hf (__a, __b);
32883}
32884
a063e204
TC
32885__extension__ extern __inline float16x4_t
32886__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32887vmin_f16 (float16x4_t __a, float16x4_t __b)
32888{
32889 return __builtin_aarch64_smin_nanv4hf (__a, __b);
32890}
32891
a063e204
TC
32892__extension__ extern __inline float16x8_t
32893__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32894vminq_f16 (float16x8_t __a, float16x8_t __b)
32895{
32896 return __builtin_aarch64_smin_nanv8hf (__a, __b);
32897}
32898
a063e204
TC
32899__extension__ extern __inline float16x4_t
32900__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32901vminnm_f16 (float16x4_t __a, float16x4_t __b)
32902{
32903 return __builtin_aarch64_fminv4hf (__a, __b);
32904}
32905
a063e204
TC
32906__extension__ extern __inline float16x8_t
32907__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32908vminnmq_f16 (float16x8_t __a, float16x8_t __b)
32909{
32910 return __builtin_aarch64_fminv8hf (__a, __b);
32911}
32912
a063e204
TC
32913__extension__ extern __inline float16x4_t
32914__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32915vmul_f16 (float16x4_t __a, float16x4_t __b)
32916{
32917 return __a * __b;
32918}
32919
a063e204
TC
32920__extension__ extern __inline float16x8_t
32921__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32922vmulq_f16 (float16x8_t __a, float16x8_t __b)
32923{
32924 return __a * __b;
32925}
32926
a063e204
TC
32927__extension__ extern __inline float16x4_t
32928__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32929vmulx_f16 (float16x4_t __a, float16x4_t __b)
32930{
32931 return __builtin_aarch64_fmulxv4hf (__a, __b);
32932}
32933
a063e204
TC
32934__extension__ extern __inline float16x8_t
32935__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
32936vmulxq_f16 (float16x8_t __a, float16x8_t __b)
32937{
32938 return __builtin_aarch64_fmulxv8hf (__a, __b);
32939}
32940
a063e204
TC
32941__extension__ extern __inline float16x4_t
32942__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32943vpadd_f16 (float16x4_t __a, float16x4_t __b)
33d72b63 32944{
9a3afc35 32945 return __builtin_aarch64_faddpv4hf (__a, __b);
33d72b63
JW
32946}
32947
a063e204
TC
32948__extension__ extern __inline float16x8_t
32949__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32950vpaddq_f16 (float16x8_t __a, float16x8_t __b)
33d72b63 32951{
9a3afc35 32952 return __builtin_aarch64_faddpv8hf (__a, __b);
33d72b63
JW
32953}
32954
a063e204
TC
32955__extension__ extern __inline float16x4_t
32956__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32957vpmax_f16 (float16x4_t __a, float16x4_t __b)
33d72b63 32958{
9a3afc35 32959 return __builtin_aarch64_smax_nanpv4hf (__a, __b);
33d72b63
JW
32960}
32961
a063e204
TC
32962__extension__ extern __inline float16x8_t
32963__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32964vpmaxq_f16 (float16x8_t __a, float16x8_t __b)
33d72b63 32965{
9a3afc35 32966 return __builtin_aarch64_smax_nanpv8hf (__a, __b);
33d72b63
JW
32967}
32968
a063e204
TC
32969__extension__ extern __inline float16x4_t
32970__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32971vpmaxnm_f16 (float16x4_t __a, float16x4_t __b)
33d72b63 32972{
9a3afc35 32973 return __builtin_aarch64_smaxpv4hf (__a, __b);
33d72b63
JW
32974}
32975
a063e204
TC
32976__extension__ extern __inline float16x8_t
32977__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32978vpmaxnmq_f16 (float16x8_t __a, float16x8_t __b)
33d72b63 32979{
9a3afc35 32980 return __builtin_aarch64_smaxpv8hf (__a, __b);
33d72b63
JW
32981}
32982
a063e204
TC
32983__extension__ extern __inline float16x4_t
32984__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32985vpmin_f16 (float16x4_t __a, float16x4_t __b)
33d72b63 32986{
9a3afc35 32987 return __builtin_aarch64_smin_nanpv4hf (__a, __b);
33d72b63
JW
32988}
32989
a063e204
TC
32990__extension__ extern __inline float16x8_t
32991__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32992vpminq_f16 (float16x8_t __a, float16x8_t __b)
33d72b63 32993{
9a3afc35 32994 return __builtin_aarch64_smin_nanpv8hf (__a, __b);
33d72b63
JW
32995}
32996
a063e204
TC
32997__extension__ extern __inline float16x4_t
32998__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 32999vpminnm_f16 (float16x4_t __a, float16x4_t __b)
33d72b63 33000{
9a3afc35 33001 return __builtin_aarch64_sminpv4hf (__a, __b);
33d72b63
JW
33002}
33003
a063e204
TC
33004__extension__ extern __inline float16x8_t
33005__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 33006vpminnmq_f16 (float16x8_t __a, float16x8_t __b)
33d72b63 33007{
9a3afc35 33008 return __builtin_aarch64_sminpv8hf (__a, __b);
33d72b63
JW
33009}
33010
a063e204
TC
33011__extension__ extern __inline float16x4_t
33012__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
33013vrecps_f16 (float16x4_t __a, float16x4_t __b)
33014{
33015 return __builtin_aarch64_frecpsv4hf (__a, __b);
33016}
33017
a063e204
TC
33018__extension__ extern __inline float16x8_t
33019__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
33020vrecpsq_f16 (float16x8_t __a, float16x8_t __b)
33021{
33022 return __builtin_aarch64_frecpsv8hf (__a, __b);
33023}
33024
a063e204
TC
33025__extension__ extern __inline float16x4_t
33026__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 33027vrsqrts_f16 (float16x4_t __a, float16x4_t __b)
33d72b63 33028{
9a3afc35 33029 return __builtin_aarch64_rsqrtsv4hf (__a, __b);
33d72b63
JW
33030}
33031
a063e204
TC
33032__extension__ extern __inline float16x8_t
33033__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9a3afc35 33034vrsqrtsq_f16 (float16x8_t __a, float16x8_t __b)
33d72b63 33035{
9a3afc35 33036 return __builtin_aarch64_rsqrtsv8hf (__a, __b);
33d72b63
JW
33037}
33038
a063e204
TC
33039__extension__ extern __inline float16x4_t
33040__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
33041vsub_f16 (float16x4_t __a, float16x4_t __b)
33042{
33043 return __a - __b;
33044}
33045
a063e204
TC
33046__extension__ extern __inline float16x8_t
33047__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33d72b63
JW
33048vsubq_f16 (float16x8_t __a, float16x8_t __b)
33049{
33050 return __a - __b;
33051}
33052
89ed6d5f
JW
33053/* ARMv8.2-A FP16 three operands vector intrinsics. */
33054
a063e204
TC
33055__extension__ extern __inline float16x4_t
33056__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
89ed6d5f
JW
33057vfma_f16 (float16x4_t __a, float16x4_t __b, float16x4_t __c)
33058{
33059 return __builtin_aarch64_fmav4hf (__b, __c, __a);
33060}
33061
a063e204
TC
33062__extension__ extern __inline float16x8_t
33063__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
89ed6d5f
JW
33064vfmaq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c)
33065{
33066 return __builtin_aarch64_fmav8hf (__b, __c, __a);
33067}
33068
a063e204
TC
33069__extension__ extern __inline float16x4_t
33070__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
89ed6d5f
JW
33071vfms_f16 (float16x4_t __a, float16x4_t __b, float16x4_t __c)
33072{
33073 return __builtin_aarch64_fnmav4hf (__b, __c, __a);
33074}
33075
a063e204
TC
33076__extension__ extern __inline float16x8_t
33077__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
89ed6d5f
JW
33078vfmsq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c)
33079{
33080 return __builtin_aarch64_fnmav8hf (__b, __c, __a);
33081}
33082
ab2e8f01
JW
33083/* ARMv8.2-A FP16 lane vector intrinsics. */
33084
a063e204
TC
33085__extension__ extern __inline float16_t
33086__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bb6131db
JW
33087vfmah_lane_f16 (float16_t __a, float16_t __b,
33088 float16x4_t __c, const int __lane)
33089{
33090 return vfmah_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane));
33091}
33092
a063e204
TC
33093__extension__ extern __inline float16_t
33094__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bb6131db
JW
33095vfmah_laneq_f16 (float16_t __a, float16_t __b,
33096 float16x8_t __c, const int __lane)
33097{
33098 return vfmah_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane));
33099}
33100
a063e204
TC
33101__extension__ extern __inline float16x4_t
33102__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33103vfma_lane_f16 (float16x4_t __a, float16x4_t __b,
33104 float16x4_t __c, const int __lane)
33105{
33106 return vfma_f16 (__a, __b, __aarch64_vdup_lane_f16 (__c, __lane));
33107}
33108
a063e204
TC
33109__extension__ extern __inline float16x8_t
33110__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33111vfmaq_lane_f16 (float16x8_t __a, float16x8_t __b,
33112 float16x4_t __c, const int __lane)
33113{
33114 return vfmaq_f16 (__a, __b, __aarch64_vdupq_lane_f16 (__c, __lane));
33115}
33116
a063e204
TC
33117__extension__ extern __inline float16x4_t
33118__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33119vfma_laneq_f16 (float16x4_t __a, float16x4_t __b,
33120 float16x8_t __c, const int __lane)
33121{
33122 return vfma_f16 (__a, __b, __aarch64_vdup_laneq_f16 (__c, __lane));
33123}
33124
a063e204
TC
33125__extension__ extern __inline float16x8_t
33126__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33127vfmaq_laneq_f16 (float16x8_t __a, float16x8_t __b,
33128 float16x8_t __c, const int __lane)
33129{
33130 return vfmaq_f16 (__a, __b, __aarch64_vdupq_laneq_f16 (__c, __lane));
33131}
33132
a063e204
TC
33133__extension__ extern __inline float16x4_t
33134__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33135vfma_n_f16 (float16x4_t __a, float16x4_t __b, float16_t __c)
33136{
33137 return vfma_f16 (__a, __b, vdup_n_f16 (__c));
33138}
33139
a063e204
TC
33140__extension__ extern __inline float16x8_t
33141__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33142vfmaq_n_f16 (float16x8_t __a, float16x8_t __b, float16_t __c)
33143{
33144 return vfmaq_f16 (__a, __b, vdupq_n_f16 (__c));
33145}
33146
a063e204
TC
33147__extension__ extern __inline float16_t
33148__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bb6131db
JW
33149vfmsh_lane_f16 (float16_t __a, float16_t __b,
33150 float16x4_t __c, const int __lane)
33151{
33152 return vfmsh_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane));
33153}
33154
a063e204
TC
33155__extension__ extern __inline float16_t
33156__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bb6131db
JW
33157vfmsh_laneq_f16 (float16_t __a, float16_t __b,
33158 float16x8_t __c, const int __lane)
33159{
33160 return vfmsh_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane));
33161}
33162
a063e204
TC
33163__extension__ extern __inline float16x4_t
33164__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33165vfms_lane_f16 (float16x4_t __a, float16x4_t __b,
33166 float16x4_t __c, const int __lane)
33167{
33168 return vfms_f16 (__a, __b, __aarch64_vdup_lane_f16 (__c, __lane));
33169}
33170
a063e204
TC
33171__extension__ extern __inline float16x8_t
33172__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33173vfmsq_lane_f16 (float16x8_t __a, float16x8_t __b,
33174 float16x4_t __c, const int __lane)
33175{
33176 return vfmsq_f16 (__a, __b, __aarch64_vdupq_lane_f16 (__c, __lane));
33177}
33178
a063e204
TC
33179__extension__ extern __inline float16x4_t
33180__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33181vfms_laneq_f16 (float16x4_t __a, float16x4_t __b,
33182 float16x8_t __c, const int __lane)
33183{
33184 return vfms_f16 (__a, __b, __aarch64_vdup_laneq_f16 (__c, __lane));
33185}
33186
a063e204
TC
33187__extension__ extern __inline float16x8_t
33188__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33189vfmsq_laneq_f16 (float16x8_t __a, float16x8_t __b,
33190 float16x8_t __c, const int __lane)
33191{
33192 return vfmsq_f16 (__a, __b, __aarch64_vdupq_laneq_f16 (__c, __lane));
33193}
33194
a063e204
TC
33195__extension__ extern __inline float16x4_t
33196__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33197vfms_n_f16 (float16x4_t __a, float16x4_t __b, float16_t __c)
33198{
33199 return vfms_f16 (__a, __b, vdup_n_f16 (__c));
33200}
33201
a063e204
TC
33202__extension__ extern __inline float16x8_t
33203__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33204vfmsq_n_f16 (float16x8_t __a, float16x8_t __b, float16_t __c)
33205{
33206 return vfmsq_f16 (__a, __b, vdupq_n_f16 (__c));
33207}
33208
a063e204
TC
33209__extension__ extern __inline float16_t
33210__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bb6131db
JW
33211vmulh_lane_f16 (float16_t __a, float16x4_t __b, const int __lane)
33212{
33213 return __a * __aarch64_vget_lane_any (__b, __lane);
33214}
33215
a063e204
TC
33216__extension__ extern __inline float16x4_t
33217__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33218vmul_lane_f16 (float16x4_t __a, float16x4_t __b, const int __lane)
33219{
33220 return vmul_f16 (__a, vdup_n_f16 (__aarch64_vget_lane_any (__b, __lane)));
33221}
33222
a063e204
TC
33223__extension__ extern __inline float16x8_t
33224__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33225vmulq_lane_f16 (float16x8_t __a, float16x4_t __b, const int __lane)
33226{
33227 return vmulq_f16 (__a, vdupq_n_f16 (__aarch64_vget_lane_any (__b, __lane)));
33228}
33229
a063e204
TC
33230__extension__ extern __inline float16_t
33231__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bb6131db
JW
33232vmulh_laneq_f16 (float16_t __a, float16x8_t __b, const int __lane)
33233{
33234 return __a * __aarch64_vget_lane_any (__b, __lane);
33235}
33236
a063e204
TC
33237__extension__ extern __inline float16x4_t
33238__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33239vmul_laneq_f16 (float16x4_t __a, float16x8_t __b, const int __lane)
33240{
33241 return vmul_f16 (__a, vdup_n_f16 (__aarch64_vget_lane_any (__b, __lane)));
33242}
33243
a063e204
TC
33244__extension__ extern __inline float16x8_t
33245__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33246vmulq_laneq_f16 (float16x8_t __a, float16x8_t __b, const int __lane)
33247{
33248 return vmulq_f16 (__a, vdupq_n_f16 (__aarch64_vget_lane_any (__b, __lane)));
33249}
33250
a063e204
TC
33251__extension__ extern __inline float16x4_t
33252__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33253vmul_n_f16 (float16x4_t __a, float16_t __b)
33254{
33255 return vmul_lane_f16 (__a, vdup_n_f16 (__b), 0);
33256}
33257
a063e204
TC
33258__extension__ extern __inline float16x8_t
33259__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33260vmulq_n_f16 (float16x8_t __a, float16_t __b)
33261{
33262 return vmulq_laneq_f16 (__a, vdupq_n_f16 (__b), 0);
33263}
33264
a063e204
TC
33265__extension__ extern __inline float16_t
33266__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bb6131db
JW
33267vmulxh_lane_f16 (float16_t __a, float16x4_t __b, const int __lane)
33268{
33269 return vmulxh_f16 (__a, __aarch64_vget_lane_any (__b, __lane));
33270}
33271
a063e204
TC
33272__extension__ extern __inline float16x4_t
33273__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33274vmulx_lane_f16 (float16x4_t __a, float16x4_t __b, const int __lane)
33275{
33276 return vmulx_f16 (__a, __aarch64_vdup_lane_f16 (__b, __lane));
33277}
33278
a063e204
TC
33279__extension__ extern __inline float16x8_t
33280__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33281vmulxq_lane_f16 (float16x8_t __a, float16x4_t __b, const int __lane)
33282{
33283 return vmulxq_f16 (__a, __aarch64_vdupq_lane_f16 (__b, __lane));
33284}
33285
a063e204
TC
33286__extension__ extern __inline float16_t
33287__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
bb6131db
JW
33288vmulxh_laneq_f16 (float16_t __a, float16x8_t __b, const int __lane)
33289{
33290 return vmulxh_f16 (__a, __aarch64_vget_lane_any (__b, __lane));
33291}
33292
a063e204
TC
33293__extension__ extern __inline float16x4_t
33294__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33295vmulx_laneq_f16 (float16x4_t __a, float16x8_t __b, const int __lane)
33296{
33297 return vmulx_f16 (__a, __aarch64_vdup_laneq_f16 (__b, __lane));
33298}
33299
a063e204
TC
33300__extension__ extern __inline float16x8_t
33301__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33302vmulxq_laneq_f16 (float16x8_t __a, float16x8_t __b, const int __lane)
33303{
33304 return vmulxq_f16 (__a, __aarch64_vdupq_laneq_f16 (__b, __lane));
33305}
33306
a063e204
TC
33307__extension__ extern __inline float16x4_t
33308__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33309vmulx_n_f16 (float16x4_t __a, float16_t __b)
33310{
33311 return vmulx_f16 (__a, vdup_n_f16 (__b));
33312}
33313
a063e204
TC
33314__extension__ extern __inline float16x8_t
33315__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
ab2e8f01
JW
33316vmulxq_n_f16 (float16x8_t __a, float16_t __b)
33317{
33318 return vmulxq_f16 (__a, vdupq_n_f16 (__b));
33319}
33320
703bbcdf
JW
33321/* ARMv8.2-A FP16 reduction vector intrinsics. */
33322
a063e204
TC
33323__extension__ extern __inline float16_t
33324__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
703bbcdf
JW
33325vmaxv_f16 (float16x4_t __a)
33326{
33327 return __builtin_aarch64_reduc_smax_nan_scal_v4hf (__a);
33328}
33329
a063e204
TC
33330__extension__ extern __inline float16_t
33331__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
703bbcdf
JW
33332vmaxvq_f16 (float16x8_t __a)
33333{
33334 return __builtin_aarch64_reduc_smax_nan_scal_v8hf (__a);
33335}
33336
a063e204
TC
33337__extension__ extern __inline float16_t
33338__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
703bbcdf
JW
33339vminv_f16 (float16x4_t __a)
33340{
33341 return __builtin_aarch64_reduc_smin_nan_scal_v4hf (__a);
33342}
33343
a063e204
TC
33344__extension__ extern __inline float16_t
33345__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
703bbcdf
JW
33346vminvq_f16 (float16x8_t __a)
33347{
33348 return __builtin_aarch64_reduc_smin_nan_scal_v8hf (__a);
33349}
33350
a063e204
TC
33351__extension__ extern __inline float16_t
33352__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
703bbcdf
JW
33353vmaxnmv_f16 (float16x4_t __a)
33354{
33355 return __builtin_aarch64_reduc_smax_scal_v4hf (__a);
33356}
33357
a063e204
TC
33358__extension__ extern __inline float16_t
33359__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
703bbcdf
JW
33360vmaxnmvq_f16 (float16x8_t __a)
33361{
33362 return __builtin_aarch64_reduc_smax_scal_v8hf (__a);
33363}
33364
a063e204
TC
33365__extension__ extern __inline float16_t
33366__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
703bbcdf
JW
33367vminnmv_f16 (float16x4_t __a)
33368{
33369 return __builtin_aarch64_reduc_smin_scal_v4hf (__a);
33370}
33371
a063e204
TC
33372__extension__ extern __inline float16_t
33373__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
703bbcdf
JW
33374vminnmvq_f16 (float16x8_t __a)
33375{
33376 return __builtin_aarch64_reduc_smin_scal_v8hf (__a);
33377}
33378
daef0a8c
JW
33379#pragma GCC pop_options
33380
1274f086
TC
33381/* AdvSIMD Dot Product intrinsics. */
33382
33383#pragma GCC push_options
33384#pragma GCC target ("arch=armv8.2-a+dotprod")
33385
33386__extension__ extern __inline uint32x2_t
33387__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33388vdot_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b)
33389{
33390 return __builtin_aarch64_udotv8qi_uuuu (__r, __a, __b);
33391}
33392
33393__extension__ extern __inline uint32x4_t
33394__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33395vdotq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b)
33396{
33397 return __builtin_aarch64_udotv16qi_uuuu (__r, __a, __b);
33398}
33399
33400__extension__ extern __inline int32x2_t
33401__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33402vdot_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b)
33403{
33404 return __builtin_aarch64_sdotv8qi (__r, __a, __b);
33405}
33406
33407__extension__ extern __inline int32x4_t
33408__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33409vdotq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b)
33410{
33411 return __builtin_aarch64_sdotv16qi (__r, __a, __b);
33412}
33413
33414__extension__ extern __inline uint32x2_t
33415__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33416vdot_lane_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b, const int __index)
33417{
33418 return __builtin_aarch64_udot_lanev8qi_uuuus (__r, __a, __b, __index);
33419}
33420
33421__extension__ extern __inline uint32x2_t
33422__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33423vdot_laneq_u32 (uint32x2_t __r, uint8x8_t __a, uint8x16_t __b,
33424 const int __index)
33425{
33426 return __builtin_aarch64_udot_laneqv8qi_uuuus (__r, __a, __b, __index);
33427}
33428
33429__extension__ extern __inline uint32x4_t
33430__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33431vdotq_lane_u32 (uint32x4_t __r, uint8x16_t __a, uint8x8_t __b,
33432 const int __index)
33433{
33434 return __builtin_aarch64_udot_lanev16qi_uuuus (__r, __a, __b, __index);
33435}
33436
33437__extension__ extern __inline uint32x4_t
33438__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33439vdotq_laneq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b,
33440 const int __index)
33441{
33442 return __builtin_aarch64_udot_laneqv16qi_uuuus (__r, __a, __b, __index);
33443}
33444
33445__extension__ extern __inline int32x2_t
33446__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33447vdot_lane_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b, const int __index)
33448{
33449 return __builtin_aarch64_sdot_lanev8qi (__r, __a, __b, __index);
33450}
33451
33452__extension__ extern __inline int32x2_t
33453__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33454vdot_laneq_s32 (int32x2_t __r, int8x8_t __a, int8x16_t __b, const int __index)
33455{
33456 return __builtin_aarch64_sdot_laneqv8qi (__r, __a, __b, __index);
33457}
33458
33459__extension__ extern __inline int32x4_t
33460__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33461vdotq_lane_s32 (int32x4_t __r, int8x16_t __a, int8x8_t __b, const int __index)
33462{
33463 return __builtin_aarch64_sdot_lanev16qi (__r, __a, __b, __index);
33464}
33465
33466__extension__ extern __inline int32x4_t
33467__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33468vdotq_laneq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b, const int __index)
33469{
33470 return __builtin_aarch64_sdot_laneqv16qi (__r, __a, __b, __index);
33471}
33472#pragma GCC pop_options
33473
27086ea3 33474#pragma GCC push_options
a85f2b90 33475#pragma GCC target ("arch=armv8.2-a+sm4")
27086ea3
MC
33476
33477__extension__ extern __inline uint32x4_t
33478__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33479vsm3ss1q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
33480{
33481 return __builtin_aarch64_sm3ss1qv4si_uuuu (__a, __b, __c);
33482}
33483
33484__extension__ extern __inline uint32x4_t
33485__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33486vsm3tt1aq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2)
33487{
33488 return __builtin_aarch64_sm3tt1aqv4si_uuuus (__a, __b, __c, __imm2);
33489}
33490
33491__extension__ extern __inline uint32x4_t
33492__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33493vsm3tt1bq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2)
33494{
33495 return __builtin_aarch64_sm3tt1bqv4si_uuuus (__a, __b, __c, __imm2);
33496}
33497
33498__extension__ extern __inline uint32x4_t
33499__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33500vsm3tt2aq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2)
33501{
33502 return __builtin_aarch64_sm3tt2aqv4si_uuuus (__a, __b, __c, __imm2);
33503}
33504
33505__extension__ extern __inline uint32x4_t
33506__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33507vsm3tt2bq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2)
33508{
33509 return __builtin_aarch64_sm3tt2bqv4si_uuuus (__a, __b, __c, __imm2);
33510}
33511
33512__extension__ extern __inline uint32x4_t
33513__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33514vsm3partw1q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
33515{
33516 return __builtin_aarch64_sm3partw1qv4si_uuuu (__a, __b, __c);
33517}
33518__extension__ extern __inline uint32x4_t
33519__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33520vsm3partw2q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
33521{
33522 return __builtin_aarch64_sm3partw2qv4si_uuuu (__a, __b, __c);
33523}
33524
33525__extension__ extern __inline uint32x4_t
33526__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33527vsm4eq_u32 (uint32x4_t __a, uint32x4_t __b)
33528{
33529 return __builtin_aarch64_sm4eqv4si_uuu (__a, __b);
33530}
33531
33532__extension__ extern __inline uint32x4_t
33533__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33534vsm4ekeyq_u32 (uint32x4_t __a, uint32x4_t __b)
33535{
33536 return __builtin_aarch64_sm4ekeyqv4si_uuu (__a, __b);
33537}
33538
33539#pragma GCC pop_options
33540
33541#pragma GCC push_options
a85f2b90 33542#pragma GCC target ("arch=armv8.2-a+sha3")
27086ea3
MC
33543
33544__extension__ extern __inline uint64x2_t
33545__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33546vsha512hq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c)
33547{
33548 return __builtin_aarch64_crypto_sha512hqv2di_uuuu (__a, __b, __c);
33549}
33550
33551__extension__ extern __inline uint64x2_t
33552__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33553vsha512h2q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c)
33554{
33555 return __builtin_aarch64_crypto_sha512h2qv2di_uuuu (__a, __b, __c);
33556}
33557
33558__extension__ extern __inline uint64x2_t
33559__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33560vsha512su0q_u64 (uint64x2_t __a, uint64x2_t __b)
33561{
33562 return __builtin_aarch64_crypto_sha512su0qv2di_uuu (__a, __b);
33563}
33564
33565__extension__ extern __inline uint64x2_t
33566__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33567vsha512su1q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c)
33568{
33569 return __builtin_aarch64_crypto_sha512su1qv2di_uuuu (__a, __b, __c);
33570}
33571
d21052eb
TC
33572__extension__ extern __inline uint8x16_t
33573__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33574veor3q_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
33575{
33576 return __builtin_aarch64_eor3qv16qi_uuuu (__a, __b, __c);
33577}
33578
27086ea3
MC
33579__extension__ extern __inline uint16x8_t
33580__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33581veor3q_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
33582{
33583 return __builtin_aarch64_eor3qv8hi_uuuu (__a, __b, __c);
33584}
33585
d21052eb
TC
33586__extension__ extern __inline uint32x4_t
33587__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33588veor3q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
33589{
33590 return __builtin_aarch64_eor3qv4si_uuuu (__a, __b, __c);
33591}
33592
33593__extension__ extern __inline uint64x2_t
33594__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33595veor3q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c)
33596{
33597 return __builtin_aarch64_eor3qv2di_uuuu (__a, __b, __c);
33598}
33599
33600
33601__extension__ extern __inline int8x16_t
33602__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33603veor3q_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
33604{
33605 return __builtin_aarch64_eor3qv16qi (__a, __b, __c);
33606}
33607
33608__extension__ extern __inline int16x8_t
33609__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33610veor3q_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
33611{
33612 return __builtin_aarch64_eor3qv8hi (__a, __b, __c);
33613}
33614
33615__extension__ extern __inline int32x4_t
33616__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33617veor3q_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
33618{
33619 return __builtin_aarch64_eor3qv4si (__a, __b, __c);
33620}
33621
33622__extension__ extern __inline int64x2_t
33623__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33624veor3q_s64 (int64x2_t __a, int64x2_t __b, int64x2_t __c)
33625{
33626 return __builtin_aarch64_eor3qv2di (__a, __b, __c);
33627}
33628
27086ea3
MC
33629__extension__ extern __inline uint64x2_t
33630__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33631vrax1q_u64 (uint64x2_t __a, uint64x2_t __b)
33632{
33633 return __builtin_aarch64_rax1qv2di_uuu (__a, __b);
33634}
33635
33636__extension__ extern __inline uint64x2_t
33637__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33638vxarq_u64 (uint64x2_t __a, uint64x2_t __b, const int imm6)
33639{
33640 return __builtin_aarch64_xarqv2di_uuus (__a, __b,imm6);
33641}
33642
d21052eb
TC
33643__extension__ extern __inline uint8x16_t
33644__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33645vbcaxq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
33646{
33647 return __builtin_aarch64_bcaxqv16qi_uuuu (__a, __b, __c);
33648}
33649
27086ea3
MC
33650__extension__ extern __inline uint16x8_t
33651__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33652vbcaxq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
33653{
33654 return __builtin_aarch64_bcaxqv8hi_uuuu (__a, __b, __c);
33655}
d21052eb
TC
33656
33657__extension__ extern __inline uint32x4_t
33658__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33659vbcaxq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
33660{
33661 return __builtin_aarch64_bcaxqv4si_uuuu (__a, __b, __c);
33662}
33663
33664__extension__ extern __inline uint64x2_t
33665__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33666vbcaxq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c)
33667{
33668 return __builtin_aarch64_bcaxqv2di_uuuu (__a, __b, __c);
33669}
33670
33671__extension__ extern __inline int8x16_t
33672__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33673vbcaxq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
33674{
33675 return __builtin_aarch64_bcaxqv16qi (__a, __b, __c);
33676}
33677
33678__extension__ extern __inline int16x8_t
33679__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33680vbcaxq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
33681{
33682 return __builtin_aarch64_bcaxqv8hi (__a, __b, __c);
33683}
33684
33685__extension__ extern __inline int32x4_t
33686__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33687vbcaxq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
33688{
33689 return __builtin_aarch64_bcaxqv4si (__a, __b, __c);
33690}
33691
33692__extension__ extern __inline int64x2_t
33693__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33694vbcaxq_s64 (int64x2_t __a, int64x2_t __b, int64x2_t __c)
33695{
33696 return __builtin_aarch64_bcaxqv2di (__a, __b, __c);
33697}
33698
9d63f43b
TC
33699#pragma GCC pop_options
33700
33701/* AdvSIMD Complex numbers intrinsics. */
33702
33703#pragma GCC push_options
a85f2b90 33704#pragma GCC target ("arch=armv8.3-a")
9d63f43b
TC
33705
33706#pragma GCC push_options
a85f2b90 33707#pragma GCC target ("+fp16")
9d63f43b
TC
33708__extension__ extern __inline float16x4_t
33709__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33710vcadd_rot90_f16 (float16x4_t __a, float16x4_t __b)
33711{
33712 return __builtin_aarch64_fcadd90v4hf (__a, __b);
33713}
33714
33715__extension__ extern __inline float16x8_t
33716__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33717vcaddq_rot90_f16 (float16x8_t __a, float16x8_t __b)
33718{
33719 return __builtin_aarch64_fcadd90v8hf (__a, __b);
33720}
33721
33722__extension__ extern __inline float16x4_t
33723__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33724vcadd_rot270_f16 (float16x4_t __a, float16x4_t __b)
33725{
33726 return __builtin_aarch64_fcadd270v4hf (__a, __b);
33727}
33728
33729__extension__ extern __inline float16x8_t
33730__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33731vcaddq_rot270_f16 (float16x8_t __a, float16x8_t __b)
33732{
33733 return __builtin_aarch64_fcadd270v8hf (__a, __b);
33734}
33735
33736__extension__ extern __inline float16x4_t
33737__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33738vcmla_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b)
33739{
33740 return __builtin_aarch64_fcmla0v4hf (__r, __a, __b);
33741}
33742
33743__extension__ extern __inline float16x8_t
33744__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33745vcmlaq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b)
33746{
33747 return __builtin_aarch64_fcmla0v8hf (__r, __a, __b);
33748}
33749
33750__extension__ extern __inline float16x4_t
33751__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33752vcmla_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b,
33753 const int __index)
33754{
33755 return __builtin_aarch64_fcmla_lane0v4hf (__r, __a, __b, __index);
33756}
33757
33758__extension__ extern __inline float16x4_t
33759__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33760vcmla_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b,
33761 const int __index)
33762{
33763 return __builtin_aarch64_fcmla_laneq0v4hf (__r, __a, __b, __index);
33764}
33765
33766__extension__ extern __inline float16x8_t
33767__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33768vcmlaq_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b,
33769 const int __index)
33770{
33771 return __builtin_aarch64_fcmlaq_lane0v8hf (__r, __a, __b, __index);
33772}
33773
33774__extension__ extern __inline float16x8_t
33775__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33776vcmlaq_rot90_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b,
33777 const int __index)
33778{
33779 return __builtin_aarch64_fcmlaq_lane90v8hf (__r, __a, __b, __index);
33780}
33781
33782__extension__ extern __inline float16x4_t
33783__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33784vcmla_rot90_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b,
33785 const int __index)
33786{
33787 return __builtin_aarch64_fcmla_laneq90v4hf (__r, __a, __b, __index);
33788}
33789
33790__extension__ extern __inline float16x4_t
33791__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33792vcmla_rot90_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b,
33793 const int __index)
33794{
33795 return __builtin_aarch64_fcmla_lane90v4hf (__r, __a, __b, __index);
33796}
33797
33798__extension__ extern __inline float16x8_t
33799__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33800vcmlaq_rot90_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b)
33801{
33802 return __builtin_aarch64_fcmla90v8hf (__r, __a, __b);
33803}
33804
33805__extension__ extern __inline float16x4_t
33806__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33807vcmla_rot90_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b)
33808{
33809 return __builtin_aarch64_fcmla90v4hf (__r, __a, __b);
33810}
33811
33812__extension__ extern __inline float16x8_t
33813__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33814vcmlaq_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b,
33815 const int __index)
33816{
33817 return __builtin_aarch64_fcmla_lane0v8hf (__r, __a, __b, __index);
33818}
33819
33820__extension__ extern __inline float16x4_t
33821__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33822vcmla_rot180_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b,
33823 const int __index)
33824{
33825 return __builtin_aarch64_fcmla_laneq180v4hf (__r, __a, __b, __index);
33826}
33827
33828__extension__ extern __inline float16x4_t
33829__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33830vcmla_rot180_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b,
33831 const int __index)
33832{
33833 return __builtin_aarch64_fcmla_lane180v4hf (__r, __a, __b, __index);
33834}
33835
33836__extension__ extern __inline float16x8_t
33837__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33838vcmlaq_rot180_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b)
33839{
33840 return __builtin_aarch64_fcmla180v8hf (__r, __a, __b);
33841}
33842
33843__extension__ extern __inline float16x4_t
33844__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33845vcmla_rot180_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b)
33846{
33847 return __builtin_aarch64_fcmla180v4hf (__r, __a, __b);
33848}
33849
33850__extension__ extern __inline float16x8_t
33851__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33852vcmlaq_rot90_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b,
33853 const int __index)
33854{
33855 return __builtin_aarch64_fcmla_lane90v8hf (__r, __a, __b, __index);
33856}
33857
33858__extension__ extern __inline float16x8_t
33859__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33860vcmlaq_rot270_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b,
33861 const int __index)
33862{
33863 return __builtin_aarch64_fcmla_lane270v8hf (__r, __a, __b, __index);
33864}
33865
33866__extension__ extern __inline float16x8_t
33867__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33868vcmlaq_rot270_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b,
33869 const int __index)
33870{
33871 return __builtin_aarch64_fcmlaq_lane270v8hf (__r, __a, __b, __index);
33872}
33873
33874__extension__ extern __inline float16x4_t
33875__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33876vcmla_rot270_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b,
33877 const int __index)
33878{
33879 return __builtin_aarch64_fcmla_laneq270v4hf (__r, __a, __b, __index);
33880}
33881
33882__extension__ extern __inline float16x8_t
33883__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33884vcmlaq_rot270_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b)
33885{
33886 return __builtin_aarch64_fcmla270v8hf (__r, __a, __b);
33887}
33888
33889__extension__ extern __inline float16x4_t
33890__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33891vcmla_rot270_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b)
33892{
33893 return __builtin_aarch64_fcmla270v4hf (__r, __a, __b);
33894}
33895
33896__extension__ extern __inline float16x8_t
33897__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33898vcmlaq_rot180_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b,
33899 const int __index)
33900{
33901 return __builtin_aarch64_fcmla_lane180v8hf (__r, __a, __b, __index);
33902}
33903
33904__extension__ extern __inline float16x8_t
33905__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33906vcmlaq_rot180_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b,
33907 const int __index)
33908{
33909 return __builtin_aarch64_fcmlaq_lane180v8hf (__r, __a, __b, __index);
33910}
33911
33912__extension__ extern __inline float16x4_t
33913__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33914vcmla_rot270_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b,
33915 const int __index)
33916{
33917 return __builtin_aarch64_fcmla_lane270v4hf (__r, __a, __b, __index);
33918}
33919#pragma GCC pop_options
33920
33921__extension__ extern __inline float32x2_t
33922__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33923vcadd_rot90_f32 (float32x2_t __a, float32x2_t __b)
33924{
33925 return __builtin_aarch64_fcadd90v2sf (__a, __b);
33926}
33927
33928__extension__ extern __inline float32x4_t
33929__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33930vcaddq_rot90_f32 (float32x4_t __a, float32x4_t __b)
33931{
33932 return __builtin_aarch64_fcadd90v4sf (__a, __b);
33933}
33934
33935__extension__ extern __inline float64x2_t
33936__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33937vcaddq_rot90_f64 (float64x2_t __a, float64x2_t __b)
33938{
33939 return __builtin_aarch64_fcadd90v2df (__a, __b);
33940}
33941
33942__extension__ extern __inline float32x2_t
33943__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33944vcadd_rot270_f32 (float32x2_t __a, float32x2_t __b)
33945{
33946 return __builtin_aarch64_fcadd270v2sf (__a, __b);
33947}
33948
33949__extension__ extern __inline float32x4_t
33950__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33951vcaddq_rot270_f32 (float32x4_t __a, float32x4_t __b)
33952{
33953 return __builtin_aarch64_fcadd270v4sf (__a, __b);
33954}
33955
33956__extension__ extern __inline float64x2_t
33957__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33958vcaddq_rot270_f64 (float64x2_t __a, float64x2_t __b)
33959{
33960 return __builtin_aarch64_fcadd270v2df (__a, __b);
33961}
33962
33963__extension__ extern __inline float32x2_t
33964__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33965vcmla_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b)
33966{
33967 return __builtin_aarch64_fcmla0v2sf (__r, __a, __b);
33968}
33969
33970__extension__ extern __inline float32x4_t
33971__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33972vcmlaq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b)
33973{
33974 return __builtin_aarch64_fcmla0v4sf (__r, __a, __b);
33975}
33976
33977__extension__ extern __inline float64x2_t
33978__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33979vcmlaq_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b)
33980{
33981 return __builtin_aarch64_fcmla0v2df (__r, __a, __b);
33982}
33983
33984__extension__ extern __inline float32x2_t
33985__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33986vcmla_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b,
33987 const int __index)
33988{
33989 return __builtin_aarch64_fcmla_lane0v2sf (__r, __a, __b, __index);
33990}
33991
33992__extension__ extern __inline float32x2_t
33993__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
33994vcmla_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b,
33995 const int __index)
33996{
33997 return __builtin_aarch64_fcmla_laneq0v2sf (__r, __a, __b, __index);
33998}
33999
34000__extension__ extern __inline float32x4_t
34001__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34002vcmlaq_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b,
34003 const int __index)
34004{
34005 return __builtin_aarch64_fcmlaq_lane0v4sf (__r, __a, __b, __index);
34006}
34007
34008__extension__ extern __inline float32x4_t
34009__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34010vcmlaq_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b,
34011 const int __index)
34012{
34013 return __builtin_aarch64_fcmla_lane0v4sf (__r, __a, __b, __index);
34014}
34015
34016__extension__ extern __inline float32x2_t
34017__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34018vcmla_rot90_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b)
34019{
34020 return __builtin_aarch64_fcmla90v2sf (__r, __a, __b);
34021}
34022
34023__extension__ extern __inline float32x4_t
34024__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34025vcmlaq_rot90_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b)
34026{
34027 return __builtin_aarch64_fcmla90v4sf (__r, __a, __b);
34028}
34029
34030__extension__ extern __inline float64x2_t
34031__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34032vcmlaq_rot90_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b)
34033{
34034 return __builtin_aarch64_fcmla90v2df (__r, __a, __b);
34035}
34036
34037__extension__ extern __inline float32x2_t
34038__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34039vcmla_rot90_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b,
34040 const int __index)
34041{
34042 return __builtin_aarch64_fcmla_lane90v2sf (__r, __a, __b, __index);
34043}
34044
34045__extension__ extern __inline float32x2_t
34046__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34047vcmla_rot90_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b,
34048 const int __index)
34049{
34050 return __builtin_aarch64_fcmla_laneq90v2sf (__r, __a, __b, __index);
34051}
34052
34053__extension__ extern __inline float32x4_t
34054__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34055vcmlaq_rot90_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b,
34056 const int __index)
34057{
34058 return __builtin_aarch64_fcmlaq_lane90v4sf (__r, __a, __b, __index);
34059}
34060
34061__extension__ extern __inline float32x4_t
34062__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34063vcmlaq_rot90_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b,
34064 const int __index)
34065{
34066 return __builtin_aarch64_fcmla_lane90v4sf (__r, __a, __b, __index);
34067}
34068
34069__extension__ extern __inline float32x2_t
34070__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34071vcmla_rot180_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b)
34072{
34073 return __builtin_aarch64_fcmla180v2sf (__r, __a, __b);
34074}
34075
34076__extension__ extern __inline float32x4_t
34077__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34078vcmlaq_rot180_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b)
34079{
34080 return __builtin_aarch64_fcmla180v4sf (__r, __a, __b);
34081}
34082
34083__extension__ extern __inline float64x2_t
34084__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34085vcmlaq_rot180_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b)
34086{
34087 return __builtin_aarch64_fcmla180v2df (__r, __a, __b);
34088}
34089
34090__extension__ extern __inline float32x2_t
34091__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34092vcmla_rot180_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b,
34093 const int __index)
34094{
34095 return __builtin_aarch64_fcmla_lane180v2sf (__r, __a, __b, __index);
34096}
34097
34098__extension__ extern __inline float32x2_t
34099__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34100vcmla_rot180_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b,
34101 const int __index)
34102{
34103 return __builtin_aarch64_fcmla_laneq180v2sf (__r, __a, __b, __index);
34104}
34105
34106__extension__ extern __inline float32x4_t
34107__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34108vcmlaq_rot180_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b,
34109 const int __index)
34110{
34111 return __builtin_aarch64_fcmlaq_lane180v4sf (__r, __a, __b, __index);
34112}
34113
34114__extension__ extern __inline float32x4_t
34115__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34116vcmlaq_rot180_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b,
34117 const int __index)
34118{
34119 return __builtin_aarch64_fcmla_lane180v4sf (__r, __a, __b, __index);
34120}
34121
34122__extension__ extern __inline float32x2_t
34123__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34124vcmla_rot270_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b)
34125{
34126 return __builtin_aarch64_fcmla270v2sf (__r, __a, __b);
34127}
34128
34129__extension__ extern __inline float32x4_t
34130__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34131vcmlaq_rot270_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b)
34132{
34133 return __builtin_aarch64_fcmla270v4sf (__r, __a, __b);
34134}
34135
34136__extension__ extern __inline float64x2_t
34137__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34138vcmlaq_rot270_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b)
34139{
34140 return __builtin_aarch64_fcmla270v2df (__r, __a, __b);
34141}
34142
34143__extension__ extern __inline float32x2_t
34144__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34145vcmla_rot270_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b,
34146 const int __index)
34147{
34148 return __builtin_aarch64_fcmla_lane270v2sf (__r, __a, __b, __index);
34149}
34150
34151__extension__ extern __inline float32x2_t
34152__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34153vcmla_rot270_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b,
34154 const int __index)
34155{
34156 return __builtin_aarch64_fcmla_laneq270v2sf (__r, __a, __b, __index);
34157}
34158
34159__extension__ extern __inline float32x4_t
34160__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34161vcmlaq_rot270_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b,
34162 const int __index)
34163{
34164 return __builtin_aarch64_fcmlaq_lane270v4sf (__r, __a, __b, __index);
34165}
34166
34167__extension__ extern __inline float32x4_t
34168__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34169vcmlaq_rot270_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b,
34170 const int __index)
34171{
34172 return __builtin_aarch64_fcmla_lane270v4sf (__r, __a, __b, __index);
34173}
d21052eb 34174
27086ea3
MC
34175#pragma GCC pop_options
34176
34177#pragma GCC push_options
a85f2b90 34178#pragma GCC target ("arch=armv8.2-a+fp16fml")
27086ea3
MC
34179
34180__extension__ extern __inline float32x2_t
34181__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34182vfmlal_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b)
27086ea3
MC
34183{
34184 return __builtin_aarch64_fmlal_lowv2sf (__r, __a, __b);
34185}
34186
34187__extension__ extern __inline float32x2_t
34188__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34189vfmlsl_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b)
27086ea3
MC
34190{
34191 return __builtin_aarch64_fmlsl_lowv2sf (__r, __a, __b);
34192}
34193
34194__extension__ extern __inline float32x4_t
34195__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34196vfmlalq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b)
27086ea3
MC
34197{
34198 return __builtin_aarch64_fmlalq_lowv4sf (__r, __a, __b);
34199}
34200
34201__extension__ extern __inline float32x4_t
34202__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34203vfmlslq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b)
27086ea3
MC
34204{
34205 return __builtin_aarch64_fmlslq_lowv4sf (__r, __a, __b);
34206}
34207
34208__extension__ extern __inline float32x2_t
34209__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34210vfmlal_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b)
27086ea3
MC
34211{
34212 return __builtin_aarch64_fmlal_highv2sf (__r, __a, __b);
34213}
34214
34215__extension__ extern __inline float32x2_t
34216__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34217vfmlsl_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b)
27086ea3
MC
34218{
34219 return __builtin_aarch64_fmlsl_highv2sf (__r, __a, __b);
34220}
34221
34222__extension__ extern __inline float32x4_t
34223__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34224vfmlalq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b)
27086ea3
MC
34225{
34226 return __builtin_aarch64_fmlalq_highv4sf (__r, __a, __b);
34227}
34228
34229__extension__ extern __inline float32x4_t
34230__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34231vfmlslq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b)
27086ea3
MC
34232{
34233 return __builtin_aarch64_fmlslq_highv4sf (__r, __a, __b);
34234}
34235
34236__extension__ extern __inline float32x2_t
34237__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34238vfmlal_lane_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b,
27086ea3
MC
34239 const int __lane)
34240{
34241 return __builtin_aarch64_fmlal_lane_lowv2sf (__r, __a, __b, __lane);
34242}
34243
34244__extension__ extern __inline float32x2_t
34245__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34246vfmlsl_lane_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b,
27086ea3
MC
34247 const int __lane)
34248{
34249 return __builtin_aarch64_fmlsl_lane_lowv2sf (__r, __a, __b, __lane);
34250}
34251
34252__extension__ extern __inline float32x2_t
34253__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34254vfmlal_laneq_low_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b,
27086ea3
MC
34255 const int __lane)
34256{
34257 return __builtin_aarch64_fmlal_laneq_lowv2sf (__r, __a, __b, __lane);
34258}
34259
34260__extension__ extern __inline float32x2_t
34261__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34262vfmlsl_laneq_low_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b,
27086ea3
MC
34263 const int __lane)
34264{
34265 return __builtin_aarch64_fmlsl_laneq_lowv2sf (__r, __a, __b, __lane);
34266}
34267
34268__extension__ extern __inline float32x4_t
34269__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34270vfmlalq_lane_low_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b,
27086ea3
MC
34271 const int __lane)
34272{
34273 return __builtin_aarch64_fmlalq_lane_lowv4sf (__r, __a, __b, __lane);
34274}
34275
34276__extension__ extern __inline float32x4_t
34277__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34278vfmlslq_lane_low_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b,
27086ea3
MC
34279 const int __lane)
34280{
34281 return __builtin_aarch64_fmlslq_lane_lowv4sf (__r, __a, __b, __lane);
34282}
34283
34284__extension__ extern __inline float32x4_t
34285__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34286vfmlalq_laneq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b,
27086ea3
MC
34287 const int __lane)
34288{
34289 return __builtin_aarch64_fmlalq_laneq_lowv4sf (__r, __a, __b, __lane);
34290}
34291
34292__extension__ extern __inline float32x4_t
34293__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34294vfmlslq_laneq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b,
27086ea3
MC
34295 const int __lane)
34296{
34297 return __builtin_aarch64_fmlslq_laneq_lowv4sf (__r, __a, __b, __lane);
34298}
34299
34300__extension__ extern __inline float32x2_t
34301__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34302vfmlal_lane_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b,
27086ea3
MC
34303 const int __lane)
34304{
34305 return __builtin_aarch64_fmlal_lane_highv2sf (__r, __a, __b, __lane);
34306}
34307
34308__extension__ extern __inline float32x2_t
34309__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34310vfmlsl_lane_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b,
27086ea3
MC
34311 const int __lane)
34312{
34313 return __builtin_aarch64_fmlsl_lane_highv2sf (__r, __a, __b, __lane);
34314}
34315
34316__extension__ extern __inline float32x2_t
34317__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34318vfmlal_laneq_high_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b,
27086ea3
MC
34319 const int __lane)
34320{
34321 return __builtin_aarch64_fmlal_laneq_highv2sf (__r, __a, __b, __lane);
34322}
34323
34324__extension__ extern __inline float32x2_t
34325__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34326vfmlsl_laneq_high_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b,
27086ea3
MC
34327 const int __lane)
34328{
34329 return __builtin_aarch64_fmlsl_laneq_highv2sf (__r, __a, __b, __lane);
34330}
34331
34332__extension__ extern __inline float32x4_t
34333__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34334vfmlalq_lane_high_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b,
27086ea3
MC
34335 const int __lane)
34336{
34337 return __builtin_aarch64_fmlalq_lane_highv4sf (__r, __a, __b, __lane);
34338}
34339
34340__extension__ extern __inline float32x4_t
34341__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34342vfmlslq_lane_high_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b,
27086ea3
MC
34343 const int __lane)
34344{
34345 return __builtin_aarch64_fmlslq_lane_highv4sf (__r, __a, __b, __lane);
34346}
34347
34348__extension__ extern __inline float32x4_t
34349__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34350vfmlalq_laneq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b,
27086ea3
MC
34351 const int __lane)
34352{
34353 return __builtin_aarch64_fmlalq_laneq_highv4sf (__r, __a, __b, __lane);
34354}
34355
34356__extension__ extern __inline float32x4_t
34357__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9d04c986 34358vfmlslq_laneq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b,
27086ea3
MC
34359 const int __lane)
34360{
34361 return __builtin_aarch64_fmlslq_laneq_highv4sf (__r, __a, __b, __lane);
34362}
34363
34364#pragma GCC pop_options
34365
10bd1d96
KT
34366#pragma GCC push_options
34367#pragma GCC target ("arch=armv8.5-a")
34368
34369__extension__ extern __inline float32x2_t
34370__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34371vrnd32z_f32 (float32x2_t __a)
34372{
34373 return __builtin_aarch64_frint32zv2sf (__a);
34374}
34375
34376__extension__ extern __inline float32x4_t
34377__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34378vrnd32zq_f32 (float32x4_t __a)
34379{
34380 return __builtin_aarch64_frint32zv4sf (__a);
34381}
34382
34383__extension__ extern __inline float64x1_t
34384__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34385vrnd32z_f64 (float64x1_t __a)
34386{
34387 return (float64x1_t)
34388 {__builtin_aarch64_frint32zdf (vget_lane_f64 (__a, 0))};
34389}
34390
34391__extension__ extern __inline float64x2_t
34392__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34393vrnd32zq_f64 (float64x2_t __a)
34394{
34395 return __builtin_aarch64_frint32zv2df (__a);
34396}
34397
34398__extension__ extern __inline float32x2_t
34399__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34400vrnd32x_f32 (float32x2_t __a)
34401{
34402 return __builtin_aarch64_frint32xv2sf (__a);
34403}
34404
34405__extension__ extern __inline float32x4_t
34406__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34407vrnd32xq_f32 (float32x4_t __a)
34408{
34409 return __builtin_aarch64_frint32xv4sf (__a);
34410}
34411
34412__extension__ extern __inline float64x1_t
34413__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34414vrnd32x_f64 (float64x1_t __a)
34415{
34416 return (float64x1_t) {__builtin_aarch64_frint32xdf (vget_lane_f64 (__a, 0))};
34417}
34418
34419__extension__ extern __inline float64x2_t
34420__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34421vrnd32xq_f64 (float64x2_t __a)
34422{
34423 return __builtin_aarch64_frint32xv2df (__a);
34424}
34425
34426__extension__ extern __inline float32x2_t
34427__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34428vrnd64z_f32 (float32x2_t __a)
34429{
34430 return __builtin_aarch64_frint64zv2sf (__a);
34431}
34432
34433__extension__ extern __inline float32x4_t
34434__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34435vrnd64zq_f32 (float32x4_t __a)
34436{
34437 return __builtin_aarch64_frint64zv4sf (__a);
34438}
34439
34440__extension__ extern __inline float64x1_t
34441__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34442vrnd64z_f64 (float64x1_t __a)
34443{
34444 return (float64x1_t) {__builtin_aarch64_frint64zdf (vget_lane_f64 (__a, 0))};
34445}
34446
34447__extension__ extern __inline float64x2_t
34448__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34449vrnd64zq_f64 (float64x2_t __a)
34450{
34451 return __builtin_aarch64_frint64zv2df (__a);
34452}
34453
34454__extension__ extern __inline float32x2_t
34455__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34456vrnd64x_f32 (float32x2_t __a)
34457{
34458 return __builtin_aarch64_frint64xv2sf (__a);
34459}
34460
34461__extension__ extern __inline float32x4_t
34462__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34463vrnd64xq_f32 (float32x4_t __a)
34464{
34465 return __builtin_aarch64_frint64xv4sf (__a);
34466}
34467
34468__extension__ extern __inline float64x1_t
34469__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34470vrnd64x_f64 (float64x1_t __a)
34471{
34472 return (float64x1_t) {__builtin_aarch64_frint64xdf (vget_lane_f64 (__a, 0))};
34473}
34474
34475__extension__ extern __inline float64x2_t
34476__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34477vrnd64xq_f64 (float64x2_t __a)
34478{
34479 return __builtin_aarch64_frint64xv2df (__a);
34480}
34481
34482#pragma GCC pop_options
34483
abbe1ed2
SMW
34484#include "arm_bf16.h"
34485
f275d73a
SMW
34486#pragma GCC push_options
34487#pragma GCC target ("arch=armv8.2-a+bf16")
34488
8ea6c1b8
MI
34489__extension__ extern __inline bfloat16x4_t
34490__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34491vset_lane_bf16 (bfloat16_t __elem, bfloat16x4_t __vec, const int __index)
34492{
34493 return __aarch64_vset_lane_any (__elem, __vec, __index);
34494}
34495
34496__extension__ extern __inline bfloat16x8_t
34497__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34498vsetq_lane_bf16 (bfloat16_t __elem, bfloat16x8_t __vec, const int __index)
34499{
34500 return __aarch64_vset_lane_any (__elem, __vec, __index);
34501}
34502
34503__extension__ extern __inline bfloat16_t
34504__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34505vget_lane_bf16 (bfloat16x4_t __a, const int __b)
34506{
34507 return __aarch64_vget_lane_any (__a, __b);
34508}
34509
34510__extension__ extern __inline bfloat16_t
34511__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34512vgetq_lane_bf16 (bfloat16x8_t __a, const int __b)
34513{
34514 return __aarch64_vget_lane_any (__a, __b);
34515}
34516
34517__extension__ extern __inline bfloat16x4_t
34518__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34519vcreate_bf16 (uint64_t __a)
34520{
34521 return (bfloat16x4_t) __a;
34522}
34523
e603cd43
MI
34524__extension__ extern __inline bfloat16x8_t
34525__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34526vcombine_bf16 (bfloat16x4_t __a, bfloat16x4_t __b)
34527{
34528 return (bfloat16x8_t)__builtin_aarch64_combinev4bf (__a, __b);
34529}
34530
8ea6c1b8
MI
34531/* vdup */
34532
34533__extension__ extern __inline bfloat16x4_t
34534__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34535vdup_n_bf16 (bfloat16_t __a)
34536{
34537 return (bfloat16x4_t) {__a, __a, __a, __a};
34538}
34539
34540__extension__ extern __inline bfloat16x8_t
34541__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34542vdupq_n_bf16 (bfloat16_t __a)
34543{
34544 return (bfloat16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};
34545}
34546
34547__extension__ extern __inline bfloat16x4_t
34548__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34549vdup_lane_bf16 (bfloat16x4_t __a, const int __b)
34550{
34551 return vdup_n_bf16 (__aarch64_vget_lane_any (__a, __b));
34552}
34553
34554__extension__ extern __inline bfloat16x4_t
34555__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34556vdup_laneq_bf16 (bfloat16x8_t __a, const int __b)
34557{
34558 return vdup_n_bf16 (__aarch64_vget_lane_any (__a, __b));
34559}
34560
34561__extension__ extern __inline bfloat16x8_t
34562__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34563vdupq_lane_bf16 (bfloat16x4_t __a, const int __b)
34564{
34565 return vdupq_n_bf16 (__aarch64_vget_lane_any (__a, __b));
34566}
34567
34568__extension__ extern __inline bfloat16x8_t
34569__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34570vdupq_laneq_bf16 (bfloat16x8_t __a, const int __b)
34571{
34572 return vdupq_n_bf16 (__aarch64_vget_lane_any (__a, __b));
34573}
34574
34575__extension__ extern __inline bfloat16_t
34576__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34577vduph_lane_bf16 (bfloat16x4_t __a, const int __b)
34578{
34579 return __aarch64_vget_lane_any (__a, __b);
34580}
34581
34582__extension__ extern __inline bfloat16_t
34583__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34584vduph_laneq_bf16 (bfloat16x8_t __a, const int __b)
34585{
34586 return __aarch64_vget_lane_any (__a, __b);
34587}
34588
e603cd43
MI
34589/* vld */
34590
34591__extension__ extern __inline bfloat16x4_t
34592__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34593vld1_bf16 (const bfloat16_t *__a)
34594{
34595 return (bfloat16x4_t) __builtin_aarch64_ld1v4bf (__a);
34596}
34597
34598__extension__ extern __inline bfloat16x8_t
34599__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34600vld1q_bf16 (const bfloat16_t *__a)
34601{
34602 return __builtin_aarch64_ld1v8bf (__a);
34603}
34604
34605__extension__ extern __inline bfloat16x4x2_t
34606__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34607vld1_bf16_x2 (const bfloat16_t *__a)
34608{
34609 bfloat16x4x2_t ret;
34610 __builtin_aarch64_simd_oi __o;
34611 __o = __builtin_aarch64_ld1x2v4bf ((const __builtin_aarch64_simd_bf *) __a);
34612 ret.val[0] = (bfloat16x4_t) __builtin_aarch64_get_dregoiv4bf (__o, 0);
34613 ret.val[1] = (bfloat16x4_t) __builtin_aarch64_get_dregoiv4bf (__o, 1);
34614 return ret;
34615}
34616
34617__extension__ extern __inline bfloat16x8x2_t
34618__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34619vld1q_bf16_x2 (const bfloat16_t *__a)
34620{
34621 bfloat16x8x2_t ret;
34622 __builtin_aarch64_simd_oi __o;
34623 __o = __builtin_aarch64_ld1x2v8bf ((const __builtin_aarch64_simd_bf *) __a);
34624 ret.val[0] = (bfloat16x8_t) __builtin_aarch64_get_qregoiv8bf (__o, 0);
34625 ret.val[1] = (bfloat16x8_t) __builtin_aarch64_get_qregoiv8bf (__o, 1);
34626 return ret;
34627}
34628
34629__extension__ extern __inline bfloat16x4x3_t
34630__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34631vld1_bf16_x3 (const bfloat16_t *__a)
34632{
34633 bfloat16x4x3_t __i;
34634 __builtin_aarch64_simd_ci __o;
34635 __o = __builtin_aarch64_ld1x3v4bf ((const __builtin_aarch64_simd_bf *) __a);
34636 __i.val[0] = (bfloat16x4_t) __builtin_aarch64_get_dregciv4bf (__o, 0);
34637 __i.val[1] = (bfloat16x4_t) __builtin_aarch64_get_dregciv4bf (__o, 1);
34638 __i.val[2] = (bfloat16x4_t) __builtin_aarch64_get_dregciv4bf (__o, 2);
34639 return __i;
34640}
34641
34642__extension__ extern __inline bfloat16x8x3_t
34643__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34644vld1q_bf16_x3 (const bfloat16_t *__a)
34645{
34646 bfloat16x8x3_t __i;
34647 __builtin_aarch64_simd_ci __o;
34648 __o = __builtin_aarch64_ld1x3v8bf ((const __builtin_aarch64_simd_bf *) __a);
34649 __i.val[0] = (bfloat16x8_t) __builtin_aarch64_get_qregciv8bf (__o, 0);
34650 __i.val[1] = (bfloat16x8_t) __builtin_aarch64_get_qregciv8bf (__o, 1);
34651 __i.val[2] = (bfloat16x8_t) __builtin_aarch64_get_qregciv8bf (__o, 2);
34652 return __i;
34653}
34654__extension__ extern __inline bfloat16x4x4_t
34655__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34656vld1_bf16_x4 (const bfloat16_t *__a)
34657{
34658 union { bfloat16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
34659 __au.__o
34660 = __builtin_aarch64_ld1x4v4bf ((const __builtin_aarch64_simd_bf *) __a);
34661 return __au.__i;
34662}
34663
34664__extension__ extern __inline bfloat16x8x4_t
34665__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34666vld1q_bf16_x4 (const bfloat16_t *__a)
34667{
34668 union { bfloat16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au;
34669 __au.__o
34670 = __builtin_aarch64_ld1x4v8bf ((const __builtin_aarch64_simd_bf *) __a);
34671 return __au.__i;
34672}
34673
34674__extension__ extern __inline bfloat16x4_t
34675__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34676vld1_lane_bf16 (const bfloat16_t *__src, bfloat16x4_t __vec, const int __lane)
34677{
34678 return __aarch64_vset_lane_any (*__src, __vec, __lane);
34679}
34680
34681__extension__ extern __inline bfloat16x8_t
34682__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34683vld1q_lane_bf16 (const bfloat16_t *__src, bfloat16x8_t __vec, const int __lane)
34684{
34685 return __aarch64_vset_lane_any (*__src, __vec, __lane);
34686}
34687
34688__extension__ extern __inline bfloat16x4_t
34689__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34690vld1_dup_bf16 (const bfloat16_t* __a)
34691{
34692 return vdup_n_bf16 (*__a);
34693}
34694
34695__extension__ extern __inline bfloat16x8_t
34696__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34697vld1q_dup_bf16 (const bfloat16_t* __a)
34698{
34699 return vdupq_n_bf16 (*__a);
34700}
34701
34702__extension__ extern __inline bfloat16x4x2_t
34703__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34704vld2_bf16 (const bfloat16_t * __a)
34705{
34706 bfloat16x4x2_t ret;
34707 __builtin_aarch64_simd_oi __o;
34708 __o = __builtin_aarch64_ld2v4bf (__a);
34709 ret.val[0] = (bfloat16x4_t) __builtin_aarch64_get_dregoiv4bf (__o, 0);
34710 ret.val[1] = (bfloat16x4_t) __builtin_aarch64_get_dregoiv4bf (__o, 1);
34711 return ret;
34712}
34713
34714__extension__ extern __inline bfloat16x8x2_t
34715__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34716vld2q_bf16 (const bfloat16_t * __a)
34717{
34718 bfloat16x8x2_t ret;
34719 __builtin_aarch64_simd_oi __o;
34720 __o = __builtin_aarch64_ld2v8bf ((const __builtin_aarch64_simd_bf *) __a);
34721 ret.val[0] = (bfloat16x8_t) __builtin_aarch64_get_qregoiv8bf (__o, 0);
34722 ret.val[1] = (bfloat16x8_t) __builtin_aarch64_get_qregoiv8bf (__o, 1);
34723 return ret;
34724}
34725
34726__extension__ extern __inline bfloat16x4x2_t
34727__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34728vld2_dup_bf16 (const bfloat16_t * __a)
34729{
34730 bfloat16x4x2_t ret;
34731 __builtin_aarch64_simd_oi __o;
34732 __o = __builtin_aarch64_ld2rv4bf ((const __builtin_aarch64_simd_bf *) __a);
34733 ret.val[0] = (bfloat16x4_t) __builtin_aarch64_get_dregoiv4bf (__o, 0);
34734 ret.val[1] = (bfloat16x4_t) __builtin_aarch64_get_dregoiv4bf (__o, 1);
34735 return ret;
34736}
34737
34738__extension__ extern __inline bfloat16x8x2_t
34739__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34740vld2q_dup_bf16 (const bfloat16_t * __a)
34741{
34742 bfloat16x8x2_t ret;
34743 __builtin_aarch64_simd_oi __o;
34744 __o = __builtin_aarch64_ld2rv8bf ((const __builtin_aarch64_simd_bf *) __a);
34745 ret.val[0] = (bfloat16x8_t) __builtin_aarch64_get_qregoiv8bf (__o, 0);
34746 ret.val[1] = (bfloat16x8_t) __builtin_aarch64_get_qregoiv8bf (__o, 1);
34747 return ret;
34748}
34749
34750__extension__ extern __inline bfloat16x4x3_t
34751__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34752vld3_bf16 (const bfloat16_t * __a)
34753{
34754 bfloat16x4x3_t ret;
34755 __builtin_aarch64_simd_ci __o;
34756 __o = __builtin_aarch64_ld3v4bf ((const __builtin_aarch64_simd_bf *) __a);
34757 ret.val[0] = (bfloat16x4_t) __builtin_aarch64_get_dregciv4bf (__o, 0);
34758 ret.val[1] = (bfloat16x4_t) __builtin_aarch64_get_dregciv4bf (__o, 1);
34759 ret.val[2] = (bfloat16x4_t) __builtin_aarch64_get_dregciv4bf (__o, 2);
34760 return ret;
34761}
34762
34763__extension__ extern __inline bfloat16x8x3_t
34764__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34765vld3q_bf16 (const bfloat16_t * __a)
34766{
34767 bfloat16x8x3_t ret;
34768 __builtin_aarch64_simd_ci __o;
34769 __o = __builtin_aarch64_ld3v8bf ((const __builtin_aarch64_simd_bf *) __a);
34770 ret.val[0] = (bfloat16x8_t) __builtin_aarch64_get_qregciv8bf (__o, 0);
34771 ret.val[1] = (bfloat16x8_t) __builtin_aarch64_get_qregciv8bf (__o, 1);
34772 ret.val[2] = (bfloat16x8_t) __builtin_aarch64_get_qregciv8bf (__o, 2);
34773 return ret;
34774}
34775
34776__extension__ extern __inline bfloat16x4x3_t
34777__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34778vld3_dup_bf16 (const bfloat16_t * __a)
34779{
34780 bfloat16x4x3_t ret;
34781 __builtin_aarch64_simd_ci __o;
34782 __o = __builtin_aarch64_ld3rv4bf ((const __builtin_aarch64_simd_bf *) __a);
34783 ret.val[0] = (bfloat16x4_t) __builtin_aarch64_get_dregciv4bf (__o, 0);
34784 ret.val[1] = (bfloat16x4_t) __builtin_aarch64_get_dregciv4bf (__o, 1);
34785 ret.val[2] = (bfloat16x4_t) __builtin_aarch64_get_dregciv4bf (__o, 2);
34786 return ret;
34787}
34788
34789__extension__ extern __inline bfloat16x8x3_t
34790__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34791vld3q_dup_bf16 (const bfloat16_t * __a)
34792{
34793 bfloat16x8x3_t ret;
34794 __builtin_aarch64_simd_ci __o;
34795 __o = __builtin_aarch64_ld3rv8bf ((const __builtin_aarch64_simd_bf *) __a);
34796 ret.val[0] = (bfloat16x8_t) __builtin_aarch64_get_qregciv8bf (__o, 0);
34797 ret.val[1] = (bfloat16x8_t) __builtin_aarch64_get_qregciv8bf (__o, 1);
34798 ret.val[2] = (bfloat16x8_t) __builtin_aarch64_get_qregciv8bf (__o, 2);
34799 return ret;
34800}
34801
34802__extension__ extern __inline bfloat16x4x4_t
34803__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34804vld4_bf16 (const bfloat16_t * __a)
34805{
34806 bfloat16x4x4_t ret;
34807 __builtin_aarch64_simd_xi __o;
34808 __o = __builtin_aarch64_ld4v4bf ((const __builtin_aarch64_simd_bf *) __a);
34809 ret.val[0] = (bfloat16x4_t) __builtin_aarch64_get_dregxiv4bf (__o, 0);
34810 ret.val[1] = (bfloat16x4_t) __builtin_aarch64_get_dregxiv4bf (__o, 1);
34811 ret.val[2] = (bfloat16x4_t) __builtin_aarch64_get_dregxiv4bf (__o, 2);
34812 ret.val[3] = (bfloat16x4_t) __builtin_aarch64_get_dregxiv4bf (__o, 3);
34813 return ret;
34814}
34815
34816__extension__ extern __inline bfloat16x8x4_t
34817__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34818vld4q_bf16 (const bfloat16_t * __a)
34819{
34820 bfloat16x8x4_t ret;
34821 __builtin_aarch64_simd_xi __o;
34822 __o = __builtin_aarch64_ld4v8bf ((const __builtin_aarch64_simd_bf *) __a);
34823 ret.val[0] = (bfloat16x8_t) __builtin_aarch64_get_qregxiv8bf (__o, 0);
34824 ret.val[1] = (bfloat16x8_t) __builtin_aarch64_get_qregxiv8bf (__o, 1);
34825 ret.val[2] = (bfloat16x8_t) __builtin_aarch64_get_qregxiv8bf (__o, 2);
34826 ret.val[3] = (bfloat16x8_t) __builtin_aarch64_get_qregxiv8bf (__o, 3);
34827 return ret;
34828}
34829
34830__extension__ extern __inline bfloat16x4x4_t
34831__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34832vld4_dup_bf16 (const bfloat16_t * __a)
34833{
34834 bfloat16x4x4_t ret;
34835 __builtin_aarch64_simd_xi __o;
34836 __o = __builtin_aarch64_ld4rv4bf ((const __builtin_aarch64_simd_bf *) __a);
34837 ret.val[0] = (bfloat16x4_t) __builtin_aarch64_get_dregxiv4bf (__o, 0);
34838 ret.val[1] = (bfloat16x4_t) __builtin_aarch64_get_dregxiv4bf (__o, 1);
34839 ret.val[2] = (bfloat16x4_t) __builtin_aarch64_get_dregxiv4bf (__o, 2);
34840 ret.val[3] = (bfloat16x4_t) __builtin_aarch64_get_dregxiv4bf (__o, 3);
34841 return ret;
34842}
34843
34844__extension__ extern __inline bfloat16x8x4_t
34845__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34846vld4q_dup_bf16 (const bfloat16_t * __a)
34847{
34848 bfloat16x8x4_t ret;
34849 __builtin_aarch64_simd_xi __o;
34850 __o = __builtin_aarch64_ld4rv8bf ((const __builtin_aarch64_simd_bf *) __a);
34851 ret.val[0] = (bfloat16x8_t) __builtin_aarch64_get_qregxiv8bf (__o, 0);
34852 ret.val[1] = (bfloat16x8_t) __builtin_aarch64_get_qregxiv8bf (__o, 1);
34853 ret.val[2] = (bfloat16x8_t) __builtin_aarch64_get_qregxiv8bf (__o, 2);
34854 ret.val[3] = (bfloat16x8_t) __builtin_aarch64_get_qregxiv8bf (__o, 3);
34855 return ret;
34856}
34857
34858/* vst */
34859
34860__extension__ extern __inline void
34861__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34862vst1_bf16 (bfloat16_t *__a, bfloat16x4_t __b)
34863{
34864 __builtin_aarch64_st1v4bf (__a, __b);
34865}
34866
34867__extension__ extern __inline void
34868__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34869vst1_bf16_x2 (bfloat16_t * __a, bfloat16x4x2_t __val)
34870{
34871 __builtin_aarch64_simd_oi __o;
34872 bfloat16x8x2_t __temp;
34873 __temp.val[0] = vcombine_bf16 (__val.val[0], vcreate_bf16 (__AARCH64_UINT64_C (0)));
34874 __temp.val[1] = vcombine_bf16 (__val.val[1], vcreate_bf16 (__AARCH64_UINT64_C (0)));
34875 __o = __builtin_aarch64_set_qregoiv8bf (__o, __temp.val[0], 0);
34876 __o = __builtin_aarch64_set_qregoiv8bf (__o, __temp.val[1], 1);
34877 __builtin_aarch64_st1x2v4bf (__a, __o);
34878}
34879
34880__extension__ extern __inline void
34881__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34882vst1q_bf16_x2 (bfloat16_t * __a, bfloat16x8x2_t __val)
34883{
34884 __builtin_aarch64_simd_oi __o;
34885 __o = __builtin_aarch64_set_qregoiv8bf (__o, __val.val[0], 0);
34886 __o = __builtin_aarch64_set_qregoiv8bf (__o, __val.val[1], 1);
34887 __builtin_aarch64_st1x2v8bf (__a, __o);
34888}
34889
34890__extension__ extern __inline void
34891__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34892vst1_bf16_x3 (bfloat16_t * __a, bfloat16x4x3_t __val)
34893{
34894 __builtin_aarch64_simd_ci __o;
34895 bfloat16x8x3_t __temp;
34896 __temp.val[0] = vcombine_bf16 (__val.val[0], vcreate_bf16 (__AARCH64_UINT64_C (0)));
34897 __temp.val[1] = vcombine_bf16 (__val.val[1], vcreate_bf16 (__AARCH64_UINT64_C (0)));
34898 __temp.val[2] = vcombine_bf16 (__val.val[2], vcreate_bf16 (__AARCH64_UINT64_C (0)));
34899 __o = __builtin_aarch64_set_qregciv8bf (__o, (bfloat16x8_t) __temp.val[0], 0);
34900 __o = __builtin_aarch64_set_qregciv8bf (__o, (bfloat16x8_t) __temp.val[1], 1);
34901 __o = __builtin_aarch64_set_qregciv8bf (__o, (bfloat16x8_t) __temp.val[2], 2);
34902 __builtin_aarch64_st1x3v4bf ((__builtin_aarch64_simd_bf *) __a, __o);
34903}
34904
34905__extension__ extern __inline void
34906__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34907vst1q_bf16_x3 (bfloat16_t * __a, bfloat16x8x3_t __val)
34908{
34909 __builtin_aarch64_simd_ci __o;
34910 __o = __builtin_aarch64_set_qregciv8bf (__o, (bfloat16x8_t) __val.val[0], 0);
34911 __o = __builtin_aarch64_set_qregciv8bf (__o, (bfloat16x8_t) __val.val[1], 1);
34912 __o = __builtin_aarch64_set_qregciv8bf (__o, (bfloat16x8_t) __val.val[2], 2);
34913 __builtin_aarch64_st1x3v8bf ((__builtin_aarch64_simd_bf *) __a, __o);
34914}
34915
34916__extension__ extern __inline void
34917__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34918vst1_bf16_x4 (bfloat16_t * __a, bfloat16x4x4_t val)
34919{
34920 union { bfloat16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
34921 __builtin_aarch64_st1x4v4bf ((__builtin_aarch64_simd_bf *) __a, __u.__o);
34922}
34923
34924__extension__ extern __inline void
34925__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34926vst1q_bf16_x4 (bfloat16_t * __a, bfloat16x8x4_t val)
34927{
34928 union { bfloat16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val };
34929 __builtin_aarch64_st1x4v8bf ((__builtin_aarch64_simd_bf *) __a, __u.__o);
34930}
34931
34932__extension__ extern __inline void
34933__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34934vst1q_bf16 (bfloat16_t *__a, bfloat16x8_t __b)
34935{
34936 __builtin_aarch64_st1v8bf (__a, __b);
34937}
34938
34939__extension__ extern __inline void
34940__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34941vst1_lane_bf16 (bfloat16_t *__a, bfloat16x4_t __b, const int __lane)
34942{
34943 *__a = __aarch64_vget_lane_any (__b, __lane);
34944}
34945
34946__extension__ extern __inline void
34947__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34948vst1q_lane_bf16 (bfloat16_t *__a, bfloat16x8_t __b, const int __lane)
34949{
34950 *__a = __aarch64_vget_lane_any (__b, __lane);
34951}
34952
34953__extension__ extern __inline void
34954__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34955vst2_bf16 (bfloat16_t * __a, bfloat16x4x2_t __val)
34956{
34957 __builtin_aarch64_simd_oi __o;
34958 bfloat16x8x2_t __temp;
34959 __temp.val[0] = vcombine_bf16 (__val.val[0], vcreate_bf16 (__AARCH64_UINT64_C (0)));
34960 __temp.val[1] = vcombine_bf16 (__val.val[1], vcreate_bf16 (__AARCH64_UINT64_C (0)));
34961 __o = __builtin_aarch64_set_qregoiv8bf (__o, __temp.val[0], 0);
34962 __o = __builtin_aarch64_set_qregoiv8bf (__o, __temp.val[1], 1);
34963 __builtin_aarch64_st2v4bf (__a, __o);
34964}
34965
34966__extension__ extern __inline void
34967__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34968vst2q_bf16 (bfloat16_t * __a, bfloat16x8x2_t __val)
34969{
34970 __builtin_aarch64_simd_oi __o;
34971 __o = __builtin_aarch64_set_qregoiv8bf (__o, __val.val[0], 0);
34972 __o = __builtin_aarch64_set_qregoiv8bf (__o, __val.val[1], 1);
34973 __builtin_aarch64_st2v8bf (__a, __o);
34974}
34975
34976__extension__ extern __inline void
34977__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34978vst3_bf16 (bfloat16_t * __a, bfloat16x4x3_t __val)
34979{
34980 __builtin_aarch64_simd_ci __o;
34981 bfloat16x8x3_t __temp;
34982 __temp.val[0] = vcombine_bf16 (__val.val[0], vcreate_bf16 (__AARCH64_UINT64_C (0)));
34983 __temp.val[1] = vcombine_bf16 (__val.val[1], vcreate_bf16 (__AARCH64_UINT64_C (0)));
34984 __temp.val[2] = vcombine_bf16 (__val.val[2], vcreate_bf16 (__AARCH64_UINT64_C (0)));
34985 __o = __builtin_aarch64_set_qregciv8bf (__o, (bfloat16x8_t) __temp.val[0], 0);
34986 __o = __builtin_aarch64_set_qregciv8bf (__o, (bfloat16x8_t) __temp.val[1], 1);
34987 __o = __builtin_aarch64_set_qregciv8bf (__o, (bfloat16x8_t) __temp.val[2], 2);
34988 __builtin_aarch64_st3v4bf ((__builtin_aarch64_simd_bf *) __a, __o);
34989}
34990
34991__extension__ extern __inline void
34992__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34993vst3q_bf16 (bfloat16_t * __a, bfloat16x8x3_t __val)
34994{
34995 __builtin_aarch64_simd_ci __o;
34996 __o = __builtin_aarch64_set_qregciv8bf (__o, (bfloat16x8_t) __val.val[0], 0);
34997 __o = __builtin_aarch64_set_qregciv8bf (__o, (bfloat16x8_t) __val.val[1], 1);
34998 __o = __builtin_aarch64_set_qregciv8bf (__o, (bfloat16x8_t) __val.val[2], 2);
34999 __builtin_aarch64_st3v8bf ((__builtin_aarch64_simd_bf *) __a, __o);
35000}
35001
35002__extension__ extern __inline void
35003__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35004vst4_bf16 (bfloat16_t * __a, bfloat16x4x4_t __val)
35005{
35006 __builtin_aarch64_simd_xi __o;
35007 bfloat16x8x4_t __temp;
35008 __temp.val[0] = vcombine_bf16 (__val.val[0], vcreate_bf16 (__AARCH64_UINT64_C (0)));
35009 __temp.val[1] = vcombine_bf16 (__val.val[1], vcreate_bf16 (__AARCH64_UINT64_C (0)));
35010 __temp.val[2] = vcombine_bf16 (__val.val[2], vcreate_bf16 (__AARCH64_UINT64_C (0)));
35011 __temp.val[3] = vcombine_bf16 (__val.val[3], vcreate_bf16 (__AARCH64_UINT64_C (0)));
35012 __o = __builtin_aarch64_set_qregxiv8bf (__o, (bfloat16x8_t) __temp.val[0], 0);
35013 __o = __builtin_aarch64_set_qregxiv8bf (__o, (bfloat16x8_t) __temp.val[1], 1);
35014 __o = __builtin_aarch64_set_qregxiv8bf (__o, (bfloat16x8_t) __temp.val[2], 2);
35015 __o = __builtin_aarch64_set_qregxiv8bf (__o, (bfloat16x8_t) __temp.val[3], 3);
35016 __builtin_aarch64_st4v4bf ((__builtin_aarch64_simd_bf *) __a, __o);
35017}
35018
35019__extension__ extern __inline void
35020__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35021vst4q_bf16 (bfloat16_t * __a, bfloat16x8x4_t __val)
35022{
35023 __builtin_aarch64_simd_xi __o;
35024 __o = __builtin_aarch64_set_qregxiv8bf (__o, (bfloat16x8_t) __val.val[0], 0);
35025 __o = __builtin_aarch64_set_qregxiv8bf (__o, (bfloat16x8_t) __val.val[1], 1);
35026 __o = __builtin_aarch64_set_qregxiv8bf (__o, (bfloat16x8_t) __val.val[2], 2);
35027 __o = __builtin_aarch64_set_qregxiv8bf (__o, (bfloat16x8_t) __val.val[3], 3);
35028 __builtin_aarch64_st4v8bf ((__builtin_aarch64_simd_bf *) __a, __o);
35029}
35030
8ea6c1b8
MI
35031/* vreinterpret */
35032
35033__extension__ extern __inline bfloat16x4_t
35034__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35035vreinterpret_bf16_u8 (uint8x8_t __a)
35036{
35037 return (bfloat16x4_t)__a;
35038}
35039
35040__extension__ extern __inline bfloat16x4_t
35041__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35042vreinterpret_bf16_u16 (uint16x4_t __a)
35043{
35044 return (bfloat16x4_t)__a;
35045}
35046
35047__extension__ extern __inline bfloat16x4_t
35048__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35049vreinterpret_bf16_u32 (uint32x2_t __a)
35050{
35051 return (bfloat16x4_t)__a;
35052}
35053
35054__extension__ extern __inline bfloat16x4_t
35055__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35056vreinterpret_bf16_u64 (uint64x1_t __a)
35057{
35058 return (bfloat16x4_t)__a;
35059}
35060
35061__extension__ extern __inline bfloat16x4_t
35062__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35063vreinterpret_bf16_s8 (int8x8_t __a)
35064{
35065 return (bfloat16x4_t)__a;
35066}
35067
35068__extension__ extern __inline bfloat16x4_t
35069__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35070vreinterpret_bf16_s16 (int16x4_t __a)
35071{
35072 return (bfloat16x4_t)__a;
35073}
35074
35075__extension__ extern __inline bfloat16x4_t
35076__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35077vreinterpret_bf16_s32 (int32x2_t __a)
35078{
35079 return (bfloat16x4_t)__a;
35080}
35081
35082__extension__ extern __inline bfloat16x4_t
35083__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35084vreinterpret_bf16_s64 (int64x1_t __a)
35085{
35086 return (bfloat16x4_t)__a;
35087}
35088
35089__extension__ extern __inline bfloat16x4_t
35090__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35091vreinterpret_bf16_p8 (poly8x8_t __a)
35092{
35093 return (bfloat16x4_t)__a;
35094}
35095
35096__extension__ extern __inline bfloat16x4_t
35097__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35098vreinterpret_bf16_p16 (poly16x4_t __a)
35099{
35100 return (bfloat16x4_t)__a;
35101}
35102
35103__extension__ extern __inline bfloat16x4_t
35104__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35105vreinterpret_bf16_p64 (poly64x1_t __a)
35106{
35107 return (bfloat16x4_t)__a;
35108}
35109
35110__extension__ extern __inline bfloat16x4_t
35111__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35112vreinterpret_bf16_f16 (float16x4_t __a)
35113{
35114 return (bfloat16x4_t)__a;
35115}
35116
35117__extension__ extern __inline bfloat16x4_t
35118__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35119vreinterpret_bf16_f32 (float32x2_t __a)
35120{
35121 return (bfloat16x4_t)__a;
35122}
35123
35124__extension__ extern __inline bfloat16x4_t
35125__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35126vreinterpret_bf16_f64 (float64x1_t __a)
35127{
35128 return (bfloat16x4_t)__a;
35129}
35130
35131__extension__ extern __inline bfloat16x8_t
35132__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35133vreinterpretq_bf16_u8 (uint8x16_t __a)
35134{
35135 return (bfloat16x8_t)__a;
35136}
35137
35138__extension__ extern __inline bfloat16x8_t
35139__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35140vreinterpretq_bf16_u16 (uint16x8_t __a)
35141{
35142 return (bfloat16x8_t)__a;
35143}
35144
35145__extension__ extern __inline bfloat16x8_t
35146__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35147vreinterpretq_bf16_u32 (uint32x4_t __a)
35148{
35149 return (bfloat16x8_t)__a;
35150}
35151
35152__extension__ extern __inline bfloat16x8_t
35153__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35154vreinterpretq_bf16_u64 (uint64x2_t __a)
35155{
35156 return (bfloat16x8_t)__a;
35157}
35158
35159__extension__ extern __inline bfloat16x8_t
35160__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35161vreinterpretq_bf16_s8 (int8x16_t __a)
35162{
35163 return (bfloat16x8_t)__a;
35164}
35165
35166__extension__ extern __inline bfloat16x8_t
35167__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35168vreinterpretq_bf16_s16 (int16x8_t __a)
35169{
35170 return (bfloat16x8_t)__a;
35171}
35172
35173__extension__ extern __inline bfloat16x8_t
35174__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35175vreinterpretq_bf16_s32 (int32x4_t __a)
35176{
35177 return (bfloat16x8_t)__a;
35178}
35179
35180__extension__ extern __inline bfloat16x8_t
35181__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35182vreinterpretq_bf16_s64 (int64x2_t __a)
35183{
35184 return (bfloat16x8_t)__a;
35185}
35186
35187__extension__ extern __inline bfloat16x8_t
35188__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35189vreinterpretq_bf16_p8 (poly8x16_t __a)
35190{
35191 return (bfloat16x8_t)__a;
35192}
35193
35194__extension__ extern __inline bfloat16x8_t
35195__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35196vreinterpretq_bf16_p16 (poly16x8_t __a)
35197{
35198 return (bfloat16x8_t)__a;
35199}
35200
35201__extension__ extern __inline bfloat16x8_t
35202__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35203vreinterpretq_bf16_p64 (poly64x2_t __a)
35204{
35205 return (bfloat16x8_t)__a;
35206}
35207
35208__extension__ extern __inline bfloat16x8_t
35209__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35210vreinterpretq_bf16_p128 (poly128_t __a)
35211{
35212 return (bfloat16x8_t)__a;
35213}
35214
35215__extension__ extern __inline bfloat16x8_t
35216__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35217vreinterpretq_bf16_f16 (float16x8_t __a)
35218{
35219 return (bfloat16x8_t)__a;
35220}
35221
35222__extension__ extern __inline bfloat16x8_t
35223__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35224vreinterpretq_bf16_f32 (float32x4_t __a)
35225{
35226 return (bfloat16x8_t)__a;
35227}
35228
35229__extension__ extern __inline bfloat16x8_t
35230__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35231vreinterpretq_bf16_f64 (float64x2_t __a)
35232{
35233 return (bfloat16x8_t)__a;
35234}
35235
35236__extension__ extern __inline int8x8_t
35237__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35238vreinterpret_s8_bf16 (bfloat16x4_t __a)
35239{
35240 return (int8x8_t)__a;
35241}
35242
35243__extension__ extern __inline int16x4_t
35244__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35245vreinterpret_s16_bf16 (bfloat16x4_t __a)
35246{
35247 return (int16x4_t)__a;
35248}
35249
35250__extension__ extern __inline int32x2_t
35251__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35252vreinterpret_s32_bf16 (bfloat16x4_t __a)
35253{
35254 return (int32x2_t)__a;
35255}
35256
35257__extension__ extern __inline int64x1_t
35258__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35259vreinterpret_s64_bf16 (bfloat16x4_t __a)
35260{
35261 return (int64x1_t)__a;
35262}
35263
35264__extension__ extern __inline uint8x8_t
35265__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35266vreinterpret_u8_bf16 (bfloat16x4_t __a)
35267{
35268 return (uint8x8_t)__a;
35269}
35270
35271__extension__ extern __inline uint16x4_t
35272__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35273vreinterpret_u16_bf16 (bfloat16x4_t __a)
35274{
35275 return (uint16x4_t)__a;
35276}
35277
35278__extension__ extern __inline uint32x2_t
35279__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35280vreinterpret_u32_bf16 (bfloat16x4_t __a)
35281{
35282 return (uint32x2_t)__a;
35283}
35284
35285__extension__ extern __inline uint64x1_t
35286__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35287vreinterpret_u64_bf16 (bfloat16x4_t __a)
35288{
35289 return (uint64x1_t)__a;
35290}
35291
35292__extension__ extern __inline float16x4_t
35293__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35294vreinterpret_f16_bf16 (bfloat16x4_t __a)
35295{
35296 return (float16x4_t)__a;
35297}
35298
35299__extension__ extern __inline float32x2_t
35300__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35301vreinterpret_f32_bf16 (bfloat16x4_t __a)
35302{
35303 return (float32x2_t)__a;
35304}
35305
35306__extension__ extern __inline float64x1_t
35307__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35308vreinterpret_f64_bf16 (bfloat16x4_t __a)
35309{
35310 return (float64x1_t)__a;
35311}
35312
35313__extension__ extern __inline poly8x8_t
35314__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35315vreinterpret_p8_bf16 (bfloat16x4_t __a)
35316{
35317 return (poly8x8_t)__a;
35318}
35319
35320__extension__ extern __inline poly16x4_t
35321__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35322vreinterpret_p16_bf16 (bfloat16x4_t __a)
35323{
35324 return (poly16x4_t)__a;
35325}
35326
35327__extension__ extern __inline poly64x1_t
35328__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35329vreinterpret_p64_bf16 (bfloat16x4_t __a)
35330{
35331 return (poly64x1_t)__a;
35332}
35333
35334__extension__ extern __inline int8x16_t
35335__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35336vreinterpretq_s8_bf16 (bfloat16x8_t __a)
35337{
35338 return (int8x16_t)__a;
35339}
35340
35341__extension__ extern __inline int16x8_t
35342__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35343vreinterpretq_s16_bf16 (bfloat16x8_t __a)
35344{
35345 return (int16x8_t)__a;
35346}
35347
35348__extension__ extern __inline int32x4_t
35349__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35350vreinterpretq_s32_bf16 (bfloat16x8_t __a)
35351{
35352 return (int32x4_t)__a;
35353}
35354
35355__extension__ extern __inline int64x2_t
35356__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35357vreinterpretq_s64_bf16 (bfloat16x8_t __a)
35358{
35359 return (int64x2_t)__a;
35360}
35361
35362__extension__ extern __inline uint8x16_t
35363__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35364vreinterpretq_u8_bf16 (bfloat16x8_t __a)
35365{
35366 return (uint8x16_t)__a;
35367}
35368
35369__extension__ extern __inline uint16x8_t
35370__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35371vreinterpretq_u16_bf16 (bfloat16x8_t __a)
35372{
35373 return (uint16x8_t)__a;
35374}
35375
35376__extension__ extern __inline uint32x4_t
35377__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35378vreinterpretq_u32_bf16 (bfloat16x8_t __a)
35379{
35380 return (uint32x4_t)__a;
35381}
35382
35383__extension__ extern __inline uint64x2_t
35384__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35385vreinterpretq_u64_bf16 (bfloat16x8_t __a)
35386{
35387 return (uint64x2_t)__a;
35388}
35389
35390__extension__ extern __inline float16x8_t
35391__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35392vreinterpretq_f16_bf16 (bfloat16x8_t __a)
35393{
35394 return (float16x8_t)__a;
35395}
35396
35397__extension__ extern __inline float32x4_t
35398__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35399vreinterpretq_f32_bf16 (bfloat16x8_t __a)
35400{
35401 return (float32x4_t)__a;
35402}
35403
35404__extension__ extern __inline float64x2_t
35405__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35406vreinterpretq_f64_bf16 (bfloat16x8_t __a)
35407{
35408 return (float64x2_t)__a;
35409}
35410
35411__extension__ extern __inline poly8x16_t
35412__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35413vreinterpretq_p8_bf16 (bfloat16x8_t __a)
35414{
35415 return (poly8x16_t)__a;
35416}
35417
35418__extension__ extern __inline poly16x8_t
35419__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35420vreinterpretq_p16_bf16 (bfloat16x8_t __a)
35421{
35422 return (poly16x8_t)__a;
35423}
35424
35425__extension__ extern __inline poly64x2_t
35426__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35427vreinterpretq_p64_bf16 (bfloat16x8_t __a)
35428{
35429 return (poly64x2_t)__a;
35430}
35431
35432__extension__ extern __inline poly128_t
35433__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35434vreinterpretq_p128_bf16 (bfloat16x8_t __a)
35435{
35436 return (poly128_t)__a;
35437}
35438
f275d73a
SMW
35439__extension__ extern __inline float32x2_t
35440__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35441vbfdot_f32 (float32x2_t __r, bfloat16x4_t __a, bfloat16x4_t __b)
35442{
35443 return __builtin_aarch64_bfdotv2sf (__r, __a, __b);
35444}
35445
35446__extension__ extern __inline float32x4_t
35447__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35448vbfdotq_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x8_t __b)
35449{
35450 return __builtin_aarch64_bfdotv4sf (__r, __a, __b);
35451}
35452
35453__extension__ extern __inline float32x2_t
35454__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35455vbfdot_lane_f32 (float32x2_t __r, bfloat16x4_t __a, bfloat16x4_t __b,
35456 const int __index)
35457{
35458 return __builtin_aarch64_bfdot_lanev2sf (__r, __a, __b, __index);
35459}
35460
35461__extension__ extern __inline float32x4_t
35462__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35463vbfdotq_lane_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x4_t __b,
35464 const int __index)
35465{
35466 return __builtin_aarch64_bfdot_lanev4sf (__r, __a, __b, __index);
35467}
35468
35469__extension__ extern __inline float32x2_t
35470__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35471vbfdot_laneq_f32 (float32x2_t __r, bfloat16x4_t __a, bfloat16x8_t __b,
35472 const int __index)
35473{
35474 return __builtin_aarch64_bfdot_laneqv2sf (__r, __a, __b, __index);
35475}
35476
35477__extension__ extern __inline float32x4_t
35478__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35479vbfdotq_laneq_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x8_t __b,
35480 const int __index)
35481{
35482 return __builtin_aarch64_bfdot_laneqv4sf (__r, __a, __b, __index);
35483}
35484
f78335df
DB
35485__extension__ extern __inline float32x4_t
35486__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35487vbfmmlaq_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x8_t __b)
35488
35489{
35490 return __builtin_aarch64_bfmmlaqv4sf (__r, __a, __b);
35491}
35492
35493__extension__ extern __inline float32x4_t
35494__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35495vbfmlalbq_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x8_t __b)
35496{
35497 return __builtin_aarch64_bfmlalbv4sf (__r, __a, __b);
35498}
35499
35500__extension__ extern __inline float32x4_t
35501__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35502vbfmlaltq_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x8_t __b)
35503{
35504 return __builtin_aarch64_bfmlaltv4sf (__r, __a, __b);
35505}
35506
35507__extension__ extern __inline float32x4_t
35508__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35509vbfmlalbq_lane_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x4_t __b,
35510 const int __index)
35511{
35512 return __builtin_aarch64_bfmlalb_lanev4sf (__r, __a, __b, __index);
35513}
35514
35515__extension__ extern __inline float32x4_t
35516__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35517vbfmlaltq_lane_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x4_t __b,
35518 const int __index)
35519{
35520 return __builtin_aarch64_bfmlalt_lanev4sf (__r, __a, __b, __index);
35521}
35522
35523__extension__ extern __inline float32x4_t
35524__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35525vbfmlalbq_laneq_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x8_t __b,
35526 const int __index)
35527{
35528 return __builtin_aarch64_bfmlalb_lane_qv4sf (__r, __a, __b, __index);
35529}
35530
35531__extension__ extern __inline float32x4_t
35532__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35533vbfmlaltq_laneq_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x8_t __b,
35534 const int __index)
35535{
35536 return __builtin_aarch64_bfmlalt_lane_qv4sf (__r, __a, __b, __index);
35537}
35538
3553c658
DZ
35539__extension__ extern __inline bfloat16x4_t
35540__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35541vget_low_bf16 (bfloat16x8_t __a)
35542{
35543 return __builtin_aarch64_vget_lo_halfv8bf (__a);
35544}
35545
35546__extension__ extern __inline bfloat16x4_t
35547__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35548vget_high_bf16 (bfloat16x8_t __a)
35549{
35550 return __builtin_aarch64_vget_hi_halfv8bf (__a);
35551}
35552
f7d69611
DZ
35553__extension__ extern __inline float32x4_t
35554__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35555vcvt_f32_bf16 (bfloat16x4_t __a)
35556{
35557 return __builtin_aarch64_vbfcvtv4bf (__a);
35558}
35559
35560__extension__ extern __inline float32x4_t
35561__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35562vcvtq_low_f32_bf16 (bfloat16x8_t __a)
35563{
35564 return __builtin_aarch64_vbfcvtv8bf (__a);
35565}
35566
35567__extension__ extern __inline float32x4_t
35568__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35569vcvtq_high_f32_bf16 (bfloat16x8_t __a)
35570{
35571 return __builtin_aarch64_vbfcvt_highv8bf (__a);
35572}
35573
1f520d34
DB
35574__extension__ extern __inline bfloat16x4_t
35575__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35576vcvt_bf16_f32 (float32x4_t __a)
35577{
35578 return __builtin_aarch64_bfcvtnv4bf (__a);
35579}
35580
35581__extension__ extern __inline bfloat16x8_t
35582__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35583vcvtq_low_bf16_f32 (float32x4_t __a)
35584{
35585 return __builtin_aarch64_bfcvtn_qv8bf (__a);
35586}
35587
35588__extension__ extern __inline bfloat16x8_t
35589__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35590vcvtq_high_bf16_f32 (bfloat16x8_t __inactive, float32x4_t __a)
35591{
35592 return __builtin_aarch64_bfcvtn2v8bf (__inactive, __a);
35593}
35594
8eb8dcac
AC
35595__extension__ extern __inline bfloat16x4_t
35596__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35597vcopy_lane_bf16 (bfloat16x4_t __a, const int __lane1,
35598 bfloat16x4_t __b, const int __lane2)
35599{
35600 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
35601 __a, __lane1);
35602}
35603
35604__extension__ extern __inline bfloat16x8_t
35605__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35606vcopyq_lane_bf16 (bfloat16x8_t __a, const int __lane1,
35607 bfloat16x4_t __b, const int __lane2)
35608{
35609 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
35610 __a, __lane1);
35611}
35612
35613__extension__ extern __inline bfloat16x4_t
35614__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35615vcopy_laneq_bf16 (bfloat16x4_t __a, const int __lane1,
35616 bfloat16x8_t __b, const int __lane2)
35617{
35618 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
35619 __a, __lane1);
35620}
35621
35622__extension__ extern __inline bfloat16x8_t
35623__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35624vcopyq_laneq_bf16 (bfloat16x8_t __a, const int __lane1,
35625 bfloat16x8_t __b, const int __lane2)
35626{
35627 return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),
35628 __a, __lane1);
35629}
35630
44e570d9
AC
35631__LD2_LANE_FUNC (bfloat16x4x2_t, bfloat16x4_t, bfloat16x8x2_t, bfloat16_t, v4bf,
35632 v8bf, bf, bf16, bfloat16x8_t)
35633__LD2Q_LANE_FUNC (bfloat16x8x2_t, bfloat16x8_t, bfloat16_t, v8bf, bf, bf16)
35634__LD3_LANE_FUNC (bfloat16x4x3_t, bfloat16x4_t, bfloat16x8x3_t, bfloat16_t, v4bf,
35635 v8bf, bf, bf16, bfloat16x8_t)
35636__LD3Q_LANE_FUNC (bfloat16x8x3_t, bfloat16x8_t, bfloat16_t, v8bf, bf, bf16)
35637__LD4_LANE_FUNC (bfloat16x4x4_t, bfloat16x4_t, bfloat16x8x4_t, bfloat16_t, v4bf,
35638 v8bf, bf, bf16, bfloat16x8_t)
35639__LD4Q_LANE_FUNC (bfloat16x8x4_t, bfloat16x8_t, bfloat16_t, v8bf, bf, bf16)
292c812a
AC
35640
35641__ST2_LANE_FUNC (bfloat16x4x2_t, bfloat16x8x2_t, bfloat16_t, v4bf, v8bf, bf,
35642 bf16, bfloat16x8_t)
35643__ST2Q_LANE_FUNC (bfloat16x8x2_t, bfloat16_t, v8bf, bf, bf16)
35644__ST3_LANE_FUNC (bfloat16x4x3_t, bfloat16x8x3_t, bfloat16_t, v4bf, v8bf, bf,
35645 bf16, bfloat16x8_t)
35646__ST3Q_LANE_FUNC (bfloat16x8x3_t, bfloat16_t, v8bf, bf, bf16)
35647__ST4_LANE_FUNC (bfloat16x4x4_t, bfloat16x8x4_t, bfloat16_t, v4bf, v8bf, bf,
35648 bf16, bfloat16x8_t)
35649__ST4Q_LANE_FUNC (bfloat16x8x4_t, bfloat16_t, v8bf, bf, bf16)
35650
f275d73a
SMW
35651#pragma GCC pop_options
35652
8c197c85
SMW
35653/* AdvSIMD 8-bit Integer Matrix Multiply (I8MM) intrinsics. */
35654
35655#pragma GCC push_options
35656#pragma GCC target ("arch=armv8.2-a+i8mm")
35657
35658__extension__ extern __inline int32x2_t
35659__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35660vusdot_s32 (int32x2_t __r, uint8x8_t __a, int8x8_t __b)
35661{
35662 return __builtin_aarch64_usdotv8qi_ssus (__r, __a, __b);
35663}
35664
35665__extension__ extern __inline int32x4_t
35666__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35667vusdotq_s32 (int32x4_t __r, uint8x16_t __a, int8x16_t __b)
35668{
35669 return __builtin_aarch64_usdotv16qi_ssus (__r, __a, __b);
35670}
35671
35672__extension__ extern __inline int32x2_t
35673__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35674vusdot_lane_s32 (int32x2_t __r, uint8x8_t __a, int8x8_t __b, const int __index)
35675{
35676 return __builtin_aarch64_usdot_lanev8qi_ssuss (__r, __a, __b, __index);
35677}
35678
35679__extension__ extern __inline int32x2_t
35680__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35681vusdot_laneq_s32 (int32x2_t __r, uint8x8_t __a, int8x16_t __b,
35682 const int __index)
35683{
35684 return __builtin_aarch64_usdot_laneqv8qi_ssuss (__r, __a, __b, __index);
35685}
35686
35687__extension__ extern __inline int32x4_t
35688__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35689vusdotq_lane_s32 (int32x4_t __r, uint8x16_t __a, int8x8_t __b,
35690 const int __index)
35691{
35692 return __builtin_aarch64_usdot_lanev16qi_ssuss (__r, __a, __b, __index);
35693}
35694
35695__extension__ extern __inline int32x4_t
35696__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35697vusdotq_laneq_s32 (int32x4_t __r, uint8x16_t __a, int8x16_t __b,
35698 const int __index)
35699{
35700 return __builtin_aarch64_usdot_laneqv16qi_ssuss (__r, __a, __b, __index);
35701}
35702
35703__extension__ extern __inline int32x2_t
35704__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35705vsudot_lane_s32 (int32x2_t __r, int8x8_t __a, uint8x8_t __b, const int __index)
35706{
35707 return __builtin_aarch64_sudot_lanev8qi_sssus (__r, __a, __b, __index);
35708}
35709
35710__extension__ extern __inline int32x2_t
35711__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35712vsudot_laneq_s32 (int32x2_t __r, int8x8_t __a, uint8x16_t __b,
35713 const int __index)
35714{
35715 return __builtin_aarch64_sudot_laneqv8qi_sssus (__r, __a, __b, __index);
35716}
35717
35718__extension__ extern __inline int32x4_t
35719__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35720vsudotq_lane_s32 (int32x4_t __r, int8x16_t __a, uint8x8_t __b,
35721 const int __index)
35722{
35723 return __builtin_aarch64_sudot_lanev16qi_sssus (__r, __a, __b, __index);
35724}
35725
35726__extension__ extern __inline int32x4_t
35727__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35728vsudotq_laneq_s32 (int32x4_t __r, int8x16_t __a, uint8x16_t __b,
35729 const int __index)
35730{
35731 return __builtin_aarch64_sudot_laneqv16qi_sssus (__r, __a, __b, __index);
35732}
35733
40f64837
DZ
35734/* Matrix Multiply-Accumulate. */
35735
35736__extension__ extern __inline int32x4_t
35737__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35738vmmlaq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b)
35739{
35740 return __builtin_aarch64_simd_smmlav16qi (__r, __a, __b);
35741}
35742
35743__extension__ extern __inline uint32x4_t
35744__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35745vmmlaq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b)
35746{
35747 return __builtin_aarch64_simd_ummlav16qi_uuuu (__r, __a, __b);
35748}
35749
35750__extension__ extern __inline int32x4_t
35751__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
35752vusmmlaq_s32 (int32x4_t __r, uint8x16_t __a, int8x16_t __b)
35753{
35754 return __builtin_aarch64_simd_usmmlav16qi_ssus (__r, __a, __b);
35755}
35756
8c197c85
SMW
35757#pragma GCC pop_options
35758
fa9ad35d
KT
35759__extension__ extern __inline poly8x8_t
35760__attribute ((__always_inline__, __gnu_inline__, __artificial__))
35761vadd_p8 (poly8x8_t __a, poly8x8_t __b)
35762{
35763 return __a ^ __b;
35764}
35765
35766__extension__ extern __inline poly16x4_t
35767__attribute ((__always_inline__, __gnu_inline__, __artificial__))
35768vadd_p16 (poly16x4_t __a, poly16x4_t __b)
35769{
35770 return __a ^ __b;
35771}
35772
35773__extension__ extern __inline poly64x1_t
35774__attribute ((__always_inline__, __gnu_inline__, __artificial__))
35775vadd_p64 (poly64x1_t __a, poly64x1_t __b)
35776{
35777 return __a ^ __b;
35778}
35779
35780__extension__ extern __inline poly8x16_t
35781__attribute ((__always_inline__, __gnu_inline__, __artificial__))
35782vaddq_p8 (poly8x16_t __a, poly8x16_t __b)
35783{
35784 return __a ^ __b;
35785}
35786
35787__extension__ extern __inline poly16x8_t
35788__attribute ((__always_inline__, __gnu_inline__, __artificial__))
35789vaddq_p16 (poly16x8_t __a, poly16x8_t __b)
35790{
35791 return __a ^__b;
35792}
35793
35794__extension__ extern __inline poly64x2_t
35795__attribute ((__always_inline__, __gnu_inline__, __artificial__))
35796vaddq_p64 (poly64x2_t __a, poly64x2_t __b)
35797{
35798 return __a ^ __b;
35799}
35800
35801__extension__ extern __inline poly128_t
35802__attribute ((__always_inline__, __gnu_inline__, __artificial__))
35803vaddq_p128 (poly128_t __a, poly128_t __b)
35804{
35805 return __a ^ __b;
35806}
35807
66adb8eb 35808#undef __aarch64_vget_lane_any
66adb8eb 35809
91bd4114 35810#undef __aarch64_vdup_lane_any
358decd5 35811#undef __aarch64_vdup_lane_f16
91bd4114
JG
35812#undef __aarch64_vdup_lane_f32
35813#undef __aarch64_vdup_lane_f64
35814#undef __aarch64_vdup_lane_p8
35815#undef __aarch64_vdup_lane_p16
35816#undef __aarch64_vdup_lane_s8
35817#undef __aarch64_vdup_lane_s16
35818#undef __aarch64_vdup_lane_s32
35819#undef __aarch64_vdup_lane_s64
35820#undef __aarch64_vdup_lane_u8
35821#undef __aarch64_vdup_lane_u16
35822#undef __aarch64_vdup_lane_u32
35823#undef __aarch64_vdup_lane_u64
358decd5 35824#undef __aarch64_vdup_laneq_f16
91bd4114
JG
35825#undef __aarch64_vdup_laneq_f32
35826#undef __aarch64_vdup_laneq_f64
35827#undef __aarch64_vdup_laneq_p8
35828#undef __aarch64_vdup_laneq_p16
35829#undef __aarch64_vdup_laneq_s8
35830#undef __aarch64_vdup_laneq_s16
35831#undef __aarch64_vdup_laneq_s32
35832#undef __aarch64_vdup_laneq_s64
35833#undef __aarch64_vdup_laneq_u8
35834#undef __aarch64_vdup_laneq_u16
35835#undef __aarch64_vdup_laneq_u32
35836#undef __aarch64_vdup_laneq_u64
358decd5 35837#undef __aarch64_vdupq_lane_f16
91bd4114
JG
35838#undef __aarch64_vdupq_lane_f32
35839#undef __aarch64_vdupq_lane_f64
35840#undef __aarch64_vdupq_lane_p8
35841#undef __aarch64_vdupq_lane_p16
35842#undef __aarch64_vdupq_lane_s8
35843#undef __aarch64_vdupq_lane_s16
35844#undef __aarch64_vdupq_lane_s32
35845#undef __aarch64_vdupq_lane_s64
35846#undef __aarch64_vdupq_lane_u8
35847#undef __aarch64_vdupq_lane_u16
35848#undef __aarch64_vdupq_lane_u32
35849#undef __aarch64_vdupq_lane_u64
358decd5 35850#undef __aarch64_vdupq_laneq_f16
91bd4114
JG
35851#undef __aarch64_vdupq_laneq_f32
35852#undef __aarch64_vdupq_laneq_f64
35853#undef __aarch64_vdupq_laneq_p8
35854#undef __aarch64_vdupq_laneq_p16
35855#undef __aarch64_vdupq_laneq_s8
35856#undef __aarch64_vdupq_laneq_s16
35857#undef __aarch64_vdupq_laneq_s32
35858#undef __aarch64_vdupq_laneq_s64
35859#undef __aarch64_vdupq_laneq_u8
35860#undef __aarch64_vdupq_laneq_u16
35861#undef __aarch64_vdupq_laneq_u32
35862#undef __aarch64_vdupq_laneq_u64
35863
44e570d9
AC
35864#undef __LD2_LANE_FUNC
35865#undef __LD2Q_LANE_FUNC
35866#undef __LD3_LANE_FUNC
35867#undef __LD3Q_LANE_FUNC
35868#undef __LD4_LANE_FUNC
35869#undef __LD4Q_LANE_FUNC
292c812a
AC
35870#undef __ST2_LANE_FUNC
35871#undef __ST2Q_LANE_FUNC
35872#undef __ST3_LANE_FUNC
35873#undef __ST3Q_LANE_FUNC
35874#undef __ST4_LANE_FUNC
35875#undef __ST4Q_LANE_FUNC
44e570d9 35876
2a62514f 35877#endif