]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/arm/arm_neon.h
Update copyright years.
[thirdparty/gcc.git] / gcc / config / arm / arm_neon.h
CommitLineData
ed50168b 1/* ARM NEON intrinsics include file.
d98a3884 2
fbd26352 3 Copyright (C) 2006-2019 Free Software Foundation, Inc.
d98a3884 4 Contributed by CodeSourcery.
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
6bc9506f 10 by the Free Software Foundation; either version 3, or (at your
d98a3884 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
6bc9506f 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/>. */
d98a3884 26
27#ifndef _GCC_ARM_NEON_H
28#define _GCC_ARM_NEON_H 1
29
b5b33ba6 30#ifndef __ARM_FP
fdf24133 31#error "NEON intrinsics not available with the soft-float ABI. Please use -mfloat-abi=softfp or -mfloat-abi=hard"
b5b33ba6 32#else
33
dcbc6813 34#pragma GCC push_options
35#pragma GCC target ("fpu=neon")
d98a3884 36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
5d4c658d 41#include <arm_fp16.h>
d98a3884 42#include <stdint.h>
43
6612f298 44typedef __simd64_int8_t int8x8_t;
45typedef __simd64_int16_t int16x4_t;
46typedef __simd64_int32_t int32x2_t;
d98a3884 47typedef __builtin_neon_di int64x1_t;
481aa322 48#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
682ea749 49typedef __fp16 float16_t;
6612f298 50typedef __simd64_float16_t float16x4_t;
481aa322 51#endif
6612f298 52typedef __simd64_float32_t float32x2_t;
53typedef __simd64_poly8_t poly8x8_t;
54typedef __simd64_poly16_t poly16x4_t;
dcbc6813 55#pragma GCC push_options
56#pragma GCC target ("fpu=crypto-neon-fp-armv8")
e84fdf6e 57typedef __builtin_neon_poly64 poly64x1_t;
dcbc6813 58#pragma GCC pop_options
6612f298 59typedef __simd64_uint8_t uint8x8_t;
60typedef __simd64_uint16_t uint16x4_t;
61typedef __simd64_uint32_t uint32x2_t;
d98a3884 62typedef __builtin_neon_udi uint64x1_t;
6612f298 63
64typedef __simd128_int8_t int8x16_t;
65typedef __simd128_int16_t int16x8_t;
66typedef __simd128_int32_t int32x4_t;
67typedef __simd128_int64_t int64x2_t;
60712275 68#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
69typedef __simd128_float16_t float16x8_t;
70#endif
6612f298 71typedef __simd128_float32_t float32x4_t;
72typedef __simd128_poly8_t poly8x16_t;
73typedef __simd128_poly16_t poly16x8_t;
dcbc6813 74#pragma GCC push_options
75#pragma GCC target ("fpu=crypto-neon-fp-armv8")
6612f298 76typedef __builtin_neon_poly64 poly64x2_t __attribute__ ((__vector_size__ (16)));
dcbc6813 77#pragma GCC pop_options
6612f298 78
79typedef __simd128_uint8_t uint8x16_t;
80typedef __simd128_uint16_t uint16x8_t;
81typedef __simd128_uint32_t uint32x4_t;
82typedef __simd128_uint64_t uint64x2_t;
d98a3884 83
52a0d45c 84typedef float float32_t;
6612f298 85
86/* The Poly types are user visible and live in their own world,
87 keep them that way. */
d98a3884 88typedef __builtin_neon_poly8 poly8_t;
89typedef __builtin_neon_poly16 poly16_t;
dcbc6813 90#pragma GCC push_options
91#pragma GCC target ("fpu=crypto-neon-fp-armv8")
e84fdf6e 92typedef __builtin_neon_poly64 poly64_t;
93typedef __builtin_neon_poly128 poly128_t;
dcbc6813 94#pragma GCC pop_options
d98a3884 95
96typedef struct int8x8x2_t
97{
98 int8x8_t val[2];
99} int8x8x2_t;
100
101typedef struct int8x16x2_t
102{
103 int8x16_t val[2];
104} int8x16x2_t;
105
106typedef struct int16x4x2_t
107{
108 int16x4_t val[2];
109} int16x4x2_t;
110
111typedef struct int16x8x2_t
112{
113 int16x8_t val[2];
114} int16x8x2_t;
115
116typedef struct int32x2x2_t
117{
118 int32x2_t val[2];
119} int32x2x2_t;
120
121typedef struct int32x4x2_t
122{
123 int32x4_t val[2];
124} int32x4x2_t;
125
126typedef struct int64x1x2_t
127{
128 int64x1_t val[2];
129} int64x1x2_t;
130
131typedef struct int64x2x2_t
132{
133 int64x2_t val[2];
134} int64x2x2_t;
135
136typedef struct uint8x8x2_t
137{
138 uint8x8_t val[2];
139} uint8x8x2_t;
140
141typedef struct uint8x16x2_t
142{
143 uint8x16_t val[2];
144} uint8x16x2_t;
145
146typedef struct uint16x4x2_t
147{
148 uint16x4_t val[2];
149} uint16x4x2_t;
150
151typedef struct uint16x8x2_t
152{
153 uint16x8_t val[2];
154} uint16x8x2_t;
155
156typedef struct uint32x2x2_t
157{
158 uint32x2_t val[2];
159} uint32x2x2_t;
160
161typedef struct uint32x4x2_t
162{
163 uint32x4_t val[2];
164} uint32x4x2_t;
165
166typedef struct uint64x1x2_t
167{
168 uint64x1_t val[2];
169} uint64x1x2_t;
170
171typedef struct uint64x2x2_t
172{
173 uint64x2_t val[2];
174} uint64x2x2_t;
175
fb5f110d 176#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
177typedef struct float16x4x2_t
178{
179 float16x4_t val[2];
180} float16x4x2_t;
181#endif
182
183#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
184typedef struct float16x8x2_t
185{
186 float16x8_t val[2];
187} float16x8x2_t;
188#endif
189
d98a3884 190typedef struct float32x2x2_t
191{
192 float32x2_t val[2];
193} float32x2x2_t;
194
195typedef struct float32x4x2_t
196{
197 float32x4_t val[2];
198} float32x4x2_t;
199
200typedef struct poly8x8x2_t
201{
202 poly8x8_t val[2];
203} poly8x8x2_t;
204
205typedef struct poly8x16x2_t
206{
207 poly8x16_t val[2];
208} poly8x16x2_t;
209
210typedef struct poly16x4x2_t
211{
212 poly16x4_t val[2];
213} poly16x4x2_t;
214
215typedef struct poly16x8x2_t
216{
217 poly16x8_t val[2];
218} poly16x8x2_t;
219
dcbc6813 220#pragma GCC push_options
221#pragma GCC target ("fpu=crypto-neon-fp-armv8")
e84fdf6e 222typedef struct poly64x1x2_t
223{
224 poly64x1_t val[2];
225} poly64x1x2_t;
e84fdf6e 226
227
e84fdf6e 228typedef struct poly64x2x2_t
229{
230 poly64x2_t val[2];
231} poly64x2x2_t;
dcbc6813 232#pragma GCC pop_options
e84fdf6e 233
234
d98a3884 235typedef struct int8x8x3_t
236{
237 int8x8_t val[3];
238} int8x8x3_t;
239
240typedef struct int8x16x3_t
241{
242 int8x16_t val[3];
243} int8x16x3_t;
244
245typedef struct int16x4x3_t
246{
247 int16x4_t val[3];
248} int16x4x3_t;
249
250typedef struct int16x8x3_t
251{
252 int16x8_t val[3];
253} int16x8x3_t;
254
255typedef struct int32x2x3_t
256{
257 int32x2_t val[3];
258} int32x2x3_t;
259
260typedef struct int32x4x3_t
261{
262 int32x4_t val[3];
263} int32x4x3_t;
264
265typedef struct int64x1x3_t
266{
267 int64x1_t val[3];
268} int64x1x3_t;
269
270typedef struct int64x2x3_t
271{
272 int64x2_t val[3];
273} int64x2x3_t;
274
275typedef struct uint8x8x3_t
276{
277 uint8x8_t val[3];
278} uint8x8x3_t;
279
280typedef struct uint8x16x3_t
281{
282 uint8x16_t val[3];
283} uint8x16x3_t;
284
285typedef struct uint16x4x3_t
286{
287 uint16x4_t val[3];
288} uint16x4x3_t;
289
290typedef struct uint16x8x3_t
291{
292 uint16x8_t val[3];
293} uint16x8x3_t;
294
295typedef struct uint32x2x3_t
296{
297 uint32x2_t val[3];
298} uint32x2x3_t;
299
300typedef struct uint32x4x3_t
301{
302 uint32x4_t val[3];
303} uint32x4x3_t;
304
305typedef struct uint64x1x3_t
306{
307 uint64x1_t val[3];
308} uint64x1x3_t;
309
310typedef struct uint64x2x3_t
311{
312 uint64x2_t val[3];
313} uint64x2x3_t;
314
fb5f110d 315#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
316typedef struct float16x4x3_t
317{
318 float16x4_t val[3];
319} float16x4x3_t;
320#endif
321
322#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
323typedef struct float16x8x3_t
324{
325 float16x8_t val[3];
326} float16x8x3_t;
327#endif
328
d98a3884 329typedef struct float32x2x3_t
330{
331 float32x2_t val[3];
332} float32x2x3_t;
333
334typedef struct float32x4x3_t
335{
336 float32x4_t val[3];
337} float32x4x3_t;
338
339typedef struct poly8x8x3_t
340{
341 poly8x8_t val[3];
342} poly8x8x3_t;
343
344typedef struct poly8x16x3_t
345{
346 poly8x16_t val[3];
347} poly8x16x3_t;
348
349typedef struct poly16x4x3_t
350{
351 poly16x4_t val[3];
352} poly16x4x3_t;
353
354typedef struct poly16x8x3_t
355{
356 poly16x8_t val[3];
357} poly16x8x3_t;
358
dcbc6813 359#pragma GCC push_options
360#pragma GCC target ("fpu=crypto-neon-fp-armv8")
e84fdf6e 361typedef struct poly64x1x3_t
362{
363 poly64x1_t val[3];
364} poly64x1x3_t;
e84fdf6e 365
366
e84fdf6e 367typedef struct poly64x2x3_t
368{
369 poly64x2_t val[3];
370} poly64x2x3_t;
dcbc6813 371#pragma GCC pop_options
e84fdf6e 372
373
d98a3884 374typedef struct int8x8x4_t
375{
376 int8x8_t val[4];
377} int8x8x4_t;
378
379typedef struct int8x16x4_t
380{
381 int8x16_t val[4];
382} int8x16x4_t;
383
384typedef struct int16x4x4_t
385{
386 int16x4_t val[4];
387} int16x4x4_t;
388
389typedef struct int16x8x4_t
390{
391 int16x8_t val[4];
392} int16x8x4_t;
393
394typedef struct int32x2x4_t
395{
396 int32x2_t val[4];
397} int32x2x4_t;
398
399typedef struct int32x4x4_t
400{
401 int32x4_t val[4];
402} int32x4x4_t;
403
404typedef struct int64x1x4_t
405{
406 int64x1_t val[4];
407} int64x1x4_t;
408
409typedef struct int64x2x4_t
410{
411 int64x2_t val[4];
412} int64x2x4_t;
413
414typedef struct uint8x8x4_t
415{
416 uint8x8_t val[4];
417} uint8x8x4_t;
418
419typedef struct uint8x16x4_t
420{
421 uint8x16_t val[4];
422} uint8x16x4_t;
423
424typedef struct uint16x4x4_t
425{
426 uint16x4_t val[4];
427} uint16x4x4_t;
428
429typedef struct uint16x8x4_t
430{
431 uint16x8_t val[4];
432} uint16x8x4_t;
433
434typedef struct uint32x2x4_t
435{
436 uint32x2_t val[4];
437} uint32x2x4_t;
438
439typedef struct uint32x4x4_t
440{
441 uint32x4_t val[4];
442} uint32x4x4_t;
443
444typedef struct uint64x1x4_t
445{
446 uint64x1_t val[4];
447} uint64x1x4_t;
448
449typedef struct uint64x2x4_t
450{
451 uint64x2_t val[4];
452} uint64x2x4_t;
453
fb5f110d 454#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
455typedef struct float16x4x4_t
456{
457 float16x4_t val[4];
458} float16x4x4_t;
459#endif
460
461#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
462typedef struct float16x8x4_t
463{
464 float16x8_t val[4];
465} float16x8x4_t;
466#endif
467
d98a3884 468typedef struct float32x2x4_t
469{
470 float32x2_t val[4];
471} float32x2x4_t;
472
473typedef struct float32x4x4_t
474{
475 float32x4_t val[4];
476} float32x4x4_t;
477
478typedef struct poly8x8x4_t
479{
480 poly8x8_t val[4];
481} poly8x8x4_t;
482
483typedef struct poly8x16x4_t
484{
485 poly8x16_t val[4];
486} poly8x16x4_t;
487
488typedef struct poly16x4x4_t
489{
490 poly16x4_t val[4];
491} poly16x4x4_t;
492
493typedef struct poly16x8x4_t
494{
495 poly16x8_t val[4];
496} poly16x8x4_t;
497
dcbc6813 498#pragma GCC push_options
499#pragma GCC target ("fpu=crypto-neon-fp-armv8")
e84fdf6e 500typedef struct poly64x1x4_t
501{
502 poly64x1_t val[4];
503} poly64x1x4_t;
e84fdf6e 504
505
e84fdf6e 506typedef struct poly64x2x4_t
507{
508 poly64x2_t val[4];
509} poly64x2x4_t;
dcbc6813 510#pragma GCC pop_options
e84fdf6e 511
f8ccff16 512/* vadd */
5c493d36 513__extension__ extern __inline int8x8_t
514__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 515vadd_s8 (int8x8_t __a, int8x8_t __b)
516{
f8ccff16 517 return __a + __b;
d98a3884 518}
519
5c493d36 520__extension__ extern __inline int16x4_t
521__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 522vadd_s16 (int16x4_t __a, int16x4_t __b)
523{
f8ccff16 524 return __a + __b;
d98a3884 525}
526
5c493d36 527__extension__ extern __inline int32x2_t
528__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 529vadd_s32 (int32x2_t __a, int32x2_t __b)
530{
f8ccff16 531 return __a + __b;
d98a3884 532}
533
5c493d36 534__extension__ extern __inline float32x2_t
535__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 536vadd_f32 (float32x2_t __a, float32x2_t __b)
537{
af3561b4 538#ifdef __FAST_MATH__
f8ccff16 539 return __a + __b;
540#else
25a124b3 541 return (float32x2_t) __builtin_neon_vaddv2sf (__a, __b);
f8ccff16 542#endif
d98a3884 543}
544
5c493d36 545__extension__ extern __inline uint8x8_t
546__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 547vadd_u8 (uint8x8_t __a, uint8x8_t __b)
548{
f8ccff16 549 return __a + __b;
d98a3884 550}
551
5c493d36 552__extension__ extern __inline uint16x4_t
553__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 554vadd_u16 (uint16x4_t __a, uint16x4_t __b)
555{
f8ccff16 556 return __a + __b;
d98a3884 557}
558
5c493d36 559__extension__ extern __inline uint32x2_t
560__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 561vadd_u32 (uint32x2_t __a, uint32x2_t __b)
562{
f8ccff16 563 return __a + __b;
d98a3884 564}
565
5c493d36 566__extension__ extern __inline int64x1_t
567__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
94829feb 568vadd_s64 (int64x1_t __a, int64x1_t __b)
569{
f8ccff16 570 return __a + __b;
94829feb 571}
572
5c493d36 573__extension__ extern __inline uint64x1_t
574__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 575vadd_u64 (uint64x1_t __a, uint64x1_t __b)
576{
f8ccff16 577 return __a + __b;
d98a3884 578}
579
5c493d36 580__extension__ extern __inline int8x16_t
581__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 582vaddq_s8 (int8x16_t __a, int8x16_t __b)
583{
f8ccff16 584 return __a + __b;
d98a3884 585}
586
5c493d36 587__extension__ extern __inline int16x8_t
588__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 589vaddq_s16 (int16x8_t __a, int16x8_t __b)
590{
f8ccff16 591 return __a + __b;
d98a3884 592}
593
5c493d36 594__extension__ extern __inline int32x4_t
595__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 596vaddq_s32 (int32x4_t __a, int32x4_t __b)
597{
f8ccff16 598 return __a + __b;
d98a3884 599}
600
5c493d36 601__extension__ extern __inline int64x2_t
602__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 603vaddq_s64 (int64x2_t __a, int64x2_t __b)
604{
f8ccff16 605 return __a + __b;
d98a3884 606}
607
5c493d36 608__extension__ extern __inline float32x4_t
609__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 610vaddq_f32 (float32x4_t __a, float32x4_t __b)
611{
af3561b4 612#ifdef __FAST_MATH__
f8ccff16 613 return __a + __b;
614#else
25a124b3 615 return (float32x4_t) __builtin_neon_vaddv4sf (__a, __b);
f8ccff16 616#endif
d98a3884 617}
618
5c493d36 619__extension__ extern __inline uint8x16_t
620__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 621vaddq_u8 (uint8x16_t __a, uint8x16_t __b)
622{
f8ccff16 623 return __a + __b;
d98a3884 624}
625
5c493d36 626__extension__ extern __inline uint16x8_t
627__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 628vaddq_u16 (uint16x8_t __a, uint16x8_t __b)
629{
f8ccff16 630 return __a + __b;
d98a3884 631}
632
5c493d36 633__extension__ extern __inline uint32x4_t
634__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 635vaddq_u32 (uint32x4_t __a, uint32x4_t __b)
636{
f8ccff16 637 return __a + __b;
d98a3884 638}
639
5c493d36 640__extension__ extern __inline uint64x2_t
641__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 642vaddq_u64 (uint64x2_t __a, uint64x2_t __b)
643{
f8ccff16 644 return __a + __b;
d98a3884 645}
646
5c493d36 647__extension__ extern __inline int16x8_t
648__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 649vaddl_s8 (int8x8_t __a, int8x8_t __b)
650{
25a124b3 651 return (int16x8_t)__builtin_neon_vaddlsv8qi (__a, __b);
d98a3884 652}
653
5c493d36 654__extension__ extern __inline int32x4_t
655__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 656vaddl_s16 (int16x4_t __a, int16x4_t __b)
657{
25a124b3 658 return (int32x4_t)__builtin_neon_vaddlsv4hi (__a, __b);
d98a3884 659}
660
5c493d36 661__extension__ extern __inline int64x2_t
662__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 663vaddl_s32 (int32x2_t __a, int32x2_t __b)
664{
25a124b3 665 return (int64x2_t)__builtin_neon_vaddlsv2si (__a, __b);
d98a3884 666}
667
5c493d36 668__extension__ extern __inline uint16x8_t
669__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 670vaddl_u8 (uint8x8_t __a, uint8x8_t __b)
671{
25a124b3 672 return (uint16x8_t)__builtin_neon_vaddluv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 673}
674
5c493d36 675__extension__ extern __inline uint32x4_t
676__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 677vaddl_u16 (uint16x4_t __a, uint16x4_t __b)
678{
25a124b3 679 return (uint32x4_t)__builtin_neon_vaddluv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 680}
681
5c493d36 682__extension__ extern __inline uint64x2_t
683__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 684vaddl_u32 (uint32x2_t __a, uint32x2_t __b)
685{
25a124b3 686 return (uint64x2_t)__builtin_neon_vaddluv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 687}
688
5c493d36 689__extension__ extern __inline int16x8_t
690__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 691vaddw_s8 (int16x8_t __a, int8x8_t __b)
692{
25a124b3 693 return (int16x8_t)__builtin_neon_vaddwsv8qi (__a, __b);
d98a3884 694}
695
5c493d36 696__extension__ extern __inline int32x4_t
697__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 698vaddw_s16 (int32x4_t __a, int16x4_t __b)
699{
25a124b3 700 return (int32x4_t)__builtin_neon_vaddwsv4hi (__a, __b);
d98a3884 701}
702
5c493d36 703__extension__ extern __inline int64x2_t
704__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 705vaddw_s32 (int64x2_t __a, int32x2_t __b)
706{
25a124b3 707 return (int64x2_t)__builtin_neon_vaddwsv2si (__a, __b);
d98a3884 708}
709
5c493d36 710__extension__ extern __inline uint16x8_t
711__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 712vaddw_u8 (uint16x8_t __a, uint8x8_t __b)
713{
25a124b3 714 return (uint16x8_t)__builtin_neon_vaddwuv8qi ((int16x8_t) __a, (int8x8_t) __b);
d98a3884 715}
716
5c493d36 717__extension__ extern __inline uint32x4_t
718__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 719vaddw_u16 (uint32x4_t __a, uint16x4_t __b)
720{
25a124b3 721 return (uint32x4_t)__builtin_neon_vaddwuv4hi ((int32x4_t) __a, (int16x4_t) __b);
d98a3884 722}
723
5c493d36 724__extension__ extern __inline uint64x2_t
725__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 726vaddw_u32 (uint64x2_t __a, uint32x2_t __b)
727{
25a124b3 728 return (uint64x2_t)__builtin_neon_vaddwuv2si ((int64x2_t) __a, (int32x2_t) __b);
d98a3884 729}
730
5c493d36 731__extension__ extern __inline int8x8_t
732__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 733vhadd_s8 (int8x8_t __a, int8x8_t __b)
734{
25a124b3 735 return (int8x8_t)__builtin_neon_vhaddsv8qi (__a, __b);
d98a3884 736}
737
5c493d36 738__extension__ extern __inline int16x4_t
739__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 740vhadd_s16 (int16x4_t __a, int16x4_t __b)
741{
25a124b3 742 return (int16x4_t)__builtin_neon_vhaddsv4hi (__a, __b);
d98a3884 743}
744
5c493d36 745__extension__ extern __inline int32x2_t
746__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 747vhadd_s32 (int32x2_t __a, int32x2_t __b)
748{
25a124b3 749 return (int32x2_t)__builtin_neon_vhaddsv2si (__a, __b);
d98a3884 750}
751
5c493d36 752__extension__ extern __inline uint8x8_t
753__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 754vhadd_u8 (uint8x8_t __a, uint8x8_t __b)
755{
25a124b3 756 return (uint8x8_t)__builtin_neon_vhadduv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 757}
758
5c493d36 759__extension__ extern __inline uint16x4_t
760__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 761vhadd_u16 (uint16x4_t __a, uint16x4_t __b)
762{
25a124b3 763 return (uint16x4_t)__builtin_neon_vhadduv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 764}
765
5c493d36 766__extension__ extern __inline uint32x2_t
767__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 768vhadd_u32 (uint32x2_t __a, uint32x2_t __b)
769{
25a124b3 770 return (uint32x2_t)__builtin_neon_vhadduv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 771}
772
5c493d36 773__extension__ extern __inline int8x16_t
774__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 775vhaddq_s8 (int8x16_t __a, int8x16_t __b)
776{
25a124b3 777 return (int8x16_t)__builtin_neon_vhaddsv16qi (__a, __b);
d98a3884 778}
779
5c493d36 780__extension__ extern __inline int16x8_t
781__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 782vhaddq_s16 (int16x8_t __a, int16x8_t __b)
783{
25a124b3 784 return (int16x8_t)__builtin_neon_vhaddsv8hi (__a, __b);
d98a3884 785}
786
5c493d36 787__extension__ extern __inline int32x4_t
788__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 789vhaddq_s32 (int32x4_t __a, int32x4_t __b)
790{
25a124b3 791 return (int32x4_t)__builtin_neon_vhaddsv4si (__a, __b);
d98a3884 792}
793
5c493d36 794__extension__ extern __inline uint8x16_t
795__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 796vhaddq_u8 (uint8x16_t __a, uint8x16_t __b)
797{
25a124b3 798 return (uint8x16_t)__builtin_neon_vhadduv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 799}
800
5c493d36 801__extension__ extern __inline uint16x8_t
802__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 803vhaddq_u16 (uint16x8_t __a, uint16x8_t __b)
804{
25a124b3 805 return (uint16x8_t)__builtin_neon_vhadduv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 806}
807
5c493d36 808__extension__ extern __inline uint32x4_t
809__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 810vhaddq_u32 (uint32x4_t __a, uint32x4_t __b)
811{
25a124b3 812 return (uint32x4_t)__builtin_neon_vhadduv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 813}
814
5c493d36 815__extension__ extern __inline int8x8_t
816__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 817vrhadd_s8 (int8x8_t __a, int8x8_t __b)
818{
25a124b3 819 return (int8x8_t)__builtin_neon_vrhaddsv8qi (__a, __b);
d98a3884 820}
821
5c493d36 822__extension__ extern __inline int16x4_t
823__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 824vrhadd_s16 (int16x4_t __a, int16x4_t __b)
825{
25a124b3 826 return (int16x4_t)__builtin_neon_vrhaddsv4hi (__a, __b);
d98a3884 827}
828
5c493d36 829__extension__ extern __inline int32x2_t
830__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 831vrhadd_s32 (int32x2_t __a, int32x2_t __b)
832{
25a124b3 833 return (int32x2_t)__builtin_neon_vrhaddsv2si (__a, __b);
d98a3884 834}
835
5c493d36 836__extension__ extern __inline uint8x8_t
837__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 838vrhadd_u8 (uint8x8_t __a, uint8x8_t __b)
839{
25a124b3 840 return (uint8x8_t)__builtin_neon_vrhadduv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 841}
842
5c493d36 843__extension__ extern __inline uint16x4_t
844__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 845vrhadd_u16 (uint16x4_t __a, uint16x4_t __b)
846{
25a124b3 847 return (uint16x4_t)__builtin_neon_vrhadduv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 848}
849
5c493d36 850__extension__ extern __inline uint32x2_t
851__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 852vrhadd_u32 (uint32x2_t __a, uint32x2_t __b)
853{
25a124b3 854 return (uint32x2_t)__builtin_neon_vrhadduv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 855}
856
5c493d36 857__extension__ extern __inline int8x16_t
858__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 859vrhaddq_s8 (int8x16_t __a, int8x16_t __b)
860{
25a124b3 861 return (int8x16_t)__builtin_neon_vrhaddsv16qi (__a, __b);
d98a3884 862}
863
5c493d36 864__extension__ extern __inline int16x8_t
865__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 866vrhaddq_s16 (int16x8_t __a, int16x8_t __b)
867{
25a124b3 868 return (int16x8_t)__builtin_neon_vrhaddsv8hi (__a, __b);
d98a3884 869}
870
5c493d36 871__extension__ extern __inline int32x4_t
872__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 873vrhaddq_s32 (int32x4_t __a, int32x4_t __b)
874{
25a124b3 875 return (int32x4_t)__builtin_neon_vrhaddsv4si (__a, __b);
d98a3884 876}
877
5c493d36 878__extension__ extern __inline uint8x16_t
879__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 880vrhaddq_u8 (uint8x16_t __a, uint8x16_t __b)
881{
25a124b3 882 return (uint8x16_t)__builtin_neon_vrhadduv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 883}
884
5c493d36 885__extension__ extern __inline uint16x8_t
886__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 887vrhaddq_u16 (uint16x8_t __a, uint16x8_t __b)
888{
25a124b3 889 return (uint16x8_t)__builtin_neon_vrhadduv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 890}
891
5c493d36 892__extension__ extern __inline uint32x4_t
893__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 894vrhaddq_u32 (uint32x4_t __a, uint32x4_t __b)
895{
25a124b3 896 return (uint32x4_t)__builtin_neon_vrhadduv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 897}
898
5c493d36 899__extension__ extern __inline int8x8_t
900__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 901vqadd_s8 (int8x8_t __a, int8x8_t __b)
902{
25a124b3 903 return (int8x8_t)__builtin_neon_vqaddsv8qi (__a, __b);
d98a3884 904}
905
5c493d36 906__extension__ extern __inline int16x4_t
907__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 908vqadd_s16 (int16x4_t __a, int16x4_t __b)
909{
25a124b3 910 return (int16x4_t)__builtin_neon_vqaddsv4hi (__a, __b);
d98a3884 911}
912
5c493d36 913__extension__ extern __inline int32x2_t
914__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 915vqadd_s32 (int32x2_t __a, int32x2_t __b)
916{
25a124b3 917 return (int32x2_t)__builtin_neon_vqaddsv2si (__a, __b);
d98a3884 918}
919
5c493d36 920__extension__ extern __inline int64x1_t
921__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 922vqadd_s64 (int64x1_t __a, int64x1_t __b)
923{
25a124b3 924 return (int64x1_t)__builtin_neon_vqaddsdi (__a, __b);
d98a3884 925}
926
5c493d36 927__extension__ extern __inline uint8x8_t
928__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 929vqadd_u8 (uint8x8_t __a, uint8x8_t __b)
930{
25a124b3 931 return (uint8x8_t)__builtin_neon_vqadduv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 932}
933
5c493d36 934__extension__ extern __inline uint16x4_t
935__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 936vqadd_u16 (uint16x4_t __a, uint16x4_t __b)
937{
25a124b3 938 return (uint16x4_t)__builtin_neon_vqadduv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 939}
940
5c493d36 941__extension__ extern __inline uint32x2_t
942__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 943vqadd_u32 (uint32x2_t __a, uint32x2_t __b)
944{
25a124b3 945 return (uint32x2_t)__builtin_neon_vqadduv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 946}
947
5c493d36 948__extension__ extern __inline uint64x1_t
949__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 950vqadd_u64 (uint64x1_t __a, uint64x1_t __b)
951{
25a124b3 952 return (uint64x1_t)__builtin_neon_vqaddudi ((int64x1_t) __a, (int64x1_t) __b);
d98a3884 953}
954
5c493d36 955__extension__ extern __inline int8x16_t
956__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 957vqaddq_s8 (int8x16_t __a, int8x16_t __b)
958{
25a124b3 959 return (int8x16_t)__builtin_neon_vqaddsv16qi (__a, __b);
d98a3884 960}
961
5c493d36 962__extension__ extern __inline int16x8_t
963__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 964vqaddq_s16 (int16x8_t __a, int16x8_t __b)
965{
25a124b3 966 return (int16x8_t)__builtin_neon_vqaddsv8hi (__a, __b);
d98a3884 967}
968
5c493d36 969__extension__ extern __inline int32x4_t
970__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 971vqaddq_s32 (int32x4_t __a, int32x4_t __b)
972{
25a124b3 973 return (int32x4_t)__builtin_neon_vqaddsv4si (__a, __b);
d98a3884 974}
975
5c493d36 976__extension__ extern __inline int64x2_t
977__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 978vqaddq_s64 (int64x2_t __a, int64x2_t __b)
979{
25a124b3 980 return (int64x2_t)__builtin_neon_vqaddsv2di (__a, __b);
d98a3884 981}
982
5c493d36 983__extension__ extern __inline uint8x16_t
984__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 985vqaddq_u8 (uint8x16_t __a, uint8x16_t __b)
986{
25a124b3 987 return (uint8x16_t)__builtin_neon_vqadduv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 988}
989
5c493d36 990__extension__ extern __inline uint16x8_t
991__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 992vqaddq_u16 (uint16x8_t __a, uint16x8_t __b)
993{
25a124b3 994 return (uint16x8_t)__builtin_neon_vqadduv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 995}
996
5c493d36 997__extension__ extern __inline uint32x4_t
998__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 999vqaddq_u32 (uint32x4_t __a, uint32x4_t __b)
1000{
25a124b3 1001 return (uint32x4_t)__builtin_neon_vqadduv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 1002}
1003
5c493d36 1004__extension__ extern __inline uint64x2_t
1005__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1006vqaddq_u64 (uint64x2_t __a, uint64x2_t __b)
1007{
25a124b3 1008 return (uint64x2_t)__builtin_neon_vqadduv2di ((int64x2_t) __a, (int64x2_t) __b);
d98a3884 1009}
1010
5c493d36 1011__extension__ extern __inline int8x8_t
1012__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1013vaddhn_s16 (int16x8_t __a, int16x8_t __b)
1014{
25a124b3 1015 return (int8x8_t)__builtin_neon_vaddhnv8hi (__a, __b);
d98a3884 1016}
1017
5c493d36 1018__extension__ extern __inline int16x4_t
1019__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1020vaddhn_s32 (int32x4_t __a, int32x4_t __b)
1021{
25a124b3 1022 return (int16x4_t)__builtin_neon_vaddhnv4si (__a, __b);
d98a3884 1023}
1024
5c493d36 1025__extension__ extern __inline int32x2_t
1026__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1027vaddhn_s64 (int64x2_t __a, int64x2_t __b)
1028{
25a124b3 1029 return (int32x2_t)__builtin_neon_vaddhnv2di (__a, __b);
d98a3884 1030}
1031
5c493d36 1032__extension__ extern __inline uint8x8_t
1033__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1034vaddhn_u16 (uint16x8_t __a, uint16x8_t __b)
1035{
25a124b3 1036 return (uint8x8_t)__builtin_neon_vaddhnv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 1037}
1038
5c493d36 1039__extension__ extern __inline uint16x4_t
1040__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1041vaddhn_u32 (uint32x4_t __a, uint32x4_t __b)
1042{
25a124b3 1043 return (uint16x4_t)__builtin_neon_vaddhnv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 1044}
1045
5c493d36 1046__extension__ extern __inline uint32x2_t
1047__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1048vaddhn_u64 (uint64x2_t __a, uint64x2_t __b)
1049{
25a124b3 1050 return (uint32x2_t)__builtin_neon_vaddhnv2di ((int64x2_t) __a, (int64x2_t) __b);
d98a3884 1051}
1052
5c493d36 1053__extension__ extern __inline int8x8_t
1054__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1055vraddhn_s16 (int16x8_t __a, int16x8_t __b)
1056{
25a124b3 1057 return (int8x8_t)__builtin_neon_vraddhnv8hi (__a, __b);
d98a3884 1058}
1059
5c493d36 1060__extension__ extern __inline int16x4_t
1061__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1062vraddhn_s32 (int32x4_t __a, int32x4_t __b)
1063{
25a124b3 1064 return (int16x4_t)__builtin_neon_vraddhnv4si (__a, __b);
d98a3884 1065}
1066
5c493d36 1067__extension__ extern __inline int32x2_t
1068__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1069vraddhn_s64 (int64x2_t __a, int64x2_t __b)
1070{
25a124b3 1071 return (int32x2_t)__builtin_neon_vraddhnv2di (__a, __b);
d98a3884 1072}
1073
5c493d36 1074__extension__ extern __inline uint8x8_t
1075__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1076vraddhn_u16 (uint16x8_t __a, uint16x8_t __b)
1077{
25a124b3 1078 return (uint8x8_t)__builtin_neon_vraddhnv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 1079}
1080
5c493d36 1081__extension__ extern __inline uint16x4_t
1082__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1083vraddhn_u32 (uint32x4_t __a, uint32x4_t __b)
1084{
25a124b3 1085 return (uint16x4_t)__builtin_neon_vraddhnv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 1086}
1087
5c493d36 1088__extension__ extern __inline uint32x2_t
1089__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1090vraddhn_u64 (uint64x2_t __a, uint64x2_t __b)
1091{
25a124b3 1092 return (uint32x2_t)__builtin_neon_vraddhnv2di ((int64x2_t) __a, (int64x2_t) __b);
d98a3884 1093}
1094
5c493d36 1095__extension__ extern __inline int8x8_t
1096__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1097vmul_s8 (int8x8_t __a, int8x8_t __b)
1098{
f8ccff16 1099 return __a * __b;
d98a3884 1100}
1101
5c493d36 1102__extension__ extern __inline int16x4_t
1103__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1104vmul_s16 (int16x4_t __a, int16x4_t __b)
1105{
f8ccff16 1106 return __a * __b;
d98a3884 1107}
1108
5c493d36 1109__extension__ extern __inline int32x2_t
1110__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1111vmul_s32 (int32x2_t __a, int32x2_t __b)
1112{
f8ccff16 1113 return __a * __b;
d98a3884 1114}
1115
5c493d36 1116__extension__ extern __inline float32x2_t
1117__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1118vmul_f32 (float32x2_t __a, float32x2_t __b)
1119{
af3561b4 1120#ifdef __FAST_MATH__
f8ccff16 1121 return __a * __b;
1122#else
25a124b3 1123 return (float32x2_t) __builtin_neon_vmulfv2sf (__a, __b);
f8ccff16 1124#endif
1125
d98a3884 1126}
1127
5c493d36 1128__extension__ extern __inline uint8x8_t
1129__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1130vmul_u8 (uint8x8_t __a, uint8x8_t __b)
1131{
f8ccff16 1132 return __a * __b;
d98a3884 1133}
1134
5c493d36 1135__extension__ extern __inline uint16x4_t
1136__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1137vmul_u16 (uint16x4_t __a, uint16x4_t __b)
1138{
f8ccff16 1139 return __a * __b;
d98a3884 1140}
1141
5c493d36 1142__extension__ extern __inline uint32x2_t
1143__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1144vmul_u32 (uint32x2_t __a, uint32x2_t __b)
1145{
f8ccff16 1146 return __a * __b;
d98a3884 1147}
1148
5c493d36 1149__extension__ extern __inline int8x16_t
1150__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1151vmulq_s8 (int8x16_t __a, int8x16_t __b)
1152{
f8ccff16 1153 return __a * __b;
d98a3884 1154}
1155
5c493d36 1156__extension__ extern __inline int16x8_t
1157__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1158vmulq_s16 (int16x8_t __a, int16x8_t __b)
1159{
f8ccff16 1160 return __a * __b;
d98a3884 1161}
1162
5c493d36 1163__extension__ extern __inline int32x4_t
1164__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1165vmulq_s32 (int32x4_t __a, int32x4_t __b)
1166{
f8ccff16 1167 return __a * __b;
d98a3884 1168}
1169
5c493d36 1170__extension__ extern __inline float32x4_t
1171__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1172vmulq_f32 (float32x4_t __a, float32x4_t __b)
1173{
af3561b4 1174#ifdef __FAST_MATH__
f8ccff16 1175 return __a * __b;
1176#else
25a124b3 1177 return (float32x4_t) __builtin_neon_vmulfv4sf (__a, __b);
f8ccff16 1178#endif
d98a3884 1179}
1180
5c493d36 1181__extension__ extern __inline uint8x16_t
1182__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1183vmulq_u8 (uint8x16_t __a, uint8x16_t __b)
1184{
f8ccff16 1185 return __a * __b;
d98a3884 1186}
1187
5c493d36 1188__extension__ extern __inline uint16x8_t
1189__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1190vmulq_u16 (uint16x8_t __a, uint16x8_t __b)
1191{
f8ccff16 1192 return __a * __b;
d98a3884 1193}
1194
5c493d36 1195__extension__ extern __inline uint32x4_t
1196__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1197vmulq_u32 (uint32x4_t __a, uint32x4_t __b)
1198{
f8ccff16 1199 return __a * __b;
1200}
1201
5c493d36 1202__extension__ extern __inline poly8x8_t
1203__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
f8ccff16 1204vmul_p8 (poly8x8_t __a, poly8x8_t __b)
1205{
25a124b3 1206 return (poly8x8_t)__builtin_neon_vmulpv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 1207}
1208
5c493d36 1209__extension__ extern __inline poly8x16_t
1210__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1211vmulq_p8 (poly8x16_t __a, poly8x16_t __b)
1212{
25a124b3 1213 return (poly8x16_t)__builtin_neon_vmulpv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 1214}
1215
5c493d36 1216__extension__ extern __inline int16x4_t
1217__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1218vqdmulh_s16 (int16x4_t __a, int16x4_t __b)
1219{
25a124b3 1220 return (int16x4_t)__builtin_neon_vqdmulhv4hi (__a, __b);
d98a3884 1221}
1222
5c493d36 1223__extension__ extern __inline int32x2_t
1224__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1225vqdmulh_s32 (int32x2_t __a, int32x2_t __b)
1226{
25a124b3 1227 return (int32x2_t)__builtin_neon_vqdmulhv2si (__a, __b);
d98a3884 1228}
1229
5c493d36 1230__extension__ extern __inline int16x8_t
1231__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1232vqdmulhq_s16 (int16x8_t __a, int16x8_t __b)
1233{
25a124b3 1234 return (int16x8_t)__builtin_neon_vqdmulhv8hi (__a, __b);
d98a3884 1235}
1236
5c493d36 1237__extension__ extern __inline int32x4_t
1238__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1239vqdmulhq_s32 (int32x4_t __a, int32x4_t __b)
1240{
25a124b3 1241 return (int32x4_t)__builtin_neon_vqdmulhv4si (__a, __b);
d98a3884 1242}
1243
5c493d36 1244__extension__ extern __inline int16x4_t
1245__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1246vqrdmulh_s16 (int16x4_t __a, int16x4_t __b)
1247{
25a124b3 1248 return (int16x4_t)__builtin_neon_vqrdmulhv4hi (__a, __b);
d98a3884 1249}
1250
5c493d36 1251__extension__ extern __inline int32x2_t
1252__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1253vqrdmulh_s32 (int32x2_t __a, int32x2_t __b)
1254{
25a124b3 1255 return (int32x2_t)__builtin_neon_vqrdmulhv2si (__a, __b);
d98a3884 1256}
1257
5c493d36 1258__extension__ extern __inline int16x8_t
1259__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1260vqrdmulhq_s16 (int16x8_t __a, int16x8_t __b)
1261{
25a124b3 1262 return (int16x8_t)__builtin_neon_vqrdmulhv8hi (__a, __b);
d98a3884 1263}
1264
5c493d36 1265__extension__ extern __inline int32x4_t
1266__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1267vqrdmulhq_s32 (int32x4_t __a, int32x4_t __b)
1268{
25a124b3 1269 return (int32x4_t)__builtin_neon_vqrdmulhv4si (__a, __b);
d98a3884 1270}
1271
0d9d4f57 1272#ifdef __ARM_FEATURE_QRDMX
5c493d36 1273__extension__ extern __inline int16x4_t
1274__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0d9d4f57 1275vqrdmlah_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
1276{
1277 return (int16x4_t)__builtin_neon_vqrdmlahv4hi (__a, __b, __c);
1278}
1279
5c493d36 1280__extension__ extern __inline int32x2_t
1281__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0d9d4f57 1282vqrdmlah_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
1283{
1284 return (int32x2_t)__builtin_neon_vqrdmlahv2si (__a, __b, __c);
1285}
1286
5c493d36 1287__extension__ extern __inline int16x8_t
1288__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0d9d4f57 1289vqrdmlahq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
1290{
1291 return (int16x8_t)__builtin_neon_vqrdmlahv8hi (__a, __b, __c);
1292}
1293
5c493d36 1294__extension__ extern __inline int32x4_t
1295__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0d9d4f57 1296vqrdmlahq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
1297{
1298 return (int32x4_t)__builtin_neon_vqrdmlahv4si (__a, __b, __c);
1299}
1300
5c493d36 1301__extension__ extern __inline int16x4_t
1302__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0d9d4f57 1303vqrdmlsh_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
1304{
1305 return (int16x4_t)__builtin_neon_vqrdmlshv4hi (__a, __b, __c);
1306}
1307
5c493d36 1308__extension__ extern __inline int32x2_t
1309__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0d9d4f57 1310vqrdmlsh_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
1311{
1312 return (int32x2_t)__builtin_neon_vqrdmlshv2si (__a, __b, __c);
1313}
1314
5c493d36 1315__extension__ extern __inline int16x8_t
1316__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0d9d4f57 1317vqrdmlshq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
1318{
1319 return (int16x8_t)__builtin_neon_vqrdmlshv8hi (__a, __b, __c);
1320}
1321
5c493d36 1322__extension__ extern __inline int32x4_t
1323__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
0d9d4f57 1324vqrdmlshq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
1325{
1326 return (int32x4_t)__builtin_neon_vqrdmlshv4si (__a, __b, __c);
1327}
1328#endif
1329
5c493d36 1330__extension__ extern __inline int16x8_t
1331__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1332vmull_s8 (int8x8_t __a, int8x8_t __b)
1333{
25a124b3 1334 return (int16x8_t)__builtin_neon_vmullsv8qi (__a, __b);
d98a3884 1335}
1336
5c493d36 1337__extension__ extern __inline int32x4_t
1338__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1339vmull_s16 (int16x4_t __a, int16x4_t __b)
1340{
25a124b3 1341 return (int32x4_t)__builtin_neon_vmullsv4hi (__a, __b);
d98a3884 1342}
1343
5c493d36 1344__extension__ extern __inline int64x2_t
1345__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1346vmull_s32 (int32x2_t __a, int32x2_t __b)
1347{
25a124b3 1348 return (int64x2_t)__builtin_neon_vmullsv2si (__a, __b);
d98a3884 1349}
1350
5c493d36 1351__extension__ extern __inline uint16x8_t
1352__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1353vmull_u8 (uint8x8_t __a, uint8x8_t __b)
1354{
25a124b3 1355 return (uint16x8_t)__builtin_neon_vmulluv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 1356}
1357
5c493d36 1358__extension__ extern __inline uint32x4_t
1359__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1360vmull_u16 (uint16x4_t __a, uint16x4_t __b)
1361{
25a124b3 1362 return (uint32x4_t)__builtin_neon_vmulluv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 1363}
1364
5c493d36 1365__extension__ extern __inline uint64x2_t
1366__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1367vmull_u32 (uint32x2_t __a, uint32x2_t __b)
1368{
25a124b3 1369 return (uint64x2_t)__builtin_neon_vmulluv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 1370}
1371
5c493d36 1372__extension__ extern __inline poly16x8_t
1373__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1374vmull_p8 (poly8x8_t __a, poly8x8_t __b)
1375{
25a124b3 1376 return (poly16x8_t)__builtin_neon_vmullpv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 1377}
1378
5c493d36 1379__extension__ extern __inline int32x4_t
1380__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1381vqdmull_s16 (int16x4_t __a, int16x4_t __b)
1382{
25a124b3 1383 return (int32x4_t)__builtin_neon_vqdmullv4hi (__a, __b);
d98a3884 1384}
1385
5c493d36 1386__extension__ extern __inline int64x2_t
1387__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1388vqdmull_s32 (int32x2_t __a, int32x2_t __b)
1389{
25a124b3 1390 return (int64x2_t)__builtin_neon_vqdmullv2si (__a, __b);
d98a3884 1391}
1392
5c493d36 1393__extension__ extern __inline int8x8_t
1394__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1395vmla_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
1396{
25a124b3 1397 return (int8x8_t)__builtin_neon_vmlav8qi (__a, __b, __c);
d98a3884 1398}
1399
5c493d36 1400__extension__ extern __inline int16x4_t
1401__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1402vmla_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
1403{
25a124b3 1404 return (int16x4_t)__builtin_neon_vmlav4hi (__a, __b, __c);
d98a3884 1405}
1406
5c493d36 1407__extension__ extern __inline int32x2_t
1408__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1409vmla_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
1410{
25a124b3 1411 return (int32x2_t)__builtin_neon_vmlav2si (__a, __b, __c);
d98a3884 1412}
1413
5c493d36 1414__extension__ extern __inline float32x2_t
1415__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1416vmla_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c)
1417{
25a124b3 1418 return (float32x2_t)__builtin_neon_vmlav2sf (__a, __b, __c);
d98a3884 1419}
1420
5c493d36 1421__extension__ extern __inline uint8x8_t
1422__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1423vmla_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
1424{
25a124b3 1425 return (uint8x8_t)__builtin_neon_vmlav8qi ((int8x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
d98a3884 1426}
1427
5c493d36 1428__extension__ extern __inline uint16x4_t
1429__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1430vmla_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
1431{
25a124b3 1432 return (uint16x4_t)__builtin_neon_vmlav4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
d98a3884 1433}
1434
5c493d36 1435__extension__ extern __inline uint32x2_t
1436__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1437vmla_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
1438{
25a124b3 1439 return (uint32x2_t)__builtin_neon_vmlav2si ((int32x2_t) __a, (int32x2_t) __b, (int32x2_t) __c);
d98a3884 1440}
1441
5c493d36 1442__extension__ extern __inline int8x16_t
1443__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1444vmlaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
1445{
25a124b3 1446 return (int8x16_t)__builtin_neon_vmlav16qi (__a, __b, __c);
d98a3884 1447}
1448
5c493d36 1449__extension__ extern __inline int16x8_t
1450__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1451vmlaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
1452{
25a124b3 1453 return (int16x8_t)__builtin_neon_vmlav8hi (__a, __b, __c);
d98a3884 1454}
1455
5c493d36 1456__extension__ extern __inline int32x4_t
1457__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1458vmlaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
1459{
25a124b3 1460 return (int32x4_t)__builtin_neon_vmlav4si (__a, __b, __c);
d98a3884 1461}
1462
5c493d36 1463__extension__ extern __inline float32x4_t
1464__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1465vmlaq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
1466{
25a124b3 1467 return (float32x4_t)__builtin_neon_vmlav4sf (__a, __b, __c);
d98a3884 1468}
1469
5c493d36 1470__extension__ extern __inline uint8x16_t
1471__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1472vmlaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
1473{
25a124b3 1474 return (uint8x16_t)__builtin_neon_vmlav16qi ((int8x16_t) __a, (int8x16_t) __b, (int8x16_t) __c);
d98a3884 1475}
1476
5c493d36 1477__extension__ extern __inline uint16x8_t
1478__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1479vmlaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
1480{
25a124b3 1481 return (uint16x8_t)__builtin_neon_vmlav8hi ((int16x8_t) __a, (int16x8_t) __b, (int16x8_t) __c);
d98a3884 1482}
1483
5c493d36 1484__extension__ extern __inline uint32x4_t
1485__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1486vmlaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
1487{
25a124b3 1488 return (uint32x4_t)__builtin_neon_vmlav4si ((int32x4_t) __a, (int32x4_t) __b, (int32x4_t) __c);
d98a3884 1489}
1490
5c493d36 1491__extension__ extern __inline int16x8_t
1492__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1493vmlal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
1494{
25a124b3 1495 return (int16x8_t)__builtin_neon_vmlalsv8qi (__a, __b, __c);
d98a3884 1496}
1497
5c493d36 1498__extension__ extern __inline int32x4_t
1499__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1500vmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
1501{
25a124b3 1502 return (int32x4_t)__builtin_neon_vmlalsv4hi (__a, __b, __c);
d98a3884 1503}
1504
5c493d36 1505__extension__ extern __inline int64x2_t
1506__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1507vmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
1508{
25a124b3 1509 return (int64x2_t)__builtin_neon_vmlalsv2si (__a, __b, __c);
d98a3884 1510}
1511
5c493d36 1512__extension__ extern __inline uint16x8_t
1513__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1514vmlal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
1515{
25a124b3 1516 return (uint16x8_t)__builtin_neon_vmlaluv8qi ((int16x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
d98a3884 1517}
1518
5c493d36 1519__extension__ extern __inline uint32x4_t
1520__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1521vmlal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
1522{
25a124b3 1523 return (uint32x4_t)__builtin_neon_vmlaluv4hi ((int32x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
d98a3884 1524}
1525
5c493d36 1526__extension__ extern __inline uint64x2_t
1527__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1528vmlal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
1529{
25a124b3 1530 return (uint64x2_t)__builtin_neon_vmlaluv2si ((int64x2_t) __a, (int32x2_t) __b, (int32x2_t) __c);
d98a3884 1531}
1532
5c493d36 1533__extension__ extern __inline int32x4_t
1534__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1535vqdmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
1536{
25a124b3 1537 return (int32x4_t)__builtin_neon_vqdmlalv4hi (__a, __b, __c);
d98a3884 1538}
1539
5c493d36 1540__extension__ extern __inline int64x2_t
1541__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1542vqdmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
1543{
25a124b3 1544 return (int64x2_t)__builtin_neon_vqdmlalv2si (__a, __b, __c);
d98a3884 1545}
1546
5c493d36 1547__extension__ extern __inline int8x8_t
1548__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1549vmls_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
1550{
25a124b3 1551 return (int8x8_t)__builtin_neon_vmlsv8qi (__a, __b, __c);
d98a3884 1552}
1553
5c493d36 1554__extension__ extern __inline int16x4_t
1555__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1556vmls_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
1557{
25a124b3 1558 return (int16x4_t)__builtin_neon_vmlsv4hi (__a, __b, __c);
d98a3884 1559}
1560
5c493d36 1561__extension__ extern __inline int32x2_t
1562__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1563vmls_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
1564{
25a124b3 1565 return (int32x2_t)__builtin_neon_vmlsv2si (__a, __b, __c);
d98a3884 1566}
1567
5c493d36 1568__extension__ extern __inline float32x2_t
1569__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1570vmls_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c)
1571{
25a124b3 1572 return (float32x2_t)__builtin_neon_vmlsv2sf (__a, __b, __c);
d98a3884 1573}
1574
5c493d36 1575__extension__ extern __inline uint8x8_t
1576__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1577vmls_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
1578{
25a124b3 1579 return (uint8x8_t)__builtin_neon_vmlsv8qi ((int8x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
d98a3884 1580}
1581
5c493d36 1582__extension__ extern __inline uint16x4_t
1583__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1584vmls_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
1585{
25a124b3 1586 return (uint16x4_t)__builtin_neon_vmlsv4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
d98a3884 1587}
1588
5c493d36 1589__extension__ extern __inline uint32x2_t
1590__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1591vmls_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
1592{
25a124b3 1593 return (uint32x2_t)__builtin_neon_vmlsv2si ((int32x2_t) __a, (int32x2_t) __b, (int32x2_t) __c);
d98a3884 1594}
1595
5c493d36 1596__extension__ extern __inline int8x16_t
1597__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1598vmlsq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
1599{
25a124b3 1600 return (int8x16_t)__builtin_neon_vmlsv16qi (__a, __b, __c);
d98a3884 1601}
1602
5c493d36 1603__extension__ extern __inline int16x8_t
1604__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1605vmlsq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
1606{
25a124b3 1607 return (int16x8_t)__builtin_neon_vmlsv8hi (__a, __b, __c);
d98a3884 1608}
1609
5c493d36 1610__extension__ extern __inline int32x4_t
1611__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1612vmlsq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
1613{
25a124b3 1614 return (int32x4_t)__builtin_neon_vmlsv4si (__a, __b, __c);
d98a3884 1615}
1616
5c493d36 1617__extension__ extern __inline float32x4_t
1618__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1619vmlsq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
1620{
25a124b3 1621 return (float32x4_t)__builtin_neon_vmlsv4sf (__a, __b, __c);
d98a3884 1622}
1623
5c493d36 1624__extension__ extern __inline uint8x16_t
1625__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1626vmlsq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
1627{
25a124b3 1628 return (uint8x16_t)__builtin_neon_vmlsv16qi ((int8x16_t) __a, (int8x16_t) __b, (int8x16_t) __c);
d98a3884 1629}
1630
5c493d36 1631__extension__ extern __inline uint16x8_t
1632__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1633vmlsq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
1634{
25a124b3 1635 return (uint16x8_t)__builtin_neon_vmlsv8hi ((int16x8_t) __a, (int16x8_t) __b, (int16x8_t) __c);
d98a3884 1636}
1637
5c493d36 1638__extension__ extern __inline uint32x4_t
1639__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1640vmlsq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
1641{
25a124b3 1642 return (uint32x4_t)__builtin_neon_vmlsv4si ((int32x4_t) __a, (int32x4_t) __b, (int32x4_t) __c);
d98a3884 1643}
1644
5c493d36 1645__extension__ extern __inline int16x8_t
1646__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1647vmlsl_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
1648{
25a124b3 1649 return (int16x8_t)__builtin_neon_vmlslsv8qi (__a, __b, __c);
d98a3884 1650}
1651
5c493d36 1652__extension__ extern __inline int32x4_t
1653__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1654vmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
1655{
25a124b3 1656 return (int32x4_t)__builtin_neon_vmlslsv4hi (__a, __b, __c);
d98a3884 1657}
1658
5c493d36 1659__extension__ extern __inline int64x2_t
1660__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1661vmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
1662{
25a124b3 1663 return (int64x2_t)__builtin_neon_vmlslsv2si (__a, __b, __c);
d98a3884 1664}
1665
5c493d36 1666__extension__ extern __inline uint16x8_t
1667__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1668vmlsl_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
1669{
25a124b3 1670 return (uint16x8_t)__builtin_neon_vmlsluv8qi ((int16x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
d98a3884 1671}
1672
5c493d36 1673__extension__ extern __inline uint32x4_t
1674__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1675vmlsl_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
1676{
25a124b3 1677 return (uint32x4_t)__builtin_neon_vmlsluv4hi ((int32x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
d98a3884 1678}
1679
5c493d36 1680__extension__ extern __inline uint64x2_t
1681__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1682vmlsl_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
1683{
25a124b3 1684 return (uint64x2_t)__builtin_neon_vmlsluv2si ((int64x2_t) __a, (int32x2_t) __b, (int32x2_t) __c);
d98a3884 1685}
1686
5c493d36 1687__extension__ extern __inline int32x4_t
1688__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1689vqdmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
1690{
25a124b3 1691 return (int32x4_t)__builtin_neon_vqdmlslv4hi (__a, __b, __c);
d98a3884 1692}
1693
5c493d36 1694__extension__ extern __inline int64x2_t
1695__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1696vqdmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
1697{
25a124b3 1698 return (int64x2_t)__builtin_neon_vqdmlslv2si (__a, __b, __c);
d98a3884 1699}
1700
dcbc6813 1701#pragma GCC push_options
1702#pragma GCC target ("fpu=neon-vfpv4")
5c493d36 1703__extension__ extern __inline float32x2_t
1704__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9abf7cc0 1705vfma_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c)
1706{
25a124b3 1707 return (float32x2_t)__builtin_neon_vfmav2sf (__a, __b, __c);
9abf7cc0 1708}
1709
5c493d36 1710__extension__ extern __inline float32x4_t
1711__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9abf7cc0 1712vfmaq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
1713{
25a124b3 1714 return (float32x4_t)__builtin_neon_vfmav4sf (__a, __b, __c);
9abf7cc0 1715}
1716
5c493d36 1717__extension__ extern __inline float32x2_t
1718__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9abf7cc0 1719vfms_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c)
1720{
25a124b3 1721 return (float32x2_t)__builtin_neon_vfmsv2sf (__a, __b, __c);
9abf7cc0 1722}
1723
5c493d36 1724__extension__ extern __inline float32x4_t
1725__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
9abf7cc0 1726vfmsq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
1727{
25a124b3 1728 return (float32x4_t)__builtin_neon_vfmsv4sf (__a, __b, __c);
9abf7cc0 1729}
dcbc6813 1730#pragma GCC pop_options
9abf7cc0 1731
614aede0 1732#if __ARM_ARCH >= 8
5c493d36 1733__extension__ extern __inline float32x2_t
1734__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
614aede0 1735vrndn_f32 (float32x2_t __a)
1736{
1737 return (float32x2_t)__builtin_neon_vrintnv2sf (__a);
1738}
1739
1740#endif
1741#if __ARM_ARCH >= 8
5c493d36 1742__extension__ extern __inline float32x4_t
1743__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
230db6c3 1744vrndnq_f32 (float32x4_t __a)
614aede0 1745{
1746 return (float32x4_t)__builtin_neon_vrintnv4sf (__a);
1747}
1748
1749#endif
1750#if __ARM_ARCH >= 8
5c493d36 1751__extension__ extern __inline float32x2_t
1752__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
614aede0 1753vrnda_f32 (float32x2_t __a)
1754{
1755 return (float32x2_t)__builtin_neon_vrintav2sf (__a);
1756}
1757
1758#endif
1759#if __ARM_ARCH >= 8
5c493d36 1760__extension__ extern __inline float32x4_t
1761__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
230db6c3 1762vrndaq_f32 (float32x4_t __a)
614aede0 1763{
1764 return (float32x4_t)__builtin_neon_vrintav4sf (__a);
1765}
1766
1767#endif
1768#if __ARM_ARCH >= 8
5c493d36 1769__extension__ extern __inline float32x2_t
1770__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
614aede0 1771vrndp_f32 (float32x2_t __a)
1772{
1773 return (float32x2_t)__builtin_neon_vrintpv2sf (__a);
1774}
1775
1776#endif
1777#if __ARM_ARCH >= 8
5c493d36 1778__extension__ extern __inline float32x4_t
1779__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
230db6c3 1780vrndpq_f32 (float32x4_t __a)
614aede0 1781{
1782 return (float32x4_t)__builtin_neon_vrintpv4sf (__a);
1783}
1784
1785#endif
1786#if __ARM_ARCH >= 8
5c493d36 1787__extension__ extern __inline float32x2_t
1788__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
614aede0 1789vrndm_f32 (float32x2_t __a)
1790{
1791 return (float32x2_t)__builtin_neon_vrintmv2sf (__a);
1792}
1793
1794#endif
1795#if __ARM_ARCH >= 8
5c493d36 1796__extension__ extern __inline float32x4_t
1797__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
230db6c3 1798vrndmq_f32 (float32x4_t __a)
614aede0 1799{
1800 return (float32x4_t)__builtin_neon_vrintmv4sf (__a);
1801}
1802
1803#endif
230db6c3 1804
1805#if __ARM_ARCH >= 8
5c493d36 1806__extension__ extern __inline float32x2_t
1807__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
230db6c3 1808vrndx_f32 (float32x2_t __a)
1809{
1810 return (float32x2_t)__builtin_neon_vrintxv2sf (__a);
1811}
1812
1813#endif
1814
1815#if __ARM_ARCH >= 8
5c493d36 1816__extension__ extern __inline float32x4_t
1817__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
230db6c3 1818vrndxq_f32 (float32x4_t __a)
1819{
1820 return (float32x4_t)__builtin_neon_vrintxv4sf (__a);
1821}
1822
1823#endif
1824
614aede0 1825#if __ARM_ARCH >= 8
5c493d36 1826__extension__ extern __inline float32x2_t
1827__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
614aede0 1828vrnd_f32 (float32x2_t __a)
1829{
1830 return (float32x2_t)__builtin_neon_vrintzv2sf (__a);
1831}
1832
1833#endif
1834#if __ARM_ARCH >= 8
5c493d36 1835__extension__ extern __inline float32x4_t
1836__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
614aede0 1837vrndq_f32 (float32x4_t __a)
1838{
1839 return (float32x4_t)__builtin_neon_vrintzv4sf (__a);
1840}
1841
9abf7cc0 1842#endif
f8ccff16 1843
5c493d36 1844__extension__ extern __inline int8x8_t
1845__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1846vsub_s8 (int8x8_t __a, int8x8_t __b)
1847{
f8ccff16 1848 return __a - __b;
d98a3884 1849}
1850
5c493d36 1851__extension__ extern __inline int16x4_t
1852__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1853vsub_s16 (int16x4_t __a, int16x4_t __b)
1854{
f8ccff16 1855 return __a - __b;
d98a3884 1856}
1857
5c493d36 1858__extension__ extern __inline int32x2_t
1859__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1860vsub_s32 (int32x2_t __a, int32x2_t __b)
1861{
f8ccff16 1862 return __a - __b;
d98a3884 1863}
1864
5c493d36 1865__extension__ extern __inline float32x2_t
1866__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1867vsub_f32 (float32x2_t __a, float32x2_t __b)
1868{
af3561b4 1869#ifdef __FAST_MATH__
f8ccff16 1870 return __a - __b;
1871#else
25a124b3 1872 return (float32x2_t) __builtin_neon_vsubv2sf (__a, __b);
f8ccff16 1873#endif
d98a3884 1874}
1875
5c493d36 1876__extension__ extern __inline uint8x8_t
1877__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1878vsub_u8 (uint8x8_t __a, uint8x8_t __b)
1879{
f8ccff16 1880 return __a - __b;
d98a3884 1881}
1882
5c493d36 1883__extension__ extern __inline uint16x4_t
1884__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1885vsub_u16 (uint16x4_t __a, uint16x4_t __b)
1886{
f8ccff16 1887 return __a - __b;
d98a3884 1888}
1889
5c493d36 1890__extension__ extern __inline uint32x2_t
1891__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1892vsub_u32 (uint32x2_t __a, uint32x2_t __b)
1893{
f8ccff16 1894 return __a - __b;
d98a3884 1895}
1896
5c493d36 1897__extension__ extern __inline int64x1_t
1898__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
94829feb 1899vsub_s64 (int64x1_t __a, int64x1_t __b)
1900{
f8ccff16 1901 return __a - __b;
94829feb 1902}
1903
5c493d36 1904__extension__ extern __inline uint64x1_t
1905__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1906vsub_u64 (uint64x1_t __a, uint64x1_t __b)
1907{
f8ccff16 1908 return __a - __b;
d98a3884 1909}
1910
5c493d36 1911__extension__ extern __inline int8x16_t
1912__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1913vsubq_s8 (int8x16_t __a, int8x16_t __b)
1914{
f8ccff16 1915 return __a - __b;
d98a3884 1916}
1917
5c493d36 1918__extension__ extern __inline int16x8_t
1919__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1920vsubq_s16 (int16x8_t __a, int16x8_t __b)
1921{
f8ccff16 1922 return __a - __b;
d98a3884 1923}
1924
5c493d36 1925__extension__ extern __inline int32x4_t
1926__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1927vsubq_s32 (int32x4_t __a, int32x4_t __b)
1928{
f8ccff16 1929 return __a - __b;
d98a3884 1930}
1931
5c493d36 1932__extension__ extern __inline int64x2_t
1933__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1934vsubq_s64 (int64x2_t __a, int64x2_t __b)
1935{
f8ccff16 1936 return __a - __b;
d98a3884 1937}
1938
5c493d36 1939__extension__ extern __inline float32x4_t
1940__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1941vsubq_f32 (float32x4_t __a, float32x4_t __b)
1942{
af3561b4 1943#ifdef __FAST_MATH__
f8ccff16 1944 return __a - __b;
1945#else
25a124b3 1946 return (float32x4_t) __builtin_neon_vsubv4sf (__a, __b);
f8ccff16 1947#endif
d98a3884 1948}
1949
5c493d36 1950__extension__ extern __inline uint8x16_t
1951__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1952vsubq_u8 (uint8x16_t __a, uint8x16_t __b)
1953{
f8ccff16 1954 return __a - __b;
d98a3884 1955}
1956
5c493d36 1957__extension__ extern __inline uint16x8_t
1958__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1959vsubq_u16 (uint16x8_t __a, uint16x8_t __b)
1960{
f8ccff16 1961 return __a - __b;
d98a3884 1962}
1963
5c493d36 1964__extension__ extern __inline uint32x4_t
1965__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1966vsubq_u32 (uint32x4_t __a, uint32x4_t __b)
1967{
f8ccff16 1968 return __a - __b;
d98a3884 1969}
1970
5c493d36 1971__extension__ extern __inline uint64x2_t
1972__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1973vsubq_u64 (uint64x2_t __a, uint64x2_t __b)
1974{
f8ccff16 1975 return __a - __b;
d98a3884 1976}
1977
5c493d36 1978__extension__ extern __inline int16x8_t
1979__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1980vsubl_s8 (int8x8_t __a, int8x8_t __b)
1981{
25a124b3 1982 return (int16x8_t)__builtin_neon_vsublsv8qi (__a, __b);
d98a3884 1983}
1984
5c493d36 1985__extension__ extern __inline int32x4_t
1986__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1987vsubl_s16 (int16x4_t __a, int16x4_t __b)
1988{
25a124b3 1989 return (int32x4_t)__builtin_neon_vsublsv4hi (__a, __b);
d98a3884 1990}
1991
5c493d36 1992__extension__ extern __inline int64x2_t
1993__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 1994vsubl_s32 (int32x2_t __a, int32x2_t __b)
1995{
25a124b3 1996 return (int64x2_t)__builtin_neon_vsublsv2si (__a, __b);
d98a3884 1997}
1998
5c493d36 1999__extension__ extern __inline uint16x8_t
2000__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2001vsubl_u8 (uint8x8_t __a, uint8x8_t __b)
2002{
25a124b3 2003 return (uint16x8_t)__builtin_neon_vsubluv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 2004}
2005
5c493d36 2006__extension__ extern __inline uint32x4_t
2007__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2008vsubl_u16 (uint16x4_t __a, uint16x4_t __b)
2009{
25a124b3 2010 return (uint32x4_t)__builtin_neon_vsubluv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 2011}
2012
5c493d36 2013__extension__ extern __inline uint64x2_t
2014__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2015vsubl_u32 (uint32x2_t __a, uint32x2_t __b)
2016{
25a124b3 2017 return (uint64x2_t)__builtin_neon_vsubluv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 2018}
2019
5c493d36 2020__extension__ extern __inline int16x8_t
2021__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2022vsubw_s8 (int16x8_t __a, int8x8_t __b)
2023{
25a124b3 2024 return (int16x8_t)__builtin_neon_vsubwsv8qi (__a, __b);
d98a3884 2025}
2026
5c493d36 2027__extension__ extern __inline int32x4_t
2028__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2029vsubw_s16 (int32x4_t __a, int16x4_t __b)
2030{
25a124b3 2031 return (int32x4_t)__builtin_neon_vsubwsv4hi (__a, __b);
d98a3884 2032}
2033
5c493d36 2034__extension__ extern __inline int64x2_t
2035__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2036vsubw_s32 (int64x2_t __a, int32x2_t __b)
2037{
25a124b3 2038 return (int64x2_t)__builtin_neon_vsubwsv2si (__a, __b);
d98a3884 2039}
2040
5c493d36 2041__extension__ extern __inline uint16x8_t
2042__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2043vsubw_u8 (uint16x8_t __a, uint8x8_t __b)
2044{
25a124b3 2045 return (uint16x8_t)__builtin_neon_vsubwuv8qi ((int16x8_t) __a, (int8x8_t) __b);
d98a3884 2046}
2047
5c493d36 2048__extension__ extern __inline uint32x4_t
2049__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2050vsubw_u16 (uint32x4_t __a, uint16x4_t __b)
2051{
25a124b3 2052 return (uint32x4_t)__builtin_neon_vsubwuv4hi ((int32x4_t) __a, (int16x4_t) __b);
d98a3884 2053}
2054
5c493d36 2055__extension__ extern __inline uint64x2_t
2056__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2057vsubw_u32 (uint64x2_t __a, uint32x2_t __b)
2058{
25a124b3 2059 return (uint64x2_t)__builtin_neon_vsubwuv2si ((int64x2_t) __a, (int32x2_t) __b);
d98a3884 2060}
2061
5c493d36 2062__extension__ extern __inline int8x8_t
2063__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2064vhsub_s8 (int8x8_t __a, int8x8_t __b)
2065{
25a124b3 2066 return (int8x8_t)__builtin_neon_vhsubsv8qi (__a, __b);
d98a3884 2067}
2068
5c493d36 2069__extension__ extern __inline int16x4_t
2070__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2071vhsub_s16 (int16x4_t __a, int16x4_t __b)
2072{
25a124b3 2073 return (int16x4_t)__builtin_neon_vhsubsv4hi (__a, __b);
d98a3884 2074}
2075
5c493d36 2076__extension__ extern __inline int32x2_t
2077__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2078vhsub_s32 (int32x2_t __a, int32x2_t __b)
2079{
25a124b3 2080 return (int32x2_t)__builtin_neon_vhsubsv2si (__a, __b);
d98a3884 2081}
2082
5c493d36 2083__extension__ extern __inline uint8x8_t
2084__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2085vhsub_u8 (uint8x8_t __a, uint8x8_t __b)
2086{
25a124b3 2087 return (uint8x8_t)__builtin_neon_vhsubuv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 2088}
2089
5c493d36 2090__extension__ extern __inline uint16x4_t
2091__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2092vhsub_u16 (uint16x4_t __a, uint16x4_t __b)
2093{
25a124b3 2094 return (uint16x4_t)__builtin_neon_vhsubuv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 2095}
2096
5c493d36 2097__extension__ extern __inline uint32x2_t
2098__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2099vhsub_u32 (uint32x2_t __a, uint32x2_t __b)
2100{
25a124b3 2101 return (uint32x2_t)__builtin_neon_vhsubuv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 2102}
2103
5c493d36 2104__extension__ extern __inline int8x16_t
2105__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2106vhsubq_s8 (int8x16_t __a, int8x16_t __b)
2107{
25a124b3 2108 return (int8x16_t)__builtin_neon_vhsubsv16qi (__a, __b);
d98a3884 2109}
2110
5c493d36 2111__extension__ extern __inline int16x8_t
2112__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2113vhsubq_s16 (int16x8_t __a, int16x8_t __b)
2114{
25a124b3 2115 return (int16x8_t)__builtin_neon_vhsubsv8hi (__a, __b);
d98a3884 2116}
2117
5c493d36 2118__extension__ extern __inline int32x4_t
2119__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2120vhsubq_s32 (int32x4_t __a, int32x4_t __b)
2121{
25a124b3 2122 return (int32x4_t)__builtin_neon_vhsubsv4si (__a, __b);
d98a3884 2123}
2124
5c493d36 2125__extension__ extern __inline uint8x16_t
2126__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2127vhsubq_u8 (uint8x16_t __a, uint8x16_t __b)
2128{
25a124b3 2129 return (uint8x16_t)__builtin_neon_vhsubuv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 2130}
2131
5c493d36 2132__extension__ extern __inline uint16x8_t
2133__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2134vhsubq_u16 (uint16x8_t __a, uint16x8_t __b)
2135{
25a124b3 2136 return (uint16x8_t)__builtin_neon_vhsubuv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 2137}
2138
5c493d36 2139__extension__ extern __inline uint32x4_t
2140__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2141vhsubq_u32 (uint32x4_t __a, uint32x4_t __b)
2142{
25a124b3 2143 return (uint32x4_t)__builtin_neon_vhsubuv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 2144}
2145
5c493d36 2146__extension__ extern __inline int8x8_t
2147__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2148vqsub_s8 (int8x8_t __a, int8x8_t __b)
2149{
25a124b3 2150 return (int8x8_t)__builtin_neon_vqsubsv8qi (__a, __b);
d98a3884 2151}
2152
5c493d36 2153__extension__ extern __inline int16x4_t
2154__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2155vqsub_s16 (int16x4_t __a, int16x4_t __b)
2156{
25a124b3 2157 return (int16x4_t)__builtin_neon_vqsubsv4hi (__a, __b);
d98a3884 2158}
2159
5c493d36 2160__extension__ extern __inline int32x2_t
2161__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2162vqsub_s32 (int32x2_t __a, int32x2_t __b)
2163{
25a124b3 2164 return (int32x2_t)__builtin_neon_vqsubsv2si (__a, __b);
d98a3884 2165}
2166
5c493d36 2167__extension__ extern __inline int64x1_t
2168__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2169vqsub_s64 (int64x1_t __a, int64x1_t __b)
2170{
25a124b3 2171 return (int64x1_t)__builtin_neon_vqsubsdi (__a, __b);
d98a3884 2172}
2173
5c493d36 2174__extension__ extern __inline uint8x8_t
2175__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2176vqsub_u8 (uint8x8_t __a, uint8x8_t __b)
2177{
25a124b3 2178 return (uint8x8_t)__builtin_neon_vqsubuv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 2179}
2180
5c493d36 2181__extension__ extern __inline uint16x4_t
2182__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2183vqsub_u16 (uint16x4_t __a, uint16x4_t __b)
2184{
25a124b3 2185 return (uint16x4_t)__builtin_neon_vqsubuv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 2186}
2187
5c493d36 2188__extension__ extern __inline uint32x2_t
2189__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2190vqsub_u32 (uint32x2_t __a, uint32x2_t __b)
2191{
25a124b3 2192 return (uint32x2_t)__builtin_neon_vqsubuv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 2193}
2194
5c493d36 2195__extension__ extern __inline uint64x1_t
2196__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2197vqsub_u64 (uint64x1_t __a, uint64x1_t __b)
2198{
25a124b3 2199 return (uint64x1_t)__builtin_neon_vqsubudi ((int64x1_t) __a, (int64x1_t) __b);
d98a3884 2200}
2201
5c493d36 2202__extension__ extern __inline int8x16_t
2203__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2204vqsubq_s8 (int8x16_t __a, int8x16_t __b)
2205{
25a124b3 2206 return (int8x16_t)__builtin_neon_vqsubsv16qi (__a, __b);
d98a3884 2207}
2208
5c493d36 2209__extension__ extern __inline int16x8_t
2210__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2211vqsubq_s16 (int16x8_t __a, int16x8_t __b)
2212{
25a124b3 2213 return (int16x8_t)__builtin_neon_vqsubsv8hi (__a, __b);
d98a3884 2214}
2215
5c493d36 2216__extension__ extern __inline int32x4_t
2217__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2218vqsubq_s32 (int32x4_t __a, int32x4_t __b)
2219{
25a124b3 2220 return (int32x4_t)__builtin_neon_vqsubsv4si (__a, __b);
d98a3884 2221}
2222
5c493d36 2223__extension__ extern __inline int64x2_t
2224__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2225vqsubq_s64 (int64x2_t __a, int64x2_t __b)
2226{
25a124b3 2227 return (int64x2_t)__builtin_neon_vqsubsv2di (__a, __b);
d98a3884 2228}
2229
5c493d36 2230__extension__ extern __inline uint8x16_t
2231__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2232vqsubq_u8 (uint8x16_t __a, uint8x16_t __b)
2233{
25a124b3 2234 return (uint8x16_t)__builtin_neon_vqsubuv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 2235}
2236
5c493d36 2237__extension__ extern __inline uint16x8_t
2238__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2239vqsubq_u16 (uint16x8_t __a, uint16x8_t __b)
2240{
25a124b3 2241 return (uint16x8_t)__builtin_neon_vqsubuv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 2242}
2243
5c493d36 2244__extension__ extern __inline uint32x4_t
2245__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2246vqsubq_u32 (uint32x4_t __a, uint32x4_t __b)
2247{
25a124b3 2248 return (uint32x4_t)__builtin_neon_vqsubuv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 2249}
2250
5c493d36 2251__extension__ extern __inline uint64x2_t
2252__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2253vqsubq_u64 (uint64x2_t __a, uint64x2_t __b)
2254{
25a124b3 2255 return (uint64x2_t)__builtin_neon_vqsubuv2di ((int64x2_t) __a, (int64x2_t) __b);
d98a3884 2256}
2257
5c493d36 2258__extension__ extern __inline int8x8_t
2259__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2260vsubhn_s16 (int16x8_t __a, int16x8_t __b)
2261{
25a124b3 2262 return (int8x8_t)__builtin_neon_vsubhnv8hi (__a, __b);
d98a3884 2263}
2264
5c493d36 2265__extension__ extern __inline int16x4_t
2266__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2267vsubhn_s32 (int32x4_t __a, int32x4_t __b)
2268{
25a124b3 2269 return (int16x4_t)__builtin_neon_vsubhnv4si (__a, __b);
d98a3884 2270}
2271
5c493d36 2272__extension__ extern __inline int32x2_t
2273__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2274vsubhn_s64 (int64x2_t __a, int64x2_t __b)
2275{
25a124b3 2276 return (int32x2_t)__builtin_neon_vsubhnv2di (__a, __b);
d98a3884 2277}
2278
5c493d36 2279__extension__ extern __inline uint8x8_t
2280__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2281vsubhn_u16 (uint16x8_t __a, uint16x8_t __b)
2282{
25a124b3 2283 return (uint8x8_t)__builtin_neon_vsubhnv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 2284}
2285
5c493d36 2286__extension__ extern __inline uint16x4_t
2287__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2288vsubhn_u32 (uint32x4_t __a, uint32x4_t __b)
2289{
25a124b3 2290 return (uint16x4_t)__builtin_neon_vsubhnv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 2291}
2292
5c493d36 2293__extension__ extern __inline uint32x2_t
2294__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2295vsubhn_u64 (uint64x2_t __a, uint64x2_t __b)
2296{
25a124b3 2297 return (uint32x2_t)__builtin_neon_vsubhnv2di ((int64x2_t) __a, (int64x2_t) __b);
d98a3884 2298}
2299
5c493d36 2300__extension__ extern __inline int8x8_t
2301__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2302vrsubhn_s16 (int16x8_t __a, int16x8_t __b)
2303{
25a124b3 2304 return (int8x8_t)__builtin_neon_vrsubhnv8hi (__a, __b);
d98a3884 2305}
2306
5c493d36 2307__extension__ extern __inline int16x4_t
2308__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2309vrsubhn_s32 (int32x4_t __a, int32x4_t __b)
2310{
25a124b3 2311 return (int16x4_t)__builtin_neon_vrsubhnv4si (__a, __b);
d98a3884 2312}
2313
5c493d36 2314__extension__ extern __inline int32x2_t
2315__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2316vrsubhn_s64 (int64x2_t __a, int64x2_t __b)
2317{
25a124b3 2318 return (int32x2_t)__builtin_neon_vrsubhnv2di (__a, __b);
d98a3884 2319}
2320
5c493d36 2321__extension__ extern __inline uint8x8_t
2322__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2323vrsubhn_u16 (uint16x8_t __a, uint16x8_t __b)
2324{
25a124b3 2325 return (uint8x8_t)__builtin_neon_vrsubhnv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 2326}
2327
5c493d36 2328__extension__ extern __inline uint16x4_t
2329__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2330vrsubhn_u32 (uint32x4_t __a, uint32x4_t __b)
2331{
25a124b3 2332 return (uint16x4_t)__builtin_neon_vrsubhnv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 2333}
2334
5c493d36 2335__extension__ extern __inline uint32x2_t
2336__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2337vrsubhn_u64 (uint64x2_t __a, uint64x2_t __b)
2338{
25a124b3 2339 return (uint32x2_t)__builtin_neon_vrsubhnv2di ((int64x2_t) __a, (int64x2_t) __b);
d98a3884 2340}
2341
5c493d36 2342__extension__ extern __inline uint8x8_t
2343__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2344vceq_s8 (int8x8_t __a, int8x8_t __b)
2345{
25a124b3 2346 return (uint8x8_t)__builtin_neon_vceqv8qi (__a, __b);
d98a3884 2347}
2348
5c493d36 2349__extension__ extern __inline uint16x4_t
2350__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2351vceq_s16 (int16x4_t __a, int16x4_t __b)
2352{
25a124b3 2353 return (uint16x4_t)__builtin_neon_vceqv4hi (__a, __b);
d98a3884 2354}
2355
5c493d36 2356__extension__ extern __inline uint32x2_t
2357__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2358vceq_s32 (int32x2_t __a, int32x2_t __b)
2359{
25a124b3 2360 return (uint32x2_t)__builtin_neon_vceqv2si (__a, __b);
d98a3884 2361}
2362
5c493d36 2363__extension__ extern __inline uint32x2_t
2364__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2365vceq_f32 (float32x2_t __a, float32x2_t __b)
2366{
25a124b3 2367 return (uint32x2_t)__builtin_neon_vceqv2sf (__a, __b);
d98a3884 2368}
2369
5c493d36 2370__extension__ extern __inline uint8x8_t
2371__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2372vceq_u8 (uint8x8_t __a, uint8x8_t __b)
2373{
25a124b3 2374 return (uint8x8_t)__builtin_neon_vceqv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 2375}
2376
5c493d36 2377__extension__ extern __inline uint16x4_t
2378__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2379vceq_u16 (uint16x4_t __a, uint16x4_t __b)
2380{
25a124b3 2381 return (uint16x4_t)__builtin_neon_vceqv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 2382}
2383
5c493d36 2384__extension__ extern __inline uint32x2_t
2385__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2386vceq_u32 (uint32x2_t __a, uint32x2_t __b)
2387{
25a124b3 2388 return (uint32x2_t)__builtin_neon_vceqv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 2389}
2390
5c493d36 2391__extension__ extern __inline uint8x8_t
2392__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2393vceq_p8 (poly8x8_t __a, poly8x8_t __b)
2394{
25a124b3 2395 return (uint8x8_t)__builtin_neon_vceqv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 2396}
2397
5c493d36 2398__extension__ extern __inline uint8x16_t
2399__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2400vceqq_s8 (int8x16_t __a, int8x16_t __b)
2401{
25a124b3 2402 return (uint8x16_t)__builtin_neon_vceqv16qi (__a, __b);
d98a3884 2403}
2404
5c493d36 2405__extension__ extern __inline uint16x8_t
2406__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2407vceqq_s16 (int16x8_t __a, int16x8_t __b)
2408{
25a124b3 2409 return (uint16x8_t)__builtin_neon_vceqv8hi (__a, __b);
d98a3884 2410}
2411
5c493d36 2412__extension__ extern __inline uint32x4_t
2413__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2414vceqq_s32 (int32x4_t __a, int32x4_t __b)
2415{
25a124b3 2416 return (uint32x4_t)__builtin_neon_vceqv4si (__a, __b);
d98a3884 2417}
2418
5c493d36 2419__extension__ extern __inline uint32x4_t
2420__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2421vceqq_f32 (float32x4_t __a, float32x4_t __b)
2422{
25a124b3 2423 return (uint32x4_t)__builtin_neon_vceqv4sf (__a, __b);
d98a3884 2424}
2425
5c493d36 2426__extension__ extern __inline uint8x16_t
2427__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2428vceqq_u8 (uint8x16_t __a, uint8x16_t __b)
2429{
25a124b3 2430 return (uint8x16_t)__builtin_neon_vceqv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 2431}
2432
5c493d36 2433__extension__ extern __inline uint16x8_t
2434__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2435vceqq_u16 (uint16x8_t __a, uint16x8_t __b)
2436{
25a124b3 2437 return (uint16x8_t)__builtin_neon_vceqv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 2438}
2439
5c493d36 2440__extension__ extern __inline uint32x4_t
2441__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2442vceqq_u32 (uint32x4_t __a, uint32x4_t __b)
2443{
25a124b3 2444 return (uint32x4_t)__builtin_neon_vceqv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 2445}
2446
5c493d36 2447__extension__ extern __inline uint8x16_t
2448__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2449vceqq_p8 (poly8x16_t __a, poly8x16_t __b)
2450{
25a124b3 2451 return (uint8x16_t)__builtin_neon_vceqv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 2452}
2453
5c493d36 2454__extension__ extern __inline uint8x8_t
2455__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2456vcge_s8 (int8x8_t __a, int8x8_t __b)
2457{
25a124b3 2458 return (uint8x8_t)__builtin_neon_vcgev8qi (__a, __b);
d98a3884 2459}
2460
5c493d36 2461__extension__ extern __inline uint16x4_t
2462__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2463vcge_s16 (int16x4_t __a, int16x4_t __b)
2464{
25a124b3 2465 return (uint16x4_t)__builtin_neon_vcgev4hi (__a, __b);
d98a3884 2466}
2467
5c493d36 2468__extension__ extern __inline uint32x2_t
2469__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2470vcge_s32 (int32x2_t __a, int32x2_t __b)
2471{
25a124b3 2472 return (uint32x2_t)__builtin_neon_vcgev2si (__a, __b);
d98a3884 2473}
2474
5c493d36 2475__extension__ extern __inline uint32x2_t
2476__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2477vcge_f32 (float32x2_t __a, float32x2_t __b)
2478{
25a124b3 2479 return (uint32x2_t)__builtin_neon_vcgev2sf (__a, __b);
d98a3884 2480}
2481
5c493d36 2482__extension__ extern __inline uint8x8_t
2483__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2484vcge_u8 (uint8x8_t __a, uint8x8_t __b)
2485{
25a124b3 2486 return (uint8x8_t)__builtin_neon_vcgeuv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 2487}
2488
5c493d36 2489__extension__ extern __inline uint16x4_t
2490__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2491vcge_u16 (uint16x4_t __a, uint16x4_t __b)
2492{
25a124b3 2493 return (uint16x4_t)__builtin_neon_vcgeuv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 2494}
2495
5c493d36 2496__extension__ extern __inline uint32x2_t
2497__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2498vcge_u32 (uint32x2_t __a, uint32x2_t __b)
2499{
25a124b3 2500 return (uint32x2_t)__builtin_neon_vcgeuv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 2501}
2502
5c493d36 2503__extension__ extern __inline uint8x16_t
2504__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2505vcgeq_s8 (int8x16_t __a, int8x16_t __b)
2506{
25a124b3 2507 return (uint8x16_t)__builtin_neon_vcgev16qi (__a, __b);
d98a3884 2508}
2509
5c493d36 2510__extension__ extern __inline uint16x8_t
2511__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2512vcgeq_s16 (int16x8_t __a, int16x8_t __b)
2513{
25a124b3 2514 return (uint16x8_t)__builtin_neon_vcgev8hi (__a, __b);
d98a3884 2515}
2516
5c493d36 2517__extension__ extern __inline uint32x4_t
2518__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2519vcgeq_s32 (int32x4_t __a, int32x4_t __b)
2520{
25a124b3 2521 return (uint32x4_t)__builtin_neon_vcgev4si (__a, __b);
d98a3884 2522}
2523
5c493d36 2524__extension__ extern __inline uint32x4_t
2525__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2526vcgeq_f32 (float32x4_t __a, float32x4_t __b)
2527{
25a124b3 2528 return (uint32x4_t)__builtin_neon_vcgev4sf (__a, __b);
d98a3884 2529}
2530
5c493d36 2531__extension__ extern __inline uint8x16_t
2532__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2533vcgeq_u8 (uint8x16_t __a, uint8x16_t __b)
2534{
25a124b3 2535 return (uint8x16_t)__builtin_neon_vcgeuv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 2536}
2537
5c493d36 2538__extension__ extern __inline uint16x8_t
2539__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2540vcgeq_u16 (uint16x8_t __a, uint16x8_t __b)
2541{
25a124b3 2542 return (uint16x8_t)__builtin_neon_vcgeuv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 2543}
2544
5c493d36 2545__extension__ extern __inline uint32x4_t
2546__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2547vcgeq_u32 (uint32x4_t __a, uint32x4_t __b)
2548{
25a124b3 2549 return (uint32x4_t)__builtin_neon_vcgeuv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 2550}
2551
5c493d36 2552__extension__ extern __inline uint8x8_t
2553__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2554vcle_s8 (int8x8_t __a, int8x8_t __b)
2555{
25a124b3 2556 return (uint8x8_t)__builtin_neon_vcgev8qi (__b, __a);
d98a3884 2557}
2558
5c493d36 2559__extension__ extern __inline uint16x4_t
2560__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2561vcle_s16 (int16x4_t __a, int16x4_t __b)
2562{
25a124b3 2563 return (uint16x4_t)__builtin_neon_vcgev4hi (__b, __a);
d98a3884 2564}
2565
5c493d36 2566__extension__ extern __inline uint32x2_t
2567__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2568vcle_s32 (int32x2_t __a, int32x2_t __b)
2569{
25a124b3 2570 return (uint32x2_t)__builtin_neon_vcgev2si (__b, __a);
d98a3884 2571}
2572
5c493d36 2573__extension__ extern __inline uint32x2_t
2574__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2575vcle_f32 (float32x2_t __a, float32x2_t __b)
2576{
25a124b3 2577 return (uint32x2_t)__builtin_neon_vcgev2sf (__b, __a);
d98a3884 2578}
2579
5c493d36 2580__extension__ extern __inline uint8x8_t
2581__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2582vcle_u8 (uint8x8_t __a, uint8x8_t __b)
2583{
25a124b3 2584 return (uint8x8_t)__builtin_neon_vcgeuv8qi ((int8x8_t) __b, (int8x8_t) __a);
d98a3884 2585}
2586
5c493d36 2587__extension__ extern __inline uint16x4_t
2588__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2589vcle_u16 (uint16x4_t __a, uint16x4_t __b)
2590{
25a124b3 2591 return (uint16x4_t)__builtin_neon_vcgeuv4hi ((int16x4_t) __b, (int16x4_t) __a);
d98a3884 2592}
2593
5c493d36 2594__extension__ extern __inline uint32x2_t
2595__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2596vcle_u32 (uint32x2_t __a, uint32x2_t __b)
2597{
25a124b3 2598 return (uint32x2_t)__builtin_neon_vcgeuv2si ((int32x2_t) __b, (int32x2_t) __a);
d98a3884 2599}
2600
5c493d36 2601__extension__ extern __inline uint8x16_t
2602__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2603vcleq_s8 (int8x16_t __a, int8x16_t __b)
2604{
25a124b3 2605 return (uint8x16_t)__builtin_neon_vcgev16qi (__b, __a);
d98a3884 2606}
2607
5c493d36 2608__extension__ extern __inline uint16x8_t
2609__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2610vcleq_s16 (int16x8_t __a, int16x8_t __b)
2611{
25a124b3 2612 return (uint16x8_t)__builtin_neon_vcgev8hi (__b, __a);
d98a3884 2613}
2614
5c493d36 2615__extension__ extern __inline uint32x4_t
2616__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2617vcleq_s32 (int32x4_t __a, int32x4_t __b)
2618{
25a124b3 2619 return (uint32x4_t)__builtin_neon_vcgev4si (__b, __a);
d98a3884 2620}
2621
5c493d36 2622__extension__ extern __inline uint32x4_t
2623__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2624vcleq_f32 (float32x4_t __a, float32x4_t __b)
2625{
25a124b3 2626 return (uint32x4_t)__builtin_neon_vcgev4sf (__b, __a);
d98a3884 2627}
2628
5c493d36 2629__extension__ extern __inline uint8x16_t
2630__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2631vcleq_u8 (uint8x16_t __a, uint8x16_t __b)
2632{
25a124b3 2633 return (uint8x16_t)__builtin_neon_vcgeuv16qi ((int8x16_t) __b, (int8x16_t) __a);
d98a3884 2634}
2635
5c493d36 2636__extension__ extern __inline uint16x8_t
2637__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2638vcleq_u16 (uint16x8_t __a, uint16x8_t __b)
2639{
25a124b3 2640 return (uint16x8_t)__builtin_neon_vcgeuv8hi ((int16x8_t) __b, (int16x8_t) __a);
d98a3884 2641}
2642
5c493d36 2643__extension__ extern __inline uint32x4_t
2644__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2645vcleq_u32 (uint32x4_t __a, uint32x4_t __b)
2646{
25a124b3 2647 return (uint32x4_t)__builtin_neon_vcgeuv4si ((int32x4_t) __b, (int32x4_t) __a);
d98a3884 2648}
2649
5c493d36 2650__extension__ extern __inline uint8x8_t
2651__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2652vcgt_s8 (int8x8_t __a, int8x8_t __b)
2653{
25a124b3 2654 return (uint8x8_t)__builtin_neon_vcgtv8qi (__a, __b);
d98a3884 2655}
2656
5c493d36 2657__extension__ extern __inline uint16x4_t
2658__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2659vcgt_s16 (int16x4_t __a, int16x4_t __b)
2660{
25a124b3 2661 return (uint16x4_t)__builtin_neon_vcgtv4hi (__a, __b);
d98a3884 2662}
2663
5c493d36 2664__extension__ extern __inline uint32x2_t
2665__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2666vcgt_s32 (int32x2_t __a, int32x2_t __b)
2667{
25a124b3 2668 return (uint32x2_t)__builtin_neon_vcgtv2si (__a, __b);
d98a3884 2669}
2670
5c493d36 2671__extension__ extern __inline uint32x2_t
2672__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2673vcgt_f32 (float32x2_t __a, float32x2_t __b)
2674{
25a124b3 2675 return (uint32x2_t)__builtin_neon_vcgtv2sf (__a, __b);
d98a3884 2676}
2677
5c493d36 2678__extension__ extern __inline uint8x8_t
2679__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2680vcgt_u8 (uint8x8_t __a, uint8x8_t __b)
2681{
25a124b3 2682 return (uint8x8_t)__builtin_neon_vcgtuv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 2683}
2684
5c493d36 2685__extension__ extern __inline uint16x4_t
2686__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2687vcgt_u16 (uint16x4_t __a, uint16x4_t __b)
2688{
25a124b3 2689 return (uint16x4_t)__builtin_neon_vcgtuv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 2690}
2691
5c493d36 2692__extension__ extern __inline uint32x2_t
2693__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2694vcgt_u32 (uint32x2_t __a, uint32x2_t __b)
2695{
25a124b3 2696 return (uint32x2_t)__builtin_neon_vcgtuv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 2697}
2698
5c493d36 2699__extension__ extern __inline uint8x16_t
2700__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2701vcgtq_s8 (int8x16_t __a, int8x16_t __b)
2702{
25a124b3 2703 return (uint8x16_t)__builtin_neon_vcgtv16qi (__a, __b);
d98a3884 2704}
2705
5c493d36 2706__extension__ extern __inline uint16x8_t
2707__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2708vcgtq_s16 (int16x8_t __a, int16x8_t __b)
2709{
25a124b3 2710 return (uint16x8_t)__builtin_neon_vcgtv8hi (__a, __b);
d98a3884 2711}
2712
5c493d36 2713__extension__ extern __inline uint32x4_t
2714__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2715vcgtq_s32 (int32x4_t __a, int32x4_t __b)
2716{
25a124b3 2717 return (uint32x4_t)__builtin_neon_vcgtv4si (__a, __b);
d98a3884 2718}
2719
5c493d36 2720__extension__ extern __inline uint32x4_t
2721__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2722vcgtq_f32 (float32x4_t __a, float32x4_t __b)
2723{
25a124b3 2724 return (uint32x4_t)__builtin_neon_vcgtv4sf (__a, __b);
d98a3884 2725}
2726
5c493d36 2727__extension__ extern __inline uint8x16_t
2728__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2729vcgtq_u8 (uint8x16_t __a, uint8x16_t __b)
2730{
25a124b3 2731 return (uint8x16_t)__builtin_neon_vcgtuv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 2732}
2733
5c493d36 2734__extension__ extern __inline uint16x8_t
2735__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2736vcgtq_u16 (uint16x8_t __a, uint16x8_t __b)
2737{
25a124b3 2738 return (uint16x8_t)__builtin_neon_vcgtuv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 2739}
2740
5c493d36 2741__extension__ extern __inline uint32x4_t
2742__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2743vcgtq_u32 (uint32x4_t __a, uint32x4_t __b)
2744{
25a124b3 2745 return (uint32x4_t)__builtin_neon_vcgtuv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 2746}
2747
5c493d36 2748__extension__ extern __inline uint8x8_t
2749__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2750vclt_s8 (int8x8_t __a, int8x8_t __b)
2751{
25a124b3 2752 return (uint8x8_t)__builtin_neon_vcgtv8qi (__b, __a);
d98a3884 2753}
2754
5c493d36 2755__extension__ extern __inline uint16x4_t
2756__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2757vclt_s16 (int16x4_t __a, int16x4_t __b)
2758{
25a124b3 2759 return (uint16x4_t)__builtin_neon_vcgtv4hi (__b, __a);
d98a3884 2760}
2761
5c493d36 2762__extension__ extern __inline uint32x2_t
2763__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2764vclt_s32 (int32x2_t __a, int32x2_t __b)
2765{
25a124b3 2766 return (uint32x2_t)__builtin_neon_vcgtv2si (__b, __a);
d98a3884 2767}
2768
5c493d36 2769__extension__ extern __inline uint32x2_t
2770__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2771vclt_f32 (float32x2_t __a, float32x2_t __b)
2772{
25a124b3 2773 return (uint32x2_t)__builtin_neon_vcgtv2sf (__b, __a);
d98a3884 2774}
2775
5c493d36 2776__extension__ extern __inline uint8x8_t
2777__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2778vclt_u8 (uint8x8_t __a, uint8x8_t __b)
2779{
25a124b3 2780 return (uint8x8_t)__builtin_neon_vcgtuv8qi ((int8x8_t) __b, (int8x8_t) __a);
d98a3884 2781}
2782
5c493d36 2783__extension__ extern __inline uint16x4_t
2784__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2785vclt_u16 (uint16x4_t __a, uint16x4_t __b)
2786{
25a124b3 2787 return (uint16x4_t)__builtin_neon_vcgtuv4hi ((int16x4_t) __b, (int16x4_t) __a);
d98a3884 2788}
2789
5c493d36 2790__extension__ extern __inline uint32x2_t
2791__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2792vclt_u32 (uint32x2_t __a, uint32x2_t __b)
2793{
25a124b3 2794 return (uint32x2_t)__builtin_neon_vcgtuv2si ((int32x2_t) __b, (int32x2_t) __a);
d98a3884 2795}
2796
5c493d36 2797__extension__ extern __inline uint8x16_t
2798__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2799vcltq_s8 (int8x16_t __a, int8x16_t __b)
2800{
25a124b3 2801 return (uint8x16_t)__builtin_neon_vcgtv16qi (__b, __a);
d98a3884 2802}
2803
5c493d36 2804__extension__ extern __inline uint16x8_t
2805__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2806vcltq_s16 (int16x8_t __a, int16x8_t __b)
2807{
25a124b3 2808 return (uint16x8_t)__builtin_neon_vcgtv8hi (__b, __a);
d98a3884 2809}
2810
5c493d36 2811__extension__ extern __inline uint32x4_t
2812__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2813vcltq_s32 (int32x4_t __a, int32x4_t __b)
2814{
25a124b3 2815 return (uint32x4_t)__builtin_neon_vcgtv4si (__b, __a);
d98a3884 2816}
2817
5c493d36 2818__extension__ extern __inline uint32x4_t
2819__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2820vcltq_f32 (float32x4_t __a, float32x4_t __b)
2821{
25a124b3 2822 return (uint32x4_t)__builtin_neon_vcgtv4sf (__b, __a);
d98a3884 2823}
2824
5c493d36 2825__extension__ extern __inline uint8x16_t
2826__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2827vcltq_u8 (uint8x16_t __a, uint8x16_t __b)
2828{
25a124b3 2829 return (uint8x16_t)__builtin_neon_vcgtuv16qi ((int8x16_t) __b, (int8x16_t) __a);
d98a3884 2830}
2831
5c493d36 2832__extension__ extern __inline uint16x8_t
2833__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2834vcltq_u16 (uint16x8_t __a, uint16x8_t __b)
2835{
25a124b3 2836 return (uint16x8_t)__builtin_neon_vcgtuv8hi ((int16x8_t) __b, (int16x8_t) __a);
d98a3884 2837}
2838
5c493d36 2839__extension__ extern __inline uint32x4_t
2840__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2841vcltq_u32 (uint32x4_t __a, uint32x4_t __b)
2842{
25a124b3 2843 return (uint32x4_t)__builtin_neon_vcgtuv4si ((int32x4_t) __b, (int32x4_t) __a);
d98a3884 2844}
2845
5c493d36 2846__extension__ extern __inline uint32x2_t
2847__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2848vcage_f32 (float32x2_t __a, float32x2_t __b)
2849{
25a124b3 2850 return (uint32x2_t)__builtin_neon_vcagev2sf (__a, __b);
d98a3884 2851}
2852
5c493d36 2853__extension__ extern __inline uint32x4_t
2854__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2855vcageq_f32 (float32x4_t __a, float32x4_t __b)
2856{
25a124b3 2857 return (uint32x4_t)__builtin_neon_vcagev4sf (__a, __b);
d98a3884 2858}
2859
5c493d36 2860__extension__ extern __inline uint32x2_t
2861__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2862vcale_f32 (float32x2_t __a, float32x2_t __b)
2863{
25a124b3 2864 return (uint32x2_t)__builtin_neon_vcagev2sf (__b, __a);
d98a3884 2865}
2866
5c493d36 2867__extension__ extern __inline uint32x4_t
2868__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2869vcaleq_f32 (float32x4_t __a, float32x4_t __b)
2870{
25a124b3 2871 return (uint32x4_t)__builtin_neon_vcagev4sf (__b, __a);
d98a3884 2872}
2873
5c493d36 2874__extension__ extern __inline uint32x2_t
2875__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2876vcagt_f32 (float32x2_t __a, float32x2_t __b)
2877{
25a124b3 2878 return (uint32x2_t)__builtin_neon_vcagtv2sf (__a, __b);
d98a3884 2879}
2880
5c493d36 2881__extension__ extern __inline uint32x4_t
2882__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2883vcagtq_f32 (float32x4_t __a, float32x4_t __b)
2884{
25a124b3 2885 return (uint32x4_t)__builtin_neon_vcagtv4sf (__a, __b);
d98a3884 2886}
2887
5c493d36 2888__extension__ extern __inline uint32x2_t
2889__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2890vcalt_f32 (float32x2_t __a, float32x2_t __b)
2891{
25a124b3 2892 return (uint32x2_t)__builtin_neon_vcagtv2sf (__b, __a);
d98a3884 2893}
2894
5c493d36 2895__extension__ extern __inline uint32x4_t
2896__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2897vcaltq_f32 (float32x4_t __a, float32x4_t __b)
2898{
25a124b3 2899 return (uint32x4_t)__builtin_neon_vcagtv4sf (__b, __a);
d98a3884 2900}
2901
5c493d36 2902__extension__ extern __inline uint8x8_t
2903__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2904vtst_s8 (int8x8_t __a, int8x8_t __b)
2905{
25a124b3 2906 return (uint8x8_t)__builtin_neon_vtstv8qi (__a, __b);
d98a3884 2907}
2908
5c493d36 2909__extension__ extern __inline uint16x4_t
2910__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2911vtst_s16 (int16x4_t __a, int16x4_t __b)
2912{
25a124b3 2913 return (uint16x4_t)__builtin_neon_vtstv4hi (__a, __b);
d98a3884 2914}
2915
5c493d36 2916__extension__ extern __inline uint32x2_t
2917__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2918vtst_s32 (int32x2_t __a, int32x2_t __b)
2919{
25a124b3 2920 return (uint32x2_t)__builtin_neon_vtstv2si (__a, __b);
d98a3884 2921}
2922
5c493d36 2923__extension__ extern __inline uint8x8_t
2924__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2925vtst_u8 (uint8x8_t __a, uint8x8_t __b)
2926{
25a124b3 2927 return (uint8x8_t)__builtin_neon_vtstv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 2928}
2929
5c493d36 2930__extension__ extern __inline uint16x4_t
2931__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2932vtst_u16 (uint16x4_t __a, uint16x4_t __b)
2933{
25a124b3 2934 return (uint16x4_t)__builtin_neon_vtstv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 2935}
2936
5c493d36 2937__extension__ extern __inline uint32x2_t
2938__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2939vtst_u32 (uint32x2_t __a, uint32x2_t __b)
2940{
25a124b3 2941 return (uint32x2_t)__builtin_neon_vtstv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 2942}
2943
5c493d36 2944__extension__ extern __inline uint8x8_t
2945__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2946vtst_p8 (poly8x8_t __a, poly8x8_t __b)
2947{
25a124b3 2948 return (uint8x8_t)__builtin_neon_vtstv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 2949}
2950
5c493d36 2951__extension__ extern __inline uint16x4_t
2952__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
c0f383ae 2953vtst_p16 (poly16x4_t __a, poly16x4_t __b)
2954{
2955 return (uint16x4_t)__builtin_neon_vtstv4hi ((int16x4_t) __a, (int16x4_t) __b);
2956}
2957
5c493d36 2958__extension__ extern __inline uint8x16_t
2959__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2960vtstq_s8 (int8x16_t __a, int8x16_t __b)
2961{
25a124b3 2962 return (uint8x16_t)__builtin_neon_vtstv16qi (__a, __b);
d98a3884 2963}
2964
5c493d36 2965__extension__ extern __inline uint16x8_t
2966__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2967vtstq_s16 (int16x8_t __a, int16x8_t __b)
2968{
25a124b3 2969 return (uint16x8_t)__builtin_neon_vtstv8hi (__a, __b);
d98a3884 2970}
2971
5c493d36 2972__extension__ extern __inline uint32x4_t
2973__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2974vtstq_s32 (int32x4_t __a, int32x4_t __b)
2975{
25a124b3 2976 return (uint32x4_t)__builtin_neon_vtstv4si (__a, __b);
d98a3884 2977}
2978
5c493d36 2979__extension__ extern __inline uint8x16_t
2980__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2981vtstq_u8 (uint8x16_t __a, uint8x16_t __b)
2982{
25a124b3 2983 return (uint8x16_t)__builtin_neon_vtstv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 2984}
2985
5c493d36 2986__extension__ extern __inline uint16x8_t
2987__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2988vtstq_u16 (uint16x8_t __a, uint16x8_t __b)
2989{
25a124b3 2990 return (uint16x8_t)__builtin_neon_vtstv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 2991}
2992
5c493d36 2993__extension__ extern __inline uint32x4_t
2994__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 2995vtstq_u32 (uint32x4_t __a, uint32x4_t __b)
2996{
25a124b3 2997 return (uint32x4_t)__builtin_neon_vtstv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 2998}
2999
5c493d36 3000__extension__ extern __inline uint8x16_t
3001__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3002vtstq_p8 (poly8x16_t __a, poly8x16_t __b)
3003{
25a124b3 3004 return (uint8x16_t)__builtin_neon_vtstv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 3005}
3006
5c493d36 3007__extension__ extern __inline uint16x8_t
3008__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
c0f383ae 3009vtstq_p16 (poly16x8_t __a, poly16x8_t __b)
3010{
3011 return (uint16x8_t)__builtin_neon_vtstv8hi ((int16x8_t) __a, (int16x8_t) __b);
3012}
3013
5c493d36 3014__extension__ extern __inline int8x8_t
3015__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3016vabd_s8 (int8x8_t __a, int8x8_t __b)
3017{
25a124b3 3018 return (int8x8_t)__builtin_neon_vabdsv8qi (__a, __b);
d98a3884 3019}
3020
5c493d36 3021__extension__ extern __inline int16x4_t
3022__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3023vabd_s16 (int16x4_t __a, int16x4_t __b)
3024{
25a124b3 3025 return (int16x4_t)__builtin_neon_vabdsv4hi (__a, __b);
d98a3884 3026}
3027
5c493d36 3028__extension__ extern __inline int32x2_t
3029__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3030vabd_s32 (int32x2_t __a, int32x2_t __b)
3031{
25a124b3 3032 return (int32x2_t)__builtin_neon_vabdsv2si (__a, __b);
d98a3884 3033}
3034
5c493d36 3035__extension__ extern __inline float32x2_t
3036__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3037vabd_f32 (float32x2_t __a, float32x2_t __b)
3038{
25a124b3 3039 return (float32x2_t)__builtin_neon_vabdfv2sf (__a, __b);
d98a3884 3040}
3041
5c493d36 3042__extension__ extern __inline uint8x8_t
3043__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3044vabd_u8 (uint8x8_t __a, uint8x8_t __b)
3045{
25a124b3 3046 return (uint8x8_t)__builtin_neon_vabduv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 3047}
3048
5c493d36 3049__extension__ extern __inline uint16x4_t
3050__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3051vabd_u16 (uint16x4_t __a, uint16x4_t __b)
3052{
25a124b3 3053 return (uint16x4_t)__builtin_neon_vabduv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 3054}
3055
5c493d36 3056__extension__ extern __inline uint32x2_t
3057__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3058vabd_u32 (uint32x2_t __a, uint32x2_t __b)
3059{
25a124b3 3060 return (uint32x2_t)__builtin_neon_vabduv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 3061}
3062
5c493d36 3063__extension__ extern __inline int8x16_t
3064__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3065vabdq_s8 (int8x16_t __a, int8x16_t __b)
3066{
25a124b3 3067 return (int8x16_t)__builtin_neon_vabdsv16qi (__a, __b);
d98a3884 3068}
3069
5c493d36 3070__extension__ extern __inline int16x8_t
3071__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3072vabdq_s16 (int16x8_t __a, int16x8_t __b)
3073{
25a124b3 3074 return (int16x8_t)__builtin_neon_vabdsv8hi (__a, __b);
d98a3884 3075}
3076
5c493d36 3077__extension__ extern __inline int32x4_t
3078__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3079vabdq_s32 (int32x4_t __a, int32x4_t __b)
3080{
25a124b3 3081 return (int32x4_t)__builtin_neon_vabdsv4si (__a, __b);
d98a3884 3082}
3083
5c493d36 3084__extension__ extern __inline float32x4_t
3085__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3086vabdq_f32 (float32x4_t __a, float32x4_t __b)
3087{
25a124b3 3088 return (float32x4_t)__builtin_neon_vabdfv4sf (__a, __b);
d98a3884 3089}
3090
5c493d36 3091__extension__ extern __inline uint8x16_t
3092__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3093vabdq_u8 (uint8x16_t __a, uint8x16_t __b)
3094{
25a124b3 3095 return (uint8x16_t)__builtin_neon_vabduv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 3096}
3097
5c493d36 3098__extension__ extern __inline uint16x8_t
3099__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3100vabdq_u16 (uint16x8_t __a, uint16x8_t __b)
3101{
25a124b3 3102 return (uint16x8_t)__builtin_neon_vabduv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 3103}
3104
5c493d36 3105__extension__ extern __inline uint32x4_t
3106__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3107vabdq_u32 (uint32x4_t __a, uint32x4_t __b)
3108{
25a124b3 3109 return (uint32x4_t)__builtin_neon_vabduv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 3110}
3111
5c493d36 3112__extension__ extern __inline int16x8_t
3113__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3114vabdl_s8 (int8x8_t __a, int8x8_t __b)
3115{
25a124b3 3116 return (int16x8_t)__builtin_neon_vabdlsv8qi (__a, __b);
d98a3884 3117}
3118
5c493d36 3119__extension__ extern __inline int32x4_t
3120__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3121vabdl_s16 (int16x4_t __a, int16x4_t __b)
3122{
25a124b3 3123 return (int32x4_t)__builtin_neon_vabdlsv4hi (__a, __b);
d98a3884 3124}
3125
5c493d36 3126__extension__ extern __inline int64x2_t
3127__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3128vabdl_s32 (int32x2_t __a, int32x2_t __b)
3129{
25a124b3 3130 return (int64x2_t)__builtin_neon_vabdlsv2si (__a, __b);
d98a3884 3131}
3132
5c493d36 3133__extension__ extern __inline uint16x8_t
3134__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3135vabdl_u8 (uint8x8_t __a, uint8x8_t __b)
3136{
25a124b3 3137 return (uint16x8_t)__builtin_neon_vabdluv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 3138}
3139
5c493d36 3140__extension__ extern __inline uint32x4_t
3141__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3142vabdl_u16 (uint16x4_t __a, uint16x4_t __b)
3143{
25a124b3 3144 return (uint32x4_t)__builtin_neon_vabdluv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 3145}
3146
5c493d36 3147__extension__ extern __inline uint64x2_t
3148__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3149vabdl_u32 (uint32x2_t __a, uint32x2_t __b)
3150{
25a124b3 3151 return (uint64x2_t)__builtin_neon_vabdluv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 3152}
3153
5c493d36 3154__extension__ extern __inline int8x8_t
3155__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3156vaba_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
3157{
25a124b3 3158 return (int8x8_t)__builtin_neon_vabasv8qi (__a, __b, __c);
d98a3884 3159}
3160
5c493d36 3161__extension__ extern __inline int16x4_t
3162__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3163vaba_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
3164{
25a124b3 3165 return (int16x4_t)__builtin_neon_vabasv4hi (__a, __b, __c);
d98a3884 3166}
3167
5c493d36 3168__extension__ extern __inline int32x2_t
3169__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3170vaba_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
3171{
25a124b3 3172 return (int32x2_t)__builtin_neon_vabasv2si (__a, __b, __c);
d98a3884 3173}
3174
5c493d36 3175__extension__ extern __inline uint8x8_t
3176__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3177vaba_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
3178{
25a124b3 3179 return (uint8x8_t)__builtin_neon_vabauv8qi ((int8x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
d98a3884 3180}
3181
5c493d36 3182__extension__ extern __inline uint16x4_t
3183__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3184vaba_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
3185{
25a124b3 3186 return (uint16x4_t)__builtin_neon_vabauv4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
d98a3884 3187}
3188
5c493d36 3189__extension__ extern __inline uint32x2_t
3190__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3191vaba_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
3192{
25a124b3 3193 return (uint32x2_t)__builtin_neon_vabauv2si ((int32x2_t) __a, (int32x2_t) __b, (int32x2_t) __c);
d98a3884 3194}
3195
5c493d36 3196__extension__ extern __inline int8x16_t
3197__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3198vabaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
3199{
25a124b3 3200 return (int8x16_t)__builtin_neon_vabasv16qi (__a, __b, __c);
d98a3884 3201}
3202
5c493d36 3203__extension__ extern __inline int16x8_t
3204__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3205vabaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
3206{
25a124b3 3207 return (int16x8_t)__builtin_neon_vabasv8hi (__a, __b, __c);
d98a3884 3208}
3209
5c493d36 3210__extension__ extern __inline int32x4_t
3211__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3212vabaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
3213{
25a124b3 3214 return (int32x4_t)__builtin_neon_vabasv4si (__a, __b, __c);
d98a3884 3215}
3216
5c493d36 3217__extension__ extern __inline uint8x16_t
3218__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3219vabaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
3220{
25a124b3 3221 return (uint8x16_t)__builtin_neon_vabauv16qi ((int8x16_t) __a, (int8x16_t) __b, (int8x16_t) __c);
d98a3884 3222}
3223
5c493d36 3224__extension__ extern __inline uint16x8_t
3225__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3226vabaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
3227{
25a124b3 3228 return (uint16x8_t)__builtin_neon_vabauv8hi ((int16x8_t) __a, (int16x8_t) __b, (int16x8_t) __c);
d98a3884 3229}
3230
5c493d36 3231__extension__ extern __inline uint32x4_t
3232__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3233vabaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
3234{
25a124b3 3235 return (uint32x4_t)__builtin_neon_vabauv4si ((int32x4_t) __a, (int32x4_t) __b, (int32x4_t) __c);
d98a3884 3236}
3237
5c493d36 3238__extension__ extern __inline int16x8_t
3239__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3240vabal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
3241{
25a124b3 3242 return (int16x8_t)__builtin_neon_vabalsv8qi (__a, __b, __c);
d98a3884 3243}
3244
5c493d36 3245__extension__ extern __inline int32x4_t
3246__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3247vabal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
3248{
25a124b3 3249 return (int32x4_t)__builtin_neon_vabalsv4hi (__a, __b, __c);
d98a3884 3250}
3251
5c493d36 3252__extension__ extern __inline int64x2_t
3253__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3254vabal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
3255{
25a124b3 3256 return (int64x2_t)__builtin_neon_vabalsv2si (__a, __b, __c);
d98a3884 3257}
3258
5c493d36 3259__extension__ extern __inline uint16x8_t
3260__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3261vabal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
3262{
25a124b3 3263 return (uint16x8_t)__builtin_neon_vabaluv8qi ((int16x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
d98a3884 3264}
3265
5c493d36 3266__extension__ extern __inline uint32x4_t
3267__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3268vabal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
3269{
25a124b3 3270 return (uint32x4_t)__builtin_neon_vabaluv4hi ((int32x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
d98a3884 3271}
3272
5c493d36 3273__extension__ extern __inline uint64x2_t
3274__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3275vabal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
3276{
25a124b3 3277 return (uint64x2_t)__builtin_neon_vabaluv2si ((int64x2_t) __a, (int32x2_t) __b, (int32x2_t) __c);
d98a3884 3278}
3279
5c493d36 3280__extension__ extern __inline int8x8_t
3281__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3282vmax_s8 (int8x8_t __a, int8x8_t __b)
3283{
25a124b3 3284 return (int8x8_t)__builtin_neon_vmaxsv8qi (__a, __b);
d98a3884 3285}
3286
5c493d36 3287__extension__ extern __inline int16x4_t
3288__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3289vmax_s16 (int16x4_t __a, int16x4_t __b)
3290{
25a124b3 3291 return (int16x4_t)__builtin_neon_vmaxsv4hi (__a, __b);
d98a3884 3292}
3293
5c493d36 3294__extension__ extern __inline int32x2_t
3295__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3296vmax_s32 (int32x2_t __a, int32x2_t __b)
3297{
25a124b3 3298 return (int32x2_t)__builtin_neon_vmaxsv2si (__a, __b);
d98a3884 3299}
3300
5c493d36 3301__extension__ extern __inline float32x2_t
3302__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3303vmax_f32 (float32x2_t __a, float32x2_t __b)
3304{
25a124b3 3305 return (float32x2_t)__builtin_neon_vmaxfv2sf (__a, __b);
d98a3884 3306}
3307
5c493d36 3308__extension__ extern __inline uint8x8_t
3309__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3310vmax_u8 (uint8x8_t __a, uint8x8_t __b)
3311{
25a124b3 3312 return (uint8x8_t)__builtin_neon_vmaxuv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 3313}
3314
5c493d36 3315__extension__ extern __inline uint16x4_t
3316__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3317vmax_u16 (uint16x4_t __a, uint16x4_t __b)
3318{
25a124b3 3319 return (uint16x4_t)__builtin_neon_vmaxuv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 3320}
3321
5c493d36 3322__extension__ extern __inline uint32x2_t
3323__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3324vmax_u32 (uint32x2_t __a, uint32x2_t __b)
3325{
25a124b3 3326 return (uint32x2_t)__builtin_neon_vmaxuv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 3327}
3328
5c493d36 3329__extension__ extern __inline int8x16_t
3330__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3331vmaxq_s8 (int8x16_t __a, int8x16_t __b)
3332{
25a124b3 3333 return (int8x16_t)__builtin_neon_vmaxsv16qi (__a, __b);
d98a3884 3334}
3335
5c493d36 3336__extension__ extern __inline int16x8_t
3337__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3338vmaxq_s16 (int16x8_t __a, int16x8_t __b)
3339{
25a124b3 3340 return (int16x8_t)__builtin_neon_vmaxsv8hi (__a, __b);
d98a3884 3341}
3342
5c493d36 3343__extension__ extern __inline int32x4_t
3344__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3345vmaxq_s32 (int32x4_t __a, int32x4_t __b)
3346{
25a124b3 3347 return (int32x4_t)__builtin_neon_vmaxsv4si (__a, __b);
d98a3884 3348}
3349
5c493d36 3350__extension__ extern __inline float32x4_t
3351__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3352vmaxq_f32 (float32x4_t __a, float32x4_t __b)
3353{
25a124b3 3354 return (float32x4_t)__builtin_neon_vmaxfv4sf (__a, __b);
d98a3884 3355}
3356
94bea3fe 3357#pragma GCC push_options
3358#pragma GCC target ("fpu=neon-fp-armv8")
5c493d36 3359__extension__ extern __inline float32x2_t
3360__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
94bea3fe 3361vmaxnm_f32 (float32x2_t a, float32x2_t b)
3362{
3363 return (float32x2_t)__builtin_neon_vmaxnmv2sf (a, b);
3364}
3365
5c493d36 3366__extension__ extern __inline float32x4_t
3367__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
94bea3fe 3368vmaxnmq_f32 (float32x4_t a, float32x4_t b)
3369{
3370 return (float32x4_t)__builtin_neon_vmaxnmv4sf (a, b);
3371}
3372
5c493d36 3373__extension__ extern __inline float32x2_t
3374__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
94bea3fe 3375vminnm_f32 (float32x2_t a, float32x2_t b)
3376{
3377 return (float32x2_t)__builtin_neon_vminnmv2sf (a, b);
3378}
3379
5c493d36 3380__extension__ extern __inline float32x4_t
3381__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
94bea3fe 3382vminnmq_f32 (float32x4_t a, float32x4_t b)
3383{
3384 return (float32x4_t)__builtin_neon_vminnmv4sf (a, b);
3385}
3386#pragma GCC pop_options
3387
3388
5c493d36 3389__extension__ extern __inline uint8x16_t
3390__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3391vmaxq_u8 (uint8x16_t __a, uint8x16_t __b)
3392{
25a124b3 3393 return (uint8x16_t)__builtin_neon_vmaxuv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 3394}
3395
5c493d36 3396__extension__ extern __inline uint16x8_t
3397__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3398vmaxq_u16 (uint16x8_t __a, uint16x8_t __b)
3399{
25a124b3 3400 return (uint16x8_t)__builtin_neon_vmaxuv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 3401}
3402
5c493d36 3403__extension__ extern __inline uint32x4_t
3404__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3405vmaxq_u32 (uint32x4_t __a, uint32x4_t __b)
3406{
25a124b3 3407 return (uint32x4_t)__builtin_neon_vmaxuv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 3408}
3409
5c493d36 3410__extension__ extern __inline int8x8_t
3411__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3412vmin_s8 (int8x8_t __a, int8x8_t __b)
3413{
25a124b3 3414 return (int8x8_t)__builtin_neon_vminsv8qi (__a, __b);
d98a3884 3415}
3416
5c493d36 3417__extension__ extern __inline int16x4_t
3418__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3419vmin_s16 (int16x4_t __a, int16x4_t __b)
3420{
25a124b3 3421 return (int16x4_t)__builtin_neon_vminsv4hi (__a, __b);
d98a3884 3422}
3423
5c493d36 3424__extension__ extern __inline int32x2_t
3425__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3426vmin_s32 (int32x2_t __a, int32x2_t __b)
3427{
25a124b3 3428 return (int32x2_t)__builtin_neon_vminsv2si (__a, __b);
d98a3884 3429}
3430
5c493d36 3431__extension__ extern __inline float32x2_t
3432__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3433vmin_f32 (float32x2_t __a, float32x2_t __b)
3434{
25a124b3 3435 return (float32x2_t)__builtin_neon_vminfv2sf (__a, __b);
d98a3884 3436}
3437
5c493d36 3438__extension__ extern __inline uint8x8_t
3439__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3440vmin_u8 (uint8x8_t __a, uint8x8_t __b)
3441{
25a124b3 3442 return (uint8x8_t)__builtin_neon_vminuv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 3443}
3444
5c493d36 3445__extension__ extern __inline uint16x4_t
3446__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3447vmin_u16 (uint16x4_t __a, uint16x4_t __b)
3448{
25a124b3 3449 return (uint16x4_t)__builtin_neon_vminuv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 3450}
3451
5c493d36 3452__extension__ extern __inline uint32x2_t
3453__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3454vmin_u32 (uint32x2_t __a, uint32x2_t __b)
3455{
25a124b3 3456 return (uint32x2_t)__builtin_neon_vminuv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 3457}
3458
5c493d36 3459__extension__ extern __inline int8x16_t
3460__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3461vminq_s8 (int8x16_t __a, int8x16_t __b)
3462{
25a124b3 3463 return (int8x16_t)__builtin_neon_vminsv16qi (__a, __b);
d98a3884 3464}
3465
5c493d36 3466__extension__ extern __inline int16x8_t
3467__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3468vminq_s16 (int16x8_t __a, int16x8_t __b)
3469{
25a124b3 3470 return (int16x8_t)__builtin_neon_vminsv8hi (__a, __b);
d98a3884 3471}
3472
5c493d36 3473__extension__ extern __inline int32x4_t
3474__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3475vminq_s32 (int32x4_t __a, int32x4_t __b)
3476{
25a124b3 3477 return (int32x4_t)__builtin_neon_vminsv4si (__a, __b);
d98a3884 3478}
3479
5c493d36 3480__extension__ extern __inline float32x4_t
3481__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3482vminq_f32 (float32x4_t __a, float32x4_t __b)
3483{
25a124b3 3484 return (float32x4_t)__builtin_neon_vminfv4sf (__a, __b);
d98a3884 3485}
3486
5c493d36 3487__extension__ extern __inline uint8x16_t
3488__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3489vminq_u8 (uint8x16_t __a, uint8x16_t __b)
3490{
25a124b3 3491 return (uint8x16_t)__builtin_neon_vminuv16qi ((int8x16_t) __a, (int8x16_t) __b);
d98a3884 3492}
3493
5c493d36 3494__extension__ extern __inline uint16x8_t
3495__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3496vminq_u16 (uint16x8_t __a, uint16x8_t __b)
3497{
25a124b3 3498 return (uint16x8_t)__builtin_neon_vminuv8hi ((int16x8_t) __a, (int16x8_t) __b);
d98a3884 3499}
3500
5c493d36 3501__extension__ extern __inline uint32x4_t
3502__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3503vminq_u32 (uint32x4_t __a, uint32x4_t __b)
3504{
25a124b3 3505 return (uint32x4_t)__builtin_neon_vminuv4si ((int32x4_t) __a, (int32x4_t) __b);
d98a3884 3506}
3507
5c493d36 3508__extension__ extern __inline int8x8_t
3509__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3510vpadd_s8 (int8x8_t __a, int8x8_t __b)
3511{
25a124b3 3512 return (int8x8_t)__builtin_neon_vpaddv8qi (__a, __b);
d98a3884 3513}
3514
5c493d36 3515__extension__ extern __inline int16x4_t
3516__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3517vpadd_s16 (int16x4_t __a, int16x4_t __b)
3518{
25a124b3 3519 return (int16x4_t)__builtin_neon_vpaddv4hi (__a, __b);
d98a3884 3520}
3521
5c493d36 3522__extension__ extern __inline int32x2_t
3523__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3524vpadd_s32 (int32x2_t __a, int32x2_t __b)
3525{
25a124b3 3526 return (int32x2_t)__builtin_neon_vpaddv2si (__a, __b);
d98a3884 3527}
3528
5c493d36 3529__extension__ extern __inline float32x2_t
3530__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3531vpadd_f32 (float32x2_t __a, float32x2_t __b)
3532{
25a124b3 3533 return (float32x2_t)__builtin_neon_vpaddv2sf (__a, __b);
d98a3884 3534}
3535
5c493d36 3536__extension__ extern __inline uint8x8_t
3537__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3538vpadd_u8 (uint8x8_t __a, uint8x8_t __b)
3539{
25a124b3 3540 return (uint8x8_t)__builtin_neon_vpaddv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 3541}
3542
5c493d36 3543__extension__ extern __inline uint16x4_t
3544__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3545vpadd_u16 (uint16x4_t __a, uint16x4_t __b)
3546{
25a124b3 3547 return (uint16x4_t)__builtin_neon_vpaddv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 3548}
3549
5c493d36 3550__extension__ extern __inline uint32x2_t
3551__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3552vpadd_u32 (uint32x2_t __a, uint32x2_t __b)
3553{
25a124b3 3554 return (uint32x2_t)__builtin_neon_vpaddv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 3555}
3556
5c493d36 3557__extension__ extern __inline int16x4_t
3558__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3559vpaddl_s8 (int8x8_t __a)
3560{
25a124b3 3561 return (int16x4_t)__builtin_neon_vpaddlsv8qi (__a);
d98a3884 3562}
3563
5c493d36 3564__extension__ extern __inline int32x2_t
3565__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3566vpaddl_s16 (int16x4_t __a)
3567{
25a124b3 3568 return (int32x2_t)__builtin_neon_vpaddlsv4hi (__a);
d98a3884 3569}
3570
5c493d36 3571__extension__ extern __inline int64x1_t
3572__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3573vpaddl_s32 (int32x2_t __a)
3574{
25a124b3 3575 return (int64x1_t)__builtin_neon_vpaddlsv2si (__a);
d98a3884 3576}
3577
5c493d36 3578__extension__ extern __inline uint16x4_t
3579__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3580vpaddl_u8 (uint8x8_t __a)
3581{
25a124b3 3582 return (uint16x4_t)__builtin_neon_vpaddluv8qi ((int8x8_t) __a);
d98a3884 3583}
3584
5c493d36 3585__extension__ extern __inline uint32x2_t
3586__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3587vpaddl_u16 (uint16x4_t __a)
3588{
25a124b3 3589 return (uint32x2_t)__builtin_neon_vpaddluv4hi ((int16x4_t) __a);
d98a3884 3590}
3591
5c493d36 3592__extension__ extern __inline uint64x1_t
3593__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3594vpaddl_u32 (uint32x2_t __a)
3595{
25a124b3 3596 return (uint64x1_t)__builtin_neon_vpaddluv2si ((int32x2_t) __a);
d98a3884 3597}
3598
5c493d36 3599__extension__ extern __inline int16x8_t
3600__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3601vpaddlq_s8 (int8x16_t __a)
3602{
25a124b3 3603 return (int16x8_t)__builtin_neon_vpaddlsv16qi (__a);
d98a3884 3604}
3605
5c493d36 3606__extension__ extern __inline int32x4_t
3607__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3608vpaddlq_s16 (int16x8_t __a)
3609{
25a124b3 3610 return (int32x4_t)__builtin_neon_vpaddlsv8hi (__a);
d98a3884 3611}
3612
5c493d36 3613__extension__ extern __inline int64x2_t
3614__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3615vpaddlq_s32 (int32x4_t __a)
3616{
25a124b3 3617 return (int64x2_t)__builtin_neon_vpaddlsv4si (__a);
d98a3884 3618}
3619
5c493d36 3620__extension__ extern __inline uint16x8_t
3621__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3622vpaddlq_u8 (uint8x16_t __a)
3623{
25a124b3 3624 return (uint16x8_t)__builtin_neon_vpaddluv16qi ((int8x16_t) __a);
d98a3884 3625}
3626
5c493d36 3627__extension__ extern __inline uint32x4_t
3628__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3629vpaddlq_u16 (uint16x8_t __a)
3630{
25a124b3 3631 return (uint32x4_t)__builtin_neon_vpaddluv8hi ((int16x8_t) __a);
d98a3884 3632}
3633
5c493d36 3634__extension__ extern __inline uint64x2_t
3635__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3636vpaddlq_u32 (uint32x4_t __a)
3637{
25a124b3 3638 return (uint64x2_t)__builtin_neon_vpaddluv4si ((int32x4_t) __a);
d98a3884 3639}
3640
5c493d36 3641__extension__ extern __inline int16x4_t
3642__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3643vpadal_s8 (int16x4_t __a, int8x8_t __b)
3644{
25a124b3 3645 return (int16x4_t)__builtin_neon_vpadalsv8qi (__a, __b);
d98a3884 3646}
3647
5c493d36 3648__extension__ extern __inline int32x2_t
3649__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3650vpadal_s16 (int32x2_t __a, int16x4_t __b)
3651{
25a124b3 3652 return (int32x2_t)__builtin_neon_vpadalsv4hi (__a, __b);
d98a3884 3653}
3654
5c493d36 3655__extension__ extern __inline int64x1_t
3656__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3657vpadal_s32 (int64x1_t __a, int32x2_t __b)
3658{
25a124b3 3659 return (int64x1_t)__builtin_neon_vpadalsv2si (__a, __b);
d98a3884 3660}
3661
5c493d36 3662__extension__ extern __inline uint16x4_t
3663__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3664vpadal_u8 (uint16x4_t __a, uint8x8_t __b)
3665{
25a124b3 3666 return (uint16x4_t)__builtin_neon_vpadaluv8qi ((int16x4_t) __a, (int8x8_t) __b);
d98a3884 3667}
3668
5c493d36 3669__extension__ extern __inline uint32x2_t
3670__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3671vpadal_u16 (uint32x2_t __a, uint16x4_t __b)
3672{
25a124b3 3673 return (uint32x2_t)__builtin_neon_vpadaluv4hi ((int32x2_t) __a, (int16x4_t) __b);
d98a3884 3674}
3675
5c493d36 3676__extension__ extern __inline uint64x1_t
3677__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3678vpadal_u32 (uint64x1_t __a, uint32x2_t __b)
3679{
25a124b3 3680 return (uint64x1_t)__builtin_neon_vpadaluv2si ((int64x1_t) __a, (int32x2_t) __b);
d98a3884 3681}
3682
5c493d36 3683__extension__ extern __inline int16x8_t
3684__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3685vpadalq_s8 (int16x8_t __a, int8x16_t __b)
3686{
25a124b3 3687 return (int16x8_t)__builtin_neon_vpadalsv16qi (__a, __b);
d98a3884 3688}
3689
5c493d36 3690__extension__ extern __inline int32x4_t
3691__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3692vpadalq_s16 (int32x4_t __a, int16x8_t __b)
3693{
25a124b3 3694 return (int32x4_t)__builtin_neon_vpadalsv8hi (__a, __b);
d98a3884 3695}
3696
5c493d36 3697__extension__ extern __inline int64x2_t
3698__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3699vpadalq_s32 (int64x2_t __a, int32x4_t __b)
3700{
25a124b3 3701 return (int64x2_t)__builtin_neon_vpadalsv4si (__a, __b);
d98a3884 3702}
3703
5c493d36 3704__extension__ extern __inline uint16x8_t
3705__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3706vpadalq_u8 (uint16x8_t __a, uint8x16_t __b)
3707{
25a124b3 3708 return (uint16x8_t)__builtin_neon_vpadaluv16qi ((int16x8_t) __a, (int8x16_t) __b);
d98a3884 3709}
3710
5c493d36 3711__extension__ extern __inline uint32x4_t
3712__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3713vpadalq_u16 (uint32x4_t __a, uint16x8_t __b)
3714{
25a124b3 3715 return (uint32x4_t)__builtin_neon_vpadaluv8hi ((int32x4_t) __a, (int16x8_t) __b);
d98a3884 3716}
3717
5c493d36 3718__extension__ extern __inline uint64x2_t
3719__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3720vpadalq_u32 (uint64x2_t __a, uint32x4_t __b)
3721{
25a124b3 3722 return (uint64x2_t)__builtin_neon_vpadaluv4si ((int64x2_t) __a, (int32x4_t) __b);
d98a3884 3723}
3724
5c493d36 3725__extension__ extern __inline int8x8_t
3726__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3727vpmax_s8 (int8x8_t __a, int8x8_t __b)
3728{
25a124b3 3729 return (int8x8_t)__builtin_neon_vpmaxsv8qi (__a, __b);
d98a3884 3730}
3731
5c493d36 3732__extension__ extern __inline int16x4_t
3733__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3734vpmax_s16 (int16x4_t __a, int16x4_t __b)
3735{
25a124b3 3736 return (int16x4_t)__builtin_neon_vpmaxsv4hi (__a, __b);
d98a3884 3737}
3738
5c493d36 3739__extension__ extern __inline int32x2_t
3740__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3741vpmax_s32 (int32x2_t __a, int32x2_t __b)
3742{
25a124b3 3743 return (int32x2_t)__builtin_neon_vpmaxsv2si (__a, __b);
d98a3884 3744}
3745
5c493d36 3746__extension__ extern __inline float32x2_t
3747__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3748vpmax_f32 (float32x2_t __a, float32x2_t __b)
3749{
25a124b3 3750 return (float32x2_t)__builtin_neon_vpmaxfv2sf (__a, __b);
d98a3884 3751}
3752
5c493d36 3753__extension__ extern __inline uint8x8_t
3754__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3755vpmax_u8 (uint8x8_t __a, uint8x8_t __b)
3756{
25a124b3 3757 return (uint8x8_t)__builtin_neon_vpmaxuv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 3758}
3759
5c493d36 3760__extension__ extern __inline uint16x4_t
3761__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3762vpmax_u16 (uint16x4_t __a, uint16x4_t __b)
3763{
25a124b3 3764 return (uint16x4_t)__builtin_neon_vpmaxuv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 3765}
3766
5c493d36 3767__extension__ extern __inline uint32x2_t
3768__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3769vpmax_u32 (uint32x2_t __a, uint32x2_t __b)
3770{
25a124b3 3771 return (uint32x2_t)__builtin_neon_vpmaxuv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 3772}
3773
5c493d36 3774__extension__ extern __inline int8x8_t
3775__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3776vpmin_s8 (int8x8_t __a, int8x8_t __b)
3777{
25a124b3 3778 return (int8x8_t)__builtin_neon_vpminsv8qi (__a, __b);
d98a3884 3779}
3780
5c493d36 3781__extension__ extern __inline int16x4_t
3782__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3783vpmin_s16 (int16x4_t __a, int16x4_t __b)
3784{
25a124b3 3785 return (int16x4_t)__builtin_neon_vpminsv4hi (__a, __b);
d98a3884 3786}
3787
5c493d36 3788__extension__ extern __inline int32x2_t
3789__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3790vpmin_s32 (int32x2_t __a, int32x2_t __b)
3791{
25a124b3 3792 return (int32x2_t)__builtin_neon_vpminsv2si (__a, __b);
d98a3884 3793}
3794
5c493d36 3795__extension__ extern __inline float32x2_t
3796__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3797vpmin_f32 (float32x2_t __a, float32x2_t __b)
3798{
25a124b3 3799 return (float32x2_t)__builtin_neon_vpminfv2sf (__a, __b);
d98a3884 3800}
3801
5c493d36 3802__extension__ extern __inline uint8x8_t
3803__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3804vpmin_u8 (uint8x8_t __a, uint8x8_t __b)
3805{
25a124b3 3806 return (uint8x8_t)__builtin_neon_vpminuv8qi ((int8x8_t) __a, (int8x8_t) __b);
d98a3884 3807}
3808
5c493d36 3809__extension__ extern __inline uint16x4_t
3810__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3811vpmin_u16 (uint16x4_t __a, uint16x4_t __b)
3812{
25a124b3 3813 return (uint16x4_t)__builtin_neon_vpminuv4hi ((int16x4_t) __a, (int16x4_t) __b);
d98a3884 3814}
3815
5c493d36 3816__extension__ extern __inline uint32x2_t
3817__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3818vpmin_u32 (uint32x2_t __a, uint32x2_t __b)
3819{
25a124b3 3820 return (uint32x2_t)__builtin_neon_vpminuv2si ((int32x2_t) __a, (int32x2_t) __b);
d98a3884 3821}
3822
5c493d36 3823__extension__ extern __inline float32x2_t
3824__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3825vrecps_f32 (float32x2_t __a, float32x2_t __b)
3826{
25a124b3 3827 return (float32x2_t)__builtin_neon_vrecpsv2sf (__a, __b);
d98a3884 3828}
3829
5c493d36 3830__extension__ extern __inline float32x4_t
3831__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3832vrecpsq_f32 (float32x4_t __a, float32x4_t __b)
3833{
25a124b3 3834 return (float32x4_t)__builtin_neon_vrecpsv4sf (__a, __b);
d98a3884 3835}
3836
5c493d36 3837__extension__ extern __inline float32x2_t
3838__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3839vrsqrts_f32 (float32x2_t __a, float32x2_t __b)
3840{
25a124b3 3841 return (float32x2_t)__builtin_neon_vrsqrtsv2sf (__a, __b);
d98a3884 3842}
3843
5c493d36 3844__extension__ extern __inline float32x4_t
3845__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3846vrsqrtsq_f32 (float32x4_t __a, float32x4_t __b)
3847{
25a124b3 3848 return (float32x4_t)__builtin_neon_vrsqrtsv4sf (__a, __b);
d98a3884 3849}
3850
5c493d36 3851__extension__ extern __inline int8x8_t
3852__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3853vshl_s8 (int8x8_t __a, int8x8_t __b)
3854{
25a124b3 3855 return (int8x8_t)__builtin_neon_vshlsv8qi (__a, __b);
d98a3884 3856}
3857
5c493d36 3858__extension__ extern __inline int16x4_t
3859__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3860vshl_s16 (int16x4_t __a, int16x4_t __b)
3861{
25a124b3 3862 return (int16x4_t)__builtin_neon_vshlsv4hi (__a, __b);
d98a3884 3863}
3864
5c493d36 3865__extension__ extern __inline int32x2_t
3866__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3867vshl_s32 (int32x2_t __a, int32x2_t __b)
3868{
25a124b3 3869 return (int32x2_t)__builtin_neon_vshlsv2si (__a, __b);
d98a3884 3870}
3871
5c493d36 3872__extension__ extern __inline int64x1_t
3873__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3874vshl_s64 (int64x1_t __a, int64x1_t __b)
3875{
25a124b3 3876 return (int64x1_t)__builtin_neon_vshlsdi (__a, __b);
d98a3884 3877}
3878
5c493d36 3879__extension__ extern __inline uint8x8_t
3880__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3881vshl_u8 (uint8x8_t __a, int8x8_t __b)
3882{
25a124b3 3883 return (uint8x8_t)__builtin_neon_vshluv8qi ((int8x8_t) __a, __b);
d98a3884 3884}
3885
5c493d36 3886__extension__ extern __inline uint16x4_t
3887__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3888vshl_u16 (uint16x4_t __a, int16x4_t __b)
3889{
25a124b3 3890 return (uint16x4_t)__builtin_neon_vshluv4hi ((int16x4_t) __a, __b);
d98a3884 3891}
3892
5c493d36 3893__extension__ extern __inline uint32x2_t
3894__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3895vshl_u32 (uint32x2_t __a, int32x2_t __b)
3896{
25a124b3 3897 return (uint32x2_t)__builtin_neon_vshluv2si ((int32x2_t) __a, __b);
d98a3884 3898}
3899
5c493d36 3900__extension__ extern __inline uint64x1_t
3901__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3902vshl_u64 (uint64x1_t __a, int64x1_t __b)
3903{
25a124b3 3904 return (uint64x1_t)__builtin_neon_vshludi ((int64x1_t) __a, __b);
d98a3884 3905}
3906
5c493d36 3907__extension__ extern __inline int8x16_t
3908__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3909vshlq_s8 (int8x16_t __a, int8x16_t __b)
3910{
25a124b3 3911 return (int8x16_t)__builtin_neon_vshlsv16qi (__a, __b);
d98a3884 3912}
3913
5c493d36 3914__extension__ extern __inline int16x8_t
3915__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3916vshlq_s16 (int16x8_t __a, int16x8_t __b)
3917{
25a124b3 3918 return (int16x8_t)__builtin_neon_vshlsv8hi (__a, __b);
d98a3884 3919}
3920
5c493d36 3921__extension__ extern __inline int32x4_t
3922__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3923vshlq_s32 (int32x4_t __a, int32x4_t __b)
3924{
25a124b3 3925 return (int32x4_t)__builtin_neon_vshlsv4si (__a, __b);
d98a3884 3926}
3927
5c493d36 3928__extension__ extern __inline int64x2_t
3929__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3930vshlq_s64 (int64x2_t __a, int64x2_t __b)
3931{
25a124b3 3932 return (int64x2_t)__builtin_neon_vshlsv2di (__a, __b);
d98a3884 3933}
3934
5c493d36 3935__extension__ extern __inline uint8x16_t
3936__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3937vshlq_u8 (uint8x16_t __a, int8x16_t __b)
3938{
25a124b3 3939 return (uint8x16_t)__builtin_neon_vshluv16qi ((int8x16_t) __a, __b);
d98a3884 3940}
3941
5c493d36 3942__extension__ extern __inline uint16x8_t
3943__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3944vshlq_u16 (uint16x8_t __a, int16x8_t __b)
3945{
25a124b3 3946 return (uint16x8_t)__builtin_neon_vshluv8hi ((int16x8_t) __a, __b);
d98a3884 3947}
3948
5c493d36 3949__extension__ extern __inline uint32x4_t
3950__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3951vshlq_u32 (uint32x4_t __a, int32x4_t __b)
3952{
25a124b3 3953 return (uint32x4_t)__builtin_neon_vshluv4si ((int32x4_t) __a, __b);
d98a3884 3954}
3955
5c493d36 3956__extension__ extern __inline uint64x2_t
3957__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3958vshlq_u64 (uint64x2_t __a, int64x2_t __b)
3959{
25a124b3 3960 return (uint64x2_t)__builtin_neon_vshluv2di ((int64x2_t) __a, __b);
d98a3884 3961}
3962
5c493d36 3963__extension__ extern __inline int8x8_t
3964__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3965vrshl_s8 (int8x8_t __a, int8x8_t __b)
3966{
25a124b3 3967 return (int8x8_t)__builtin_neon_vrshlsv8qi (__a, __b);
d98a3884 3968}
3969
5c493d36 3970__extension__ extern __inline int16x4_t
3971__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3972vrshl_s16 (int16x4_t __a, int16x4_t __b)
3973{
25a124b3 3974 return (int16x4_t)__builtin_neon_vrshlsv4hi (__a, __b);
d98a3884 3975}
3976
5c493d36 3977__extension__ extern __inline int32x2_t
3978__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3979vrshl_s32 (int32x2_t __a, int32x2_t __b)
3980{
25a124b3 3981 return (int32x2_t)__builtin_neon_vrshlsv2si (__a, __b);
d98a3884 3982}
3983
5c493d36 3984__extension__ extern __inline int64x1_t
3985__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3986vrshl_s64 (int64x1_t __a, int64x1_t __b)
3987{
25a124b3 3988 return (int64x1_t)__builtin_neon_vrshlsdi (__a, __b);
d98a3884 3989}
3990
5c493d36 3991__extension__ extern __inline uint8x8_t
3992__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 3993vrshl_u8 (uint8x8_t __a, int8x8_t __b)
3994{
25a124b3 3995 return (uint8x8_t)__builtin_neon_vrshluv8qi ((int8x8_t) __a, __b);
d98a3884 3996}
3997
5c493d36 3998__extension__ extern __inline uint16x4_t
3999__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4000vrshl_u16 (uint16x4_t __a, int16x4_t __b)
4001{
25a124b3 4002 return (uint16x4_t)__builtin_neon_vrshluv4hi ((int16x4_t) __a, __b);
d98a3884 4003}
4004
5c493d36 4005__extension__ extern __inline uint32x2_t
4006__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4007vrshl_u32 (uint32x2_t __a, int32x2_t __b)
4008{
25a124b3 4009 return (uint32x2_t)__builtin_neon_vrshluv2si ((int32x2_t) __a, __b);
d98a3884 4010}
4011
5c493d36 4012__extension__ extern __inline uint64x1_t
4013__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4014vrshl_u64 (uint64x1_t __a, int64x1_t __b)
4015{
25a124b3 4016 return (uint64x1_t)__builtin_neon_vrshludi ((int64x1_t) __a, __b);
d98a3884 4017}
4018
5c493d36 4019__extension__ extern __inline int8x16_t
4020__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4021vrshlq_s8 (int8x16_t __a, int8x16_t __b)
4022{
25a124b3 4023 return (int8x16_t)__builtin_neon_vrshlsv16qi (__a, __b);
d98a3884 4024}
4025
5c493d36 4026__extension__ extern __inline int16x8_t
4027__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4028vrshlq_s16 (int16x8_t __a, int16x8_t __b)
4029{
25a124b3 4030 return (int16x8_t)__builtin_neon_vrshlsv8hi (__a, __b);
d98a3884 4031}
4032
5c493d36 4033__extension__ extern __inline int32x4_t
4034__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4035vrshlq_s32 (int32x4_t __a, int32x4_t __b)
4036{
25a124b3 4037 return (int32x4_t)__builtin_neon_vrshlsv4si (__a, __b);
d98a3884 4038}
4039
5c493d36 4040__extension__ extern __inline int64x2_t
4041__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4042vrshlq_s64 (int64x2_t __a, int64x2_t __b)
4043{
25a124b3 4044 return (int64x2_t)__builtin_neon_vrshlsv2di (__a, __b);
d98a3884 4045}
4046
5c493d36 4047__extension__ extern __inline uint8x16_t
4048__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4049vrshlq_u8 (uint8x16_t __a, int8x16_t __b)
4050{
25a124b3 4051 return (uint8x16_t)__builtin_neon_vrshluv16qi ((int8x16_t) __a, __b);
d98a3884 4052}
4053
5c493d36 4054__extension__ extern __inline uint16x8_t
4055__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4056vrshlq_u16 (uint16x8_t __a, int16x8_t __b)
4057{
25a124b3 4058 return (uint16x8_t)__builtin_neon_vrshluv8hi ((int16x8_t) __a, __b);
d98a3884 4059}
4060
5c493d36 4061__extension__ extern __inline uint32x4_t
4062__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4063vrshlq_u32 (uint32x4_t __a, int32x4_t __b)
4064{
25a124b3 4065 return (uint32x4_t)__builtin_neon_vrshluv4si ((int32x4_t) __a, __b);
d98a3884 4066}
4067
5c493d36 4068__extension__ extern __inline uint64x2_t
4069__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4070vrshlq_u64 (uint64x2_t __a, int64x2_t __b)
4071{
25a124b3 4072 return (uint64x2_t)__builtin_neon_vrshluv2di ((int64x2_t) __a, __b);
d98a3884 4073}
4074
5c493d36 4075__extension__ extern __inline int8x8_t
4076__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4077vqshl_s8 (int8x8_t __a, int8x8_t __b)
4078{
25a124b3 4079 return (int8x8_t)__builtin_neon_vqshlsv8qi (__a, __b);
d98a3884 4080}
4081
5c493d36 4082__extension__ extern __inline int16x4_t
4083__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4084vqshl_s16 (int16x4_t __a, int16x4_t __b)
4085{
25a124b3 4086 return (int16x4_t)__builtin_neon_vqshlsv4hi (__a, __b);
d98a3884 4087}
4088
5c493d36 4089__extension__ extern __inline int32x2_t
4090__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4091vqshl_s32 (int32x2_t __a, int32x2_t __b)
4092{
25a124b3 4093 return (int32x2_t)__builtin_neon_vqshlsv2si (__a, __b);
d98a3884 4094}
4095
5c493d36 4096__extension__ extern __inline int64x1_t
4097__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4098vqshl_s64 (int64x1_t __a, int64x1_t __b)
4099{
25a124b3 4100 return (int64x1_t)__builtin_neon_vqshlsdi (__a, __b);
d98a3884 4101}
4102
5c493d36 4103__extension__ extern __inline uint8x8_t
4104__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4105vqshl_u8 (uint8x8_t __a, int8x8_t __b)
4106{
25a124b3 4107 return (uint8x8_t)__builtin_neon_vqshluv8qi ((int8x8_t) __a, __b);
d98a3884 4108}
4109
5c493d36 4110__extension__ extern __inline uint16x4_t
4111__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4112vqshl_u16 (uint16x4_t __a, int16x4_t __b)
4113{
25a124b3 4114 return (uint16x4_t)__builtin_neon_vqshluv4hi ((int16x4_t) __a, __b);
d98a3884 4115}
4116
5c493d36 4117__extension__ extern __inline uint32x2_t
4118__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4119vqshl_u32 (uint32x2_t __a, int32x2_t __b)
4120{
25a124b3 4121 return (uint32x2_t)__builtin_neon_vqshluv2si ((int32x2_t) __a, __b);
d98a3884 4122}
4123
5c493d36 4124__extension__ extern __inline uint64x1_t
4125__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4126vqshl_u64 (uint64x1_t __a, int64x1_t __b)
4127{
25a124b3 4128 return (uint64x1_t)__builtin_neon_vqshludi ((int64x1_t) __a, __b);
d98a3884 4129}
4130
5c493d36 4131__extension__ extern __inline int8x16_t
4132__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4133vqshlq_s8 (int8x16_t __a, int8x16_t __b)
4134{
25a124b3 4135 return (int8x16_t)__builtin_neon_vqshlsv16qi (__a, __b);
d98a3884 4136}
4137
5c493d36 4138__extension__ extern __inline int16x8_t
4139__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4140vqshlq_s16 (int16x8_t __a, int16x8_t __b)
4141{
25a124b3 4142 return (int16x8_t)__builtin_neon_vqshlsv8hi (__a, __b);
d98a3884 4143}
4144
5c493d36 4145__extension__ extern __inline int32x4_t
4146__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4147vqshlq_s32 (int32x4_t __a, int32x4_t __b)
4148{
25a124b3 4149 return (int32x4_t)__builtin_neon_vqshlsv4si (__a, __b);
d98a3884 4150}
4151
5c493d36 4152__extension__ extern __inline int64x2_t
4153__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4154vqshlq_s64 (int64x2_t __a, int64x2_t __b)
4155{
25a124b3 4156 return (int64x2_t)__builtin_neon_vqshlsv2di (__a, __b);
d98a3884 4157}
4158
5c493d36 4159__extension__ extern __inline uint8x16_t
4160__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4161vqshlq_u8 (uint8x16_t __a, int8x16_t __b)
4162{
25a124b3 4163 return (uint8x16_t)__builtin_neon_vqshluv16qi ((int8x16_t) __a, __b);
d98a3884 4164}
4165
5c493d36 4166__extension__ extern __inline uint16x8_t
4167__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4168vqshlq_u16 (uint16x8_t __a, int16x8_t __b)
4169{
25a124b3 4170 return (uint16x8_t)__builtin_neon_vqshluv8hi ((int16x8_t) __a, __b);
d98a3884 4171}
4172
5c493d36 4173__extension__ extern __inline uint32x4_t
4174__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4175vqshlq_u32 (uint32x4_t __a, int32x4_t __b)
4176{
25a124b3 4177 return (uint32x4_t)__builtin_neon_vqshluv4si ((int32x4_t) __a, __b);
d98a3884 4178}
4179
5c493d36 4180__extension__ extern __inline uint64x2_t
4181__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4182vqshlq_u64 (uint64x2_t __a, int64x2_t __b)
4183{
25a124b3 4184 return (uint64x2_t)__builtin_neon_vqshluv2di ((int64x2_t) __a, __b);
d98a3884 4185}
4186
5c493d36 4187__extension__ extern __inline int8x8_t
4188__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4189vqrshl_s8 (int8x8_t __a, int8x8_t __b)
4190{
25a124b3 4191 return (int8x8_t)__builtin_neon_vqrshlsv8qi (__a, __b);
d98a3884 4192}
4193
5c493d36 4194__extension__ extern __inline int16x4_t
4195__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4196vqrshl_s16 (int16x4_t __a, int16x4_t __b)
4197{
25a124b3 4198 return (int16x4_t)__builtin_neon_vqrshlsv4hi (__a, __b);
d98a3884 4199}
4200
5c493d36 4201__extension__ extern __inline int32x2_t
4202__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4203vqrshl_s32 (int32x2_t __a, int32x2_t __b)
4204{
25a124b3 4205 return (int32x2_t)__builtin_neon_vqrshlsv2si (__a, __b);
d98a3884 4206}
4207
5c493d36 4208__extension__ extern __inline int64x1_t
4209__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4210vqrshl_s64 (int64x1_t __a, int64x1_t __b)
4211{
25a124b3 4212 return (int64x1_t)__builtin_neon_vqrshlsdi (__a, __b);
d98a3884 4213}
4214
5c493d36 4215__extension__ extern __inline uint8x8_t
4216__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4217vqrshl_u8 (uint8x8_t __a, int8x8_t __b)
4218{
25a124b3 4219 return (uint8x8_t)__builtin_neon_vqrshluv8qi ((int8x8_t) __a, __b);
d98a3884 4220}
4221
5c493d36 4222__extension__ extern __inline uint16x4_t
4223__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4224vqrshl_u16 (uint16x4_t __a, int16x4_t __b)
4225{
25a124b3 4226 return (uint16x4_t)__builtin_neon_vqrshluv4hi ((int16x4_t) __a, __b);
d98a3884 4227}
4228
5c493d36 4229__extension__ extern __inline uint32x2_t
4230__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4231vqrshl_u32 (uint32x2_t __a, int32x2_t __b)
4232{
25a124b3 4233 return (uint32x2_t)__builtin_neon_vqrshluv2si ((int32x2_t) __a, __b);
d98a3884 4234}
4235
5c493d36 4236__extension__ extern __inline uint64x1_t
4237__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4238vqrshl_u64 (uint64x1_t __a, int64x1_t __b)
4239{
25a124b3 4240 return (uint64x1_t)__builtin_neon_vqrshludi ((int64x1_t) __a, __b);
d98a3884 4241}
4242
5c493d36 4243__extension__ extern __inline int8x16_t
4244__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4245vqrshlq_s8 (int8x16_t __a, int8x16_t __b)
4246{
25a124b3 4247 return (int8x16_t)__builtin_neon_vqrshlsv16qi (__a, __b);
d98a3884 4248}
4249
5c493d36 4250__extension__ extern __inline int16x8_t
4251__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4252vqrshlq_s16 (int16x8_t __a, int16x8_t __b)
4253{
25a124b3 4254 return (int16x8_t)__builtin_neon_vqrshlsv8hi (__a, __b);
d98a3884 4255}
4256
5c493d36 4257__extension__ extern __inline int32x4_t
4258__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4259vqrshlq_s32 (int32x4_t __a, int32x4_t __b)
4260{
25a124b3 4261 return (int32x4_t)__builtin_neon_vqrshlsv4si (__a, __b);
d98a3884 4262}
4263
5c493d36 4264__extension__ extern __inline int64x2_t
4265__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4266vqrshlq_s64 (int64x2_t __a, int64x2_t __b)
4267{
25a124b3 4268 return (int64x2_t)__builtin_neon_vqrshlsv2di (__a, __b);
d98a3884 4269}
4270
5c493d36 4271__extension__ extern __inline uint8x16_t
4272__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4273vqrshlq_u8 (uint8x16_t __a, int8x16_t __b)
4274{
25a124b3 4275 return (uint8x16_t)__builtin_neon_vqrshluv16qi ((int8x16_t) __a, __b);
d98a3884 4276}
4277
5c493d36 4278__extension__ extern __inline uint16x8_t
4279__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4280vqrshlq_u16 (uint16x8_t __a, int16x8_t __b)
4281{
25a124b3 4282 return (uint16x8_t)__builtin_neon_vqrshluv8hi ((int16x8_t) __a, __b);
d98a3884 4283}
4284
5c493d36 4285__extension__ extern __inline uint32x4_t
4286__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4287vqrshlq_u32 (uint32x4_t __a, int32x4_t __b)
4288{
25a124b3 4289 return (uint32x4_t)__builtin_neon_vqrshluv4si ((int32x4_t) __a, __b);
d98a3884 4290}
4291
5c493d36 4292__extension__ extern __inline uint64x2_t
4293__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4294vqrshlq_u64 (uint64x2_t __a, int64x2_t __b)
4295{
25a124b3 4296 return (uint64x2_t)__builtin_neon_vqrshluv2di ((int64x2_t) __a, __b);
d98a3884 4297}
4298
5c493d36 4299__extension__ extern __inline int8x8_t
4300__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4301vshr_n_s8 (int8x8_t __a, const int __b)
4302{
25a124b3 4303 return (int8x8_t)__builtin_neon_vshrs_nv8qi (__a, __b);
d98a3884 4304}
4305
5c493d36 4306__extension__ extern __inline int16x4_t
4307__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4308vshr_n_s16 (int16x4_t __a, const int __b)
4309{
25a124b3 4310 return (int16x4_t)__builtin_neon_vshrs_nv4hi (__a, __b);
d98a3884 4311}
4312
5c493d36 4313__extension__ extern __inline int32x2_t
4314__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4315vshr_n_s32 (int32x2_t __a, const int __b)
4316{
25a124b3 4317 return (int32x2_t)__builtin_neon_vshrs_nv2si (__a, __b);
d98a3884 4318}
4319
5c493d36 4320__extension__ extern __inline int64x1_t
4321__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4322vshr_n_s64 (int64x1_t __a, const int __b)
4323{
25a124b3 4324 return (int64x1_t)__builtin_neon_vshrs_ndi (__a, __b);
d98a3884 4325}
4326
5c493d36 4327__extension__ extern __inline uint8x8_t
4328__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4329vshr_n_u8 (uint8x8_t __a, const int __b)
4330{
25a124b3 4331 return (uint8x8_t)__builtin_neon_vshru_nv8qi ((int8x8_t) __a, __b);
d98a3884 4332}
4333
5c493d36 4334__extension__ extern __inline uint16x4_t
4335__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4336vshr_n_u16 (uint16x4_t __a, const int __b)
4337{
25a124b3 4338 return (uint16x4_t)__builtin_neon_vshru_nv4hi ((int16x4_t) __a, __b);
d98a3884 4339}
4340
5c493d36 4341__extension__ extern __inline uint32x2_t
4342__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4343vshr_n_u32 (uint32x2_t __a, const int __b)
4344{
25a124b3 4345 return (uint32x2_t)__builtin_neon_vshru_nv2si ((int32x2_t) __a, __b);
d98a3884 4346}
4347
5c493d36 4348__extension__ extern __inline uint64x1_t
4349__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4350vshr_n_u64 (uint64x1_t __a, const int __b)
4351{
25a124b3 4352 return (uint64x1_t)__builtin_neon_vshru_ndi ((int64x1_t) __a, __b);
d98a3884 4353}
4354
5c493d36 4355__extension__ extern __inline int8x16_t
4356__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4357vshrq_n_s8 (int8x16_t __a, const int __b)
4358{
25a124b3 4359 return (int8x16_t)__builtin_neon_vshrs_nv16qi (__a, __b);
d98a3884 4360}
4361
5c493d36 4362__extension__ extern __inline int16x8_t
4363__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4364vshrq_n_s16 (int16x8_t __a, const int __b)
4365{
25a124b3 4366 return (int16x8_t)__builtin_neon_vshrs_nv8hi (__a, __b);
d98a3884 4367}
4368
5c493d36 4369__extension__ extern __inline int32x4_t
4370__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4371vshrq_n_s32 (int32x4_t __a, const int __b)
4372{
25a124b3 4373 return (int32x4_t)__builtin_neon_vshrs_nv4si (__a, __b);
d98a3884 4374}
4375
5c493d36 4376__extension__ extern __inline int64x2_t
4377__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4378vshrq_n_s64 (int64x2_t __a, const int __b)
4379{
25a124b3 4380 return (int64x2_t)__builtin_neon_vshrs_nv2di (__a, __b);
d98a3884 4381}
4382
5c493d36 4383__extension__ extern __inline uint8x16_t
4384__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4385vshrq_n_u8 (uint8x16_t __a, const int __b)
4386{
25a124b3 4387 return (uint8x16_t)__builtin_neon_vshru_nv16qi ((int8x16_t) __a, __b);
d98a3884 4388}
4389
5c493d36 4390__extension__ extern __inline uint16x8_t
4391__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4392vshrq_n_u16 (uint16x8_t __a, const int __b)
4393{
25a124b3 4394 return (uint16x8_t)__builtin_neon_vshru_nv8hi ((int16x8_t) __a, __b);
d98a3884 4395}
4396
5c493d36 4397__extension__ extern __inline uint32x4_t
4398__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4399vshrq_n_u32 (uint32x4_t __a, const int __b)
4400{
25a124b3 4401 return (uint32x4_t)__builtin_neon_vshru_nv4si ((int32x4_t) __a, __b);
d98a3884 4402}
4403
5c493d36 4404__extension__ extern __inline uint64x2_t
4405__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4406vshrq_n_u64 (uint64x2_t __a, const int __b)
4407{
25a124b3 4408 return (uint64x2_t)__builtin_neon_vshru_nv2di ((int64x2_t) __a, __b);
d98a3884 4409}
4410
5c493d36 4411__extension__ extern __inline int8x8_t
4412__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4413vrshr_n_s8 (int8x8_t __a, const int __b)
4414{
25a124b3 4415 return (int8x8_t)__builtin_neon_vrshrs_nv8qi (__a, __b);
d98a3884 4416}
4417
5c493d36 4418__extension__ extern __inline int16x4_t
4419__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4420vrshr_n_s16 (int16x4_t __a, const int __b)
4421{
25a124b3 4422 return (int16x4_t)__builtin_neon_vrshrs_nv4hi (__a, __b);
d98a3884 4423}
4424
5c493d36 4425__extension__ extern __inline int32x2_t
4426__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4427vrshr_n_s32 (int32x2_t __a, const int __b)
4428{
25a124b3 4429 return (int32x2_t)__builtin_neon_vrshrs_nv2si (__a, __b);
d98a3884 4430}
4431
5c493d36 4432__extension__ extern __inline int64x1_t
4433__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4434vrshr_n_s64 (int64x1_t __a, const int __b)
4435{
25a124b3 4436 return (int64x1_t)__builtin_neon_vrshrs_ndi (__a, __b);
d98a3884 4437}
4438
5c493d36 4439__extension__ extern __inline uint8x8_t
4440__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4441vrshr_n_u8 (uint8x8_t __a, const int __b)
4442{
25a124b3 4443 return (uint8x8_t)__builtin_neon_vrshru_nv8qi ((int8x8_t) __a, __b);
d98a3884 4444}
4445
5c493d36 4446__extension__ extern __inline uint16x4_t
4447__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4448vrshr_n_u16 (uint16x4_t __a, const int __b)
4449{
25a124b3 4450 return (uint16x4_t)__builtin_neon_vrshru_nv4hi ((int16x4_t) __a, __b);
d98a3884 4451}
4452
5c493d36 4453__extension__ extern __inline uint32x2_t
4454__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4455vrshr_n_u32 (uint32x2_t __a, const int __b)
4456{
25a124b3 4457 return (uint32x2_t)__builtin_neon_vrshru_nv2si ((int32x2_t) __a, __b);
d98a3884 4458}
4459
5c493d36 4460__extension__ extern __inline uint64x1_t
4461__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4462vrshr_n_u64 (uint64x1_t __a, const int __b)
4463{
25a124b3 4464 return (uint64x1_t)__builtin_neon_vrshru_ndi ((int64x1_t) __a, __b);
d98a3884 4465}
4466
5c493d36 4467__extension__ extern __inline int8x16_t
4468__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4469vrshrq_n_s8 (int8x16_t __a, const int __b)
4470{
25a124b3 4471 return (int8x16_t)__builtin_neon_vrshrs_nv16qi (__a, __b);
d98a3884 4472}
4473
5c493d36 4474__extension__ extern __inline int16x8_t
4475__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4476vrshrq_n_s16 (int16x8_t __a, const int __b)
4477{
25a124b3 4478 return (int16x8_t)__builtin_neon_vrshrs_nv8hi (__a, __b);
d98a3884 4479}
4480
5c493d36 4481__extension__ extern __inline int32x4_t
4482__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4483vrshrq_n_s32 (int32x4_t __a, const int __b)
4484{
25a124b3 4485 return (int32x4_t)__builtin_neon_vrshrs_nv4si (__a, __b);
d98a3884 4486}
4487
5c493d36 4488__extension__ extern __inline int64x2_t
4489__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4490vrshrq_n_s64 (int64x2_t __a, const int __b)
4491{
25a124b3 4492 return (int64x2_t)__builtin_neon_vrshrs_nv2di (__a, __b);
d98a3884 4493}
4494
5c493d36 4495__extension__ extern __inline uint8x16_t
4496__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4497vrshrq_n_u8 (uint8x16_t __a, const int __b)
4498{
25a124b3 4499 return (uint8x16_t)__builtin_neon_vrshru_nv16qi ((int8x16_t) __a, __b);
d98a3884 4500}
4501
5c493d36 4502__extension__ extern __inline uint16x8_t
4503__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4504vrshrq_n_u16 (uint16x8_t __a, const int __b)
4505{
25a124b3 4506 return (uint16x8_t)__builtin_neon_vrshru_nv8hi ((int16x8_t) __a, __b);
d98a3884 4507}
4508
5c493d36 4509__extension__ extern __inline uint32x4_t
4510__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4511vrshrq_n_u32 (uint32x4_t __a, const int __b)
4512{
25a124b3 4513 return (uint32x4_t)__builtin_neon_vrshru_nv4si ((int32x4_t) __a, __b);
d98a3884 4514}
4515
5c493d36 4516__extension__ extern __inline uint64x2_t
4517__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4518vrshrq_n_u64 (uint64x2_t __a, const int __b)
4519{
25a124b3 4520 return (uint64x2_t)__builtin_neon_vrshru_nv2di ((int64x2_t) __a, __b);
d98a3884 4521}
4522
5c493d36 4523__extension__ extern __inline int8x8_t
4524__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4525vshrn_n_s16 (int16x8_t __a, const int __b)
4526{
25a124b3 4527 return (int8x8_t)__builtin_neon_vshrn_nv8hi (__a, __b);
d98a3884 4528}
4529
5c493d36 4530__extension__ extern __inline int16x4_t
4531__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4532vshrn_n_s32 (int32x4_t __a, const int __b)
4533{
25a124b3 4534 return (int16x4_t)__builtin_neon_vshrn_nv4si (__a, __b);
d98a3884 4535}
4536
5c493d36 4537__extension__ extern __inline int32x2_t
4538__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4539vshrn_n_s64 (int64x2_t __a, const int __b)
4540{
25a124b3 4541 return (int32x2_t)__builtin_neon_vshrn_nv2di (__a, __b);
d98a3884 4542}
4543
5c493d36 4544__extension__ extern __inline uint8x8_t
4545__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4546vshrn_n_u16 (uint16x8_t __a, const int __b)
4547{
25a124b3 4548 return (uint8x8_t)__builtin_neon_vshrn_nv8hi ((int16x8_t) __a, __b);
d98a3884 4549}
4550
5c493d36 4551__extension__ extern __inline uint16x4_t
4552__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4553vshrn_n_u32 (uint32x4_t __a, const int __b)
4554{
25a124b3 4555 return (uint16x4_t)__builtin_neon_vshrn_nv4si ((int32x4_t) __a, __b);
d98a3884 4556}
4557
5c493d36 4558__extension__ extern __inline uint32x2_t
4559__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4560vshrn_n_u64 (uint64x2_t __a, const int __b)
4561{
25a124b3 4562 return (uint32x2_t)__builtin_neon_vshrn_nv2di ((int64x2_t) __a, __b);
d98a3884 4563}
4564
5c493d36 4565__extension__ extern __inline int8x8_t
4566__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4567vrshrn_n_s16 (int16x8_t __a, const int __b)
4568{
25a124b3 4569 return (int8x8_t)__builtin_neon_vrshrn_nv8hi (__a, __b);
d98a3884 4570}
4571
5c493d36 4572__extension__ extern __inline int16x4_t
4573__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4574vrshrn_n_s32 (int32x4_t __a, const int __b)
4575{
25a124b3 4576 return (int16x4_t)__builtin_neon_vrshrn_nv4si (__a, __b);
d98a3884 4577}
4578
5c493d36 4579__extension__ extern __inline int32x2_t
4580__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4581vrshrn_n_s64 (int64x2_t __a, const int __b)
4582{
25a124b3 4583 return (int32x2_t)__builtin_neon_vrshrn_nv2di (__a, __b);
d98a3884 4584}
4585
5c493d36 4586__extension__ extern __inline uint8x8_t
4587__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4588vrshrn_n_u16 (uint16x8_t __a, const int __b)
4589{
25a124b3 4590 return (uint8x8_t)__builtin_neon_vrshrn_nv8hi ((int16x8_t) __a, __b);
d98a3884 4591}
4592
5c493d36 4593__extension__ extern __inline uint16x4_t
4594__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4595vrshrn_n_u32 (uint32x4_t __a, const int __b)
4596{
25a124b3 4597 return (uint16x4_t)__builtin_neon_vrshrn_nv4si ((int32x4_t) __a, __b);
d98a3884 4598}
4599
5c493d36 4600__extension__ extern __inline uint32x2_t
4601__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4602vrshrn_n_u64 (uint64x2_t __a, const int __b)
4603{
25a124b3 4604 return (uint32x2_t)__builtin_neon_vrshrn_nv2di ((int64x2_t) __a, __b);
d98a3884 4605}
4606
5c493d36 4607__extension__ extern __inline int8x8_t
4608__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4609vqshrn_n_s16 (int16x8_t __a, const int __b)
4610{
25a124b3 4611 return (int8x8_t)__builtin_neon_vqshrns_nv8hi (__a, __b);
d98a3884 4612}
4613
5c493d36 4614__extension__ extern __inline int16x4_t
4615__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4616vqshrn_n_s32 (int32x4_t __a, const int __b)
4617{
25a124b3 4618 return (int16x4_t)__builtin_neon_vqshrns_nv4si (__a, __b);
d98a3884 4619}
4620
5c493d36 4621__extension__ extern __inline int32x2_t
4622__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4623vqshrn_n_s64 (int64x2_t __a, const int __b)
4624{
25a124b3 4625 return (int32x2_t)__builtin_neon_vqshrns_nv2di (__a, __b);
d98a3884 4626}
4627
5c493d36 4628__extension__ extern __inline uint8x8_t
4629__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4630vqshrn_n_u16 (uint16x8_t __a, const int __b)
4631{
25a124b3 4632 return (uint8x8_t)__builtin_neon_vqshrnu_nv8hi ((int16x8_t) __a, __b);
d98a3884 4633}
4634
5c493d36 4635__extension__ extern __inline uint16x4_t
4636__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4637vqshrn_n_u32 (uint32x4_t __a, const int __b)
4638{
25a124b3 4639 return (uint16x4_t)__builtin_neon_vqshrnu_nv4si ((int32x4_t) __a, __b);
d98a3884 4640}
4641
5c493d36 4642__extension__ extern __inline uint32x2_t
4643__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4644vqshrn_n_u64 (uint64x2_t __a, const int __b)
4645{
25a124b3 4646 return (uint32x2_t)__builtin_neon_vqshrnu_nv2di ((int64x2_t) __a, __b);
d98a3884 4647}
4648
5c493d36 4649__extension__ extern __inline int8x8_t
4650__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4651vqrshrn_n_s16 (int16x8_t __a, const int __b)
4652{
25a124b3 4653 return (int8x8_t)__builtin_neon_vqrshrns_nv8hi (__a, __b);
d98a3884 4654}
4655
5c493d36 4656__extension__ extern __inline int16x4_t
4657__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4658vqrshrn_n_s32 (int32x4_t __a, const int __b)
4659{
25a124b3 4660 return (int16x4_t)__builtin_neon_vqrshrns_nv4si (__a, __b);
d98a3884 4661}
4662
5c493d36 4663__extension__ extern __inline int32x2_t
4664__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4665vqrshrn_n_s64 (int64x2_t __a, const int __b)
4666{
25a124b3 4667 return (int32x2_t)__builtin_neon_vqrshrns_nv2di (__a, __b);
d98a3884 4668}
4669
5c493d36 4670__extension__ extern __inline uint8x8_t
4671__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4672vqrshrn_n_u16 (uint16x8_t __a, const int __b)
4673{
25a124b3 4674 return (uint8x8_t)__builtin_neon_vqrshrnu_nv8hi ((int16x8_t) __a, __b);
d98a3884 4675}
4676
5c493d36 4677__extension__ extern __inline uint16x4_t
4678__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4679vqrshrn_n_u32 (uint32x4_t __a, const int __b)
4680{
25a124b3 4681 return (uint16x4_t)__builtin_neon_vqrshrnu_nv4si ((int32x4_t) __a, __b);
d98a3884 4682}
4683
5c493d36 4684__extension__ extern __inline uint32x2_t
4685__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4686vqrshrn_n_u64 (uint64x2_t __a, const int __b)
4687{
25a124b3 4688 return (uint32x2_t)__builtin_neon_vqrshrnu_nv2di ((int64x2_t) __a, __b);
d98a3884 4689}
4690
5c493d36 4691__extension__ extern __inline uint8x8_t
4692__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4693vqshrun_n_s16 (int16x8_t __a, const int __b)
4694{
25a124b3 4695 return (uint8x8_t)__builtin_neon_vqshrun_nv8hi (__a, __b);
d98a3884 4696}
4697
5c493d36 4698__extension__ extern __inline uint16x4_t
4699__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4700vqshrun_n_s32 (int32x4_t __a, const int __b)
4701{
25a124b3 4702 return (uint16x4_t)__builtin_neon_vqshrun_nv4si (__a, __b);
d98a3884 4703}
4704
5c493d36 4705__extension__ extern __inline uint32x2_t
4706__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4707vqshrun_n_s64 (int64x2_t __a, const int __b)
4708{
25a124b3 4709 return (uint32x2_t)__builtin_neon_vqshrun_nv2di (__a, __b);
d98a3884 4710}
4711
5c493d36 4712__extension__ extern __inline uint8x8_t
4713__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4714vqrshrun_n_s16 (int16x8_t __a, const int __b)
4715{
25a124b3 4716 return (uint8x8_t)__builtin_neon_vqrshrun_nv8hi (__a, __b);
d98a3884 4717}
4718
5c493d36 4719__extension__ extern __inline uint16x4_t
4720__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4721vqrshrun_n_s32 (int32x4_t __a, const int __b)
4722{
25a124b3 4723 return (uint16x4_t)__builtin_neon_vqrshrun_nv4si (__a, __b);
d98a3884 4724}
4725
5c493d36 4726__extension__ extern __inline uint32x2_t
4727__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4728vqrshrun_n_s64 (int64x2_t __a, const int __b)
4729{
25a124b3 4730 return (uint32x2_t)__builtin_neon_vqrshrun_nv2di (__a, __b);
d98a3884 4731}
4732
5c493d36 4733__extension__ extern __inline int8x8_t
4734__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4735vshl_n_s8 (int8x8_t __a, const int __b)
4736{
25a124b3 4737 return (int8x8_t)__builtin_neon_vshl_nv8qi (__a, __b);
d98a3884 4738}
4739
5c493d36 4740__extension__ extern __inline int16x4_t
4741__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4742vshl_n_s16 (int16x4_t __a, const int __b)
4743{
25a124b3 4744 return (int16x4_t)__builtin_neon_vshl_nv4hi (__a, __b);
d98a3884 4745}
4746
5c493d36 4747__extension__ extern __inline int32x2_t
4748__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4749vshl_n_s32 (int32x2_t __a, const int __b)
4750{
25a124b3 4751 return (int32x2_t)__builtin_neon_vshl_nv2si (__a, __b);
d98a3884 4752}
4753
5c493d36 4754__extension__ extern __inline int64x1_t
4755__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4756vshl_n_s64 (int64x1_t __a, const int __b)
4757{
25a124b3 4758 return (int64x1_t)__builtin_neon_vshl_ndi (__a, __b);
d98a3884 4759}
4760
5c493d36 4761__extension__ extern __inline uint8x8_t
4762__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4763vshl_n_u8 (uint8x8_t __a, const int __b)
4764{
25a124b3 4765 return (uint8x8_t)__builtin_neon_vshl_nv8qi ((int8x8_t) __a, __b);
d98a3884 4766}
4767
5c493d36 4768__extension__ extern __inline uint16x4_t
4769__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4770vshl_n_u16 (uint16x4_t __a, const int __b)
4771{
25a124b3 4772 return (uint16x4_t)__builtin_neon_vshl_nv4hi ((int16x4_t) __a, __b);
d98a3884 4773}
4774
5c493d36 4775__extension__ extern __inline uint32x2_t
4776__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4777vshl_n_u32 (uint32x2_t __a, const int __b)
4778{
25a124b3 4779 return (uint32x2_t)__builtin_neon_vshl_nv2si ((int32x2_t) __a, __b);
d98a3884 4780}
4781
5c493d36 4782__extension__ extern __inline uint64x1_t
4783__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4784vshl_n_u64 (uint64x1_t __a, const int __b)
4785{
25a124b3 4786 return (uint64x1_t)__builtin_neon_vshl_ndi ((int64x1_t) __a, __b);
d98a3884 4787}
4788
5c493d36 4789__extension__ extern __inline int8x16_t
4790__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4791vshlq_n_s8 (int8x16_t __a, const int __b)
4792{
25a124b3 4793 return (int8x16_t)__builtin_neon_vshl_nv16qi (__a, __b);
d98a3884 4794}
4795
5c493d36 4796__extension__ extern __inline int16x8_t
4797__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4798vshlq_n_s16 (int16x8_t __a, const int __b)
4799{
25a124b3 4800 return (int16x8_t)__builtin_neon_vshl_nv8hi (__a, __b);
d98a3884 4801}
4802
5c493d36 4803__extension__ extern __inline int32x4_t
4804__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4805vshlq_n_s32 (int32x4_t __a, const int __b)
4806{
25a124b3 4807 return (int32x4_t)__builtin_neon_vshl_nv4si (__a, __b);
d98a3884 4808}
4809
5c493d36 4810__extension__ extern __inline int64x2_t
4811__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4812vshlq_n_s64 (int64x2_t __a, const int __b)
4813{
25a124b3 4814 return (int64x2_t)__builtin_neon_vshl_nv2di (__a, __b);
d98a3884 4815}
4816
5c493d36 4817__extension__ extern __inline uint8x16_t
4818__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4819vshlq_n_u8 (uint8x16_t __a, const int __b)
4820{
25a124b3 4821 return (uint8x16_t)__builtin_neon_vshl_nv16qi ((int8x16_t) __a, __b);
d98a3884 4822}
4823
5c493d36 4824__extension__ extern __inline uint16x8_t
4825__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4826vshlq_n_u16 (uint16x8_t __a, const int __b)
4827{
25a124b3 4828 return (uint16x8_t)__builtin_neon_vshl_nv8hi ((int16x8_t) __a, __b);
d98a3884 4829}
4830
5c493d36 4831__extension__ extern __inline uint32x4_t
4832__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4833vshlq_n_u32 (uint32x4_t __a, const int __b)
4834{
25a124b3 4835 return (uint32x4_t)__builtin_neon_vshl_nv4si ((int32x4_t) __a, __b);
d98a3884 4836}
4837
5c493d36 4838__extension__ extern __inline uint64x2_t
4839__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4840vshlq_n_u64 (uint64x2_t __a, const int __b)
4841{
25a124b3 4842 return (uint64x2_t)__builtin_neon_vshl_nv2di ((int64x2_t) __a, __b);
d98a3884 4843}
4844
5c493d36 4845__extension__ extern __inline int8x8_t
4846__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4847vqshl_n_s8 (int8x8_t __a, const int __b)
4848{
25a124b3 4849 return (int8x8_t)__builtin_neon_vqshl_s_nv8qi (__a, __b);
d98a3884 4850}
4851
5c493d36 4852__extension__ extern __inline int16x4_t
4853__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4854vqshl_n_s16 (int16x4_t __a, const int __b)
4855{
25a124b3 4856 return (int16x4_t)__builtin_neon_vqshl_s_nv4hi (__a, __b);
d98a3884 4857}
4858
5c493d36 4859__extension__ extern __inline int32x2_t
4860__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4861vqshl_n_s32 (int32x2_t __a, const int __b)
4862{
25a124b3 4863 return (int32x2_t)__builtin_neon_vqshl_s_nv2si (__a, __b);
d98a3884 4864}
4865
5c493d36 4866__extension__ extern __inline int64x1_t
4867__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4868vqshl_n_s64 (int64x1_t __a, const int __b)
4869{
25a124b3 4870 return (int64x1_t)__builtin_neon_vqshl_s_ndi (__a, __b);
d98a3884 4871}
4872
5c493d36 4873__extension__ extern __inline uint8x8_t
4874__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4875vqshl_n_u8 (uint8x8_t __a, const int __b)
4876{
25a124b3 4877 return (uint8x8_t)__builtin_neon_vqshl_u_nv8qi ((int8x8_t) __a, __b);
d98a3884 4878}
4879
5c493d36 4880__extension__ extern __inline uint16x4_t
4881__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4882vqshl_n_u16 (uint16x4_t __a, const int __b)
4883{
25a124b3 4884 return (uint16x4_t)__builtin_neon_vqshl_u_nv4hi ((int16x4_t) __a, __b);
d98a3884 4885}
4886
5c493d36 4887__extension__ extern __inline uint32x2_t
4888__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4889vqshl_n_u32 (uint32x2_t __a, const int __b)
4890{
25a124b3 4891 return (uint32x2_t)__builtin_neon_vqshl_u_nv2si ((int32x2_t) __a, __b);
d98a3884 4892}
4893
5c493d36 4894__extension__ extern __inline uint64x1_t
4895__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4896vqshl_n_u64 (uint64x1_t __a, const int __b)
4897{
25a124b3 4898 return (uint64x1_t)__builtin_neon_vqshl_u_ndi ((int64x1_t) __a, __b);
d98a3884 4899}
4900
5c493d36 4901__extension__ extern __inline int8x16_t
4902__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4903vqshlq_n_s8 (int8x16_t __a, const int __b)
4904{
25a124b3 4905 return (int8x16_t)__builtin_neon_vqshl_s_nv16qi (__a, __b);
d98a3884 4906}
4907
5c493d36 4908__extension__ extern __inline int16x8_t
4909__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4910vqshlq_n_s16 (int16x8_t __a, const int __b)
4911{
25a124b3 4912 return (int16x8_t)__builtin_neon_vqshl_s_nv8hi (__a, __b);
d98a3884 4913}
4914
5c493d36 4915__extension__ extern __inline int32x4_t
4916__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4917vqshlq_n_s32 (int32x4_t __a, const int __b)
4918{
25a124b3 4919 return (int32x4_t)__builtin_neon_vqshl_s_nv4si (__a, __b);
d98a3884 4920}
4921
5c493d36 4922__extension__ extern __inline int64x2_t
4923__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4924vqshlq_n_s64 (int64x2_t __a, const int __b)
4925{
25a124b3 4926 return (int64x2_t)__builtin_neon_vqshl_s_nv2di (__a, __b);
d98a3884 4927}
4928
5c493d36 4929__extension__ extern __inline uint8x16_t
4930__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4931vqshlq_n_u8 (uint8x16_t __a, const int __b)
4932{
25a124b3 4933 return (uint8x16_t)__builtin_neon_vqshl_u_nv16qi ((int8x16_t) __a, __b);
d98a3884 4934}
4935
5c493d36 4936__extension__ extern __inline uint16x8_t
4937__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4938vqshlq_n_u16 (uint16x8_t __a, const int __b)
4939{
25a124b3 4940 return (uint16x8_t)__builtin_neon_vqshl_u_nv8hi ((int16x8_t) __a, __b);
d98a3884 4941}
4942
5c493d36 4943__extension__ extern __inline uint32x4_t
4944__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4945vqshlq_n_u32 (uint32x4_t __a, const int __b)
4946{
25a124b3 4947 return (uint32x4_t)__builtin_neon_vqshl_u_nv4si ((int32x4_t) __a, __b);
d98a3884 4948}
4949
5c493d36 4950__extension__ extern __inline uint64x2_t
4951__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4952vqshlq_n_u64 (uint64x2_t __a, const int __b)
4953{
25a124b3 4954 return (uint64x2_t)__builtin_neon_vqshl_u_nv2di ((int64x2_t) __a, __b);
d98a3884 4955}
4956
5c493d36 4957__extension__ extern __inline uint8x8_t
4958__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4959vqshlu_n_s8 (int8x8_t __a, const int __b)
4960{
25a124b3 4961 return (uint8x8_t)__builtin_neon_vqshlu_nv8qi (__a, __b);
d98a3884 4962}
4963
5c493d36 4964__extension__ extern __inline uint16x4_t
4965__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4966vqshlu_n_s16 (int16x4_t __a, const int __b)
4967{
25a124b3 4968 return (uint16x4_t)__builtin_neon_vqshlu_nv4hi (__a, __b);
d98a3884 4969}
4970
5c493d36 4971__extension__ extern __inline uint32x2_t
4972__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4973vqshlu_n_s32 (int32x2_t __a, const int __b)
4974{
25a124b3 4975 return (uint32x2_t)__builtin_neon_vqshlu_nv2si (__a, __b);
d98a3884 4976}
4977
5c493d36 4978__extension__ extern __inline uint64x1_t
4979__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4980vqshlu_n_s64 (int64x1_t __a, const int __b)
4981{
25a124b3 4982 return (uint64x1_t)__builtin_neon_vqshlu_ndi (__a, __b);
d98a3884 4983}
4984
5c493d36 4985__extension__ extern __inline uint8x16_t
4986__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4987vqshluq_n_s8 (int8x16_t __a, const int __b)
4988{
25a124b3 4989 return (uint8x16_t)__builtin_neon_vqshlu_nv16qi (__a, __b);
d98a3884 4990}
4991
5c493d36 4992__extension__ extern __inline uint16x8_t
4993__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 4994vqshluq_n_s16 (int16x8_t __a, const int __b)
4995{
25a124b3 4996 return (uint16x8_t)__builtin_neon_vqshlu_nv8hi (__a, __b);
d98a3884 4997}
4998
5c493d36 4999__extension__ extern __inline uint32x4_t
5000__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5001vqshluq_n_s32 (int32x4_t __a, const int __b)
5002{
25a124b3 5003 return (uint32x4_t)__builtin_neon_vqshlu_nv4si (__a, __b);
d98a3884 5004}
5005
5c493d36 5006__extension__ extern __inline uint64x2_t
5007__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5008vqshluq_n_s64 (int64x2_t __a, const int __b)
5009{
25a124b3 5010 return (uint64x2_t)__builtin_neon_vqshlu_nv2di (__a, __b);
d98a3884 5011}
5012
5c493d36 5013__extension__ extern __inline int16x8_t
5014__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5015vshll_n_s8 (int8x8_t __a, const int __b)
5016{
25a124b3 5017 return (int16x8_t)__builtin_neon_vshlls_nv8qi (__a, __b);
d98a3884 5018}
5019
5c493d36 5020__extension__ extern __inline int32x4_t
5021__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5022vshll_n_s16 (int16x4_t __a, const int __b)
5023{
25a124b3 5024 return (int32x4_t)__builtin_neon_vshlls_nv4hi (__a, __b);
d98a3884 5025}
5026
5c493d36 5027__extension__ extern __inline int64x2_t
5028__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5029vshll_n_s32 (int32x2_t __a, const int __b)
5030{
25a124b3 5031 return (int64x2_t)__builtin_neon_vshlls_nv2si (__a, __b);
d98a3884 5032}
5033
5c493d36 5034__extension__ extern __inline uint16x8_t
5035__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5036vshll_n_u8 (uint8x8_t __a, const int __b)
5037{
25a124b3 5038 return (uint16x8_t)__builtin_neon_vshllu_nv8qi ((int8x8_t) __a, __b);
d98a3884 5039}
5040
5c493d36 5041__extension__ extern __inline uint32x4_t
5042__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5043vshll_n_u16 (uint16x4_t __a, const int __b)
5044{
25a124b3 5045 return (uint32x4_t)__builtin_neon_vshllu_nv4hi ((int16x4_t) __a, __b);
d98a3884 5046}
5047
5c493d36 5048__extension__ extern __inline uint64x2_t
5049__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5050vshll_n_u32 (uint32x2_t __a, const int __b)
5051{
25a124b3 5052 return (uint64x2_t)__builtin_neon_vshllu_nv2si ((int32x2_t) __a, __b);
d98a3884 5053}
5054
5c493d36 5055__extension__ extern __inline int8x8_t
5056__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5057vsra_n_s8 (int8x8_t __a, int8x8_t __b, const int __c)
5058{
25a124b3 5059 return (int8x8_t)__builtin_neon_vsras_nv8qi (__a, __b, __c);
d98a3884 5060}
5061
5c493d36 5062__extension__ extern __inline int16x4_t
5063__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5064vsra_n_s16 (int16x4_t __a, int16x4_t __b, const int __c)
5065{
25a124b3 5066 return (int16x4_t)__builtin_neon_vsras_nv4hi (__a, __b, __c);
d98a3884 5067}
5068
5c493d36 5069__extension__ extern __inline int32x2_t
5070__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5071vsra_n_s32 (int32x2_t __a, int32x2_t __b, const int __c)
5072{
25a124b3 5073 return (int32x2_t)__builtin_neon_vsras_nv2si (__a, __b, __c);
d98a3884 5074}
5075
5c493d36 5076__extension__ extern __inline int64x1_t
5077__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5078vsra_n_s64 (int64x1_t __a, int64x1_t __b, const int __c)
5079{
25a124b3 5080 return (int64x1_t)__builtin_neon_vsras_ndi (__a, __b, __c);
d98a3884 5081}
5082
5c493d36 5083__extension__ extern __inline uint8x8_t
5084__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5085vsra_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c)
5086{
25a124b3 5087 return (uint8x8_t)__builtin_neon_vsrau_nv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
d98a3884 5088}
5089
5c493d36 5090__extension__ extern __inline uint16x4_t
5091__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5092vsra_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
5093{
25a124b3 5094 return (uint16x4_t)__builtin_neon_vsrau_nv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
d98a3884 5095}
5096
5c493d36 5097__extension__ extern __inline uint32x2_t
5098__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5099vsra_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
5100{
25a124b3 5101 return (uint32x2_t)__builtin_neon_vsrau_nv2si ((int32x2_t) __a, (int32x2_t) __b, __c);
d98a3884 5102}
5103
5c493d36 5104__extension__ extern __inline uint64x1_t
5105__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5106vsra_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c)
5107{
25a124b3 5108 return (uint64x1_t)__builtin_neon_vsrau_ndi ((int64x1_t) __a, (int64x1_t) __b, __c);
d98a3884 5109}
5110
5c493d36 5111__extension__ extern __inline int8x16_t
5112__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5113vsraq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c)
5114{
25a124b3 5115 return (int8x16_t)__builtin_neon_vsras_nv16qi (__a, __b, __c);
d98a3884 5116}
5117
5c493d36 5118__extension__ extern __inline int16x8_t
5119__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5120vsraq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c)
5121{
25a124b3 5122 return (int16x8_t)__builtin_neon_vsras_nv8hi (__a, __b, __c);
d98a3884 5123}
5124
5c493d36 5125__extension__ extern __inline int32x4_t
5126__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5127vsraq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c)
5128{
25a124b3 5129 return (int32x4_t)__builtin_neon_vsras_nv4si (__a, __b, __c);
d98a3884 5130}
5131
5c493d36 5132__extension__ extern __inline int64x2_t
5133__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5134vsraq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c)
5135{
25a124b3 5136 return (int64x2_t)__builtin_neon_vsras_nv2di (__a, __b, __c);
d98a3884 5137}
5138
5c493d36 5139__extension__ extern __inline uint8x16_t
5140__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5141vsraq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c)
5142{
25a124b3 5143 return (uint8x16_t)__builtin_neon_vsrau_nv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
d98a3884 5144}
5145
5c493d36 5146__extension__ extern __inline uint16x8_t
5147__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5148vsraq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c)
5149{
25a124b3 5150 return (uint16x8_t)__builtin_neon_vsrau_nv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
d98a3884 5151}
5152
5c493d36 5153__extension__ extern __inline uint32x4_t
5154__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5155vsraq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c)
5156{
25a124b3 5157 return (uint32x4_t)__builtin_neon_vsrau_nv4si ((int32x4_t) __a, (int32x4_t) __b, __c);
d98a3884 5158}
5159
5c493d36 5160__extension__ extern __inline uint64x2_t
5161__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5162vsraq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c)
5163{
25a124b3 5164 return (uint64x2_t)__builtin_neon_vsrau_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
d98a3884 5165}
5166
5c493d36 5167__extension__ extern __inline int8x8_t
5168__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5169vrsra_n_s8 (int8x8_t __a, int8x8_t __b, const int __c)
5170{
25a124b3 5171 return (int8x8_t)__builtin_neon_vrsras_nv8qi (__a, __b, __c);
d98a3884 5172}
5173
5c493d36 5174__extension__ extern __inline int16x4_t
5175__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5176vrsra_n_s16 (int16x4_t __a, int16x4_t __b, const int __c)
5177{
25a124b3 5178 return (int16x4_t)__builtin_neon_vrsras_nv4hi (__a, __b, __c);
d98a3884 5179}
5180
5c493d36 5181__extension__ extern __inline int32x2_t
5182__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5183vrsra_n_s32 (int32x2_t __a, int32x2_t __b, const int __c)
5184{
25a124b3 5185 return (int32x2_t)__builtin_neon_vrsras_nv2si (__a, __b, __c);
d98a3884 5186}
5187
5c493d36 5188__extension__ extern __inline int64x1_t
5189__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5190vrsra_n_s64 (int64x1_t __a, int64x1_t __b, const int __c)
5191{
25a124b3 5192 return (int64x1_t)__builtin_neon_vrsras_ndi (__a, __b, __c);
d98a3884 5193}
5194
5c493d36 5195__extension__ extern __inline uint8x8_t
5196__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5197vrsra_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c)
5198{
25a124b3 5199 return (uint8x8_t)__builtin_neon_vrsrau_nv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
d98a3884 5200}
5201
5c493d36 5202__extension__ extern __inline uint16x4_t
5203__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5204vrsra_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
5205{
25a124b3 5206 return (uint16x4_t)__builtin_neon_vrsrau_nv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
d98a3884 5207}
5208
5c493d36 5209__extension__ extern __inline uint32x2_t
5210__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5211vrsra_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
5212{
25a124b3 5213 return (uint32x2_t)__builtin_neon_vrsrau_nv2si ((int32x2_t) __a, (int32x2_t) __b, __c);
d98a3884 5214}
5215
5c493d36 5216__extension__ extern __inline uint64x1_t
5217__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5218vrsra_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c)
5219{
25a124b3 5220 return (uint64x1_t)__builtin_neon_vrsrau_ndi ((int64x1_t) __a, (int64x1_t) __b, __c);
d98a3884 5221}
5222
5c493d36 5223__extension__ extern __inline int8x16_t
5224__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5225vrsraq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c)
5226{
25a124b3 5227 return (int8x16_t)__builtin_neon_vrsras_nv16qi (__a, __b, __c);
d98a3884 5228}
5229
5c493d36 5230__extension__ extern __inline int16x8_t
5231__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5232vrsraq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c)
5233{
25a124b3 5234 return (int16x8_t)__builtin_neon_vrsras_nv8hi (__a, __b, __c);
d98a3884 5235}
5236
5c493d36 5237__extension__ extern __inline int32x4_t
5238__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5239vrsraq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c)
5240{
25a124b3 5241 return (int32x4_t)__builtin_neon_vrsras_nv4si (__a, __b, __c);
d98a3884 5242}
5243
5c493d36 5244__extension__ extern __inline int64x2_t
5245__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5246vrsraq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c)
5247{
25a124b3 5248 return (int64x2_t)__builtin_neon_vrsras_nv2di (__a, __b, __c);
d98a3884 5249}
5250
5c493d36 5251__extension__ extern __inline uint8x16_t
5252__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5253vrsraq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c)
5254{
25a124b3 5255 return (uint8x16_t)__builtin_neon_vrsrau_nv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
d98a3884 5256}
5257
5c493d36 5258__extension__ extern __inline uint16x8_t
5259__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5260vrsraq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c)
5261{
25a124b3 5262 return (uint16x8_t)__builtin_neon_vrsrau_nv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
d98a3884 5263}
5264
5c493d36 5265__extension__ extern __inline uint32x4_t
5266__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5267vrsraq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c)
5268{
25a124b3 5269 return (uint32x4_t)__builtin_neon_vrsrau_nv4si ((int32x4_t) __a, (int32x4_t) __b, __c);
d98a3884 5270}
5271
5c493d36 5272__extension__ extern __inline uint64x2_t
5273__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5274vrsraq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c)
5275{
25a124b3 5276 return (uint64x2_t)__builtin_neon_vrsrau_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
d98a3884 5277}
5278
dcbc6813 5279#pragma GCC push_options
5280#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 5281__extension__ extern __inline poly64x1_t
5282__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 5283vsri_n_p64 (poly64x1_t __a, poly64x1_t __b, const int __c)
5284{
5285 return (poly64x1_t)__builtin_neon_vsri_ndi (__a, __b, __c);
5286}
5287
dcbc6813 5288#pragma GCC pop_options
5c493d36 5289__extension__ extern __inline int8x8_t
5290__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5291vsri_n_s8 (int8x8_t __a, int8x8_t __b, const int __c)
5292{
5293 return (int8x8_t)__builtin_neon_vsri_nv8qi (__a, __b, __c);
5294}
5295
5c493d36 5296__extension__ extern __inline int16x4_t
5297__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5298vsri_n_s16 (int16x4_t __a, int16x4_t __b, const int __c)
5299{
5300 return (int16x4_t)__builtin_neon_vsri_nv4hi (__a, __b, __c);
5301}
5302
5c493d36 5303__extension__ extern __inline int32x2_t
5304__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5305vsri_n_s32 (int32x2_t __a, int32x2_t __b, const int __c)
5306{
5307 return (int32x2_t)__builtin_neon_vsri_nv2si (__a, __b, __c);
5308}
5309
5c493d36 5310__extension__ extern __inline int64x1_t
5311__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5312vsri_n_s64 (int64x1_t __a, int64x1_t __b, const int __c)
5313{
5314 return (int64x1_t)__builtin_neon_vsri_ndi (__a, __b, __c);
5315}
5316
5c493d36 5317__extension__ extern __inline uint8x8_t
5318__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5319vsri_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c)
5320{
5321 return (uint8x8_t)__builtin_neon_vsri_nv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
5322}
5323
5c493d36 5324__extension__ extern __inline uint16x4_t
5325__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5326vsri_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
5327{
5328 return (uint16x4_t)__builtin_neon_vsri_nv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
5329}
5330
5c493d36 5331__extension__ extern __inline uint32x2_t
5332__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5333vsri_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
5334{
5335 return (uint32x2_t)__builtin_neon_vsri_nv2si ((int32x2_t) __a, (int32x2_t) __b, __c);
5336}
5337
5c493d36 5338__extension__ extern __inline uint64x1_t
5339__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5340vsri_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c)
5341{
5342 return (uint64x1_t)__builtin_neon_vsri_ndi ((int64x1_t) __a, (int64x1_t) __b, __c);
5343}
5344
5c493d36 5345__extension__ extern __inline poly8x8_t
5346__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5347vsri_n_p8 (poly8x8_t __a, poly8x8_t __b, const int __c)
5348{
5349 return (poly8x8_t)__builtin_neon_vsri_nv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
5350}
5351
5c493d36 5352__extension__ extern __inline poly16x4_t
5353__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5354vsri_n_p16 (poly16x4_t __a, poly16x4_t __b, const int __c)
5355{
5356 return (poly16x4_t)__builtin_neon_vsri_nv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
5357}
5358
dcbc6813 5359#pragma GCC push_options
5360#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 5361__extension__ extern __inline poly64x2_t
5362__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 5363vsriq_n_p64 (poly64x2_t __a, poly64x2_t __b, const int __c)
5364{
5365 return (poly64x2_t)__builtin_neon_vsri_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
5366}
5367
dcbc6813 5368#pragma GCC pop_options
5c493d36 5369__extension__ extern __inline int8x16_t
5370__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5371vsriq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c)
5372{
5373 return (int8x16_t)__builtin_neon_vsri_nv16qi (__a, __b, __c);
5374}
5375
5c493d36 5376__extension__ extern __inline int16x8_t
5377__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5378vsriq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c)
5379{
5380 return (int16x8_t)__builtin_neon_vsri_nv8hi (__a, __b, __c);
5381}
5382
5c493d36 5383__extension__ extern __inline int32x4_t
5384__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5385vsriq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c)
5386{
5387 return (int32x4_t)__builtin_neon_vsri_nv4si (__a, __b, __c);
5388}
5389
5c493d36 5390__extension__ extern __inline int64x2_t
5391__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5392vsriq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c)
5393{
5394 return (int64x2_t)__builtin_neon_vsri_nv2di (__a, __b, __c);
5395}
5396
5c493d36 5397__extension__ extern __inline uint8x16_t
5398__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5399vsriq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c)
5400{
5401 return (uint8x16_t)__builtin_neon_vsri_nv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
5402}
5403
5c493d36 5404__extension__ extern __inline uint16x8_t
5405__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5406vsriq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c)
5407{
5408 return (uint16x8_t)__builtin_neon_vsri_nv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
5409}
5410
5c493d36 5411__extension__ extern __inline uint32x4_t
5412__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5413vsriq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c)
5414{
5415 return (uint32x4_t)__builtin_neon_vsri_nv4si ((int32x4_t) __a, (int32x4_t) __b, __c);
5416}
5417
5c493d36 5418__extension__ extern __inline uint64x2_t
5419__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5420vsriq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c)
5421{
5422 return (uint64x2_t)__builtin_neon_vsri_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
5423}
5424
5c493d36 5425__extension__ extern __inline poly8x16_t
5426__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5427vsriq_n_p8 (poly8x16_t __a, poly8x16_t __b, const int __c)
5428{
5429 return (poly8x16_t)__builtin_neon_vsri_nv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
5430}
5431
5c493d36 5432__extension__ extern __inline poly16x8_t
5433__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5434vsriq_n_p16 (poly16x8_t __a, poly16x8_t __b, const int __c)
5435{
5436 return (poly16x8_t)__builtin_neon_vsri_nv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
5437}
5438
dcbc6813 5439#pragma GCC push_options
5440#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 5441__extension__ extern __inline poly64x1_t
5442__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 5443vsli_n_p64 (poly64x1_t __a, poly64x1_t __b, const int __c)
5444{
5445 return (poly64x1_t)__builtin_neon_vsli_ndi (__a, __b, __c);
5446}
5447
dcbc6813 5448#pragma GCC pop_options
5c493d36 5449__extension__ extern __inline int8x8_t
5450__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5451vsli_n_s8 (int8x8_t __a, int8x8_t __b, const int __c)
5452{
5453 return (int8x8_t)__builtin_neon_vsli_nv8qi (__a, __b, __c);
5454}
5455
5c493d36 5456__extension__ extern __inline int16x4_t
5457__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5458vsli_n_s16 (int16x4_t __a, int16x4_t __b, const int __c)
5459{
5460 return (int16x4_t)__builtin_neon_vsli_nv4hi (__a, __b, __c);
5461}
5462
5c493d36 5463__extension__ extern __inline int32x2_t
5464__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5465vsli_n_s32 (int32x2_t __a, int32x2_t __b, const int __c)
5466{
5467 return (int32x2_t)__builtin_neon_vsli_nv2si (__a, __b, __c);
5468}
5469
5c493d36 5470__extension__ extern __inline int64x1_t
5471__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5472vsli_n_s64 (int64x1_t __a, int64x1_t __b, const int __c)
5473{
5474 return (int64x1_t)__builtin_neon_vsli_ndi (__a, __b, __c);
5475}
5476
5c493d36 5477__extension__ extern __inline uint8x8_t
5478__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5479vsli_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c)
5480{
5481 return (uint8x8_t)__builtin_neon_vsli_nv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
5482}
5483
5c493d36 5484__extension__ extern __inline uint16x4_t
5485__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5486vsli_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
5487{
5488 return (uint16x4_t)__builtin_neon_vsli_nv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
5489}
5490
5c493d36 5491__extension__ extern __inline uint32x2_t
5492__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5493vsli_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
5494{
5495 return (uint32x2_t)__builtin_neon_vsli_nv2si ((int32x2_t) __a, (int32x2_t) __b, __c);
5496}
5497
5c493d36 5498__extension__ extern __inline uint64x1_t
5499__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5500vsli_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c)
5501{
5502 return (uint64x1_t)__builtin_neon_vsli_ndi ((int64x1_t) __a, (int64x1_t) __b, __c);
5503}
5504
5c493d36 5505__extension__ extern __inline poly8x8_t
5506__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5507vsli_n_p8 (poly8x8_t __a, poly8x8_t __b, const int __c)
5508{
5509 return (poly8x8_t)__builtin_neon_vsli_nv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
5510}
5511
5c493d36 5512__extension__ extern __inline poly16x4_t
5513__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5514vsli_n_p16 (poly16x4_t __a, poly16x4_t __b, const int __c)
5515{
5516 return (poly16x4_t)__builtin_neon_vsli_nv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
5517}
5518
dcbc6813 5519#pragma GCC push_options
5520#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 5521__extension__ extern __inline poly64x2_t
5522__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 5523vsliq_n_p64 (poly64x2_t __a, poly64x2_t __b, const int __c)
5524{
5525 return (poly64x2_t)__builtin_neon_vsli_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
5526}
5527
dcbc6813 5528#pragma GCC pop_options
5c493d36 5529__extension__ extern __inline int8x16_t
5530__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5531vsliq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c)
5532{
5533 return (int8x16_t)__builtin_neon_vsli_nv16qi (__a, __b, __c);
5534}
5535
5c493d36 5536__extension__ extern __inline int16x8_t
5537__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5538vsliq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c)
5539{
5540 return (int16x8_t)__builtin_neon_vsli_nv8hi (__a, __b, __c);
5541}
5542
5c493d36 5543__extension__ extern __inline int32x4_t
5544__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5545vsliq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c)
5546{
5547 return (int32x4_t)__builtin_neon_vsli_nv4si (__a, __b, __c);
5548}
5549
5c493d36 5550__extension__ extern __inline int64x2_t
5551__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5552vsliq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c)
5553{
5554 return (int64x2_t)__builtin_neon_vsli_nv2di (__a, __b, __c);
5555}
5556
5c493d36 5557__extension__ extern __inline uint8x16_t
5558__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5559vsliq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c)
5560{
5561 return (uint8x16_t)__builtin_neon_vsli_nv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
5562}
5563
5c493d36 5564__extension__ extern __inline uint16x8_t
5565__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5566vsliq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c)
5567{
5568 return (uint16x8_t)__builtin_neon_vsli_nv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
5569}
5570
5c493d36 5571__extension__ extern __inline uint32x4_t
5572__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5573vsliq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c)
5574{
5575 return (uint32x4_t)__builtin_neon_vsli_nv4si ((int32x4_t) __a, (int32x4_t) __b, __c);
5576}
5577
5c493d36 5578__extension__ extern __inline uint64x2_t
5579__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5580vsliq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c)
5581{
5582 return (uint64x2_t)__builtin_neon_vsli_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
5583}
5584
5c493d36 5585__extension__ extern __inline poly8x16_t
5586__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5587vsliq_n_p8 (poly8x16_t __a, poly8x16_t __b, const int __c)
5588{
5589 return (poly8x16_t)__builtin_neon_vsli_nv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
5590}
5591
5c493d36 5592__extension__ extern __inline poly16x8_t
5593__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5594vsliq_n_p16 (poly16x8_t __a, poly16x8_t __b, const int __c)
5595{
5596 return (poly16x8_t)__builtin_neon_vsli_nv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
5597}
5598
5c493d36 5599__extension__ extern __inline int8x8_t
5600__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5601vabs_s8 (int8x8_t __a)
5602{
25a124b3 5603 return (int8x8_t)__builtin_neon_vabsv8qi (__a);
d98a3884 5604}
5605
5c493d36 5606__extension__ extern __inline int16x4_t
5607__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5608vabs_s16 (int16x4_t __a)
5609{
25a124b3 5610 return (int16x4_t)__builtin_neon_vabsv4hi (__a);
d98a3884 5611}
5612
5c493d36 5613__extension__ extern __inline int32x2_t
5614__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5615vabs_s32 (int32x2_t __a)
5616{
25a124b3 5617 return (int32x2_t)__builtin_neon_vabsv2si (__a);
d98a3884 5618}
5619
5c493d36 5620__extension__ extern __inline float32x2_t
5621__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5622vabs_f32 (float32x2_t __a)
5623{
25a124b3 5624 return (float32x2_t)__builtin_neon_vabsv2sf (__a);
d98a3884 5625}
5626
5c493d36 5627__extension__ extern __inline int8x16_t
5628__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5629vabsq_s8 (int8x16_t __a)
5630{
25a124b3 5631 return (int8x16_t)__builtin_neon_vabsv16qi (__a);
d98a3884 5632}
5633
5c493d36 5634__extension__ extern __inline int16x8_t
5635__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5636vabsq_s16 (int16x8_t __a)
5637{
25a124b3 5638 return (int16x8_t)__builtin_neon_vabsv8hi (__a);
d98a3884 5639}
5640
5c493d36 5641__extension__ extern __inline int32x4_t
5642__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5643vabsq_s32 (int32x4_t __a)
5644{
25a124b3 5645 return (int32x4_t)__builtin_neon_vabsv4si (__a);
d98a3884 5646}
5647
5c493d36 5648__extension__ extern __inline float32x4_t
5649__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5650vabsq_f32 (float32x4_t __a)
5651{
25a124b3 5652 return (float32x4_t)__builtin_neon_vabsv4sf (__a);
d98a3884 5653}
5654
5c493d36 5655__extension__ extern __inline int8x8_t
5656__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5657vqabs_s8 (int8x8_t __a)
5658{
25a124b3 5659 return (int8x8_t)__builtin_neon_vqabsv8qi (__a);
d98a3884 5660}
5661
5c493d36 5662__extension__ extern __inline int16x4_t
5663__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5664vqabs_s16 (int16x4_t __a)
5665{
25a124b3 5666 return (int16x4_t)__builtin_neon_vqabsv4hi (__a);
d98a3884 5667}
5668
5c493d36 5669__extension__ extern __inline int32x2_t
5670__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5671vqabs_s32 (int32x2_t __a)
5672{
25a124b3 5673 return (int32x2_t)__builtin_neon_vqabsv2si (__a);
d98a3884 5674}
5675
5c493d36 5676__extension__ extern __inline int8x16_t
5677__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5678vqabsq_s8 (int8x16_t __a)
5679{
25a124b3 5680 return (int8x16_t)__builtin_neon_vqabsv16qi (__a);
d98a3884 5681}
5682
5c493d36 5683__extension__ extern __inline int16x8_t
5684__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5685vqabsq_s16 (int16x8_t __a)
5686{
25a124b3 5687 return (int16x8_t)__builtin_neon_vqabsv8hi (__a);
d98a3884 5688}
5689
5c493d36 5690__extension__ extern __inline int32x4_t
5691__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5692vqabsq_s32 (int32x4_t __a)
5693{
25a124b3 5694 return (int32x4_t)__builtin_neon_vqabsv4si (__a);
d98a3884 5695}
5696
5c493d36 5697__extension__ extern __inline int8x8_t
5698__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5699vneg_s8 (int8x8_t __a)
5700{
25a124b3 5701 return (int8x8_t)__builtin_neon_vnegv8qi (__a);
d98a3884 5702}
5703
5c493d36 5704__extension__ extern __inline int16x4_t
5705__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5706vneg_s16 (int16x4_t __a)
5707{
25a124b3 5708 return (int16x4_t)__builtin_neon_vnegv4hi (__a);
d98a3884 5709}
5710
5c493d36 5711__extension__ extern __inline int32x2_t
5712__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5713vneg_s32 (int32x2_t __a)
5714{
25a124b3 5715 return (int32x2_t)__builtin_neon_vnegv2si (__a);
d98a3884 5716}
5717
5c493d36 5718__extension__ extern __inline float32x2_t
5719__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5720vneg_f32 (float32x2_t __a)
5721{
25a124b3 5722 return (float32x2_t)__builtin_neon_vnegv2sf (__a);
d98a3884 5723}
5724
5c493d36 5725__extension__ extern __inline int8x16_t
5726__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5727vnegq_s8 (int8x16_t __a)
5728{
25a124b3 5729 return (int8x16_t)__builtin_neon_vnegv16qi (__a);
d98a3884 5730}
5731
5c493d36 5732__extension__ extern __inline int16x8_t
5733__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5734vnegq_s16 (int16x8_t __a)
5735{
25a124b3 5736 return (int16x8_t)__builtin_neon_vnegv8hi (__a);
d98a3884 5737}
5738
5c493d36 5739__extension__ extern __inline int32x4_t
5740__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5741vnegq_s32 (int32x4_t __a)
5742{
25a124b3 5743 return (int32x4_t)__builtin_neon_vnegv4si (__a);
d98a3884 5744}
5745
5c493d36 5746__extension__ extern __inline float32x4_t
5747__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5748vnegq_f32 (float32x4_t __a)
5749{
25a124b3 5750 return (float32x4_t)__builtin_neon_vnegv4sf (__a);
d98a3884 5751}
5752
5c493d36 5753__extension__ extern __inline int8x8_t
5754__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5755vqneg_s8 (int8x8_t __a)
5756{
25a124b3 5757 return (int8x8_t)__builtin_neon_vqnegv8qi (__a);
d98a3884 5758}
5759
5c493d36 5760__extension__ extern __inline int16x4_t
5761__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5762vqneg_s16 (int16x4_t __a)
5763{
25a124b3 5764 return (int16x4_t)__builtin_neon_vqnegv4hi (__a);
d98a3884 5765}
5766
5c493d36 5767__extension__ extern __inline int32x2_t
5768__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5769vqneg_s32 (int32x2_t __a)
5770{
25a124b3 5771 return (int32x2_t)__builtin_neon_vqnegv2si (__a);
d98a3884 5772}
5773
5c493d36 5774__extension__ extern __inline int8x16_t
5775__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5776vqnegq_s8 (int8x16_t __a)
5777{
25a124b3 5778 return (int8x16_t)__builtin_neon_vqnegv16qi (__a);
d98a3884 5779}
5780
5c493d36 5781__extension__ extern __inline int16x8_t
5782__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5783vqnegq_s16 (int16x8_t __a)
5784{
25a124b3 5785 return (int16x8_t)__builtin_neon_vqnegv8hi (__a);
d98a3884 5786}
5787
5c493d36 5788__extension__ extern __inline int32x4_t
5789__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5790vqnegq_s32 (int32x4_t __a)
5791{
25a124b3 5792 return (int32x4_t)__builtin_neon_vqnegv4si (__a);
d98a3884 5793}
5794
5c493d36 5795__extension__ extern __inline int8x8_t
5796__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5797vmvn_s8 (int8x8_t __a)
5798{
25a124b3 5799 return (int8x8_t)__builtin_neon_vmvnv8qi (__a);
d98a3884 5800}
5801
5c493d36 5802__extension__ extern __inline int16x4_t
5803__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5804vmvn_s16 (int16x4_t __a)
5805{
25a124b3 5806 return (int16x4_t)__builtin_neon_vmvnv4hi (__a);
d98a3884 5807}
5808
5c493d36 5809__extension__ extern __inline int32x2_t
5810__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5811vmvn_s32 (int32x2_t __a)
5812{
25a124b3 5813 return (int32x2_t)__builtin_neon_vmvnv2si (__a);
d98a3884 5814}
5815
5c493d36 5816__extension__ extern __inline uint8x8_t
5817__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5818vmvn_u8 (uint8x8_t __a)
5819{
25a124b3 5820 return (uint8x8_t)__builtin_neon_vmvnv8qi ((int8x8_t) __a);
d98a3884 5821}
5822
5c493d36 5823__extension__ extern __inline uint16x4_t
5824__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5825vmvn_u16 (uint16x4_t __a)
5826{
25a124b3 5827 return (uint16x4_t)__builtin_neon_vmvnv4hi ((int16x4_t) __a);
d98a3884 5828}
5829
5c493d36 5830__extension__ extern __inline uint32x2_t
5831__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5832vmvn_u32 (uint32x2_t __a)
5833{
25a124b3 5834 return (uint32x2_t)__builtin_neon_vmvnv2si ((int32x2_t) __a);
d98a3884 5835}
5836
5c493d36 5837__extension__ extern __inline poly8x8_t
5838__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5839vmvn_p8 (poly8x8_t __a)
5840{
25a124b3 5841 return (poly8x8_t)__builtin_neon_vmvnv8qi ((int8x8_t) __a);
d98a3884 5842}
5843
5c493d36 5844__extension__ extern __inline int8x16_t
5845__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5846vmvnq_s8 (int8x16_t __a)
5847{
25a124b3 5848 return (int8x16_t)__builtin_neon_vmvnv16qi (__a);
d98a3884 5849}
5850
5c493d36 5851__extension__ extern __inline int16x8_t
5852__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5853vmvnq_s16 (int16x8_t __a)
5854{
25a124b3 5855 return (int16x8_t)__builtin_neon_vmvnv8hi (__a);
d98a3884 5856}
5857
5c493d36 5858__extension__ extern __inline int32x4_t
5859__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5860vmvnq_s32 (int32x4_t __a)
5861{
25a124b3 5862 return (int32x4_t)__builtin_neon_vmvnv4si (__a);
d98a3884 5863}
5864
5c493d36 5865__extension__ extern __inline uint8x16_t
5866__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5867vmvnq_u8 (uint8x16_t __a)
5868{
25a124b3 5869 return (uint8x16_t)__builtin_neon_vmvnv16qi ((int8x16_t) __a);
d98a3884 5870}
5871
5c493d36 5872__extension__ extern __inline uint16x8_t
5873__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5874vmvnq_u16 (uint16x8_t __a)
5875{
25a124b3 5876 return (uint16x8_t)__builtin_neon_vmvnv8hi ((int16x8_t) __a);
d98a3884 5877}
5878
5c493d36 5879__extension__ extern __inline uint32x4_t
5880__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5881vmvnq_u32 (uint32x4_t __a)
5882{
25a124b3 5883 return (uint32x4_t)__builtin_neon_vmvnv4si ((int32x4_t) __a);
d98a3884 5884}
5885
5c493d36 5886__extension__ extern __inline poly8x16_t
5887__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5888vmvnq_p8 (poly8x16_t __a)
5889{
25a124b3 5890 return (poly8x16_t)__builtin_neon_vmvnv16qi ((int8x16_t) __a);
d98a3884 5891}
5892
5c493d36 5893__extension__ extern __inline int8x8_t
5894__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5895vcls_s8 (int8x8_t __a)
5896{
25a124b3 5897 return (int8x8_t)__builtin_neon_vclsv8qi (__a);
d98a3884 5898}
5899
5c493d36 5900__extension__ extern __inline int16x4_t
5901__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5902vcls_s16 (int16x4_t __a)
5903{
25a124b3 5904 return (int16x4_t)__builtin_neon_vclsv4hi (__a);
d98a3884 5905}
5906
5c493d36 5907__extension__ extern __inline int32x2_t
5908__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5909vcls_s32 (int32x2_t __a)
5910{
25a124b3 5911 return (int32x2_t)__builtin_neon_vclsv2si (__a);
d98a3884 5912}
5913
5c493d36 5914__extension__ extern __inline int8x16_t
5915__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5916vclsq_s8 (int8x16_t __a)
5917{
25a124b3 5918 return (int8x16_t)__builtin_neon_vclsv16qi (__a);
d98a3884 5919}
5920
5c493d36 5921__extension__ extern __inline int16x8_t
5922__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5923vclsq_s16 (int16x8_t __a)
5924{
25a124b3 5925 return (int16x8_t)__builtin_neon_vclsv8hi (__a);
d98a3884 5926}
5927
5c493d36 5928__extension__ extern __inline int32x4_t
5929__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5930vclsq_s32 (int32x4_t __a)
5931{
25a124b3 5932 return (int32x4_t)__builtin_neon_vclsv4si (__a);
d98a3884 5933}
5934
5c493d36 5935__extension__ extern __inline int8x8_t
5936__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5937vclz_s8 (int8x8_t __a)
5938{
25a124b3 5939 return (int8x8_t)__builtin_neon_vclzv8qi (__a);
d98a3884 5940}
5941
5c493d36 5942__extension__ extern __inline int16x4_t
5943__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5944vclz_s16 (int16x4_t __a)
5945{
25a124b3 5946 return (int16x4_t)__builtin_neon_vclzv4hi (__a);
d98a3884 5947}
5948
5c493d36 5949__extension__ extern __inline int32x2_t
5950__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5951vclz_s32 (int32x2_t __a)
5952{
25a124b3 5953 return (int32x2_t)__builtin_neon_vclzv2si (__a);
d98a3884 5954}
5955
5c493d36 5956__extension__ extern __inline uint8x8_t
5957__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5958vclz_u8 (uint8x8_t __a)
5959{
25a124b3 5960 return (uint8x8_t)__builtin_neon_vclzv8qi ((int8x8_t) __a);
d98a3884 5961}
5962
5c493d36 5963__extension__ extern __inline uint16x4_t
5964__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5965vclz_u16 (uint16x4_t __a)
5966{
25a124b3 5967 return (uint16x4_t)__builtin_neon_vclzv4hi ((int16x4_t) __a);
d98a3884 5968}
5969
5c493d36 5970__extension__ extern __inline uint32x2_t
5971__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5972vclz_u32 (uint32x2_t __a)
5973{
25a124b3 5974 return (uint32x2_t)__builtin_neon_vclzv2si ((int32x2_t) __a);
d98a3884 5975}
5976
5c493d36 5977__extension__ extern __inline int8x16_t
5978__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5979vclzq_s8 (int8x16_t __a)
5980{
25a124b3 5981 return (int8x16_t)__builtin_neon_vclzv16qi (__a);
d98a3884 5982}
5983
5c493d36 5984__extension__ extern __inline int16x8_t
5985__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5986vclzq_s16 (int16x8_t __a)
5987{
25a124b3 5988 return (int16x8_t)__builtin_neon_vclzv8hi (__a);
d98a3884 5989}
5990
5c493d36 5991__extension__ extern __inline int32x4_t
5992__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 5993vclzq_s32 (int32x4_t __a)
5994{
25a124b3 5995 return (int32x4_t)__builtin_neon_vclzv4si (__a);
d98a3884 5996}
5997
5c493d36 5998__extension__ extern __inline uint8x16_t
5999__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6000vclzq_u8 (uint8x16_t __a)
6001{
25a124b3 6002 return (uint8x16_t)__builtin_neon_vclzv16qi ((int8x16_t) __a);
d98a3884 6003}
6004
5c493d36 6005__extension__ extern __inline uint16x8_t
6006__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6007vclzq_u16 (uint16x8_t __a)
6008{
25a124b3 6009 return (uint16x8_t)__builtin_neon_vclzv8hi ((int16x8_t) __a);
d98a3884 6010}
6011
5c493d36 6012__extension__ extern __inline uint32x4_t
6013__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6014vclzq_u32 (uint32x4_t __a)
6015{
25a124b3 6016 return (uint32x4_t)__builtin_neon_vclzv4si ((int32x4_t) __a);
d98a3884 6017}
6018
5c493d36 6019__extension__ extern __inline int8x8_t
6020__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6021vcnt_s8 (int8x8_t __a)
6022{
25a124b3 6023 return (int8x8_t)__builtin_neon_vcntv8qi (__a);
d98a3884 6024}
6025
5c493d36 6026__extension__ extern __inline uint8x8_t
6027__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6028vcnt_u8 (uint8x8_t __a)
6029{
25a124b3 6030 return (uint8x8_t)__builtin_neon_vcntv8qi ((int8x8_t) __a);
d98a3884 6031}
6032
5c493d36 6033__extension__ extern __inline poly8x8_t
6034__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6035vcnt_p8 (poly8x8_t __a)
6036{
25a124b3 6037 return (poly8x8_t)__builtin_neon_vcntv8qi ((int8x8_t) __a);
d98a3884 6038}
6039
5c493d36 6040__extension__ extern __inline int8x16_t
6041__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6042vcntq_s8 (int8x16_t __a)
6043{
25a124b3 6044 return (int8x16_t)__builtin_neon_vcntv16qi (__a);
d98a3884 6045}
6046
5c493d36 6047__extension__ extern __inline uint8x16_t
6048__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6049vcntq_u8 (uint8x16_t __a)
6050{
25a124b3 6051 return (uint8x16_t)__builtin_neon_vcntv16qi ((int8x16_t) __a);
d98a3884 6052}
6053
5c493d36 6054__extension__ extern __inline poly8x16_t
6055__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6056vcntq_p8 (poly8x16_t __a)
6057{
25a124b3 6058 return (poly8x16_t)__builtin_neon_vcntv16qi ((int8x16_t) __a);
d98a3884 6059}
6060
5c493d36 6061__extension__ extern __inline float32x2_t
6062__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6063vrecpe_f32 (float32x2_t __a)
6064{
25a124b3 6065 return (float32x2_t)__builtin_neon_vrecpev2sf (__a);
d98a3884 6066}
6067
5c493d36 6068__extension__ extern __inline uint32x2_t
6069__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6070vrecpe_u32 (uint32x2_t __a)
6071{
25a124b3 6072 return (uint32x2_t)__builtin_neon_vrecpev2si ((int32x2_t) __a);
d98a3884 6073}
6074
5c493d36 6075__extension__ extern __inline float32x4_t
6076__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6077vrecpeq_f32 (float32x4_t __a)
6078{
25a124b3 6079 return (float32x4_t)__builtin_neon_vrecpev4sf (__a);
d98a3884 6080}
6081
5c493d36 6082__extension__ extern __inline uint32x4_t
6083__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6084vrecpeq_u32 (uint32x4_t __a)
6085{
25a124b3 6086 return (uint32x4_t)__builtin_neon_vrecpev4si ((int32x4_t) __a);
d98a3884 6087}
6088
5c493d36 6089__extension__ extern __inline float32x2_t
6090__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6091vrsqrte_f32 (float32x2_t __a)
6092{
25a124b3 6093 return (float32x2_t)__builtin_neon_vrsqrtev2sf (__a);
d98a3884 6094}
6095
5c493d36 6096__extension__ extern __inline uint32x2_t
6097__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6098vrsqrte_u32 (uint32x2_t __a)
6099{
25a124b3 6100 return (uint32x2_t)__builtin_neon_vrsqrtev2si ((int32x2_t) __a);
d98a3884 6101}
6102
5c493d36 6103__extension__ extern __inline float32x4_t
6104__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6105vrsqrteq_f32 (float32x4_t __a)
6106{
25a124b3 6107 return (float32x4_t)__builtin_neon_vrsqrtev4sf (__a);
d98a3884 6108}
6109
5c493d36 6110__extension__ extern __inline uint32x4_t
6111__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6112vrsqrteq_u32 (uint32x4_t __a)
6113{
25a124b3 6114 return (uint32x4_t)__builtin_neon_vrsqrtev4si ((int32x4_t) __a);
d98a3884 6115}
6116
5c493d36 6117__extension__ extern __inline int8_t
6118__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6119vget_lane_s8 (int8x8_t __a, const int __b)
6120{
25a124b3 6121 return (int8_t)__builtin_neon_vget_lanev8qi (__a, __b);
d98a3884 6122}
6123
5c493d36 6124__extension__ extern __inline int16_t
6125__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6126vget_lane_s16 (int16x4_t __a, const int __b)
6127{
25a124b3 6128 return (int16_t)__builtin_neon_vget_lanev4hi (__a, __b);
d98a3884 6129}
6130
5c493d36 6131__extension__ extern __inline int32_t
6132__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6133vget_lane_s32 (int32x2_t __a, const int __b)
6134{
25a124b3 6135 return (int32_t)__builtin_neon_vget_lanev2si (__a, __b);
d98a3884 6136}
6137
682ea749 6138#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
6139/* Functions cannot accept or return __FP16 types. Even if the function
6140 were marked always-inline so there were no call sites, the declaration
6141 would nonetheless raise an error. Hence, we must use a macro instead. */
6142
53773057 6143 /* For big-endian, GCC's vector indices are reversed within each 64
6144 bits compared to the architectural lane indices used by Neon
6145 intrinsics. */
6146#ifdef __ARM_BIG_ENDIAN
6147#define __ARM_NUM_LANES(__v) (sizeof (__v) / sizeof (__v[0]))
6148#define __arm_lane(__vec, __idx) (__idx ^ (__ARM_NUM_LANES(__vec) - 1))
6149#define __arm_laneq(__vec, __idx) (__idx ^ (__ARM_NUM_LANES(__vec)/2 - 1))
6150#else
6151#define __arm_lane(__vec, __idx) __idx
6152#define __arm_laneq(__vec, __idx) __idx
6153#endif
6154
6155#define vget_lane_f16(__v, __idx) \
6156 __extension__ \
6157 ({ \
6158 float16x4_t __vec = (__v); \
6159 __builtin_arm_lane_check (4, __idx); \
6160 float16_t __res = __vec[__arm_lane(__vec, __idx)]; \
6161 __res; \
6162 })
682ea749 6163#endif
6164
5c493d36 6165__extension__ extern __inline float32_t
6166__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6167vget_lane_f32 (float32x2_t __a, const int __b)
6168{
25a124b3 6169 return (float32_t)__builtin_neon_vget_lanev2sf (__a, __b);
d98a3884 6170}
6171
5c493d36 6172__extension__ extern __inline uint8_t
6173__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6174vget_lane_u8 (uint8x8_t __a, const int __b)
6175{
25a124b3 6176 return (uint8_t)__builtin_neon_vget_laneuv8qi ((int8x8_t) __a, __b);
d98a3884 6177}
6178
5c493d36 6179__extension__ extern __inline uint16_t
6180__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6181vget_lane_u16 (uint16x4_t __a, const int __b)
6182{
25a124b3 6183 return (uint16_t)__builtin_neon_vget_laneuv4hi ((int16x4_t) __a, __b);
d98a3884 6184}
6185
5c493d36 6186__extension__ extern __inline uint32_t
6187__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6188vget_lane_u32 (uint32x2_t __a, const int __b)
6189{
25a124b3 6190 return (uint32_t)__builtin_neon_vget_laneuv2si ((int32x2_t) __a, __b);
d98a3884 6191}
6192
5c493d36 6193__extension__ extern __inline poly8_t
6194__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6195vget_lane_p8 (poly8x8_t __a, const int __b)
6196{
25a124b3 6197 return (poly8_t)__builtin_neon_vget_laneuv8qi ((int8x8_t) __a, __b);
d98a3884 6198}
6199
5c493d36 6200__extension__ extern __inline poly16_t
6201__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6202vget_lane_p16 (poly16x4_t __a, const int __b)
6203{
25a124b3 6204 return (poly16_t)__builtin_neon_vget_laneuv4hi ((int16x4_t) __a, __b);
d98a3884 6205}
6206
5c493d36 6207__extension__ extern __inline int64_t
6208__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6209vget_lane_s64 (int64x1_t __a, const int __b)
6210{
25a124b3 6211 return (int64_t)__builtin_neon_vget_lanedi (__a, __b);
d98a3884 6212}
6213
dbb1f2d1 6214#pragma GCC push_options
6215#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 6216__extension__ extern __inline poly64_t
6217__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
dbb1f2d1 6218vget_lane_p64 (poly64x1_t __a, const int __b)
6219{
6220 return (poly64_t)__builtin_neon_vget_lanedi ((int64x1_t) __a, __b);
6221}
6222
6223#pragma GCC pop_options
5c493d36 6224__extension__ extern __inline uint64_t
6225__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6226vget_lane_u64 (uint64x1_t __a, const int __b)
6227{
25a124b3 6228 return (uint64_t)__builtin_neon_vget_lanedi ((int64x1_t) __a, __b);
d98a3884 6229}
6230
5c493d36 6231__extension__ extern __inline int8_t
6232__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6233vgetq_lane_s8 (int8x16_t __a, const int __b)
6234{
25a124b3 6235 return (int8_t)__builtin_neon_vget_lanev16qi (__a, __b);
d98a3884 6236}
6237
5c493d36 6238__extension__ extern __inline int16_t
6239__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6240vgetq_lane_s16 (int16x8_t __a, const int __b)
6241{
25a124b3 6242 return (int16_t)__builtin_neon_vget_lanev8hi (__a, __b);
d98a3884 6243}
6244
5c493d36 6245__extension__ extern __inline int32_t
6246__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6247vgetq_lane_s32 (int32x4_t __a, const int __b)
6248{
25a124b3 6249 return (int32_t)__builtin_neon_vget_lanev4si (__a, __b);
d98a3884 6250}
6251
114e7e56 6252#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
53773057 6253#define vgetq_lane_f16(__v, __idx) \
6254 __extension__ \
6255 ({ \
6256 float16x8_t __vec = (__v); \
6257 __builtin_arm_lane_check (8, __idx); \
6258 float16_t __res = __vec[__arm_laneq(__vec, __idx)]; \
6259 __res; \
6260 })
114e7e56 6261#endif
6262
5c493d36 6263__extension__ extern __inline float32_t
6264__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6265vgetq_lane_f32 (float32x4_t __a, const int __b)
6266{
25a124b3 6267 return (float32_t)__builtin_neon_vget_lanev4sf (__a, __b);
d98a3884 6268}
6269
5c493d36 6270__extension__ extern __inline uint8_t
6271__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6272vgetq_lane_u8 (uint8x16_t __a, const int __b)
6273{
25a124b3 6274 return (uint8_t)__builtin_neon_vget_laneuv16qi ((int8x16_t) __a, __b);
d98a3884 6275}
6276
5c493d36 6277__extension__ extern __inline uint16_t
6278__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6279vgetq_lane_u16 (uint16x8_t __a, const int __b)
6280{
25a124b3 6281 return (uint16_t)__builtin_neon_vget_laneuv8hi ((int16x8_t) __a, __b);
d98a3884 6282}
6283
5c493d36 6284__extension__ extern __inline uint32_t
6285__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6286vgetq_lane_u32 (uint32x4_t __a, const int __b)
6287{
25a124b3 6288 return (uint32_t)__builtin_neon_vget_laneuv4si ((int32x4_t) __a, __b);
d98a3884 6289}
6290
5c493d36 6291__extension__ extern __inline poly8_t
6292__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6293vgetq_lane_p8 (poly8x16_t __a, const int __b)
6294{
25a124b3 6295 return (poly8_t)__builtin_neon_vget_laneuv16qi ((int8x16_t) __a, __b);
d98a3884 6296}
6297
5c493d36 6298__extension__ extern __inline poly16_t
6299__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6300vgetq_lane_p16 (poly16x8_t __a, const int __b)
6301{
25a124b3 6302 return (poly16_t)__builtin_neon_vget_laneuv8hi ((int16x8_t) __a, __b);
d98a3884 6303}
6304
5c493d36 6305__extension__ extern __inline int64_t
6306__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6307vgetq_lane_s64 (int64x2_t __a, const int __b)
6308{
25a124b3 6309 return (int64_t)__builtin_neon_vget_lanev2di (__a, __b);
d98a3884 6310}
6311
ad812c9a 6312#pragma GCC push_options
6313#pragma GCC target ("fpu=crypto-neon-fp-armv8")
6314__extension__ extern __inline poly64_t
6315__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6316vgetq_lane_p64 (poly64x2_t __a, const int __b)
6317{
6318 return (poly64_t)__builtin_neon_vget_lanev2di ((int64x2_t) __a, __b);
6319}
6320
6321#pragma GCC pop_options
5c493d36 6322__extension__ extern __inline uint64_t
6323__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6324vgetq_lane_u64 (uint64x2_t __a, const int __b)
6325{
25a124b3 6326 return (uint64_t)__builtin_neon_vget_lanev2di ((int64x2_t) __a, __b);
d98a3884 6327}
6328
5c493d36 6329__extension__ extern __inline int8x8_t
6330__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6331vset_lane_s8 (int8_t __a, int8x8_t __b, const int __c)
6332{
6333 return (int8x8_t)__builtin_neon_vset_lanev8qi ((__builtin_neon_qi) __a, __b, __c);
6334}
6335
5c493d36 6336__extension__ extern __inline int16x4_t
6337__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6338vset_lane_s16 (int16_t __a, int16x4_t __b, const int __c)
6339{
6340 return (int16x4_t)__builtin_neon_vset_lanev4hi ((__builtin_neon_hi) __a, __b, __c);
6341}
6342
5c493d36 6343__extension__ extern __inline int32x2_t
6344__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6345vset_lane_s32 (int32_t __a, int32x2_t __b, const int __c)
6346{
6347 return (int32x2_t)__builtin_neon_vset_lanev2si ((__builtin_neon_si) __a, __b, __c);
6348}
6349
682ea749 6350#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
6351#define vset_lane_f16(__e, __v, __idx) \
6352 __extension__ \
53773057 6353 ({ \
6354 float16_t __elem = (__e); \
6355 float16x4_t __vec = (__v); \
6356 __builtin_arm_lane_check (4, __idx); \
6357 __vec[__arm_lane (__vec, __idx)] = __elem; \
6358 __vec; \
6359 })
682ea749 6360#endif
6361
5c493d36 6362__extension__ extern __inline float32x2_t
6363__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6364vset_lane_f32 (float32_t __a, float32x2_t __b, const int __c)
6365{
52a0d45c 6366 return (float32x2_t)__builtin_neon_vset_lanev2sf ((__builtin_neon_sf) __a, __b, __c);
d98a3884 6367}
6368
5c493d36 6369__extension__ extern __inline uint8x8_t
6370__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6371vset_lane_u8 (uint8_t __a, uint8x8_t __b, const int __c)
6372{
6373 return (uint8x8_t)__builtin_neon_vset_lanev8qi ((__builtin_neon_qi) __a, (int8x8_t) __b, __c);
6374}
6375
5c493d36 6376__extension__ extern __inline uint16x4_t
6377__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6378vset_lane_u16 (uint16_t __a, uint16x4_t __b, const int __c)
6379{
6380 return (uint16x4_t)__builtin_neon_vset_lanev4hi ((__builtin_neon_hi) __a, (int16x4_t) __b, __c);
6381}
6382
5c493d36 6383__extension__ extern __inline uint32x2_t
6384__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6385vset_lane_u32 (uint32_t __a, uint32x2_t __b, const int __c)
6386{
6387 return (uint32x2_t)__builtin_neon_vset_lanev2si ((__builtin_neon_si) __a, (int32x2_t) __b, __c);
6388}
6389
5c493d36 6390__extension__ extern __inline poly8x8_t
6391__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6392vset_lane_p8 (poly8_t __a, poly8x8_t __b, const int __c)
6393{
6394 return (poly8x8_t)__builtin_neon_vset_lanev8qi ((__builtin_neon_qi) __a, (int8x8_t) __b, __c);
6395}
6396
5c493d36 6397__extension__ extern __inline poly16x4_t
6398__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6399vset_lane_p16 (poly16_t __a, poly16x4_t __b, const int __c)
6400{
6401 return (poly16x4_t)__builtin_neon_vset_lanev4hi ((__builtin_neon_hi) __a, (int16x4_t) __b, __c);
6402}
6403
5c493d36 6404__extension__ extern __inline int64x1_t
6405__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6406vset_lane_s64 (int64_t __a, int64x1_t __b, const int __c)
6407{
6408 return (int64x1_t)__builtin_neon_vset_lanedi ((__builtin_neon_di) __a, __b, __c);
6409}
6410
5c493d36 6411__extension__ extern __inline uint64x1_t
6412__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6413vset_lane_u64 (uint64_t __a, uint64x1_t __b, const int __c)
6414{
6415 return (uint64x1_t)__builtin_neon_vset_lanedi ((__builtin_neon_di) __a, (int64x1_t) __b, __c);
6416}
6417
ad812c9a 6418#pragma GCC push_options
6419#pragma GCC target ("fpu=crypto-neon-fp-armv8")
6420__extension__ extern __inline poly64x1_t
6421__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6422vset_lane_p64 (poly64_t __a, poly64x1_t __b, const int __c)
6423{
6424 return (poly64x1_t)__builtin_neon_vset_lanedi ((__builtin_neon_di) __a, (int64x1_t) __b, __c);
6425}
6426
6427#pragma GCC pop_options
5c493d36 6428__extension__ extern __inline int8x16_t
6429__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6430vsetq_lane_s8 (int8_t __a, int8x16_t __b, const int __c)
6431{
6432 return (int8x16_t)__builtin_neon_vset_lanev16qi ((__builtin_neon_qi) __a, __b, __c);
6433}
6434
5c493d36 6435__extension__ extern __inline int16x8_t
6436__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6437vsetq_lane_s16 (int16_t __a, int16x8_t __b, const int __c)
6438{
6439 return (int16x8_t)__builtin_neon_vset_lanev8hi ((__builtin_neon_hi) __a, __b, __c);
6440}
6441
5c493d36 6442__extension__ extern __inline int32x4_t
6443__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6444vsetq_lane_s32 (int32_t __a, int32x4_t __b, const int __c)
6445{
6446 return (int32x4_t)__builtin_neon_vset_lanev4si ((__builtin_neon_si) __a, __b, __c);
6447}
6448
114e7e56 6449#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
6450#define vsetq_lane_f16(__e, __v, __idx) \
6451 __extension__ \
53773057 6452 ({ \
6453 float16_t __elem = (__e); \
6454 float16x8_t __vec = (__v); \
6455 __builtin_arm_lane_check (8, __idx); \
6456 __vec[__arm_laneq (__vec, __idx)] = __elem; \
6457 __vec; \
6458 })
114e7e56 6459#endif
6460
5c493d36 6461__extension__ extern __inline float32x4_t
6462__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6463vsetq_lane_f32 (float32_t __a, float32x4_t __b, const int __c)
6464{
52a0d45c 6465 return (float32x4_t)__builtin_neon_vset_lanev4sf ((__builtin_neon_sf) __a, __b, __c);
d98a3884 6466}
6467
5c493d36 6468__extension__ extern __inline uint8x16_t
6469__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6470vsetq_lane_u8 (uint8_t __a, uint8x16_t __b, const int __c)
6471{
6472 return (uint8x16_t)__builtin_neon_vset_lanev16qi ((__builtin_neon_qi) __a, (int8x16_t) __b, __c);
6473}
6474
5c493d36 6475__extension__ extern __inline uint16x8_t
6476__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6477vsetq_lane_u16 (uint16_t __a, uint16x8_t __b, const int __c)
6478{
6479 return (uint16x8_t)__builtin_neon_vset_lanev8hi ((__builtin_neon_hi) __a, (int16x8_t) __b, __c);
6480}
6481
5c493d36 6482__extension__ extern __inline uint32x4_t
6483__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6484vsetq_lane_u32 (uint32_t __a, uint32x4_t __b, const int __c)
6485{
6486 return (uint32x4_t)__builtin_neon_vset_lanev4si ((__builtin_neon_si) __a, (int32x4_t) __b, __c);
6487}
6488
5c493d36 6489__extension__ extern __inline poly8x16_t
6490__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6491vsetq_lane_p8 (poly8_t __a, poly8x16_t __b, const int __c)
6492{
6493 return (poly8x16_t)__builtin_neon_vset_lanev16qi ((__builtin_neon_qi) __a, (int8x16_t) __b, __c);
6494}
6495
5c493d36 6496__extension__ extern __inline poly16x8_t
6497__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6498vsetq_lane_p16 (poly16_t __a, poly16x8_t __b, const int __c)
6499{
6500 return (poly16x8_t)__builtin_neon_vset_lanev8hi ((__builtin_neon_hi) __a, (int16x8_t) __b, __c);
6501}
6502
5c493d36 6503__extension__ extern __inline int64x2_t
6504__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6505vsetq_lane_s64 (int64_t __a, int64x2_t __b, const int __c)
6506{
6507 return (int64x2_t)__builtin_neon_vset_lanev2di ((__builtin_neon_di) __a, __b, __c);
6508}
6509
5c493d36 6510__extension__ extern __inline uint64x2_t
6511__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6512vsetq_lane_u64 (uint64_t __a, uint64x2_t __b, const int __c)
6513{
6514 return (uint64x2_t)__builtin_neon_vset_lanev2di ((__builtin_neon_di) __a, (int64x2_t) __b, __c);
6515}
6516
dcbc6813 6517#pragma GCC push_options
6518#pragma GCC target ("fpu=crypto-neon-fp-armv8")
ad812c9a 6519__extension__ extern __inline poly64x2_t
6520__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6521vsetq_lane_p64 (poly64_t __a, poly64x2_t __b, const int __c)
6522{
6523 return (poly64x2_t)__builtin_neon_vset_lanev2di ((__builtin_neon_di) __a, (int64x2_t) __b, __c);
6524}
6525
5c493d36 6526__extension__ extern __inline poly64x1_t
6527__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 6528vcreate_p64 (uint64_t __a)
6529{
6530 return (poly64x1_t)__builtin_neon_vcreatedi ((__builtin_neon_di) __a);
6531}
6532
dcbc6813 6533#pragma GCC pop_options
5c493d36 6534__extension__ extern __inline int8x8_t
6535__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6536vcreate_s8 (uint64_t __a)
6537{
6538 return (int8x8_t)__builtin_neon_vcreatev8qi ((__builtin_neon_di) __a);
6539}
6540
5c493d36 6541__extension__ extern __inline int16x4_t
6542__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6543vcreate_s16 (uint64_t __a)
6544{
6545 return (int16x4_t)__builtin_neon_vcreatev4hi ((__builtin_neon_di) __a);
6546}
6547
5c493d36 6548__extension__ extern __inline int32x2_t
6549__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6550vcreate_s32 (uint64_t __a)
6551{
6552 return (int32x2_t)__builtin_neon_vcreatev2si ((__builtin_neon_di) __a);
6553}
6554
5c493d36 6555__extension__ extern __inline int64x1_t
6556__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6557vcreate_s64 (uint64_t __a)
6558{
6559 return (int64x1_t)__builtin_neon_vcreatedi ((__builtin_neon_di) __a);
6560}
6561
682ea749 6562#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 6563__extension__ extern __inline float16x4_t
6564__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 6565vcreate_f16 (uint64_t __a)
6566{
6567 return (float16x4_t) __a;
6568}
6569#endif
6570
5c493d36 6571__extension__ extern __inline float32x2_t
6572__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6573vcreate_f32 (uint64_t __a)
6574{
6575 return (float32x2_t)__builtin_neon_vcreatev2sf ((__builtin_neon_di) __a);
6576}
6577
5c493d36 6578__extension__ extern __inline uint8x8_t
6579__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6580vcreate_u8 (uint64_t __a)
6581{
6582 return (uint8x8_t)__builtin_neon_vcreatev8qi ((__builtin_neon_di) __a);
6583}
6584
5c493d36 6585__extension__ extern __inline uint16x4_t
6586__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6587vcreate_u16 (uint64_t __a)
6588{
6589 return (uint16x4_t)__builtin_neon_vcreatev4hi ((__builtin_neon_di) __a);
6590}
6591
5c493d36 6592__extension__ extern __inline uint32x2_t
6593__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6594vcreate_u32 (uint64_t __a)
6595{
6596 return (uint32x2_t)__builtin_neon_vcreatev2si ((__builtin_neon_di) __a);
6597}
6598
5c493d36 6599__extension__ extern __inline uint64x1_t
6600__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6601vcreate_u64 (uint64_t __a)
6602{
6603 return (uint64x1_t)__builtin_neon_vcreatedi ((__builtin_neon_di) __a);
6604}
6605
5c493d36 6606__extension__ extern __inline poly8x8_t
6607__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6608vcreate_p8 (uint64_t __a)
6609{
6610 return (poly8x8_t)__builtin_neon_vcreatev8qi ((__builtin_neon_di) __a);
6611}
6612
5c493d36 6613__extension__ extern __inline poly16x4_t
6614__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6615vcreate_p16 (uint64_t __a)
6616{
6617 return (poly16x4_t)__builtin_neon_vcreatev4hi ((__builtin_neon_di) __a);
6618}
6619
5c493d36 6620__extension__ extern __inline int8x8_t
6621__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6622vdup_n_s8 (int8_t __a)
6623{
6624 return (int8x8_t)__builtin_neon_vdup_nv8qi ((__builtin_neon_qi) __a);
6625}
6626
5c493d36 6627__extension__ extern __inline int16x4_t
6628__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6629vdup_n_s16 (int16_t __a)
6630{
6631 return (int16x4_t)__builtin_neon_vdup_nv4hi ((__builtin_neon_hi) __a);
6632}
6633
5c493d36 6634__extension__ extern __inline int32x2_t
6635__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6636vdup_n_s32 (int32_t __a)
6637{
6638 return (int32x2_t)__builtin_neon_vdup_nv2si ((__builtin_neon_si) __a);
6639}
6640
5c493d36 6641__extension__ extern __inline float32x2_t
6642__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6643vdup_n_f32 (float32_t __a)
6644{
52a0d45c 6645 return (float32x2_t)__builtin_neon_vdup_nv2sf ((__builtin_neon_sf) __a);
d98a3884 6646}
6647
5c493d36 6648__extension__ extern __inline uint8x8_t
6649__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6650vdup_n_u8 (uint8_t __a)
6651{
6652 return (uint8x8_t)__builtin_neon_vdup_nv8qi ((__builtin_neon_qi) __a);
6653}
6654
5c493d36 6655__extension__ extern __inline uint16x4_t
6656__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6657vdup_n_u16 (uint16_t __a)
6658{
6659 return (uint16x4_t)__builtin_neon_vdup_nv4hi ((__builtin_neon_hi) __a);
6660}
6661
5c493d36 6662__extension__ extern __inline uint32x2_t
6663__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6664vdup_n_u32 (uint32_t __a)
6665{
6666 return (uint32x2_t)__builtin_neon_vdup_nv2si ((__builtin_neon_si) __a);
6667}
6668
5c493d36 6669__extension__ extern __inline poly8x8_t
6670__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6671vdup_n_p8 (poly8_t __a)
6672{
6673 return (poly8x8_t)__builtin_neon_vdup_nv8qi ((__builtin_neon_qi) __a);
6674}
6675
5c493d36 6676__extension__ extern __inline poly16x4_t
6677__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6678vdup_n_p16 (poly16_t __a)
6679{
6680 return (poly16x4_t)__builtin_neon_vdup_nv4hi ((__builtin_neon_hi) __a);
6681}
6682
dcbc6813 6683#pragma GCC push_options
6684#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 6685__extension__ extern __inline poly64x1_t
6686__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 6687vdup_n_p64 (poly64_t __a)
6688{
6689 return (poly64x1_t)__builtin_neon_vdup_ndi ((__builtin_neon_di) __a);
6690}
6691
dcbc6813 6692#pragma GCC pop_options
5c493d36 6693__extension__ extern __inline int64x1_t
6694__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6695vdup_n_s64 (int64_t __a)
6696{
6697 return (int64x1_t)__builtin_neon_vdup_ndi ((__builtin_neon_di) __a);
6698}
6699
5c493d36 6700__extension__ extern __inline uint64x1_t
6701__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6702vdup_n_u64 (uint64_t __a)
6703{
6704 return (uint64x1_t)__builtin_neon_vdup_ndi ((__builtin_neon_di) __a);
6705}
6706
dcbc6813 6707#pragma GCC push_options
6708#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 6709__extension__ extern __inline poly64x2_t
6710__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 6711vdupq_n_p64 (poly64_t __a)
6712{
6713 return (poly64x2_t)__builtin_neon_vdup_nv2di ((__builtin_neon_di) __a);
6714}
6715
dcbc6813 6716#pragma GCC pop_options
5c493d36 6717__extension__ extern __inline int8x16_t
6718__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6719vdupq_n_s8 (int8_t __a)
6720{
6721 return (int8x16_t)__builtin_neon_vdup_nv16qi ((__builtin_neon_qi) __a);
6722}
6723
5c493d36 6724__extension__ extern __inline int16x8_t
6725__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6726vdupq_n_s16 (int16_t __a)
6727{
6728 return (int16x8_t)__builtin_neon_vdup_nv8hi ((__builtin_neon_hi) __a);
6729}
6730
5c493d36 6731__extension__ extern __inline int32x4_t
6732__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6733vdupq_n_s32 (int32_t __a)
6734{
6735 return (int32x4_t)__builtin_neon_vdup_nv4si ((__builtin_neon_si) __a);
6736}
6737
5c493d36 6738__extension__ extern __inline float32x4_t
6739__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6740vdupq_n_f32 (float32_t __a)
6741{
52a0d45c 6742 return (float32x4_t)__builtin_neon_vdup_nv4sf ((__builtin_neon_sf) __a);
d98a3884 6743}
6744
5c493d36 6745__extension__ extern __inline uint8x16_t
6746__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6747vdupq_n_u8 (uint8_t __a)
6748{
6749 return (uint8x16_t)__builtin_neon_vdup_nv16qi ((__builtin_neon_qi) __a);
6750}
6751
5c493d36 6752__extension__ extern __inline uint16x8_t
6753__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6754vdupq_n_u16 (uint16_t __a)
6755{
6756 return (uint16x8_t)__builtin_neon_vdup_nv8hi ((__builtin_neon_hi) __a);
6757}
6758
5c493d36 6759__extension__ extern __inline uint32x4_t
6760__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6761vdupq_n_u32 (uint32_t __a)
6762{
6763 return (uint32x4_t)__builtin_neon_vdup_nv4si ((__builtin_neon_si) __a);
6764}
6765
5c493d36 6766__extension__ extern __inline poly8x16_t
6767__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6768vdupq_n_p8 (poly8_t __a)
6769{
6770 return (poly8x16_t)__builtin_neon_vdup_nv16qi ((__builtin_neon_qi) __a);
6771}
6772
5c493d36 6773__extension__ extern __inline poly16x8_t
6774__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6775vdupq_n_p16 (poly16_t __a)
6776{
6777 return (poly16x8_t)__builtin_neon_vdup_nv8hi ((__builtin_neon_hi) __a);
6778}
6779
5c493d36 6780__extension__ extern __inline int64x2_t
6781__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6782vdupq_n_s64 (int64_t __a)
6783{
6784 return (int64x2_t)__builtin_neon_vdup_nv2di ((__builtin_neon_di) __a);
6785}
6786
5c493d36 6787__extension__ extern __inline uint64x2_t
6788__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6789vdupq_n_u64 (uint64_t __a)
6790{
6791 return (uint64x2_t)__builtin_neon_vdup_nv2di ((__builtin_neon_di) __a);
6792}
6793
5c493d36 6794__extension__ extern __inline int8x8_t
6795__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6796vmov_n_s8 (int8_t __a)
6797{
6798 return (int8x8_t)__builtin_neon_vdup_nv8qi ((__builtin_neon_qi) __a);
6799}
6800
5c493d36 6801__extension__ extern __inline int16x4_t
6802__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6803vmov_n_s16 (int16_t __a)
6804{
6805 return (int16x4_t)__builtin_neon_vdup_nv4hi ((__builtin_neon_hi) __a);
6806}
6807
5c493d36 6808__extension__ extern __inline int32x2_t
6809__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6810vmov_n_s32 (int32_t __a)
6811{
6812 return (int32x2_t)__builtin_neon_vdup_nv2si ((__builtin_neon_si) __a);
6813}
6814
5c493d36 6815__extension__ extern __inline float32x2_t
6816__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6817vmov_n_f32 (float32_t __a)
6818{
52a0d45c 6819 return (float32x2_t)__builtin_neon_vdup_nv2sf ((__builtin_neon_sf) __a);
d98a3884 6820}
6821
5c493d36 6822__extension__ extern __inline uint8x8_t
6823__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6824vmov_n_u8 (uint8_t __a)
6825{
6826 return (uint8x8_t)__builtin_neon_vdup_nv8qi ((__builtin_neon_qi) __a);
6827}
6828
5c493d36 6829__extension__ extern __inline uint16x4_t
6830__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6831vmov_n_u16 (uint16_t __a)
6832{
6833 return (uint16x4_t)__builtin_neon_vdup_nv4hi ((__builtin_neon_hi) __a);
6834}
6835
5c493d36 6836__extension__ extern __inline uint32x2_t
6837__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6838vmov_n_u32 (uint32_t __a)
6839{
6840 return (uint32x2_t)__builtin_neon_vdup_nv2si ((__builtin_neon_si) __a);
6841}
6842
5c493d36 6843__extension__ extern __inline poly8x8_t
6844__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6845vmov_n_p8 (poly8_t __a)
6846{
6847 return (poly8x8_t)__builtin_neon_vdup_nv8qi ((__builtin_neon_qi) __a);
6848}
6849
5c493d36 6850__extension__ extern __inline poly16x4_t
6851__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6852vmov_n_p16 (poly16_t __a)
6853{
6854 return (poly16x4_t)__builtin_neon_vdup_nv4hi ((__builtin_neon_hi) __a);
6855}
6856
5c493d36 6857__extension__ extern __inline int64x1_t
6858__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6859vmov_n_s64 (int64_t __a)
6860{
6861 return (int64x1_t)__builtin_neon_vdup_ndi ((__builtin_neon_di) __a);
6862}
6863
5c493d36 6864__extension__ extern __inline uint64x1_t
6865__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6866vmov_n_u64 (uint64_t __a)
6867{
6868 return (uint64x1_t)__builtin_neon_vdup_ndi ((__builtin_neon_di) __a);
6869}
6870
5c493d36 6871__extension__ extern __inline int8x16_t
6872__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6873vmovq_n_s8 (int8_t __a)
6874{
6875 return (int8x16_t)__builtin_neon_vdup_nv16qi ((__builtin_neon_qi) __a);
6876}
6877
5c493d36 6878__extension__ extern __inline int16x8_t
6879__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6880vmovq_n_s16 (int16_t __a)
6881{
6882 return (int16x8_t)__builtin_neon_vdup_nv8hi ((__builtin_neon_hi) __a);
6883}
6884
5c493d36 6885__extension__ extern __inline int32x4_t
6886__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6887vmovq_n_s32 (int32_t __a)
6888{
6889 return (int32x4_t)__builtin_neon_vdup_nv4si ((__builtin_neon_si) __a);
6890}
6891
5c493d36 6892__extension__ extern __inline float32x4_t
6893__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6894vmovq_n_f32 (float32_t __a)
6895{
52a0d45c 6896 return (float32x4_t)__builtin_neon_vdup_nv4sf ((__builtin_neon_sf) __a);
d98a3884 6897}
6898
5c493d36 6899__extension__ extern __inline uint8x16_t
6900__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6901vmovq_n_u8 (uint8_t __a)
6902{
6903 return (uint8x16_t)__builtin_neon_vdup_nv16qi ((__builtin_neon_qi) __a);
6904}
6905
5c493d36 6906__extension__ extern __inline uint16x8_t
6907__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6908vmovq_n_u16 (uint16_t __a)
6909{
6910 return (uint16x8_t)__builtin_neon_vdup_nv8hi ((__builtin_neon_hi) __a);
6911}
6912
5c493d36 6913__extension__ extern __inline uint32x4_t
6914__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6915vmovq_n_u32 (uint32_t __a)
6916{
6917 return (uint32x4_t)__builtin_neon_vdup_nv4si ((__builtin_neon_si) __a);
6918}
6919
5c493d36 6920__extension__ extern __inline poly8x16_t
6921__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6922vmovq_n_p8 (poly8_t __a)
6923{
6924 return (poly8x16_t)__builtin_neon_vdup_nv16qi ((__builtin_neon_qi) __a);
6925}
6926
5c493d36 6927__extension__ extern __inline poly16x8_t
6928__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6929vmovq_n_p16 (poly16_t __a)
6930{
6931 return (poly16x8_t)__builtin_neon_vdup_nv8hi ((__builtin_neon_hi) __a);
6932}
6933
5c493d36 6934__extension__ extern __inline int64x2_t
6935__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6936vmovq_n_s64 (int64_t __a)
6937{
6938 return (int64x2_t)__builtin_neon_vdup_nv2di ((__builtin_neon_di) __a);
6939}
6940
5c493d36 6941__extension__ extern __inline uint64x2_t
6942__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6943vmovq_n_u64 (uint64_t __a)
6944{
6945 return (uint64x2_t)__builtin_neon_vdup_nv2di ((__builtin_neon_di) __a);
6946}
6947
5c493d36 6948__extension__ extern __inline int8x8_t
6949__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6950vdup_lane_s8 (int8x8_t __a, const int __b)
6951{
6952 return (int8x8_t)__builtin_neon_vdup_lanev8qi (__a, __b);
6953}
6954
5c493d36 6955__extension__ extern __inline int16x4_t
6956__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6957vdup_lane_s16 (int16x4_t __a, const int __b)
6958{
6959 return (int16x4_t)__builtin_neon_vdup_lanev4hi (__a, __b);
6960}
6961
5c493d36 6962__extension__ extern __inline int32x2_t
6963__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6964vdup_lane_s32 (int32x2_t __a, const int __b)
6965{
6966 return (int32x2_t)__builtin_neon_vdup_lanev2si (__a, __b);
6967}
6968
5c493d36 6969__extension__ extern __inline float32x2_t
6970__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6971vdup_lane_f32 (float32x2_t __a, const int __b)
6972{
6973 return (float32x2_t)__builtin_neon_vdup_lanev2sf (__a, __b);
6974}
6975
5c493d36 6976__extension__ extern __inline uint8x8_t
6977__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6978vdup_lane_u8 (uint8x8_t __a, const int __b)
6979{
6980 return (uint8x8_t)__builtin_neon_vdup_lanev8qi ((int8x8_t) __a, __b);
6981}
6982
5c493d36 6983__extension__ extern __inline uint16x4_t
6984__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6985vdup_lane_u16 (uint16x4_t __a, const int __b)
6986{
6987 return (uint16x4_t)__builtin_neon_vdup_lanev4hi ((int16x4_t) __a, __b);
6988}
6989
5c493d36 6990__extension__ extern __inline uint32x2_t
6991__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6992vdup_lane_u32 (uint32x2_t __a, const int __b)
6993{
6994 return (uint32x2_t)__builtin_neon_vdup_lanev2si ((int32x2_t) __a, __b);
6995}
6996
5c493d36 6997__extension__ extern __inline poly8x8_t
6998__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 6999vdup_lane_p8 (poly8x8_t __a, const int __b)
7000{
7001 return (poly8x8_t)__builtin_neon_vdup_lanev8qi ((int8x8_t) __a, __b);
7002}
7003
5c493d36 7004__extension__ extern __inline poly16x4_t
7005__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7006vdup_lane_p16 (poly16x4_t __a, const int __b)
7007{
7008 return (poly16x4_t)__builtin_neon_vdup_lanev4hi ((int16x4_t) __a, __b);
7009}
7010
dcbc6813 7011#pragma GCC push_options
7012#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 7013__extension__ extern __inline poly64x1_t
7014__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 7015vdup_lane_p64 (poly64x1_t __a, const int __b)
7016{
7017 return (poly64x1_t)__builtin_neon_vdup_lanedi (__a, __b);
7018}
7019
dcbc6813 7020#pragma GCC pop_options
5c493d36 7021__extension__ extern __inline int64x1_t
7022__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7023vdup_lane_s64 (int64x1_t __a, const int __b)
7024{
7025 return (int64x1_t)__builtin_neon_vdup_lanedi (__a, __b);
7026}
7027
5c493d36 7028__extension__ extern __inline uint64x1_t
7029__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7030vdup_lane_u64 (uint64x1_t __a, const int __b)
7031{
7032 return (uint64x1_t)__builtin_neon_vdup_lanedi ((int64x1_t) __a, __b);
7033}
7034
5c493d36 7035__extension__ extern __inline int8x16_t
7036__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7037vdupq_lane_s8 (int8x8_t __a, const int __b)
7038{
7039 return (int8x16_t)__builtin_neon_vdup_lanev16qi (__a, __b);
7040}
7041
5c493d36 7042__extension__ extern __inline int16x8_t
7043__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7044vdupq_lane_s16 (int16x4_t __a, const int __b)
7045{
7046 return (int16x8_t)__builtin_neon_vdup_lanev8hi (__a, __b);
7047}
7048
5c493d36 7049__extension__ extern __inline int32x4_t
7050__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7051vdupq_lane_s32 (int32x2_t __a, const int __b)
7052{
7053 return (int32x4_t)__builtin_neon_vdup_lanev4si (__a, __b);
7054}
7055
5c493d36 7056__extension__ extern __inline float32x4_t
7057__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7058vdupq_lane_f32 (float32x2_t __a, const int __b)
7059{
7060 return (float32x4_t)__builtin_neon_vdup_lanev4sf (__a, __b);
7061}
7062
5c493d36 7063__extension__ extern __inline uint8x16_t
7064__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7065vdupq_lane_u8 (uint8x8_t __a, const int __b)
7066{
7067 return (uint8x16_t)__builtin_neon_vdup_lanev16qi ((int8x8_t) __a, __b);
7068}
7069
5c493d36 7070__extension__ extern __inline uint16x8_t
7071__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7072vdupq_lane_u16 (uint16x4_t __a, const int __b)
7073{
7074 return (uint16x8_t)__builtin_neon_vdup_lanev8hi ((int16x4_t) __a, __b);
7075}
7076
5c493d36 7077__extension__ extern __inline uint32x4_t
7078__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7079vdupq_lane_u32 (uint32x2_t __a, const int __b)
7080{
7081 return (uint32x4_t)__builtin_neon_vdup_lanev4si ((int32x2_t) __a, __b);
7082}
7083
5c493d36 7084__extension__ extern __inline poly8x16_t
7085__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7086vdupq_lane_p8 (poly8x8_t __a, const int __b)
7087{
7088 return (poly8x16_t)__builtin_neon_vdup_lanev16qi ((int8x8_t) __a, __b);
7089}
7090
5c493d36 7091__extension__ extern __inline poly16x8_t
7092__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7093vdupq_lane_p16 (poly16x4_t __a, const int __b)
7094{
7095 return (poly16x8_t)__builtin_neon_vdup_lanev8hi ((int16x4_t) __a, __b);
7096}
7097
dcbc6813 7098#pragma GCC push_options
7099#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 7100__extension__ extern __inline poly64x2_t
7101__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 7102vdupq_lane_p64 (poly64x1_t __a, const int __b)
7103{
7104 return (poly64x2_t)__builtin_neon_vdup_lanev2di (__a, __b);
7105}
7106
dcbc6813 7107#pragma GCC pop_options
5c493d36 7108__extension__ extern __inline int64x2_t
7109__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7110vdupq_lane_s64 (int64x1_t __a, const int __b)
7111{
7112 return (int64x2_t)__builtin_neon_vdup_lanev2di (__a, __b);
7113}
7114
5c493d36 7115__extension__ extern __inline uint64x2_t
7116__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7117vdupq_lane_u64 (uint64x1_t __a, const int __b)
7118{
7119 return (uint64x2_t)__builtin_neon_vdup_lanev2di ((int64x1_t) __a, __b);
7120}
7121
dcbc6813 7122#pragma GCC push_options
7123#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 7124__extension__ extern __inline poly64x2_t
7125__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 7126vcombine_p64 (poly64x1_t __a, poly64x1_t __b)
7127{
7128 return (poly64x2_t)__builtin_neon_vcombinedi (__a, __b);
7129}
7130
dcbc6813 7131#pragma GCC pop_options
5c493d36 7132__extension__ extern __inline int8x16_t
7133__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7134vcombine_s8 (int8x8_t __a, int8x8_t __b)
7135{
7136 return (int8x16_t)__builtin_neon_vcombinev8qi (__a, __b);
7137}
7138
5c493d36 7139__extension__ extern __inline int16x8_t
7140__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7141vcombine_s16 (int16x4_t __a, int16x4_t __b)
7142{
7143 return (int16x8_t)__builtin_neon_vcombinev4hi (__a, __b);
7144}
7145
5c493d36 7146__extension__ extern __inline int32x4_t
7147__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7148vcombine_s32 (int32x2_t __a, int32x2_t __b)
7149{
7150 return (int32x4_t)__builtin_neon_vcombinev2si (__a, __b);
7151}
7152
5c493d36 7153__extension__ extern __inline int64x2_t
7154__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7155vcombine_s64 (int64x1_t __a, int64x1_t __b)
7156{
7157 return (int64x2_t)__builtin_neon_vcombinedi (__a, __b);
7158}
7159
fb5f110d 7160#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 7161__extension__ extern __inline float16x8_t
7162__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 7163vcombine_f16 (float16x4_t __a, float16x4_t __b)
7164{
7165 return __builtin_neon_vcombinev4hf (__a, __b);
7166}
7167#endif
7168
5c493d36 7169__extension__ extern __inline float32x4_t
7170__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7171vcombine_f32 (float32x2_t __a, float32x2_t __b)
7172{
7173 return (float32x4_t)__builtin_neon_vcombinev2sf (__a, __b);
7174}
7175
5c493d36 7176__extension__ extern __inline uint8x16_t
7177__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7178vcombine_u8 (uint8x8_t __a, uint8x8_t __b)
7179{
7180 return (uint8x16_t)__builtin_neon_vcombinev8qi ((int8x8_t) __a, (int8x8_t) __b);
7181}
7182
5c493d36 7183__extension__ extern __inline uint16x8_t
7184__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7185vcombine_u16 (uint16x4_t __a, uint16x4_t __b)
7186{
7187 return (uint16x8_t)__builtin_neon_vcombinev4hi ((int16x4_t) __a, (int16x4_t) __b);
7188}
7189
5c493d36 7190__extension__ extern __inline uint32x4_t
7191__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7192vcombine_u32 (uint32x2_t __a, uint32x2_t __b)
7193{
7194 return (uint32x4_t)__builtin_neon_vcombinev2si ((int32x2_t) __a, (int32x2_t) __b);
7195}
7196
5c493d36 7197__extension__ extern __inline uint64x2_t
7198__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7199vcombine_u64 (uint64x1_t __a, uint64x1_t __b)
7200{
7201 return (uint64x2_t)__builtin_neon_vcombinedi ((int64x1_t) __a, (int64x1_t) __b);
7202}
7203
5c493d36 7204__extension__ extern __inline poly8x16_t
7205__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7206vcombine_p8 (poly8x8_t __a, poly8x8_t __b)
7207{
7208 return (poly8x16_t)__builtin_neon_vcombinev8qi ((int8x8_t) __a, (int8x8_t) __b);
7209}
7210
5c493d36 7211__extension__ extern __inline poly16x8_t
7212__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7213vcombine_p16 (poly16x4_t __a, poly16x4_t __b)
7214{
7215 return (poly16x8_t)__builtin_neon_vcombinev4hi ((int16x4_t) __a, (int16x4_t) __b);
7216}
7217
dcbc6813 7218#pragma GCC push_options
7219#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 7220__extension__ extern __inline poly64x1_t
7221__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 7222vget_high_p64 (poly64x2_t __a)
7223{
7224 return (poly64x1_t)__builtin_neon_vget_highv2di ((int64x2_t) __a);
7225}
7226
dcbc6813 7227#pragma GCC pop_options
5c493d36 7228__extension__ extern __inline int8x8_t
7229__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7230vget_high_s8 (int8x16_t __a)
7231{
7232 return (int8x8_t)__builtin_neon_vget_highv16qi (__a);
7233}
7234
5c493d36 7235__extension__ extern __inline int16x4_t
7236__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7237vget_high_s16 (int16x8_t __a)
7238{
7239 return (int16x4_t)__builtin_neon_vget_highv8hi (__a);
7240}
7241
5c493d36 7242__extension__ extern __inline int32x2_t
7243__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7244vget_high_s32 (int32x4_t __a)
7245{
7246 return (int32x2_t)__builtin_neon_vget_highv4si (__a);
7247}
7248
5c493d36 7249__extension__ extern __inline int64x1_t
7250__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7251vget_high_s64 (int64x2_t __a)
7252{
7253 return (int64x1_t)__builtin_neon_vget_highv2di (__a);
7254}
7255
fb5f110d 7256#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 7257__extension__ extern __inline float16x4_t
7258__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 7259vget_high_f16 (float16x8_t __a)
7260{
7261 return __builtin_neon_vget_highv8hf (__a);
7262}
7263#endif
7264
5c493d36 7265__extension__ extern __inline float32x2_t
7266__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7267vget_high_f32 (float32x4_t __a)
7268{
7269 return (float32x2_t)__builtin_neon_vget_highv4sf (__a);
7270}
7271
5c493d36 7272__extension__ extern __inline uint8x8_t
7273__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7274vget_high_u8 (uint8x16_t __a)
7275{
7276 return (uint8x8_t)__builtin_neon_vget_highv16qi ((int8x16_t) __a);
7277}
7278
5c493d36 7279__extension__ extern __inline uint16x4_t
7280__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7281vget_high_u16 (uint16x8_t __a)
7282{
7283 return (uint16x4_t)__builtin_neon_vget_highv8hi ((int16x8_t) __a);
7284}
7285
5c493d36 7286__extension__ extern __inline uint32x2_t
7287__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7288vget_high_u32 (uint32x4_t __a)
7289{
7290 return (uint32x2_t)__builtin_neon_vget_highv4si ((int32x4_t) __a);
7291}
7292
5c493d36 7293__extension__ extern __inline uint64x1_t
7294__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7295vget_high_u64 (uint64x2_t __a)
7296{
7297 return (uint64x1_t)__builtin_neon_vget_highv2di ((int64x2_t) __a);
7298}
7299
5c493d36 7300__extension__ extern __inline poly8x8_t
7301__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7302vget_high_p8 (poly8x16_t __a)
7303{
7304 return (poly8x8_t)__builtin_neon_vget_highv16qi ((int8x16_t) __a);
7305}
7306
5c493d36 7307__extension__ extern __inline poly16x4_t
7308__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7309vget_high_p16 (poly16x8_t __a)
7310{
7311 return (poly16x4_t)__builtin_neon_vget_highv8hi ((int16x8_t) __a);
7312}
7313
5c493d36 7314__extension__ extern __inline int8x8_t
7315__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7316vget_low_s8 (int8x16_t __a)
7317{
7318 return (int8x8_t)__builtin_neon_vget_lowv16qi (__a);
7319}
7320
5c493d36 7321__extension__ extern __inline int16x4_t
7322__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7323vget_low_s16 (int16x8_t __a)
7324{
7325 return (int16x4_t)__builtin_neon_vget_lowv8hi (__a);
7326}
7327
5c493d36 7328__extension__ extern __inline int32x2_t
7329__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7330vget_low_s32 (int32x4_t __a)
7331{
7332 return (int32x2_t)__builtin_neon_vget_lowv4si (__a);
7333}
7334
fb5f110d 7335#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 7336__extension__ extern __inline float16x4_t
7337__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 7338vget_low_f16 (float16x8_t __a)
7339{
7340 return __builtin_neon_vget_lowv8hf (__a);
7341}
7342#endif
7343
5c493d36 7344__extension__ extern __inline float32x2_t
7345__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7346vget_low_f32 (float32x4_t __a)
7347{
7348 return (float32x2_t)__builtin_neon_vget_lowv4sf (__a);
7349}
7350
5c493d36 7351__extension__ extern __inline uint8x8_t
7352__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7353vget_low_u8 (uint8x16_t __a)
7354{
7355 return (uint8x8_t)__builtin_neon_vget_lowv16qi ((int8x16_t) __a);
7356}
7357
5c493d36 7358__extension__ extern __inline uint16x4_t
7359__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7360vget_low_u16 (uint16x8_t __a)
7361{
7362 return (uint16x4_t)__builtin_neon_vget_lowv8hi ((int16x8_t) __a);
7363}
7364
5c493d36 7365__extension__ extern __inline uint32x2_t
7366__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7367vget_low_u32 (uint32x4_t __a)
7368{
7369 return (uint32x2_t)__builtin_neon_vget_lowv4si ((int32x4_t) __a);
7370}
7371
5c493d36 7372__extension__ extern __inline poly8x8_t
7373__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7374vget_low_p8 (poly8x16_t __a)
7375{
7376 return (poly8x8_t)__builtin_neon_vget_lowv16qi ((int8x16_t) __a);
7377}
7378
5c493d36 7379__extension__ extern __inline poly16x4_t
7380__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7381vget_low_p16 (poly16x8_t __a)
7382{
7383 return (poly16x4_t)__builtin_neon_vget_lowv8hi ((int16x8_t) __a);
7384}
7385
dcbc6813 7386#pragma GCC push_options
7387#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 7388__extension__ extern __inline poly64x1_t
7389__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 7390vget_low_p64 (poly64x2_t __a)
7391{
7392 return (poly64x1_t)__builtin_neon_vget_lowv2di ((int64x2_t) __a);
7393}
7394
dcbc6813 7395#pragma GCC pop_options
5c493d36 7396__extension__ extern __inline int64x1_t
7397__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e2669ea7 7398vget_low_s64 (int64x2_t __a)
7399{
7400 return (int64x1_t)__builtin_neon_vget_lowv2di (__a);
7401}
7402
5c493d36 7403__extension__ extern __inline uint64x1_t
7404__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e2669ea7 7405vget_low_u64 (uint64x2_t __a)
7406{
7407 return (uint64x1_t)__builtin_neon_vget_lowv2di ((int64x2_t) __a);
7408}
7409
5c493d36 7410__extension__ extern __inline int32x2_t
7411__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7412vcvt_s32_f32 (float32x2_t __a)
7413{
25a124b3 7414 return (int32x2_t)__builtin_neon_vcvtsv2sf (__a);
d98a3884 7415}
7416
5c493d36 7417__extension__ extern __inline float32x2_t
7418__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7419vcvt_f32_s32 (int32x2_t __a)
7420{
25a124b3 7421 return (float32x2_t)__builtin_neon_vcvtsv2si (__a);
d98a3884 7422}
7423
5c493d36 7424__extension__ extern __inline float32x2_t
7425__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7426vcvt_f32_u32 (uint32x2_t __a)
7427{
25a124b3 7428 return (float32x2_t)__builtin_neon_vcvtuv2si ((int32x2_t) __a);
d98a3884 7429}
7430
5c493d36 7431__extension__ extern __inline uint32x2_t
7432__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7433vcvt_u32_f32 (float32x2_t __a)
7434{
25a124b3 7435 return (uint32x2_t)__builtin_neon_vcvtuv2sf (__a);
d98a3884 7436}
7437
5c493d36 7438__extension__ extern __inline int32x4_t
7439__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7440vcvtq_s32_f32 (float32x4_t __a)
7441{
25a124b3 7442 return (int32x4_t)__builtin_neon_vcvtsv4sf (__a);
d98a3884 7443}
7444
5c493d36 7445__extension__ extern __inline float32x4_t
7446__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7447vcvtq_f32_s32 (int32x4_t __a)
7448{
25a124b3 7449 return (float32x4_t)__builtin_neon_vcvtsv4si (__a);
d98a3884 7450}
7451
5c493d36 7452__extension__ extern __inline float32x4_t
7453__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7454vcvtq_f32_u32 (uint32x4_t __a)
7455{
25a124b3 7456 return (float32x4_t)__builtin_neon_vcvtuv4si ((int32x4_t) __a);
d98a3884 7457}
7458
5c493d36 7459__extension__ extern __inline uint32x4_t
7460__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7461vcvtq_u32_f32 (float32x4_t __a)
7462{
25a124b3 7463 return (uint32x4_t)__builtin_neon_vcvtuv4sf (__a);
d98a3884 7464}
7465
dcbc6813 7466#pragma GCC push_options
7467#pragma GCC target ("fpu=neon-fp16")
481aa322 7468#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 7469__extension__ extern __inline float16x4_t
7470__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8518cada 7471vcvt_f16_f32 (float32x4_t __a)
7472{
7473 return (float16x4_t)__builtin_neon_vcvtv4hfv4sf (__a);
7474}
8518cada 7475#endif
481aa322 7476
481aa322 7477#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 7478__extension__ extern __inline float32x4_t
7479__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
8518cada 7480vcvt_f32_f16 (float16x4_t __a)
7481{
7482 return (float32x4_t)__builtin_neon_vcvtv4sfv4hf (__a);
7483}
8518cada 7484#endif
dcbc6813 7485#pragma GCC pop_options
481aa322 7486
5c493d36 7487__extension__ extern __inline int32x2_t
7488__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7489vcvt_n_s32_f32 (float32x2_t __a, const int __b)
7490{
25a124b3 7491 return (int32x2_t)__builtin_neon_vcvts_nv2sf (__a, __b);
d98a3884 7492}
7493
5c493d36 7494__extension__ extern __inline float32x2_t
7495__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7496vcvt_n_f32_s32 (int32x2_t __a, const int __b)
7497{
25a124b3 7498 return (float32x2_t)__builtin_neon_vcvts_nv2si (__a, __b);
d98a3884 7499}
7500
5c493d36 7501__extension__ extern __inline float32x2_t
7502__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7503vcvt_n_f32_u32 (uint32x2_t __a, const int __b)
7504{
25a124b3 7505 return (float32x2_t)__builtin_neon_vcvtu_nv2si ((int32x2_t) __a, __b);
d98a3884 7506}
7507
5c493d36 7508__extension__ extern __inline uint32x2_t
7509__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7510vcvt_n_u32_f32 (float32x2_t __a, const int __b)
7511{
25a124b3 7512 return (uint32x2_t)__builtin_neon_vcvtu_nv2sf (__a, __b);
d98a3884 7513}
7514
5c493d36 7515__extension__ extern __inline int32x4_t
7516__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7517vcvtq_n_s32_f32 (float32x4_t __a, const int __b)
7518{
25a124b3 7519 return (int32x4_t)__builtin_neon_vcvts_nv4sf (__a, __b);
d98a3884 7520}
7521
5c493d36 7522__extension__ extern __inline float32x4_t
7523__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7524vcvtq_n_f32_s32 (int32x4_t __a, const int __b)
7525{
25a124b3 7526 return (float32x4_t)__builtin_neon_vcvts_nv4si (__a, __b);
d98a3884 7527}
7528
5c493d36 7529__extension__ extern __inline float32x4_t
7530__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7531vcvtq_n_f32_u32 (uint32x4_t __a, const int __b)
7532{
25a124b3 7533 return (float32x4_t)__builtin_neon_vcvtu_nv4si ((int32x4_t) __a, __b);
d98a3884 7534}
7535
5c493d36 7536__extension__ extern __inline uint32x4_t
7537__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7538vcvtq_n_u32_f32 (float32x4_t __a, const int __b)
7539{
25a124b3 7540 return (uint32x4_t)__builtin_neon_vcvtu_nv4sf (__a, __b);
d98a3884 7541}
7542
5c493d36 7543__extension__ extern __inline int8x8_t
7544__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7545vmovn_s16 (int16x8_t __a)
7546{
25a124b3 7547 return (int8x8_t)__builtin_neon_vmovnv8hi (__a);
d98a3884 7548}
7549
5c493d36 7550__extension__ extern __inline int16x4_t
7551__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7552vmovn_s32 (int32x4_t __a)
7553{
25a124b3 7554 return (int16x4_t)__builtin_neon_vmovnv4si (__a);
d98a3884 7555}
7556
5c493d36 7557__extension__ extern __inline int32x2_t
7558__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7559vmovn_s64 (int64x2_t __a)
7560{
25a124b3 7561 return (int32x2_t)__builtin_neon_vmovnv2di (__a);
d98a3884 7562}
7563
5c493d36 7564__extension__ extern __inline uint8x8_t
7565__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7566vmovn_u16 (uint16x8_t __a)
7567{
25a124b3 7568 return (uint8x8_t)__builtin_neon_vmovnv8hi ((int16x8_t) __a);
d98a3884 7569}
7570
5c493d36 7571__extension__ extern __inline uint16x4_t
7572__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7573vmovn_u32 (uint32x4_t __a)
7574{
25a124b3 7575 return (uint16x4_t)__builtin_neon_vmovnv4si ((int32x4_t) __a);
d98a3884 7576}
7577
5c493d36 7578__extension__ extern __inline uint32x2_t
7579__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7580vmovn_u64 (uint64x2_t __a)
7581{
25a124b3 7582 return (uint32x2_t)__builtin_neon_vmovnv2di ((int64x2_t) __a);
d98a3884 7583}
7584
5c493d36 7585__extension__ extern __inline int8x8_t
7586__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7587vqmovn_s16 (int16x8_t __a)
7588{
25a124b3 7589 return (int8x8_t)__builtin_neon_vqmovnsv8hi (__a);
d98a3884 7590}
7591
5c493d36 7592__extension__ extern __inline int16x4_t
7593__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7594vqmovn_s32 (int32x4_t __a)
7595{
25a124b3 7596 return (int16x4_t)__builtin_neon_vqmovnsv4si (__a);
d98a3884 7597}
7598
5c493d36 7599__extension__ extern __inline int32x2_t
7600__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7601vqmovn_s64 (int64x2_t __a)
7602{
25a124b3 7603 return (int32x2_t)__builtin_neon_vqmovnsv2di (__a);
d98a3884 7604}
7605
5c493d36 7606__extension__ extern __inline uint8x8_t
7607__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7608vqmovn_u16 (uint16x8_t __a)
7609{
25a124b3 7610 return (uint8x8_t)__builtin_neon_vqmovnuv8hi ((int16x8_t) __a);
d98a3884 7611}
7612
5c493d36 7613__extension__ extern __inline uint16x4_t
7614__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7615vqmovn_u32 (uint32x4_t __a)
7616{
25a124b3 7617 return (uint16x4_t)__builtin_neon_vqmovnuv4si ((int32x4_t) __a);
d98a3884 7618}
7619
5c493d36 7620__extension__ extern __inline uint32x2_t
7621__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7622vqmovn_u64 (uint64x2_t __a)
7623{
25a124b3 7624 return (uint32x2_t)__builtin_neon_vqmovnuv2di ((int64x2_t) __a);
d98a3884 7625}
7626
5c493d36 7627__extension__ extern __inline uint8x8_t
7628__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7629vqmovun_s16 (int16x8_t __a)
7630{
25a124b3 7631 return (uint8x8_t)__builtin_neon_vqmovunv8hi (__a);
d98a3884 7632}
7633
5c493d36 7634__extension__ extern __inline uint16x4_t
7635__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7636vqmovun_s32 (int32x4_t __a)
7637{
25a124b3 7638 return (uint16x4_t)__builtin_neon_vqmovunv4si (__a);
d98a3884 7639}
7640
5c493d36 7641__extension__ extern __inline uint32x2_t
7642__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7643vqmovun_s64 (int64x2_t __a)
7644{
25a124b3 7645 return (uint32x2_t)__builtin_neon_vqmovunv2di (__a);
d98a3884 7646}
7647
5c493d36 7648__extension__ extern __inline int16x8_t
7649__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7650vmovl_s8 (int8x8_t __a)
7651{
25a124b3 7652 return (int16x8_t)__builtin_neon_vmovlsv8qi (__a);
d98a3884 7653}
7654
5c493d36 7655__extension__ extern __inline int32x4_t
7656__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7657vmovl_s16 (int16x4_t __a)
7658{
25a124b3 7659 return (int32x4_t)__builtin_neon_vmovlsv4hi (__a);
d98a3884 7660}
7661
5c493d36 7662__extension__ extern __inline int64x2_t
7663__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7664vmovl_s32 (int32x2_t __a)
7665{
25a124b3 7666 return (int64x2_t)__builtin_neon_vmovlsv2si (__a);
d98a3884 7667}
7668
5c493d36 7669__extension__ extern __inline uint16x8_t
7670__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7671vmovl_u8 (uint8x8_t __a)
7672{
25a124b3 7673 return (uint16x8_t)__builtin_neon_vmovluv8qi ((int8x8_t) __a);
d98a3884 7674}
7675
5c493d36 7676__extension__ extern __inline uint32x4_t
7677__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7678vmovl_u16 (uint16x4_t __a)
7679{
25a124b3 7680 return (uint32x4_t)__builtin_neon_vmovluv4hi ((int16x4_t) __a);
d98a3884 7681}
7682
5c493d36 7683__extension__ extern __inline uint64x2_t
7684__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7685vmovl_u32 (uint32x2_t __a)
7686{
25a124b3 7687 return (uint64x2_t)__builtin_neon_vmovluv2si ((int32x2_t) __a);
d98a3884 7688}
7689
5c493d36 7690__extension__ extern __inline int8x8_t
7691__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7692vtbl1_s8 (int8x8_t __a, int8x8_t __b)
7693{
7694 return (int8x8_t)__builtin_neon_vtbl1v8qi (__a, __b);
7695}
7696
5c493d36 7697__extension__ extern __inline uint8x8_t
7698__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7699vtbl1_u8 (uint8x8_t __a, uint8x8_t __b)
7700{
7701 return (uint8x8_t)__builtin_neon_vtbl1v8qi ((int8x8_t) __a, (int8x8_t) __b);
7702}
7703
5c493d36 7704__extension__ extern __inline poly8x8_t
7705__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7706vtbl1_p8 (poly8x8_t __a, uint8x8_t __b)
7707{
7708 return (poly8x8_t)__builtin_neon_vtbl1v8qi ((int8x8_t) __a, (int8x8_t) __b);
7709}
7710
5c493d36 7711__extension__ extern __inline int8x8_t
7712__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7713vtbl2_s8 (int8x8x2_t __a, int8x8_t __b)
7714{
7715 union { int8x8x2_t __i; __builtin_neon_ti __o; } __au = { __a };
7716 return (int8x8_t)__builtin_neon_vtbl2v8qi (__au.__o, __b);
7717}
7718
5c493d36 7719__extension__ extern __inline uint8x8_t
7720__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7721vtbl2_u8 (uint8x8x2_t __a, uint8x8_t __b)
7722{
7723 union { uint8x8x2_t __i; __builtin_neon_ti __o; } __au = { __a };
7724 return (uint8x8_t)__builtin_neon_vtbl2v8qi (__au.__o, (int8x8_t) __b);
7725}
7726
5c493d36 7727__extension__ extern __inline poly8x8_t
7728__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7729vtbl2_p8 (poly8x8x2_t __a, uint8x8_t __b)
7730{
7731 union { poly8x8x2_t __i; __builtin_neon_ti __o; } __au = { __a };
7732 return (poly8x8_t)__builtin_neon_vtbl2v8qi (__au.__o, (int8x8_t) __b);
7733}
7734
5c493d36 7735__extension__ extern __inline int8x8_t
7736__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7737vtbl3_s8 (int8x8x3_t __a, int8x8_t __b)
7738{
7739 union { int8x8x3_t __i; __builtin_neon_ei __o; } __au = { __a };
7740 return (int8x8_t)__builtin_neon_vtbl3v8qi (__au.__o, __b);
7741}
7742
5c493d36 7743__extension__ extern __inline uint8x8_t
7744__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7745vtbl3_u8 (uint8x8x3_t __a, uint8x8_t __b)
7746{
7747 union { uint8x8x3_t __i; __builtin_neon_ei __o; } __au = { __a };
7748 return (uint8x8_t)__builtin_neon_vtbl3v8qi (__au.__o, (int8x8_t) __b);
7749}
7750
5c493d36 7751__extension__ extern __inline poly8x8_t
7752__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7753vtbl3_p8 (poly8x8x3_t __a, uint8x8_t __b)
7754{
7755 union { poly8x8x3_t __i; __builtin_neon_ei __o; } __au = { __a };
7756 return (poly8x8_t)__builtin_neon_vtbl3v8qi (__au.__o, (int8x8_t) __b);
7757}
7758
5c493d36 7759__extension__ extern __inline int8x8_t
7760__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7761vtbl4_s8 (int8x8x4_t __a, int8x8_t __b)
7762{
7763 union { int8x8x4_t __i; __builtin_neon_oi __o; } __au = { __a };
7764 return (int8x8_t)__builtin_neon_vtbl4v8qi (__au.__o, __b);
7765}
7766
5c493d36 7767__extension__ extern __inline uint8x8_t
7768__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7769vtbl4_u8 (uint8x8x4_t __a, uint8x8_t __b)
7770{
7771 union { uint8x8x4_t __i; __builtin_neon_oi __o; } __au = { __a };
7772 return (uint8x8_t)__builtin_neon_vtbl4v8qi (__au.__o, (int8x8_t) __b);
7773}
7774
5c493d36 7775__extension__ extern __inline poly8x8_t
7776__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7777vtbl4_p8 (poly8x8x4_t __a, uint8x8_t __b)
7778{
7779 union { poly8x8x4_t __i; __builtin_neon_oi __o; } __au = { __a };
7780 return (poly8x8_t)__builtin_neon_vtbl4v8qi (__au.__o, (int8x8_t) __b);
7781}
7782
5c493d36 7783__extension__ extern __inline int8x8_t
7784__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7785vtbx1_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
7786{
7787 return (int8x8_t)__builtin_neon_vtbx1v8qi (__a, __b, __c);
7788}
7789
5c493d36 7790__extension__ extern __inline uint8x8_t
7791__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7792vtbx1_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
7793{
7794 return (uint8x8_t)__builtin_neon_vtbx1v8qi ((int8x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
7795}
7796
5c493d36 7797__extension__ extern __inline poly8x8_t
7798__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7799vtbx1_p8 (poly8x8_t __a, poly8x8_t __b, uint8x8_t __c)
7800{
7801 return (poly8x8_t)__builtin_neon_vtbx1v8qi ((int8x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
7802}
7803
5c493d36 7804__extension__ extern __inline int8x8_t
7805__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7806vtbx2_s8 (int8x8_t __a, int8x8x2_t __b, int8x8_t __c)
7807{
7808 union { int8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
7809 return (int8x8_t)__builtin_neon_vtbx2v8qi (__a, __bu.__o, __c);
7810}
7811
5c493d36 7812__extension__ extern __inline uint8x8_t
7813__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7814vtbx2_u8 (uint8x8_t __a, uint8x8x2_t __b, uint8x8_t __c)
7815{
7816 union { uint8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
7817 return (uint8x8_t)__builtin_neon_vtbx2v8qi ((int8x8_t) __a, __bu.__o, (int8x8_t) __c);
7818}
7819
5c493d36 7820__extension__ extern __inline poly8x8_t
7821__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7822vtbx2_p8 (poly8x8_t __a, poly8x8x2_t __b, uint8x8_t __c)
7823{
7824 union { poly8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
7825 return (poly8x8_t)__builtin_neon_vtbx2v8qi ((int8x8_t) __a, __bu.__o, (int8x8_t) __c);
7826}
7827
5c493d36 7828__extension__ extern __inline int8x8_t
7829__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7830vtbx3_s8 (int8x8_t __a, int8x8x3_t __b, int8x8_t __c)
7831{
7832 union { int8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
7833 return (int8x8_t)__builtin_neon_vtbx3v8qi (__a, __bu.__o, __c);
7834}
7835
5c493d36 7836__extension__ extern __inline uint8x8_t
7837__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7838vtbx3_u8 (uint8x8_t __a, uint8x8x3_t __b, uint8x8_t __c)
7839{
7840 union { uint8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
7841 return (uint8x8_t)__builtin_neon_vtbx3v8qi ((int8x8_t) __a, __bu.__o, (int8x8_t) __c);
7842}
7843
5c493d36 7844__extension__ extern __inline poly8x8_t
7845__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7846vtbx3_p8 (poly8x8_t __a, poly8x8x3_t __b, uint8x8_t __c)
7847{
7848 union { poly8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
7849 return (poly8x8_t)__builtin_neon_vtbx3v8qi ((int8x8_t) __a, __bu.__o, (int8x8_t) __c);
7850}
7851
5c493d36 7852__extension__ extern __inline int8x8_t
7853__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7854vtbx4_s8 (int8x8_t __a, int8x8x4_t __b, int8x8_t __c)
7855{
7856 union { int8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
7857 return (int8x8_t)__builtin_neon_vtbx4v8qi (__a, __bu.__o, __c);
7858}
7859
5c493d36 7860__extension__ extern __inline uint8x8_t
7861__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7862vtbx4_u8 (uint8x8_t __a, uint8x8x4_t __b, uint8x8_t __c)
7863{
7864 union { uint8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
7865 return (uint8x8_t)__builtin_neon_vtbx4v8qi ((int8x8_t) __a, __bu.__o, (int8x8_t) __c);
7866}
7867
5c493d36 7868__extension__ extern __inline poly8x8_t
7869__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7870vtbx4_p8 (poly8x8_t __a, poly8x8x4_t __b, uint8x8_t __c)
7871{
7872 union { poly8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
7873 return (poly8x8_t)__builtin_neon_vtbx4v8qi ((int8x8_t) __a, __bu.__o, (int8x8_t) __c);
7874}
7875
5c493d36 7876__extension__ extern __inline int16x4_t
7877__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7878vmul_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)
7879{
25a124b3 7880 return (int16x4_t)__builtin_neon_vmul_lanev4hi (__a, __b, __c);
d98a3884 7881}
7882
5c493d36 7883__extension__ extern __inline int32x2_t
7884__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7885vmul_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)
7886{
25a124b3 7887 return (int32x2_t)__builtin_neon_vmul_lanev2si (__a, __b, __c);
d98a3884 7888}
7889
5c493d36 7890__extension__ extern __inline float32x2_t
7891__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7892vmul_lane_f32 (float32x2_t __a, float32x2_t __b, const int __c)
7893{
25a124b3 7894 return (float32x2_t)__builtin_neon_vmul_lanev2sf (__a, __b, __c);
d98a3884 7895}
7896
5c493d36 7897__extension__ extern __inline uint16x4_t
7898__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7899vmul_lane_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
7900{
25a124b3 7901 return (uint16x4_t)__builtin_neon_vmul_lanev4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
d98a3884 7902}
7903
5c493d36 7904__extension__ extern __inline uint32x2_t
7905__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7906vmul_lane_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
7907{
25a124b3 7908 return (uint32x2_t)__builtin_neon_vmul_lanev2si ((int32x2_t) __a, (int32x2_t) __b, __c);
d98a3884 7909}
7910
5c493d36 7911__extension__ extern __inline int16x8_t
7912__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7913vmulq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __c)
7914{
25a124b3 7915 return (int16x8_t)__builtin_neon_vmul_lanev8hi (__a, __b, __c);
d98a3884 7916}
7917
5c493d36 7918__extension__ extern __inline int32x4_t
7919__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7920vmulq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __c)
7921{
25a124b3 7922 return (int32x4_t)__builtin_neon_vmul_lanev4si (__a, __b, __c);
d98a3884 7923}
7924
5c493d36 7925__extension__ extern __inline float32x4_t
7926__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7927vmulq_lane_f32 (float32x4_t __a, float32x2_t __b, const int __c)
7928{
25a124b3 7929 return (float32x4_t)__builtin_neon_vmul_lanev4sf (__a, __b, __c);
d98a3884 7930}
7931
5c493d36 7932__extension__ extern __inline uint16x8_t
7933__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7934vmulq_lane_u16 (uint16x8_t __a, uint16x4_t __b, const int __c)
7935{
25a124b3 7936 return (uint16x8_t)__builtin_neon_vmul_lanev8hi ((int16x8_t) __a, (int16x4_t) __b, __c);
d98a3884 7937}
7938
5c493d36 7939__extension__ extern __inline uint32x4_t
7940__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7941vmulq_lane_u32 (uint32x4_t __a, uint32x2_t __b, const int __c)
7942{
25a124b3 7943 return (uint32x4_t)__builtin_neon_vmul_lanev4si ((int32x4_t) __a, (int32x2_t) __b, __c);
d98a3884 7944}
7945
5c493d36 7946__extension__ extern __inline int16x4_t
7947__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7948vmla_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
7949{
25a124b3 7950 return (int16x4_t)__builtin_neon_vmla_lanev4hi (__a, __b, __c, __d);
d98a3884 7951}
7952
5c493d36 7953__extension__ extern __inline int32x2_t
7954__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7955vmla_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
7956{
25a124b3 7957 return (int32x2_t)__builtin_neon_vmla_lanev2si (__a, __b, __c, __d);
d98a3884 7958}
7959
5c493d36 7960__extension__ extern __inline float32x2_t
7961__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7962vmla_lane_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c, const int __d)
7963{
25a124b3 7964 return (float32x2_t)__builtin_neon_vmla_lanev2sf (__a, __b, __c, __d);
d98a3884 7965}
7966
5c493d36 7967__extension__ extern __inline uint16x4_t
7968__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7969vmla_lane_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c, const int __d)
7970{
25a124b3 7971 return (uint16x4_t)__builtin_neon_vmla_lanev4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c, __d);
d98a3884 7972}
7973
5c493d36 7974__extension__ extern __inline uint32x2_t
7975__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7976vmla_lane_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c, const int __d)
7977{
25a124b3 7978 return (uint32x2_t)__builtin_neon_vmla_lanev2si ((int32x2_t) __a, (int32x2_t) __b, (int32x2_t) __c, __d);
d98a3884 7979}
7980
5c493d36 7981__extension__ extern __inline int16x8_t
7982__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7983vmlaq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d)
7984{
25a124b3 7985 return (int16x8_t)__builtin_neon_vmla_lanev8hi (__a, __b, __c, __d);
d98a3884 7986}
7987
5c493d36 7988__extension__ extern __inline int32x4_t
7989__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7990vmlaq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d)
7991{
25a124b3 7992 return (int32x4_t)__builtin_neon_vmla_lanev4si (__a, __b, __c, __d);
d98a3884 7993}
7994
5c493d36 7995__extension__ extern __inline float32x4_t
7996__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 7997vmlaq_lane_f32 (float32x4_t __a, float32x4_t __b, float32x2_t __c, const int __d)
7998{
25a124b3 7999 return (float32x4_t)__builtin_neon_vmla_lanev4sf (__a, __b, __c, __d);
d98a3884 8000}
8001
5c493d36 8002__extension__ extern __inline uint16x8_t
8003__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8004vmlaq_lane_u16 (uint16x8_t __a, uint16x8_t __b, uint16x4_t __c, const int __d)
8005{
25a124b3 8006 return (uint16x8_t)__builtin_neon_vmla_lanev8hi ((int16x8_t) __a, (int16x8_t) __b, (int16x4_t) __c, __d);
d98a3884 8007}
8008
5c493d36 8009__extension__ extern __inline uint32x4_t
8010__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8011vmlaq_lane_u32 (uint32x4_t __a, uint32x4_t __b, uint32x2_t __c, const int __d)
8012{
25a124b3 8013 return (uint32x4_t)__builtin_neon_vmla_lanev4si ((int32x4_t) __a, (int32x4_t) __b, (int32x2_t) __c, __d);
d98a3884 8014}
8015
5c493d36 8016__extension__ extern __inline int32x4_t
8017__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8018vmlal_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
8019{
25a124b3 8020 return (int32x4_t)__builtin_neon_vmlals_lanev4hi (__a, __b, __c, __d);
d98a3884 8021}
8022
5c493d36 8023__extension__ extern __inline int64x2_t
8024__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8025vmlal_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
8026{
25a124b3 8027 return (int64x2_t)__builtin_neon_vmlals_lanev2si (__a, __b, __c, __d);
d98a3884 8028}
8029
5c493d36 8030__extension__ extern __inline uint32x4_t
8031__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8032vmlal_lane_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c, const int __d)
8033{
25a124b3 8034 return (uint32x4_t)__builtin_neon_vmlalu_lanev4hi ((int32x4_t) __a, (int16x4_t) __b, (int16x4_t) __c, __d);
d98a3884 8035}
8036
5c493d36 8037__extension__ extern __inline uint64x2_t
8038__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8039vmlal_lane_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c, const int __d)
8040{
25a124b3 8041 return (uint64x2_t)__builtin_neon_vmlalu_lanev2si ((int64x2_t) __a, (int32x2_t) __b, (int32x2_t) __c, __d);
d98a3884 8042}
8043
5c493d36 8044__extension__ extern __inline int32x4_t
8045__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8046vqdmlal_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
8047{
25a124b3 8048 return (int32x4_t)__builtin_neon_vqdmlal_lanev4hi (__a, __b, __c, __d);
d98a3884 8049}
8050
5c493d36 8051__extension__ extern __inline int64x2_t
8052__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8053vqdmlal_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
8054{
25a124b3 8055 return (int64x2_t)__builtin_neon_vqdmlal_lanev2si (__a, __b, __c, __d);
d98a3884 8056}
8057
5c493d36 8058__extension__ extern __inline int16x4_t
8059__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8060vmls_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
8061{
25a124b3 8062 return (int16x4_t)__builtin_neon_vmls_lanev4hi (__a, __b, __c, __d);
d98a3884 8063}
8064
5c493d36 8065__extension__ extern __inline int32x2_t
8066__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8067vmls_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
8068{
25a124b3 8069 return (int32x2_t)__builtin_neon_vmls_lanev2si (__a, __b, __c, __d);
d98a3884 8070}
8071
5c493d36 8072__extension__ extern __inline float32x2_t
8073__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8074vmls_lane_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c, const int __d)
8075{
25a124b3 8076 return (float32x2_t)__builtin_neon_vmls_lanev2sf (__a, __b, __c, __d);
d98a3884 8077}
8078
5c493d36 8079__extension__ extern __inline uint16x4_t
8080__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8081vmls_lane_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c, const int __d)
8082{
25a124b3 8083 return (uint16x4_t)__builtin_neon_vmls_lanev4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c, __d);
d98a3884 8084}
8085
5c493d36 8086__extension__ extern __inline uint32x2_t
8087__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8088vmls_lane_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c, const int __d)
8089{
25a124b3 8090 return (uint32x2_t)__builtin_neon_vmls_lanev2si ((int32x2_t) __a, (int32x2_t) __b, (int32x2_t) __c, __d);
d98a3884 8091}
8092
5c493d36 8093__extension__ extern __inline int16x8_t
8094__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8095vmlsq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d)
8096{
25a124b3 8097 return (int16x8_t)__builtin_neon_vmls_lanev8hi (__a, __b, __c, __d);
d98a3884 8098}
8099
5c493d36 8100__extension__ extern __inline int32x4_t
8101__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8102vmlsq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d)
8103{
25a124b3 8104 return (int32x4_t)__builtin_neon_vmls_lanev4si (__a, __b, __c, __d);
d98a3884 8105}
8106
5c493d36 8107__extension__ extern __inline float32x4_t
8108__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8109vmlsq_lane_f32 (float32x4_t __a, float32x4_t __b, float32x2_t __c, const int __d)
8110{
25a124b3 8111 return (float32x4_t)__builtin_neon_vmls_lanev4sf (__a, __b, __c, __d);
d98a3884 8112}
8113
5c493d36 8114__extension__ extern __inline uint16x8_t
8115__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8116vmlsq_lane_u16 (uint16x8_t __a, uint16x8_t __b, uint16x4_t __c, const int __d)
8117{
25a124b3 8118 return (uint16x8_t)__builtin_neon_vmls_lanev8hi ((int16x8_t) __a, (int16x8_t) __b, (int16x4_t) __c, __d);
d98a3884 8119}
8120
5c493d36 8121__extension__ extern __inline uint32x4_t
8122__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8123vmlsq_lane_u32 (uint32x4_t __a, uint32x4_t __b, uint32x2_t __c, const int __d)
8124{
25a124b3 8125 return (uint32x4_t)__builtin_neon_vmls_lanev4si ((int32x4_t) __a, (int32x4_t) __b, (int32x2_t) __c, __d);
d98a3884 8126}
8127
5c493d36 8128__extension__ extern __inline int32x4_t
8129__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8130vmlsl_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
8131{
25a124b3 8132 return (int32x4_t)__builtin_neon_vmlsls_lanev4hi (__a, __b, __c, __d);
d98a3884 8133}
8134
5c493d36 8135__extension__ extern __inline int64x2_t
8136__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8137vmlsl_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
8138{
25a124b3 8139 return (int64x2_t)__builtin_neon_vmlsls_lanev2si (__a, __b, __c, __d);
d98a3884 8140}
8141
5c493d36 8142__extension__ extern __inline uint32x4_t
8143__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8144vmlsl_lane_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c, const int __d)
8145{
25a124b3 8146 return (uint32x4_t)__builtin_neon_vmlslu_lanev4hi ((int32x4_t) __a, (int16x4_t) __b, (int16x4_t) __c, __d);
d98a3884 8147}
8148
5c493d36 8149__extension__ extern __inline uint64x2_t
8150__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8151vmlsl_lane_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c, const int __d)
8152{
25a124b3 8153 return (uint64x2_t)__builtin_neon_vmlslu_lanev2si ((int64x2_t) __a, (int32x2_t) __b, (int32x2_t) __c, __d);
d98a3884 8154}
8155
5c493d36 8156__extension__ extern __inline int32x4_t
8157__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8158vqdmlsl_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
8159{
25a124b3 8160 return (int32x4_t)__builtin_neon_vqdmlsl_lanev4hi (__a, __b, __c, __d);
d98a3884 8161}
8162
5c493d36 8163__extension__ extern __inline int64x2_t
8164__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8165vqdmlsl_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
8166{
25a124b3 8167 return (int64x2_t)__builtin_neon_vqdmlsl_lanev2si (__a, __b, __c, __d);
d98a3884 8168}
8169
5c493d36 8170__extension__ extern __inline int32x4_t
8171__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8172vmull_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)
8173{
25a124b3 8174 return (int32x4_t)__builtin_neon_vmulls_lanev4hi (__a, __b, __c);
d98a3884 8175}
8176
5c493d36 8177__extension__ extern __inline int64x2_t
8178__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8179vmull_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)
8180{
25a124b3 8181 return (int64x2_t)__builtin_neon_vmulls_lanev2si (__a, __b, __c);
d98a3884 8182}
8183
5c493d36 8184__extension__ extern __inline uint32x4_t
8185__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8186vmull_lane_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
8187{
25a124b3 8188 return (uint32x4_t)__builtin_neon_vmullu_lanev4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
d98a3884 8189}
8190
5c493d36 8191__extension__ extern __inline uint64x2_t
8192__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8193vmull_lane_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
8194{
25a124b3 8195 return (uint64x2_t)__builtin_neon_vmullu_lanev2si ((int32x2_t) __a, (int32x2_t) __b, __c);
d98a3884 8196}
8197
5c493d36 8198__extension__ extern __inline int32x4_t
8199__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8200vqdmull_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)
8201{
25a124b3 8202 return (int32x4_t)__builtin_neon_vqdmull_lanev4hi (__a, __b, __c);
d98a3884 8203}
8204
5c493d36 8205__extension__ extern __inline int64x2_t
8206__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8207vqdmull_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)
8208{
25a124b3 8209 return (int64x2_t)__builtin_neon_vqdmull_lanev2si (__a, __b, __c);
d98a3884 8210}
8211
5c493d36 8212__extension__ extern __inline int16x8_t
8213__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8214vqdmulhq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __c)
8215{
25a124b3 8216 return (int16x8_t)__builtin_neon_vqdmulh_lanev8hi (__a, __b, __c);
d98a3884 8217}
8218
5c493d36 8219__extension__ extern __inline int32x4_t
8220__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8221vqdmulhq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __c)
8222{
25a124b3 8223 return (int32x4_t)__builtin_neon_vqdmulh_lanev4si (__a, __b, __c);
d98a3884 8224}
8225
5c493d36 8226__extension__ extern __inline int16x4_t
8227__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8228vqdmulh_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)
8229{
25a124b3 8230 return (int16x4_t)__builtin_neon_vqdmulh_lanev4hi (__a, __b, __c);
d98a3884 8231}
8232
5c493d36 8233__extension__ extern __inline int32x2_t
8234__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8235vqdmulh_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)
8236{
25a124b3 8237 return (int32x2_t)__builtin_neon_vqdmulh_lanev2si (__a, __b, __c);
d98a3884 8238}
8239
5c493d36 8240__extension__ extern __inline int16x8_t
8241__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8242vqrdmulhq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __c)
8243{
25a124b3 8244 return (int16x8_t)__builtin_neon_vqrdmulh_lanev8hi (__a, __b, __c);
d98a3884 8245}
8246
5c493d36 8247__extension__ extern __inline int32x4_t
8248__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8249vqrdmulhq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __c)
8250{
25a124b3 8251 return (int32x4_t)__builtin_neon_vqrdmulh_lanev4si (__a, __b, __c);
d98a3884 8252}
8253
5c493d36 8254__extension__ extern __inline int16x4_t
8255__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8256vqrdmulh_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)
8257{
25a124b3 8258 return (int16x4_t)__builtin_neon_vqrdmulh_lanev4hi (__a, __b, __c);
d98a3884 8259}
8260
5c493d36 8261__extension__ extern __inline int32x2_t
8262__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8263vqrdmulh_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)
8264{
25a124b3 8265 return (int32x2_t)__builtin_neon_vqrdmulh_lanev2si (__a, __b, __c);
d98a3884 8266}
8267
b65f8d07 8268#ifdef __ARM_FEATURE_QRDMX
5c493d36 8269__extension__ extern __inline int16x8_t
8270__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
b65f8d07 8271vqrdmlahq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d)
8272{
8273 return (int16x8_t)__builtin_neon_vqrdmlah_lanev8hi (__a, __b, __c, __d);
8274}
8275
5c493d36 8276__extension__ extern __inline int32x4_t
8277__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
b65f8d07 8278vqrdmlahq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d)
8279{
8280 return (int32x4_t)__builtin_neon_vqrdmlah_lanev4si (__a, __b, __c, __d);
8281}
8282
5c493d36 8283__extension__ extern __inline int16x4_t
8284__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
b65f8d07 8285vqrdmlah_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
8286{
8287 return (int16x4_t)__builtin_neon_vqrdmlah_lanev4hi (__a, __b, __c, __d);
8288}
8289
5c493d36 8290__extension__ extern __inline int32x2_t
8291__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
b65f8d07 8292vqrdmlah_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
8293{
8294 return (int32x2_t)__builtin_neon_vqrdmlah_lanev2si (__a, __b, __c, __d);
8295}
8296
5c493d36 8297__extension__ extern __inline int16x8_t
8298__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
b65f8d07 8299vqrdmlshq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d)
8300{
8301 return (int16x8_t)__builtin_neon_vqrdmlsh_lanev8hi (__a, __b, __c, __d);
8302}
8303
5c493d36 8304__extension__ extern __inline int32x4_t
8305__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
b65f8d07 8306vqrdmlshq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d)
8307{
8308 return (int32x4_t)__builtin_neon_vqrdmlsh_lanev4si (__a, __b, __c, __d);
8309}
8310
5c493d36 8311__extension__ extern __inline int16x4_t
8312__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
b65f8d07 8313vqrdmlsh_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
8314{
8315 return (int16x4_t)__builtin_neon_vqrdmlsh_lanev4hi (__a, __b, __c, __d);
8316}
8317
5c493d36 8318__extension__ extern __inline int32x2_t
8319__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
b65f8d07 8320vqrdmlsh_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
8321{
8322 return (int32x2_t)__builtin_neon_vqrdmlsh_lanev2si (__a, __b, __c, __d);
8323}
8324#endif
8325
5c493d36 8326__extension__ extern __inline int16x4_t
8327__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8328vmul_n_s16 (int16x4_t __a, int16_t __b)
8329{
25a124b3 8330 return (int16x4_t)__builtin_neon_vmul_nv4hi (__a, (__builtin_neon_hi) __b);
d98a3884 8331}
8332
5c493d36 8333__extension__ extern __inline int32x2_t
8334__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8335vmul_n_s32 (int32x2_t __a, int32_t __b)
8336{
25a124b3 8337 return (int32x2_t)__builtin_neon_vmul_nv2si (__a, (__builtin_neon_si) __b);
d98a3884 8338}
8339
5c493d36 8340__extension__ extern __inline float32x2_t
8341__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8342vmul_n_f32 (float32x2_t __a, float32_t __b)
8343{
25a124b3 8344 return (float32x2_t)__builtin_neon_vmul_nv2sf (__a, (__builtin_neon_sf) __b);
d98a3884 8345}
8346
5c493d36 8347__extension__ extern __inline uint16x4_t
8348__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8349vmul_n_u16 (uint16x4_t __a, uint16_t __b)
8350{
25a124b3 8351 return (uint16x4_t)__builtin_neon_vmul_nv4hi ((int16x4_t) __a, (__builtin_neon_hi) __b);
d98a3884 8352}
8353
5c493d36 8354__extension__ extern __inline uint32x2_t
8355__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8356vmul_n_u32 (uint32x2_t __a, uint32_t __b)
8357{
25a124b3 8358 return (uint32x2_t)__builtin_neon_vmul_nv2si ((int32x2_t) __a, (__builtin_neon_si) __b);
d98a3884 8359}
8360
5c493d36 8361__extension__ extern __inline int16x8_t
8362__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8363vmulq_n_s16 (int16x8_t __a, int16_t __b)
8364{
25a124b3 8365 return (int16x8_t)__builtin_neon_vmul_nv8hi (__a, (__builtin_neon_hi) __b);
d98a3884 8366}
8367
5c493d36 8368__extension__ extern __inline int32x4_t
8369__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8370vmulq_n_s32 (int32x4_t __a, int32_t __b)
8371{
25a124b3 8372 return (int32x4_t)__builtin_neon_vmul_nv4si (__a, (__builtin_neon_si) __b);
d98a3884 8373}
8374
5c493d36 8375__extension__ extern __inline float32x4_t
8376__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8377vmulq_n_f32 (float32x4_t __a, float32_t __b)
8378{
25a124b3 8379 return (float32x4_t)__builtin_neon_vmul_nv4sf (__a, (__builtin_neon_sf) __b);
d98a3884 8380}
8381
5c493d36 8382__extension__ extern __inline uint16x8_t
8383__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8384vmulq_n_u16 (uint16x8_t __a, uint16_t __b)
8385{
25a124b3 8386 return (uint16x8_t)__builtin_neon_vmul_nv8hi ((int16x8_t) __a, (__builtin_neon_hi) __b);
d98a3884 8387}
8388
5c493d36 8389__extension__ extern __inline uint32x4_t
8390__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8391vmulq_n_u32 (uint32x4_t __a, uint32_t __b)
8392{
25a124b3 8393 return (uint32x4_t)__builtin_neon_vmul_nv4si ((int32x4_t) __a, (__builtin_neon_si) __b);
d98a3884 8394}
8395
5c493d36 8396__extension__ extern __inline int32x4_t
8397__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8398vmull_n_s16 (int16x4_t __a, int16_t __b)
8399{
25a124b3 8400 return (int32x4_t)__builtin_neon_vmulls_nv4hi (__a, (__builtin_neon_hi) __b);
d98a3884 8401}
8402
5c493d36 8403__extension__ extern __inline int64x2_t
8404__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8405vmull_n_s32 (int32x2_t __a, int32_t __b)
8406{
25a124b3 8407 return (int64x2_t)__builtin_neon_vmulls_nv2si (__a, (__builtin_neon_si) __b);
d98a3884 8408}
8409
5c493d36 8410__extension__ extern __inline uint32x4_t
8411__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8412vmull_n_u16 (uint16x4_t __a, uint16_t __b)
8413{
25a124b3 8414 return (uint32x4_t)__builtin_neon_vmullu_nv4hi ((int16x4_t) __a, (__builtin_neon_hi) __b);
d98a3884 8415}
8416
5c493d36 8417__extension__ extern __inline uint64x2_t
8418__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8419vmull_n_u32 (uint32x2_t __a, uint32_t __b)
8420{
25a124b3 8421 return (uint64x2_t)__builtin_neon_vmullu_nv2si ((int32x2_t) __a, (__builtin_neon_si) __b);
d98a3884 8422}
8423
5c493d36 8424__extension__ extern __inline int32x4_t
8425__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8426vqdmull_n_s16 (int16x4_t __a, int16_t __b)
8427{
25a124b3 8428 return (int32x4_t)__builtin_neon_vqdmull_nv4hi (__a, (__builtin_neon_hi) __b);
d98a3884 8429}
8430
5c493d36 8431__extension__ extern __inline int64x2_t
8432__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8433vqdmull_n_s32 (int32x2_t __a, int32_t __b)
8434{
25a124b3 8435 return (int64x2_t)__builtin_neon_vqdmull_nv2si (__a, (__builtin_neon_si) __b);
d98a3884 8436}
8437
5c493d36 8438__extension__ extern __inline int16x8_t
8439__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8440vqdmulhq_n_s16 (int16x8_t __a, int16_t __b)
8441{
25a124b3 8442 return (int16x8_t)__builtin_neon_vqdmulh_nv8hi (__a, (__builtin_neon_hi) __b);
d98a3884 8443}
8444
5c493d36 8445__extension__ extern __inline int32x4_t
8446__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8447vqdmulhq_n_s32 (int32x4_t __a, int32_t __b)
8448{
25a124b3 8449 return (int32x4_t)__builtin_neon_vqdmulh_nv4si (__a, (__builtin_neon_si) __b);
d98a3884 8450}
8451
5c493d36 8452__extension__ extern __inline int16x4_t
8453__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8454vqdmulh_n_s16 (int16x4_t __a, int16_t __b)
8455{
25a124b3 8456 return (int16x4_t)__builtin_neon_vqdmulh_nv4hi (__a, (__builtin_neon_hi) __b);
d98a3884 8457}
8458
5c493d36 8459__extension__ extern __inline int32x2_t
8460__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8461vqdmulh_n_s32 (int32x2_t __a, int32_t __b)
8462{
25a124b3 8463 return (int32x2_t)__builtin_neon_vqdmulh_nv2si (__a, (__builtin_neon_si) __b);
d98a3884 8464}
8465
5c493d36 8466__extension__ extern __inline int16x8_t
8467__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8468vqrdmulhq_n_s16 (int16x8_t __a, int16_t __b)
8469{
25a124b3 8470 return (int16x8_t)__builtin_neon_vqrdmulh_nv8hi (__a, (__builtin_neon_hi) __b);
d98a3884 8471}
8472
5c493d36 8473__extension__ extern __inline int32x4_t
8474__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8475vqrdmulhq_n_s32 (int32x4_t __a, int32_t __b)
8476{
25a124b3 8477 return (int32x4_t)__builtin_neon_vqrdmulh_nv4si (__a, (__builtin_neon_si) __b);
d98a3884 8478}
8479
5c493d36 8480__extension__ extern __inline int16x4_t
8481__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8482vqrdmulh_n_s16 (int16x4_t __a, int16_t __b)
8483{
25a124b3 8484 return (int16x4_t)__builtin_neon_vqrdmulh_nv4hi (__a, (__builtin_neon_hi) __b);
d98a3884 8485}
8486
5c493d36 8487__extension__ extern __inline int32x2_t
8488__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8489vqrdmulh_n_s32 (int32x2_t __a, int32_t __b)
8490{
25a124b3 8491 return (int32x2_t)__builtin_neon_vqrdmulh_nv2si (__a, (__builtin_neon_si) __b);
d98a3884 8492}
8493
5c493d36 8494__extension__ extern __inline int16x4_t
8495__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8496vmla_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c)
8497{
25a124b3 8498 return (int16x4_t)__builtin_neon_vmla_nv4hi (__a, __b, (__builtin_neon_hi) __c);
d98a3884 8499}
8500
5c493d36 8501__extension__ extern __inline int32x2_t
8502__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8503vmla_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c)
8504{
25a124b3 8505 return (int32x2_t)__builtin_neon_vmla_nv2si (__a, __b, (__builtin_neon_si) __c);
d98a3884 8506}
8507
5c493d36 8508__extension__ extern __inline float32x2_t
8509__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8510vmla_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)
8511{
25a124b3 8512 return (float32x2_t)__builtin_neon_vmla_nv2sf (__a, __b, (__builtin_neon_sf) __c);
d98a3884 8513}
8514
5c493d36 8515__extension__ extern __inline uint16x4_t
8516__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8517vmla_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c)
8518{
25a124b3 8519 return (uint16x4_t)__builtin_neon_vmla_nv4hi ((int16x4_t) __a, (int16x4_t) __b, (__builtin_neon_hi) __c);
d98a3884 8520}
8521
5c493d36 8522__extension__ extern __inline uint32x2_t
8523__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8524vmla_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c)
8525{
25a124b3 8526 return (uint32x2_t)__builtin_neon_vmla_nv2si ((int32x2_t) __a, (int32x2_t) __b, (__builtin_neon_si) __c);
d98a3884 8527}
8528
5c493d36 8529__extension__ extern __inline int16x8_t
8530__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8531vmlaq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c)
8532{
25a124b3 8533 return (int16x8_t)__builtin_neon_vmla_nv8hi (__a, __b, (__builtin_neon_hi) __c);
d98a3884 8534}
8535
5c493d36 8536__extension__ extern __inline int32x4_t
8537__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8538vmlaq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c)
8539{
25a124b3 8540 return (int32x4_t)__builtin_neon_vmla_nv4si (__a, __b, (__builtin_neon_si) __c);
d98a3884 8541}
8542
5c493d36 8543__extension__ extern __inline float32x4_t
8544__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8545vmlaq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)
8546{
25a124b3 8547 return (float32x4_t)__builtin_neon_vmla_nv4sf (__a, __b, (__builtin_neon_sf) __c);
d98a3884 8548}
8549
5c493d36 8550__extension__ extern __inline uint16x8_t
8551__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8552vmlaq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c)
8553{
25a124b3 8554 return (uint16x8_t)__builtin_neon_vmla_nv8hi ((int16x8_t) __a, (int16x8_t) __b, (__builtin_neon_hi) __c);
d98a3884 8555}
8556
5c493d36 8557__extension__ extern __inline uint32x4_t
8558__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8559vmlaq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c)
8560{
25a124b3 8561 return (uint32x4_t)__builtin_neon_vmla_nv4si ((int32x4_t) __a, (int32x4_t) __b, (__builtin_neon_si) __c);
d98a3884 8562}
8563
5c493d36 8564__extension__ extern __inline int32x4_t
8565__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8566vmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
8567{
25a124b3 8568 return (int32x4_t)__builtin_neon_vmlals_nv4hi (__a, __b, (__builtin_neon_hi) __c);
d98a3884 8569}
8570
5c493d36 8571__extension__ extern __inline int64x2_t
8572__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8573vmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
8574{
25a124b3 8575 return (int64x2_t)__builtin_neon_vmlals_nv2si (__a, __b, (__builtin_neon_si) __c);
d98a3884 8576}
8577
5c493d36 8578__extension__ extern __inline uint32x4_t
8579__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8580vmlal_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c)
8581{
25a124b3 8582 return (uint32x4_t)__builtin_neon_vmlalu_nv4hi ((int32x4_t) __a, (int16x4_t) __b, (__builtin_neon_hi) __c);
d98a3884 8583}
8584
5c493d36 8585__extension__ extern __inline uint64x2_t
8586__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8587vmlal_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c)
8588{
25a124b3 8589 return (uint64x2_t)__builtin_neon_vmlalu_nv2si ((int64x2_t) __a, (int32x2_t) __b, (__builtin_neon_si) __c);
d98a3884 8590}
8591
5c493d36 8592__extension__ extern __inline int32x4_t
8593__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8594vqdmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
8595{
25a124b3 8596 return (int32x4_t)__builtin_neon_vqdmlal_nv4hi (__a, __b, (__builtin_neon_hi) __c);
d98a3884 8597}
8598
5c493d36 8599__extension__ extern __inline int64x2_t
8600__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8601vqdmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
8602{
25a124b3 8603 return (int64x2_t)__builtin_neon_vqdmlal_nv2si (__a, __b, (__builtin_neon_si) __c);
d98a3884 8604}
8605
5c493d36 8606__extension__ extern __inline int16x4_t
8607__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8608vmls_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c)
8609{
25a124b3 8610 return (int16x4_t)__builtin_neon_vmls_nv4hi (__a, __b, (__builtin_neon_hi) __c);
d98a3884 8611}
8612
5c493d36 8613__extension__ extern __inline int32x2_t
8614__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8615vmls_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c)
8616{
25a124b3 8617 return (int32x2_t)__builtin_neon_vmls_nv2si (__a, __b, (__builtin_neon_si) __c);
d98a3884 8618}
8619
5c493d36 8620__extension__ extern __inline float32x2_t
8621__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8622vmls_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)
8623{
25a124b3 8624 return (float32x2_t)__builtin_neon_vmls_nv2sf (__a, __b, (__builtin_neon_sf) __c);
d98a3884 8625}
8626
5c493d36 8627__extension__ extern __inline uint16x4_t
8628__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8629vmls_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c)
8630{
25a124b3 8631 return (uint16x4_t)__builtin_neon_vmls_nv4hi ((int16x4_t) __a, (int16x4_t) __b, (__builtin_neon_hi) __c);
d98a3884 8632}
8633
5c493d36 8634__extension__ extern __inline uint32x2_t
8635__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8636vmls_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c)
8637{
25a124b3 8638 return (uint32x2_t)__builtin_neon_vmls_nv2si ((int32x2_t) __a, (int32x2_t) __b, (__builtin_neon_si) __c);
d98a3884 8639}
8640
5c493d36 8641__extension__ extern __inline int16x8_t
8642__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8643vmlsq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c)
8644{
25a124b3 8645 return (int16x8_t)__builtin_neon_vmls_nv8hi (__a, __b, (__builtin_neon_hi) __c);
d98a3884 8646}
8647
5c493d36 8648__extension__ extern __inline int32x4_t
8649__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8650vmlsq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c)
8651{
25a124b3 8652 return (int32x4_t)__builtin_neon_vmls_nv4si (__a, __b, (__builtin_neon_si) __c);
d98a3884 8653}
8654
5c493d36 8655__extension__ extern __inline float32x4_t
8656__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8657vmlsq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)
8658{
25a124b3 8659 return (float32x4_t)__builtin_neon_vmls_nv4sf (__a, __b, (__builtin_neon_sf) __c);
d98a3884 8660}
8661
5c493d36 8662__extension__ extern __inline uint16x8_t
8663__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8664vmlsq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c)
8665{
25a124b3 8666 return (uint16x8_t)__builtin_neon_vmls_nv8hi ((int16x8_t) __a, (int16x8_t) __b, (__builtin_neon_hi) __c);
d98a3884 8667}
8668
5c493d36 8669__extension__ extern __inline uint32x4_t
8670__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8671vmlsq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c)
8672{
25a124b3 8673 return (uint32x4_t)__builtin_neon_vmls_nv4si ((int32x4_t) __a, (int32x4_t) __b, (__builtin_neon_si) __c);
d98a3884 8674}
8675
5c493d36 8676__extension__ extern __inline int32x4_t
8677__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8678vmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
8679{
25a124b3 8680 return (int32x4_t)__builtin_neon_vmlsls_nv4hi (__a, __b, (__builtin_neon_hi) __c);
d98a3884 8681}
8682
5c493d36 8683__extension__ extern __inline int64x2_t
8684__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8685vmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
8686{
25a124b3 8687 return (int64x2_t)__builtin_neon_vmlsls_nv2si (__a, __b, (__builtin_neon_si) __c);
d98a3884 8688}
8689
5c493d36 8690__extension__ extern __inline uint32x4_t
8691__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8692vmlsl_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c)
8693{
25a124b3 8694 return (uint32x4_t)__builtin_neon_vmlslu_nv4hi ((int32x4_t) __a, (int16x4_t) __b, (__builtin_neon_hi) __c);
d98a3884 8695}
8696
5c493d36 8697__extension__ extern __inline uint64x2_t
8698__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8699vmlsl_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c)
8700{
25a124b3 8701 return (uint64x2_t)__builtin_neon_vmlslu_nv2si ((int64x2_t) __a, (int32x2_t) __b, (__builtin_neon_si) __c);
d98a3884 8702}
8703
5c493d36 8704__extension__ extern __inline int32x4_t
8705__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8706vqdmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
8707{
25a124b3 8708 return (int32x4_t)__builtin_neon_vqdmlsl_nv4hi (__a, __b, (__builtin_neon_hi) __c);
d98a3884 8709}
8710
5c493d36 8711__extension__ extern __inline int64x2_t
8712__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8713vqdmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
8714{
25a124b3 8715 return (int64x2_t)__builtin_neon_vqdmlsl_nv2si (__a, __b, (__builtin_neon_si) __c);
d98a3884 8716}
8717
dcbc6813 8718#pragma GCC push_options
8719#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 8720__extension__ extern __inline poly64x1_t
8721__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 8722vext_p64 (poly64x1_t __a, poly64x1_t __b, const int __c)
8723{
8724 return (poly64x1_t)__builtin_neon_vextdi (__a, __b, __c);
8725}
8726
dcbc6813 8727#pragma GCC pop_options
5c493d36 8728__extension__ extern __inline int8x8_t
8729__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8730vext_s8 (int8x8_t __a, int8x8_t __b, const int __c)
8731{
8732 return (int8x8_t)__builtin_neon_vextv8qi (__a, __b, __c);
8733}
8734
5c493d36 8735__extension__ extern __inline int16x4_t
8736__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8737vext_s16 (int16x4_t __a, int16x4_t __b, const int __c)
8738{
8739 return (int16x4_t)__builtin_neon_vextv4hi (__a, __b, __c);
8740}
8741
5c493d36 8742__extension__ extern __inline int32x2_t
8743__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8744vext_s32 (int32x2_t __a, int32x2_t __b, const int __c)
8745{
8746 return (int32x2_t)__builtin_neon_vextv2si (__a, __b, __c);
8747}
8748
5c493d36 8749__extension__ extern __inline int64x1_t
8750__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8751vext_s64 (int64x1_t __a, int64x1_t __b, const int __c)
8752{
8753 return (int64x1_t)__builtin_neon_vextdi (__a, __b, __c);
8754}
8755
5c493d36 8756__extension__ extern __inline float32x2_t
8757__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8758vext_f32 (float32x2_t __a, float32x2_t __b, const int __c)
8759{
8760 return (float32x2_t)__builtin_neon_vextv2sf (__a, __b, __c);
8761}
8762
5c493d36 8763__extension__ extern __inline uint8x8_t
8764__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8765vext_u8 (uint8x8_t __a, uint8x8_t __b, const int __c)
8766{
8767 return (uint8x8_t)__builtin_neon_vextv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
8768}
8769
5c493d36 8770__extension__ extern __inline uint16x4_t
8771__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8772vext_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
8773{
8774 return (uint16x4_t)__builtin_neon_vextv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
8775}
8776
5c493d36 8777__extension__ extern __inline uint32x2_t
8778__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8779vext_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
8780{
8781 return (uint32x2_t)__builtin_neon_vextv2si ((int32x2_t) __a, (int32x2_t) __b, __c);
8782}
8783
5c493d36 8784__extension__ extern __inline uint64x1_t
8785__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8786vext_u64 (uint64x1_t __a, uint64x1_t __b, const int __c)
8787{
8788 return (uint64x1_t)__builtin_neon_vextdi ((int64x1_t) __a, (int64x1_t) __b, __c);
8789}
8790
5c493d36 8791__extension__ extern __inline poly8x8_t
8792__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8793vext_p8 (poly8x8_t __a, poly8x8_t __b, const int __c)
8794{
8795 return (poly8x8_t)__builtin_neon_vextv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
8796}
8797
5c493d36 8798__extension__ extern __inline poly16x4_t
8799__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8800vext_p16 (poly16x4_t __a, poly16x4_t __b, const int __c)
8801{
8802 return (poly16x4_t)__builtin_neon_vextv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
8803}
8804
dcbc6813 8805#pragma GCC push_options
8806#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 8807__extension__ extern __inline poly64x2_t
8808__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 8809vextq_p64 (poly64x2_t __a, poly64x2_t __b, const int __c)
8810{
8811 return (poly64x2_t)__builtin_neon_vextv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
8812}
8813
dcbc6813 8814#pragma GCC pop_options
5c493d36 8815__extension__ extern __inline int8x16_t
8816__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8817vextq_s8 (int8x16_t __a, int8x16_t __b, const int __c)
8818{
8819 return (int8x16_t)__builtin_neon_vextv16qi (__a, __b, __c);
8820}
8821
5c493d36 8822__extension__ extern __inline int16x8_t
8823__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8824vextq_s16 (int16x8_t __a, int16x8_t __b, const int __c)
8825{
8826 return (int16x8_t)__builtin_neon_vextv8hi (__a, __b, __c);
8827}
8828
5c493d36 8829__extension__ extern __inline int32x4_t
8830__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8831vextq_s32 (int32x4_t __a, int32x4_t __b, const int __c)
8832{
8833 return (int32x4_t)__builtin_neon_vextv4si (__a, __b, __c);
8834}
8835
5c493d36 8836__extension__ extern __inline int64x2_t
8837__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8838vextq_s64 (int64x2_t __a, int64x2_t __b, const int __c)
8839{
8840 return (int64x2_t)__builtin_neon_vextv2di (__a, __b, __c);
8841}
8842
5c493d36 8843__extension__ extern __inline float32x4_t
8844__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8845vextq_f32 (float32x4_t __a, float32x4_t __b, const int __c)
8846{
8847 return (float32x4_t)__builtin_neon_vextv4sf (__a, __b, __c);
8848}
8849
5c493d36 8850__extension__ extern __inline uint8x16_t
8851__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8852vextq_u8 (uint8x16_t __a, uint8x16_t __b, const int __c)
8853{
8854 return (uint8x16_t)__builtin_neon_vextv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
8855}
8856
5c493d36 8857__extension__ extern __inline uint16x8_t
8858__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8859vextq_u16 (uint16x8_t __a, uint16x8_t __b, const int __c)
8860{
8861 return (uint16x8_t)__builtin_neon_vextv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
8862}
8863
5c493d36 8864__extension__ extern __inline uint32x4_t
8865__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8866vextq_u32 (uint32x4_t __a, uint32x4_t __b, const int __c)
8867{
8868 return (uint32x4_t)__builtin_neon_vextv4si ((int32x4_t) __a, (int32x4_t) __b, __c);
8869}
8870
5c493d36 8871__extension__ extern __inline uint64x2_t
8872__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8873vextq_u64 (uint64x2_t __a, uint64x2_t __b, const int __c)
8874{
8875 return (uint64x2_t)__builtin_neon_vextv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
8876}
8877
5c493d36 8878__extension__ extern __inline poly8x16_t
8879__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8880vextq_p8 (poly8x16_t __a, poly8x16_t __b, const int __c)
8881{
8882 return (poly8x16_t)__builtin_neon_vextv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
8883}
8884
5c493d36 8885__extension__ extern __inline poly16x8_t
8886__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8887vextq_p16 (poly16x8_t __a, poly16x8_t __b, const int __c)
8888{
8889 return (poly16x8_t)__builtin_neon_vextv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
8890}
8891
5c493d36 8892__extension__ extern __inline int8x8_t
8893__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8894vrev64_s8 (int8x8_t __a)
8895{
e71384dc 8896 return (int8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 });
d98a3884 8897}
8898
5c493d36 8899__extension__ extern __inline int16x4_t
8900__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8901vrev64_s16 (int16x4_t __a)
8902{
e71384dc 8903 return (int16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 });
d98a3884 8904}
8905
5c493d36 8906__extension__ extern __inline int32x2_t
8907__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8908vrev64_s32 (int32x2_t __a)
8909{
e71384dc 8910 return (int32x2_t) __builtin_shuffle (__a, (uint32x2_t) { 1, 0 });
d98a3884 8911}
8912
5c493d36 8913__extension__ extern __inline float32x2_t
8914__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8915vrev64_f32 (float32x2_t __a)
8916{
e71384dc 8917 return (float32x2_t) __builtin_shuffle (__a, (uint32x2_t) { 1, 0 });
d98a3884 8918}
8919
5c493d36 8920__extension__ extern __inline uint8x8_t
8921__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8922vrev64_u8 (uint8x8_t __a)
8923{
e71384dc 8924 return (uint8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 });
d98a3884 8925}
8926
5c493d36 8927__extension__ extern __inline uint16x4_t
8928__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8929vrev64_u16 (uint16x4_t __a)
8930{
e71384dc 8931 return (uint16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 });
d98a3884 8932}
8933
5c493d36 8934__extension__ extern __inline uint32x2_t
8935__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8936vrev64_u32 (uint32x2_t __a)
8937{
e71384dc 8938 return (uint32x2_t) __builtin_shuffle (__a, (uint32x2_t) { 1, 0 });
d98a3884 8939}
8940
5c493d36 8941__extension__ extern __inline poly8x8_t
8942__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8943vrev64_p8 (poly8x8_t __a)
8944{
e71384dc 8945 return (poly8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 });
d98a3884 8946}
8947
5c493d36 8948__extension__ extern __inline poly16x4_t
8949__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8950vrev64_p16 (poly16x4_t __a)
8951{
e71384dc 8952 return (poly16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 });
d98a3884 8953}
8954
5c493d36 8955__extension__ extern __inline int8x16_t
8956__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8957vrev64q_s8 (int8x16_t __a)
8958{
e71384dc 8959 return (int8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 });
d98a3884 8960}
8961
5c493d36 8962__extension__ extern __inline int16x8_t
8963__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8964vrev64q_s16 (int16x8_t __a)
8965{
e71384dc 8966 return (int16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
d98a3884 8967}
8968
5c493d36 8969__extension__ extern __inline int32x4_t
8970__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8971vrev64q_s32 (int32x4_t __a)
8972{
e71384dc 8973 return (int32x4_t) __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 });
d98a3884 8974}
8975
5c493d36 8976__extension__ extern __inline float32x4_t
8977__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8978vrev64q_f32 (float32x4_t __a)
8979{
e71384dc 8980 return (float32x4_t) __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 });
d98a3884 8981}
8982
5c493d36 8983__extension__ extern __inline uint8x16_t
8984__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8985vrev64q_u8 (uint8x16_t __a)
8986{
e71384dc 8987 return (uint8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 });
d98a3884 8988}
8989
5c493d36 8990__extension__ extern __inline uint16x8_t
8991__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8992vrev64q_u16 (uint16x8_t __a)
8993{
e71384dc 8994 return (uint16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
d98a3884 8995}
8996
5c493d36 8997__extension__ extern __inline uint32x4_t
8998__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 8999vrev64q_u32 (uint32x4_t __a)
9000{
e71384dc 9001 return (uint32x4_t) __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 });
d98a3884 9002}
9003
5c493d36 9004__extension__ extern __inline poly8x16_t
9005__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9006vrev64q_p8 (poly8x16_t __a)
9007{
e71384dc 9008 return (poly8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 });
d98a3884 9009}
9010
5c493d36 9011__extension__ extern __inline poly16x8_t
9012__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9013vrev64q_p16 (poly16x8_t __a)
9014{
e71384dc 9015 return (poly16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
d98a3884 9016}
9017
5c493d36 9018__extension__ extern __inline int8x8_t
9019__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9020vrev32_s8 (int8x8_t __a)
9021{
e71384dc 9022 return (int8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
d98a3884 9023}
9024
5c493d36 9025__extension__ extern __inline int16x4_t
9026__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9027vrev32_s16 (int16x4_t __a)
9028{
e71384dc 9029 return (int16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 });
d98a3884 9030}
9031
5c493d36 9032__extension__ extern __inline uint8x8_t
9033__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9034vrev32_u8 (uint8x8_t __a)
9035{
e71384dc 9036 return (uint8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
d98a3884 9037}
9038
5c493d36 9039__extension__ extern __inline uint16x4_t
9040__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9041vrev32_u16 (uint16x4_t __a)
9042{
e71384dc 9043 return (uint16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 });
d98a3884 9044}
9045
5c493d36 9046__extension__ extern __inline poly8x8_t
9047__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9048vrev32_p8 (poly8x8_t __a)
9049{
e71384dc 9050 return (poly8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
d98a3884 9051}
9052
5c493d36 9053__extension__ extern __inline poly16x4_t
9054__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9055vrev32_p16 (poly16x4_t __a)
9056{
e71384dc 9057 return (poly16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 });
d98a3884 9058}
9059
5c493d36 9060__extension__ extern __inline int8x16_t
9061__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9062vrev32q_s8 (int8x16_t __a)
9063{
e71384dc 9064 return (int8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 });
d98a3884 9065}
9066
5c493d36 9067__extension__ extern __inline int16x8_t
9068__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9069vrev32q_s16 (int16x8_t __a)
9070{
e71384dc 9071 return (int16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
d98a3884 9072}
9073
5c493d36 9074__extension__ extern __inline uint8x16_t
9075__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9076vrev32q_u8 (uint8x16_t __a)
9077{
e71384dc 9078 return (uint8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 });
d98a3884 9079}
9080
5c493d36 9081__extension__ extern __inline uint16x8_t
9082__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9083vrev32q_u16 (uint16x8_t __a)
9084{
e71384dc 9085 return (uint16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
d98a3884 9086}
9087
5c493d36 9088__extension__ extern __inline poly8x16_t
9089__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9090vrev32q_p8 (poly8x16_t __a)
9091{
e71384dc 9092 return (poly8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 });
d98a3884 9093}
9094
5c493d36 9095__extension__ extern __inline poly16x8_t
9096__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9097vrev32q_p16 (poly16x8_t __a)
9098{
e71384dc 9099 return (poly16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
d98a3884 9100}
9101
5c493d36 9102__extension__ extern __inline int8x8_t
9103__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9104vrev16_s8 (int8x8_t __a)
9105{
e71384dc 9106 return (int8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
d98a3884 9107}
9108
5c493d36 9109__extension__ extern __inline uint8x8_t
9110__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9111vrev16_u8 (uint8x8_t __a)
9112{
e71384dc 9113 return (uint8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
d98a3884 9114}
9115
5c493d36 9116__extension__ extern __inline poly8x8_t
9117__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9118vrev16_p8 (poly8x8_t __a)
9119{
e71384dc 9120 return (poly8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
d98a3884 9121}
9122
5c493d36 9123__extension__ extern __inline int8x16_t
9124__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9125vrev16q_s8 (int8x16_t __a)
9126{
e71384dc 9127 return (int8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 });
d98a3884 9128}
9129
5c493d36 9130__extension__ extern __inline uint8x16_t
9131__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9132vrev16q_u8 (uint8x16_t __a)
9133{
e71384dc 9134 return (uint8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 });
d98a3884 9135}
9136
5c493d36 9137__extension__ extern __inline poly8x16_t
9138__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9139vrev16q_p8 (poly8x16_t __a)
9140{
e71384dc 9141 return (poly8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 });
d98a3884 9142}
9143
dcbc6813 9144#pragma GCC push_options
9145#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 9146__extension__ extern __inline poly64x1_t
9147__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 9148vbsl_p64 (uint64x1_t __a, poly64x1_t __b, poly64x1_t __c)
9149{
9150 return (poly64x1_t)__builtin_neon_vbsldi ((int64x1_t) __a, __b, __c);
9151}
9152
dcbc6813 9153#pragma GCC pop_options
5c493d36 9154__extension__ extern __inline int8x8_t
9155__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9156vbsl_s8 (uint8x8_t __a, int8x8_t __b, int8x8_t __c)
9157{
9158 return (int8x8_t)__builtin_neon_vbslv8qi ((int8x8_t) __a, __b, __c);
9159}
9160
5c493d36 9161__extension__ extern __inline int16x4_t
9162__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9163vbsl_s16 (uint16x4_t __a, int16x4_t __b, int16x4_t __c)
9164{
9165 return (int16x4_t)__builtin_neon_vbslv4hi ((int16x4_t) __a, __b, __c);
9166}
9167
5c493d36 9168__extension__ extern __inline int32x2_t
9169__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9170vbsl_s32 (uint32x2_t __a, int32x2_t __b, int32x2_t __c)
9171{
9172 return (int32x2_t)__builtin_neon_vbslv2si ((int32x2_t) __a, __b, __c);
9173}
9174
5c493d36 9175__extension__ extern __inline int64x1_t
9176__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9177vbsl_s64 (uint64x1_t __a, int64x1_t __b, int64x1_t __c)
9178{
9179 return (int64x1_t)__builtin_neon_vbsldi ((int64x1_t) __a, __b, __c);
9180}
9181
5c493d36 9182__extension__ extern __inline float32x2_t
9183__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9184vbsl_f32 (uint32x2_t __a, float32x2_t __b, float32x2_t __c)
9185{
9186 return (float32x2_t)__builtin_neon_vbslv2sf ((int32x2_t) __a, __b, __c);
9187}
9188
5c493d36 9189__extension__ extern __inline uint8x8_t
9190__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9191vbsl_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
9192{
9193 return (uint8x8_t)__builtin_neon_vbslv8qi ((int8x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
9194}
9195
5c493d36 9196__extension__ extern __inline uint16x4_t
9197__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9198vbsl_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
9199{
9200 return (uint16x4_t)__builtin_neon_vbslv4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
9201}
9202
5c493d36 9203__extension__ extern __inline uint32x2_t
9204__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9205vbsl_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
9206{
9207 return (uint32x2_t)__builtin_neon_vbslv2si ((int32x2_t) __a, (int32x2_t) __b, (int32x2_t) __c);
9208}
9209
5c493d36 9210__extension__ extern __inline uint64x1_t
9211__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9212vbsl_u64 (uint64x1_t __a, uint64x1_t __b, uint64x1_t __c)
9213{
9214 return (uint64x1_t)__builtin_neon_vbsldi ((int64x1_t) __a, (int64x1_t) __b, (int64x1_t) __c);
9215}
9216
5c493d36 9217__extension__ extern __inline poly8x8_t
9218__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9219vbsl_p8 (uint8x8_t __a, poly8x8_t __b, poly8x8_t __c)
9220{
9221 return (poly8x8_t)__builtin_neon_vbslv8qi ((int8x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
9222}
9223
5c493d36 9224__extension__ extern __inline poly16x4_t
9225__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9226vbsl_p16 (uint16x4_t __a, poly16x4_t __b, poly16x4_t __c)
9227{
9228 return (poly16x4_t)__builtin_neon_vbslv4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
9229}
9230
dcbc6813 9231#pragma GCC push_options
9232#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 9233__extension__ extern __inline poly64x2_t
9234__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 9235vbslq_p64 (uint64x2_t __a, poly64x2_t __b, poly64x2_t __c)
9236{
9237 return (poly64x2_t)__builtin_neon_vbslv2di ((int64x2_t) __a, (int64x2_t) __b, (int64x2_t) __c);
9238}
9239
dcbc6813 9240#pragma GCC pop_options
5c493d36 9241__extension__ extern __inline int8x16_t
9242__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9243vbslq_s8 (uint8x16_t __a, int8x16_t __b, int8x16_t __c)
9244{
9245 return (int8x16_t)__builtin_neon_vbslv16qi ((int8x16_t) __a, __b, __c);
9246}
9247
5c493d36 9248__extension__ extern __inline int16x8_t
9249__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9250vbslq_s16 (uint16x8_t __a, int16x8_t __b, int16x8_t __c)
9251{
9252 return (int16x8_t)__builtin_neon_vbslv8hi ((int16x8_t) __a, __b, __c);
9253}
9254
5c493d36 9255__extension__ extern __inline int32x4_t
9256__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9257vbslq_s32 (uint32x4_t __a, int32x4_t __b, int32x4_t __c)
9258{
9259 return (int32x4_t)__builtin_neon_vbslv4si ((int32x4_t) __a, __b, __c);
9260}
9261
5c493d36 9262__extension__ extern __inline int64x2_t
9263__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9264vbslq_s64 (uint64x2_t __a, int64x2_t __b, int64x2_t __c)
9265{
9266 return (int64x2_t)__builtin_neon_vbslv2di ((int64x2_t) __a, __b, __c);
9267}
9268
5c493d36 9269__extension__ extern __inline float32x4_t
9270__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9271vbslq_f32 (uint32x4_t __a, float32x4_t __b, float32x4_t __c)
9272{
9273 return (float32x4_t)__builtin_neon_vbslv4sf ((int32x4_t) __a, __b, __c);
9274}
9275
5c493d36 9276__extension__ extern __inline uint8x16_t
9277__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9278vbslq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
9279{
9280 return (uint8x16_t)__builtin_neon_vbslv16qi ((int8x16_t) __a, (int8x16_t) __b, (int8x16_t) __c);
9281}
9282
5c493d36 9283__extension__ extern __inline uint16x8_t
9284__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9285vbslq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
9286{
9287 return (uint16x8_t)__builtin_neon_vbslv8hi ((int16x8_t) __a, (int16x8_t) __b, (int16x8_t) __c);
9288}
9289
5c493d36 9290__extension__ extern __inline uint32x4_t
9291__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9292vbslq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
9293{
9294 return (uint32x4_t)__builtin_neon_vbslv4si ((int32x4_t) __a, (int32x4_t) __b, (int32x4_t) __c);
9295}
9296
5c493d36 9297__extension__ extern __inline uint64x2_t
9298__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9299vbslq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c)
9300{
9301 return (uint64x2_t)__builtin_neon_vbslv2di ((int64x2_t) __a, (int64x2_t) __b, (int64x2_t) __c);
9302}
9303
5c493d36 9304__extension__ extern __inline poly8x16_t
9305__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9306vbslq_p8 (uint8x16_t __a, poly8x16_t __b, poly8x16_t __c)
9307{
9308 return (poly8x16_t)__builtin_neon_vbslv16qi ((int8x16_t) __a, (int8x16_t) __b, (int8x16_t) __c);
9309}
9310
5c493d36 9311__extension__ extern __inline poly16x8_t
9312__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9313vbslq_p16 (uint16x8_t __a, poly16x8_t __b, poly16x8_t __c)
9314{
9315 return (poly16x8_t)__builtin_neon_vbslv8hi ((int16x8_t) __a, (int16x8_t) __b, (int16x8_t) __c);
9316}
9317
a7a73438 9318/* For big-endian, the shuffle masks for ZIP, UZP and TRN must be changed as
9319 follows. (nelt = the number of elements within a vector.)
9320
9321 Firstly, a value of N within a mask, becomes (N ^ (nelt - 1)), as gcc vector
9322 extension's indexing scheme is reversed *within each vector* (relative to the
9323 neon intrinsics view), but without changing which of the two vectors.
9324
9325 Secondly, the elements within each mask are reversed, as the mask is itself a
9326 vector, and will itself be loaded in reverse order (again, relative to the
9327 neon intrinsics view, i.e. that would result from a "vld1" instruction). */
9328
5c493d36 9329__extension__ extern __inline int8x8x2_t
9330__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9331vtrn_s8 (int8x8_t __a, int8x8_t __b)
9332{
9333 int8x8x2_t __rv;
a7a73438 9334#ifdef __ARM_BIG_ENDIAN
9335 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
9336 { 9, 1, 11, 3, 13, 5, 15, 7 });
9337 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
9338 { 8, 0, 10, 2, 12, 4, 14, 6 });
9339#else
9340 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
9341 { 0, 8, 2, 10, 4, 12, 6, 14 });
9342 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
9343 { 1, 9, 3, 11, 5, 13, 7, 15 });
9344#endif
d98a3884 9345 return __rv;
9346}
9347
5c493d36 9348__extension__ extern __inline int16x4x2_t
9349__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9350vtrn_s16 (int16x4_t __a, int16x4_t __b)
9351{
9352 int16x4x2_t __rv;
a7a73438 9353#ifdef __ARM_BIG_ENDIAN
9354 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 5, 1, 7, 3 });
9355 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 0, 6, 2 });
9356#else
9357 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 2, 6 });
9358 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 5, 3, 7 });
9359#endif
d98a3884 9360 return __rv;
9361}
9362
5c493d36 9363__extension__ extern __inline uint8x8x2_t
9364__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9365vtrn_u8 (uint8x8_t __a, uint8x8_t __b)
9366{
9367 uint8x8x2_t __rv;
a7a73438 9368#ifdef __ARM_BIG_ENDIAN
9369 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
9370 { 9, 1, 11, 3, 13, 5, 15, 7 });
9371 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
9372 { 8, 0, 10, 2, 12, 4, 14, 6 });
9373#else
9374 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
9375 { 0, 8, 2, 10, 4, 12, 6, 14 });
9376 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
9377 { 1, 9, 3, 11, 5, 13, 7, 15 });
9378#endif
d98a3884 9379 return __rv;
9380}
9381
5c493d36 9382__extension__ extern __inline uint16x4x2_t
9383__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9384vtrn_u16 (uint16x4_t __a, uint16x4_t __b)
9385{
9386 uint16x4x2_t __rv;
a7a73438 9387#ifdef __ARM_BIG_ENDIAN
9388 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 5, 1, 7, 3 });
9389 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 0, 6, 2 });
9390#else
9391 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 2, 6 });
9392 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 5, 3, 7 });
9393#endif
d98a3884 9394 return __rv;
9395}
9396
5c493d36 9397__extension__ extern __inline poly8x8x2_t
9398__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9399vtrn_p8 (poly8x8_t __a, poly8x8_t __b)
9400{
9401 poly8x8x2_t __rv;
a7a73438 9402#ifdef __ARM_BIG_ENDIAN
9403 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
9404 { 9, 1, 11, 3, 13, 5, 15, 7 });
9405 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
9406 { 8, 0, 10, 2, 12, 4, 14, 6 });
9407#else
9408 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
9409 { 0, 8, 2, 10, 4, 12, 6, 14 });
9410 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
9411 { 1, 9, 3, 11, 5, 13, 7, 15 });
9412#endif
d98a3884 9413 return __rv;
9414}
9415
5c493d36 9416__extension__ extern __inline poly16x4x2_t
9417__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9418vtrn_p16 (poly16x4_t __a, poly16x4_t __b)
9419{
9420 poly16x4x2_t __rv;
a7a73438 9421#ifdef __ARM_BIG_ENDIAN
9422 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 5, 1, 7, 3 });
9423 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 0, 6, 2 });
9424#else
9425 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 2, 6 });
9426 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 5, 3, 7 });
9427#endif
e71384dc 9428 return __rv;
9429}
9430
5c493d36 9431__extension__ extern __inline int32x2x2_t
9432__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e71384dc 9433vtrn_s32 (int32x2_t __a, int32x2_t __b)
9434{
9435 int32x2x2_t __rv;
a7a73438 9436#ifdef __ARM_BIG_ENDIAN
9437 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
9438 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
9439#else
9440 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
9441 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
9442#endif
e71384dc 9443 return __rv;
9444}
9445
5c493d36 9446__extension__ extern __inline float32x2x2_t
9447__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e71384dc 9448vtrn_f32 (float32x2_t __a, float32x2_t __b)
9449{
9450 float32x2x2_t __rv;
a7a73438 9451#ifdef __ARM_BIG_ENDIAN
9452 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
9453 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
9454#else
9455 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
9456 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
9457#endif
e71384dc 9458 return __rv;
9459}
9460
5c493d36 9461__extension__ extern __inline uint32x2x2_t
9462__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e71384dc 9463vtrn_u32 (uint32x2_t __a, uint32x2_t __b)
9464{
9465 uint32x2x2_t __rv;
a7a73438 9466#ifdef __ARM_BIG_ENDIAN
9467 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
9468 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
9469#else
9470 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
9471 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
9472#endif
d98a3884 9473 return __rv;
9474}
9475
5c493d36 9476__extension__ extern __inline int8x16x2_t
9477__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9478vtrnq_s8 (int8x16_t __a, int8x16_t __b)
9479{
9480 int8x16x2_t __rv;
a7a73438 9481#ifdef __ARM_BIG_ENDIAN
9482 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
9483 { 17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15 });
9484 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
9485 { 16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14 });
9486#else
9487 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
9488 { 0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30 });
9489 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
9490 { 1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31 });
9491#endif
d98a3884 9492 return __rv;
9493}
9494
5c493d36 9495__extension__ extern __inline int16x8x2_t
9496__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9497vtrnq_s16 (int16x8_t __a, int16x8_t __b)
9498{
9499 int16x8x2_t __rv;
a7a73438 9500#ifdef __ARM_BIG_ENDIAN
9501 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
9502 { 9, 1, 11, 3, 13, 5, 15, 7 });
9503 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
9504 { 8, 0, 10, 2, 12, 4, 14, 6 });
9505#else
9506 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
9507 { 0, 8, 2, 10, 4, 12, 6, 14 });
9508 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
9509 { 1, 9, 3, 11, 5, 13, 7, 15 });
9510#endif
d98a3884 9511 return __rv;
9512}
9513
5c493d36 9514__extension__ extern __inline int32x4x2_t
9515__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9516vtrnq_s32 (int32x4_t __a, int32x4_t __b)
9517{
9518 int32x4x2_t __rv;
a7a73438 9519#ifdef __ARM_BIG_ENDIAN
9520 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 5, 1, 7, 3 });
9521 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 4, 0, 6, 2 });
9522#else
9523 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 2, 6 });
9524 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 5, 3, 7 });
9525#endif
d98a3884 9526 return __rv;
9527}
9528
5c493d36 9529__extension__ extern __inline float32x4x2_t
9530__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9531vtrnq_f32 (float32x4_t __a, float32x4_t __b)
9532{
9533 float32x4x2_t __rv;
a7a73438 9534#ifdef __ARM_BIG_ENDIAN
9535 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 5, 1, 7, 3 });
9536 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 4, 0, 6, 2 });
9537#else
9538 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 2, 6 });
9539 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 5, 3, 7 });
9540#endif
d98a3884 9541 return __rv;
9542}
9543
5c493d36 9544__extension__ extern __inline uint8x16x2_t
9545__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9546vtrnq_u8 (uint8x16_t __a, uint8x16_t __b)
9547{
9548 uint8x16x2_t __rv;
a7a73438 9549#ifdef __ARM_BIG_ENDIAN
9550 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
9551 { 17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15 });
9552 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
9553 { 16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14 });
9554#else
9555 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
9556 { 0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30 });
9557 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
9558 { 1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31 });
9559#endif
d98a3884 9560 return __rv;
9561}
9562
5c493d36 9563__extension__ extern __inline uint16x8x2_t
9564__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9565vtrnq_u16 (uint16x8_t __a, uint16x8_t __b)
9566{
9567 uint16x8x2_t __rv;
a7a73438 9568#ifdef __ARM_BIG_ENDIAN
9569 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
9570 { 9, 1, 11, 3, 13, 5, 15, 7 });
9571 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
9572 { 8, 0, 10, 2, 12, 4, 14, 6 });
9573#else
9574 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
9575 { 0, 8, 2, 10, 4, 12, 6, 14 });
9576 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
9577 { 1, 9, 3, 11, 5, 13, 7, 15 });
9578#endif
d98a3884 9579 return __rv;
9580}
9581
5c493d36 9582__extension__ extern __inline uint32x4x2_t
9583__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9584vtrnq_u32 (uint32x4_t __a, uint32x4_t __b)
9585{
9586 uint32x4x2_t __rv;
a7a73438 9587#ifdef __ARM_BIG_ENDIAN
9588 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 5, 1, 7, 3 });
9589 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 4, 0, 6, 2 });
9590#else
9591 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 2, 6 });
9592 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 5, 3, 7 });
9593#endif
d98a3884 9594 return __rv;
9595}
9596
5c493d36 9597__extension__ extern __inline poly8x16x2_t
9598__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9599vtrnq_p8 (poly8x16_t __a, poly8x16_t __b)
9600{
9601 poly8x16x2_t __rv;
a7a73438 9602#ifdef __ARM_BIG_ENDIAN
9603 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
9604 { 17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15 });
9605 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
9606 { 16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14 });
9607#else
9608 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
9609 { 0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30 });
9610 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
9611 { 1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31 });
9612#endif
d98a3884 9613 return __rv;
9614}
9615
5c493d36 9616__extension__ extern __inline poly16x8x2_t
9617__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9618vtrnq_p16 (poly16x8_t __a, poly16x8_t __b)
9619{
9620 poly16x8x2_t __rv;
a7a73438 9621#ifdef __ARM_BIG_ENDIAN
9622 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
9623 { 9, 1, 11, 3, 13, 5, 15, 7 });
9624 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
9625 { 8, 0, 10, 2, 12, 4, 14, 6 });
9626#else
9627 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
9628 { 0, 8, 2, 10, 4, 12, 6, 14 });
9629 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
9630 { 1, 9, 3, 11, 5, 13, 7, 15 });
9631#endif
d98a3884 9632 return __rv;
9633}
9634
5c493d36 9635__extension__ extern __inline int8x8x2_t
9636__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9637vzip_s8 (int8x8_t __a, int8x8_t __b)
9638{
9639 int8x8x2_t __rv;
a7a73438 9640#ifdef __ARM_BIG_ENDIAN
9641 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
9642 { 12, 4, 13, 5, 14, 6, 15, 7 });
9643 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
9644 { 8, 0, 9, 1, 10, 2, 11, 3 });
9645#else
9646 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
9647 { 0, 8, 1, 9, 2, 10, 3, 11 });
9648 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
9649 { 4, 12, 5, 13, 6, 14, 7, 15 });
9650#endif
d98a3884 9651 return __rv;
9652}
9653
5c493d36 9654__extension__ extern __inline int16x4x2_t
9655__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9656vzip_s16 (int16x4_t __a, int16x4_t __b)
9657{
9658 int16x4x2_t __rv;
a7a73438 9659#ifdef __ARM_BIG_ENDIAN
9660 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 6, 2, 7, 3 });
9661 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 0, 5, 1 });
9662#else
9663 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 1, 5 });
9664 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 2, 6, 3, 7 });
9665#endif
d98a3884 9666 return __rv;
9667}
9668
5c493d36 9669__extension__ extern __inline uint8x8x2_t
9670__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9671vzip_u8 (uint8x8_t __a, uint8x8_t __b)
9672{
9673 uint8x8x2_t __rv;
a7a73438 9674#ifdef __ARM_BIG_ENDIAN
9675 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
9676 { 12, 4, 13, 5, 14, 6, 15, 7 });
9677 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
9678 { 8, 0, 9, 1, 10, 2, 11, 3 });
9679#else
9680 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
9681 { 0, 8, 1, 9, 2, 10, 3, 11 });
9682 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
9683 { 4, 12, 5, 13, 6, 14, 7, 15 });
9684#endif
d98a3884 9685 return __rv;
9686}
9687
5c493d36 9688__extension__ extern __inline uint16x4x2_t
9689__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9690vzip_u16 (uint16x4_t __a, uint16x4_t __b)
9691{
9692 uint16x4x2_t __rv;
a7a73438 9693#ifdef __ARM_BIG_ENDIAN
9694 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 6, 2, 7, 3 });
9695 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 0, 5, 1 });
9696#else
9697 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 1, 5 });
9698 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 2, 6, 3, 7 });
9699#endif
d98a3884 9700 return __rv;
9701}
9702
5c493d36 9703__extension__ extern __inline poly8x8x2_t
9704__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9705vzip_p8 (poly8x8_t __a, poly8x8_t __b)
9706{
9707 poly8x8x2_t __rv;
a7a73438 9708#ifdef __ARM_BIG_ENDIAN
9709 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
9710 { 12, 4, 13, 5, 14, 6, 15, 7 });
9711 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
9712 { 8, 0, 9, 1, 10, 2, 11, 3 });
9713#else
9714 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
9715 { 0, 8, 1, 9, 2, 10, 3, 11 });
9716 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
9717 { 4, 12, 5, 13, 6, 14, 7, 15 });
9718#endif
d98a3884 9719 return __rv;
9720}
9721
5c493d36 9722__extension__ extern __inline poly16x4x2_t
9723__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9724vzip_p16 (poly16x4_t __a, poly16x4_t __b)
9725{
9726 poly16x4x2_t __rv;
a7a73438 9727#ifdef __ARM_BIG_ENDIAN
9728 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 6, 2, 7, 3 });
9729 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 0, 5, 1 });
9730#else
9731 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 1, 5 });
9732 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 2, 6, 3, 7 });
9733#endif
e71384dc 9734 return __rv;
9735}
9736
5c493d36 9737__extension__ extern __inline int32x2x2_t
9738__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e71384dc 9739vzip_s32 (int32x2_t __a, int32x2_t __b)
9740{
9741 int32x2x2_t __rv;
a7a73438 9742#ifdef __ARM_BIG_ENDIAN
9743 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
9744 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
9745#else
9746 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
9747 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
9748#endif
e71384dc 9749 return __rv;
9750}
9751
5c493d36 9752__extension__ extern __inline float32x2x2_t
9753__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e71384dc 9754vzip_f32 (float32x2_t __a, float32x2_t __b)
9755{
9756 float32x2x2_t __rv;
a7a73438 9757#ifdef __ARM_BIG_ENDIAN
9758 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
9759 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
9760#else
9761 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
9762 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
9763#endif
e71384dc 9764 return __rv;
9765}
9766
5c493d36 9767__extension__ extern __inline uint32x2x2_t
9768__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e71384dc 9769vzip_u32 (uint32x2_t __a, uint32x2_t __b)
9770{
9771 uint32x2x2_t __rv;
a7a73438 9772#ifdef __ARM_BIG_ENDIAN
9773 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
9774 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
9775#else
9776 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
9777 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
9778#endif
d98a3884 9779 return __rv;
9780}
9781
5c493d36 9782__extension__ extern __inline int8x16x2_t
9783__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9784vzipq_s8 (int8x16_t __a, int8x16_t __b)
9785{
9786 int8x16x2_t __rv;
a7a73438 9787#ifdef __ARM_BIG_ENDIAN
9788 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
c2c179bc 9789 { 20, 4, 21, 5, 22, 6, 23, 7, 16, 0, 17, 1, 18, 2, 19, 3 });
a7a73438 9790 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
c2c179bc 9791 { 28, 12, 29, 13, 30, 14, 31, 15, 24, 8, 25, 9, 26, 10, 27, 11 });
a7a73438 9792#else
9793 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
9794 { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
9795 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
9796 { 8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31 });
9797#endif
d98a3884 9798 return __rv;
9799}
9800
5c493d36 9801__extension__ extern __inline int16x8x2_t
9802__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9803vzipq_s16 (int16x8_t __a, int16x8_t __b)
9804{
9805 int16x8x2_t __rv;
a7a73438 9806#ifdef __ARM_BIG_ENDIAN
9807 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
c2c179bc 9808 { 10, 2, 11, 3, 8, 0, 9, 1 });
a7a73438 9809 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
c2c179bc 9810 { 14, 6, 15, 7, 12, 4, 13, 5 });
a7a73438 9811#else
9812 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
9813 { 0, 8, 1, 9, 2, 10, 3, 11 });
9814 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
9815 { 4, 12, 5, 13, 6, 14, 7, 15 });
9816#endif
d98a3884 9817 return __rv;
9818}
9819
5c493d36 9820__extension__ extern __inline int32x4x2_t
9821__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9822vzipq_s32 (int32x4_t __a, int32x4_t __b)
9823{
9824 int32x4x2_t __rv;
a7a73438 9825#ifdef __ARM_BIG_ENDIAN
c2c179bc 9826 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 5, 1, 4, 0 });
9827 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 7, 3, 6, 2 });
a7a73438 9828#else
9829 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 1, 5 });
9830 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 6, 3, 7 });
9831#endif
d98a3884 9832 return __rv;
9833}
9834
5c493d36 9835__extension__ extern __inline float32x4x2_t
9836__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9837vzipq_f32 (float32x4_t __a, float32x4_t __b)
9838{
9839 float32x4x2_t __rv;
a7a73438 9840#ifdef __ARM_BIG_ENDIAN
c2c179bc 9841 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 5, 1, 4, 0 });
9842 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 7, 3, 6, 2 });
a7a73438 9843#else
9844 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 1, 5 });
9845 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 6, 3, 7 });
9846#endif
d98a3884 9847 return __rv;
9848}
9849
5c493d36 9850__extension__ extern __inline uint8x16x2_t
9851__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9852vzipq_u8 (uint8x16_t __a, uint8x16_t __b)
9853{
9854 uint8x16x2_t __rv;
a7a73438 9855#ifdef __ARM_BIG_ENDIAN
9856 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
c2c179bc 9857 { 20, 4, 21, 5, 22, 6, 23, 7, 16, 0, 17, 1, 18, 2, 19, 3 });
a7a73438 9858 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
c2c179bc 9859 { 28, 12, 29, 13, 30, 14, 31, 15, 24, 8, 25, 9, 26, 10, 27, 11 });
a7a73438 9860#else
9861 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
9862 { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
9863 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
9864 { 8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31 });
9865#endif
d98a3884 9866 return __rv;
9867}
9868
5c493d36 9869__extension__ extern __inline uint16x8x2_t
9870__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9871vzipq_u16 (uint16x8_t __a, uint16x8_t __b)
9872{
9873 uint16x8x2_t __rv;
a7a73438 9874#ifdef __ARM_BIG_ENDIAN
9875 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
c2c179bc 9876 { 10, 2, 11, 3, 8, 0, 9, 1 });
a7a73438 9877 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
c2c179bc 9878 { 14, 6, 15, 7, 12, 4, 13, 5 });
a7a73438 9879#else
9880 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
9881 { 0, 8, 1, 9, 2, 10, 3, 11 });
9882 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
9883 { 4, 12, 5, 13, 6, 14, 7, 15 });
9884#endif
d98a3884 9885 return __rv;
9886}
9887
5c493d36 9888__extension__ extern __inline uint32x4x2_t
9889__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9890vzipq_u32 (uint32x4_t __a, uint32x4_t __b)
9891{
9892 uint32x4x2_t __rv;
a7a73438 9893#ifdef __ARM_BIG_ENDIAN
c2c179bc 9894 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 5, 1, 4, 0 });
9895 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 7, 3, 6, 2 });
a7a73438 9896#else
9897 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 1, 5 });
9898 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 6, 3, 7 });
9899#endif
d98a3884 9900 return __rv;
9901}
9902
5c493d36 9903__extension__ extern __inline poly8x16x2_t
9904__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9905vzipq_p8 (poly8x16_t __a, poly8x16_t __b)
9906{
9907 poly8x16x2_t __rv;
a7a73438 9908#ifdef __ARM_BIG_ENDIAN
9909 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
c2c179bc 9910 { 20, 4, 21, 5, 22, 6, 23, 7, 16, 0, 17, 1, 18, 2, 19, 3 });
a7a73438 9911 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
c2c179bc 9912 { 28, 12, 29, 13, 30, 14, 31, 15, 24, 8, 25, 9, 26, 10, 27, 11 });
a7a73438 9913#else
9914 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
9915 { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
9916 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
9917 { 8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31 });
9918#endif
d98a3884 9919 return __rv;
9920}
9921
5c493d36 9922__extension__ extern __inline poly16x8x2_t
9923__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9924vzipq_p16 (poly16x8_t __a, poly16x8_t __b)
9925{
9926 poly16x8x2_t __rv;
a7a73438 9927#ifdef __ARM_BIG_ENDIAN
9928 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
c2c179bc 9929 { 10, 2, 11, 3, 8, 0, 9, 1 });
a7a73438 9930 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
c2c179bc 9931 { 14, 6, 15, 7, 12, 4, 13, 5 });
a7a73438 9932#else
9933 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
9934 { 0, 8, 1, 9, 2, 10, 3, 11 });
9935 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
9936 { 4, 12, 5, 13, 6, 14, 7, 15 });
9937#endif
d98a3884 9938 return __rv;
9939}
9940
5c493d36 9941__extension__ extern __inline int8x8x2_t
9942__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9943vuzp_s8 (int8x8_t __a, int8x8_t __b)
9944{
9945 int8x8x2_t __rv;
a7a73438 9946#ifdef __ARM_BIG_ENDIAN
9947 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
9948 { 9, 11, 13, 15, 1, 3, 5, 7 });
9949 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
9950 { 8, 10, 12, 14, 0, 2, 4, 6 });
9951#else
9952 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
9953 { 0, 2, 4, 6, 8, 10, 12, 14 });
9954 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
9955 { 1, 3, 5, 7, 9, 11, 13, 15 });
9956#endif
d98a3884 9957 return __rv;
9958}
9959
5c493d36 9960__extension__ extern __inline int16x4x2_t
9961__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9962vuzp_s16 (int16x4_t __a, int16x4_t __b)
9963{
9964 int16x4x2_t __rv;
a7a73438 9965#ifdef __ARM_BIG_ENDIAN
9966 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 5, 7, 1, 3 });
9967 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 6, 0, 2 });
9968#else
9969 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 2, 4, 6 });
9970 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 3, 5, 7 });
9971#endif
d98a3884 9972 return __rv;
9973}
9974
5c493d36 9975__extension__ extern __inline int32x2x2_t
9976__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9977vuzp_s32 (int32x2_t __a, int32x2_t __b)
9978{
9979 int32x2x2_t __rv;
a7a73438 9980#ifdef __ARM_BIG_ENDIAN
9981 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
9982 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
9983#else
9984 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
9985 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
9986#endif
d98a3884 9987 return __rv;
9988}
9989
5c493d36 9990__extension__ extern __inline float32x2x2_t
9991__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 9992vuzp_f32 (float32x2_t __a, float32x2_t __b)
9993{
9994 float32x2x2_t __rv;
a7a73438 9995#ifdef __ARM_BIG_ENDIAN
9996 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
9997 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
9998#else
9999 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
10000 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
10001#endif
d98a3884 10002 return __rv;
10003}
10004
5c493d36 10005__extension__ extern __inline uint8x8x2_t
10006__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10007vuzp_u8 (uint8x8_t __a, uint8x8_t __b)
10008{
10009 uint8x8x2_t __rv;
a7a73438 10010#ifdef __ARM_BIG_ENDIAN
10011 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
10012 { 9, 11, 13, 15, 1, 3, 5, 7 });
10013 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
10014 { 8, 10, 12, 14, 0, 2, 4, 6 });
10015#else
10016 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
10017 { 0, 2, 4, 6, 8, 10, 12, 14 });
10018 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
10019 { 1, 3, 5, 7, 9, 11, 13, 15 });
10020#endif
d98a3884 10021 return __rv;
10022}
10023
5c493d36 10024__extension__ extern __inline uint16x4x2_t
10025__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10026vuzp_u16 (uint16x4_t __a, uint16x4_t __b)
10027{
10028 uint16x4x2_t __rv;
a7a73438 10029#ifdef __ARM_BIG_ENDIAN
10030 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 5, 7, 1, 3 });
10031 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 6, 0, 2 });
10032#else
10033 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 2, 4, 6 });
10034 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 3, 5, 7 });
10035#endif
d98a3884 10036 return __rv;
10037}
10038
5c493d36 10039__extension__ extern __inline uint32x2x2_t
10040__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10041vuzp_u32 (uint32x2_t __a, uint32x2_t __b)
10042{
10043 uint32x2x2_t __rv;
a7a73438 10044#ifdef __ARM_BIG_ENDIAN
10045 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
10046 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
10047#else
10048 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
10049 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
10050#endif
d98a3884 10051 return __rv;
10052}
10053
5c493d36 10054__extension__ extern __inline poly8x8x2_t
10055__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10056vuzp_p8 (poly8x8_t __a, poly8x8_t __b)
10057{
10058 poly8x8x2_t __rv;
a7a73438 10059#ifdef __ARM_BIG_ENDIAN
10060 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
10061 { 9, 11, 13, 15, 1, 3, 5, 7 });
10062 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
10063 { 8, 10, 12, 14, 0, 2, 4, 6 });
10064#else
10065 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
10066 { 0, 2, 4, 6, 8, 10, 12, 14 });
10067 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
10068 { 1, 3, 5, 7, 9, 11, 13, 15 });
10069#endif
d98a3884 10070 return __rv;
10071}
10072
5c493d36 10073__extension__ extern __inline poly16x4x2_t
10074__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10075vuzp_p16 (poly16x4_t __a, poly16x4_t __b)
10076{
10077 poly16x4x2_t __rv;
a7a73438 10078#ifdef __ARM_BIG_ENDIAN
10079 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 5, 7, 1, 3 });
10080 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 6, 0, 2 });
10081#else
10082 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 2, 4, 6 });
10083 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 3, 5, 7 });
10084#endif
d98a3884 10085 return __rv;
10086}
10087
5c493d36 10088__extension__ extern __inline int8x16x2_t
10089__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10090vuzpq_s8 (int8x16_t __a, int8x16_t __b)
10091{
10092 int8x16x2_t __rv;
a7a73438 10093#ifdef __ARM_BIG_ENDIAN
10094 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
0771836e 10095 { 9, 11, 13, 15, 1, 3, 5, 7, 25, 27, 29, 31, 17, 19, 21, 23 });
a7a73438 10096 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
0771836e 10097 { 8, 10, 12, 14, 0, 2, 4, 6, 24, 26, 28, 30, 16, 18, 20, 22 });
a7a73438 10098#else
10099 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
10100 { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 });
10101 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
10102 { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 });
10103#endif
d98a3884 10104 return __rv;
10105}
10106
5c493d36 10107__extension__ extern __inline int16x8x2_t
10108__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10109vuzpq_s16 (int16x8_t __a, int16x8_t __b)
10110{
10111 int16x8x2_t __rv;
a7a73438 10112#ifdef __ARM_BIG_ENDIAN
10113 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
0771836e 10114 { 5, 7, 1, 3, 13, 15, 9, 11 });
a7a73438 10115 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
0771836e 10116 { 4, 6, 0, 2, 12, 14, 8, 10 });
a7a73438 10117#else
10118 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
10119 { 0, 2, 4, 6, 8, 10, 12, 14 });
10120 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
10121 { 1, 3, 5, 7, 9, 11, 13, 15 });
10122#endif
d98a3884 10123 return __rv;
10124}
10125
5c493d36 10126__extension__ extern __inline int32x4x2_t
10127__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10128vuzpq_s32 (int32x4_t __a, int32x4_t __b)
10129{
10130 int32x4x2_t __rv;
a7a73438 10131#ifdef __ARM_BIG_ENDIAN
0771836e 10132 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 3, 1, 7, 5 });
10133 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 0, 6, 4 });
a7a73438 10134#else
10135 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 2, 4, 6 });
10136 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 3, 5, 7 });
10137#endif
d98a3884 10138 return __rv;
10139}
10140
5c493d36 10141__extension__ extern __inline float32x4x2_t
10142__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10143vuzpq_f32 (float32x4_t __a, float32x4_t __b)
10144{
10145 float32x4x2_t __rv;
a7a73438 10146#ifdef __ARM_BIG_ENDIAN
0771836e 10147 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 3, 1, 7, 5 });
10148 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 0, 6, 4 });
a7a73438 10149#else
10150 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 2, 4, 6 });
10151 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 3, 5, 7 });
10152#endif
d98a3884 10153 return __rv;
10154}
10155
5c493d36 10156__extension__ extern __inline uint8x16x2_t
10157__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10158vuzpq_u8 (uint8x16_t __a, uint8x16_t __b)
10159{
10160 uint8x16x2_t __rv;
a7a73438 10161#ifdef __ARM_BIG_ENDIAN
10162 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
0771836e 10163 { 9, 11, 13, 15, 1, 3, 5, 7, 25, 27, 29, 31, 17, 19, 21, 23 });
a7a73438 10164 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
0771836e 10165 { 8, 10, 12, 14, 0, 2, 4, 6, 24, 26, 28, 30, 16, 18, 20, 22 });
a7a73438 10166#else
10167 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
10168 { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 });
10169 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
10170 { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 });
10171#endif
d98a3884 10172 return __rv;
10173}
10174
5c493d36 10175__extension__ extern __inline uint16x8x2_t
10176__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10177vuzpq_u16 (uint16x8_t __a, uint16x8_t __b)
10178{
10179 uint16x8x2_t __rv;
a7a73438 10180#ifdef __ARM_BIG_ENDIAN
10181 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
0771836e 10182 { 5, 7, 1, 3, 13, 15, 9, 11 });
a7a73438 10183 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
0771836e 10184 { 4, 6, 0, 2, 12, 14, 8, 10 });
a7a73438 10185#else
10186 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
10187 { 0, 2, 4, 6, 8, 10, 12, 14 });
10188 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
10189 { 1, 3, 5, 7, 9, 11, 13, 15 });
10190#endif
d98a3884 10191 return __rv;
10192}
10193
5c493d36 10194__extension__ extern __inline uint32x4x2_t
10195__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10196vuzpq_u32 (uint32x4_t __a, uint32x4_t __b)
10197{
10198 uint32x4x2_t __rv;
a7a73438 10199#ifdef __ARM_BIG_ENDIAN
0771836e 10200 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 3, 1, 7, 5 });
10201 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 0, 6, 4 });
a7a73438 10202#else
10203 __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 2, 4, 6 });
10204 __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 3, 5, 7 });
10205#endif
d98a3884 10206 return __rv;
10207}
10208
5c493d36 10209__extension__ extern __inline poly8x16x2_t
10210__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10211vuzpq_p8 (poly8x16_t __a, poly8x16_t __b)
10212{
10213 poly8x16x2_t __rv;
a7a73438 10214#ifdef __ARM_BIG_ENDIAN
10215 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
0771836e 10216 { 9, 11, 13, 15, 1, 3, 5, 7, 25, 27, 29, 31, 17, 19, 21, 23 });
a7a73438 10217 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
0771836e 10218 { 8, 10, 12, 14, 0, 2, 4, 6, 24, 26, 28, 30, 16, 18, 20, 22 });
a7a73438 10219#else
10220 __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
10221 { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 });
10222 __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
10223 { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 });
10224#endif
d98a3884 10225 return __rv;
10226}
10227
5c493d36 10228__extension__ extern __inline poly16x8x2_t
10229__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10230vuzpq_p16 (poly16x8_t __a, poly16x8_t __b)
10231{
10232 poly16x8x2_t __rv;
a7a73438 10233#ifdef __ARM_BIG_ENDIAN
10234 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
0771836e 10235 { 5, 7, 1, 3, 13, 15, 9, 11 });
a7a73438 10236 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
0771836e 10237 { 4, 6, 0, 2, 12, 14, 8, 10 });
a7a73438 10238#else
10239 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
10240 { 0, 2, 4, 6, 8, 10, 12, 14 });
10241 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
10242 { 1, 3, 5, 7, 9, 11, 13, 15 });
10243#endif
d98a3884 10244 return __rv;
10245}
10246
dcbc6813 10247#pragma GCC push_options
10248#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 10249__extension__ extern __inline poly64x1_t
10250__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 10251vld1_p64 (const poly64_t * __a)
10252{
10253 return (poly64x1_t)__builtin_neon_vld1di ((const __builtin_neon_di *) __a);
10254}
10255
dcbc6813 10256#pragma GCC pop_options
5c493d36 10257__extension__ extern __inline int8x8_t
10258__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10259vld1_s8 (const int8_t * __a)
10260{
10261 return (int8x8_t)__builtin_neon_vld1v8qi ((const __builtin_neon_qi *) __a);
10262}
10263
5c493d36 10264__extension__ extern __inline int16x4_t
10265__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10266vld1_s16 (const int16_t * __a)
10267{
10268 return (int16x4_t)__builtin_neon_vld1v4hi ((const __builtin_neon_hi *) __a);
10269}
10270
5c493d36 10271__extension__ extern __inline int32x2_t
10272__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10273vld1_s32 (const int32_t * __a)
10274{
10275 return (int32x2_t)__builtin_neon_vld1v2si ((const __builtin_neon_si *) __a);
10276}
10277
5c493d36 10278__extension__ extern __inline int64x1_t
10279__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10280vld1_s64 (const int64_t * __a)
10281{
10282 return (int64x1_t)__builtin_neon_vld1di ((const __builtin_neon_di *) __a);
10283}
10284
fb5f110d 10285#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 10286__extension__ extern __inline float16x4_t
10287__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 10288vld1_f16 (const float16_t * __a)
10289{
10290 return __builtin_neon_vld1v4hf (__a);
10291}
10292#endif
10293
5c493d36 10294__extension__ extern __inline float32x2_t
10295__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10296vld1_f32 (const float32_t * __a)
10297{
52a0d45c 10298 return (float32x2_t)__builtin_neon_vld1v2sf ((const __builtin_neon_sf *) __a);
d98a3884 10299}
10300
5c493d36 10301__extension__ extern __inline uint8x8_t
10302__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10303vld1_u8 (const uint8_t * __a)
10304{
10305 return (uint8x8_t)__builtin_neon_vld1v8qi ((const __builtin_neon_qi *) __a);
10306}
10307
5c493d36 10308__extension__ extern __inline uint16x4_t
10309__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10310vld1_u16 (const uint16_t * __a)
10311{
10312 return (uint16x4_t)__builtin_neon_vld1v4hi ((const __builtin_neon_hi *) __a);
10313}
10314
5c493d36 10315__extension__ extern __inline uint32x2_t
10316__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10317vld1_u32 (const uint32_t * __a)
10318{
10319 return (uint32x2_t)__builtin_neon_vld1v2si ((const __builtin_neon_si *) __a);
10320}
10321
5c493d36 10322__extension__ extern __inline uint64x1_t
10323__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10324vld1_u64 (const uint64_t * __a)
10325{
10326 return (uint64x1_t)__builtin_neon_vld1di ((const __builtin_neon_di *) __a);
10327}
10328
5c493d36 10329__extension__ extern __inline poly8x8_t
10330__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10331vld1_p8 (const poly8_t * __a)
10332{
10333 return (poly8x8_t)__builtin_neon_vld1v8qi ((const __builtin_neon_qi *) __a);
10334}
10335
5c493d36 10336__extension__ extern __inline poly16x4_t
10337__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10338vld1_p16 (const poly16_t * __a)
10339{
10340 return (poly16x4_t)__builtin_neon_vld1v4hi ((const __builtin_neon_hi *) __a);
10341}
10342
dcbc6813 10343#pragma GCC push_options
10344#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 10345__extension__ extern __inline poly64x2_t
10346__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 10347vld1q_p64 (const poly64_t * __a)
10348{
10349 return (poly64x2_t)__builtin_neon_vld1v2di ((const __builtin_neon_di *) __a);
10350}
10351
dcbc6813 10352#pragma GCC pop_options
5c493d36 10353__extension__ extern __inline int8x16_t
10354__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10355vld1q_s8 (const int8_t * __a)
10356{
10357 return (int8x16_t)__builtin_neon_vld1v16qi ((const __builtin_neon_qi *) __a);
10358}
10359
5c493d36 10360__extension__ extern __inline int16x8_t
10361__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10362vld1q_s16 (const int16_t * __a)
10363{
10364 return (int16x8_t)__builtin_neon_vld1v8hi ((const __builtin_neon_hi *) __a);
10365}
10366
5c493d36 10367__extension__ extern __inline int32x4_t
10368__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10369vld1q_s32 (const int32_t * __a)
10370{
10371 return (int32x4_t)__builtin_neon_vld1v4si ((const __builtin_neon_si *) __a);
10372}
10373
5c493d36 10374__extension__ extern __inline int64x2_t
10375__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10376vld1q_s64 (const int64_t * __a)
10377{
10378 return (int64x2_t)__builtin_neon_vld1v2di ((const __builtin_neon_di *) __a);
10379}
10380
fb5f110d 10381#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 10382__extension__ extern __inline float16x8_t
10383__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 10384vld1q_f16 (const float16_t * __a)
10385{
10386 return __builtin_neon_vld1v8hf (__a);
10387}
10388#endif
10389
5c493d36 10390__extension__ extern __inline float32x4_t
10391__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10392vld1q_f32 (const float32_t * __a)
10393{
52a0d45c 10394 return (float32x4_t)__builtin_neon_vld1v4sf ((const __builtin_neon_sf *) __a);
d98a3884 10395}
10396
5c493d36 10397__extension__ extern __inline uint8x16_t
10398__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10399vld1q_u8 (const uint8_t * __a)
10400{
10401 return (uint8x16_t)__builtin_neon_vld1v16qi ((const __builtin_neon_qi *) __a);
10402}
10403
5c493d36 10404__extension__ extern __inline uint16x8_t
10405__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10406vld1q_u16 (const uint16_t * __a)
10407{
10408 return (uint16x8_t)__builtin_neon_vld1v8hi ((const __builtin_neon_hi *) __a);
10409}
10410
5c493d36 10411__extension__ extern __inline uint32x4_t
10412__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10413vld1q_u32 (const uint32_t * __a)
10414{
10415 return (uint32x4_t)__builtin_neon_vld1v4si ((const __builtin_neon_si *) __a);
10416}
10417
5c493d36 10418__extension__ extern __inline uint64x2_t
10419__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10420vld1q_u64 (const uint64_t * __a)
10421{
10422 return (uint64x2_t)__builtin_neon_vld1v2di ((const __builtin_neon_di *) __a);
10423}
10424
5c493d36 10425__extension__ extern __inline poly8x16_t
10426__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10427vld1q_p8 (const poly8_t * __a)
10428{
10429 return (poly8x16_t)__builtin_neon_vld1v16qi ((const __builtin_neon_qi *) __a);
10430}
10431
5c493d36 10432__extension__ extern __inline poly16x8_t
10433__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10434vld1q_p16 (const poly16_t * __a)
10435{
10436 return (poly16x8_t)__builtin_neon_vld1v8hi ((const __builtin_neon_hi *) __a);
10437}
10438
5c493d36 10439__extension__ extern __inline int8x8_t
10440__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10441vld1_lane_s8 (const int8_t * __a, int8x8_t __b, const int __c)
10442{
10443 return (int8x8_t)__builtin_neon_vld1_lanev8qi ((const __builtin_neon_qi *) __a, __b, __c);
10444}
10445
5c493d36 10446__extension__ extern __inline int16x4_t
10447__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10448vld1_lane_s16 (const int16_t * __a, int16x4_t __b, const int __c)
10449{
10450 return (int16x4_t)__builtin_neon_vld1_lanev4hi ((const __builtin_neon_hi *) __a, __b, __c);
10451}
10452
5c493d36 10453__extension__ extern __inline int32x2_t
10454__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10455vld1_lane_s32 (const int32_t * __a, int32x2_t __b, const int __c)
10456{
10457 return (int32x2_t)__builtin_neon_vld1_lanev2si ((const __builtin_neon_si *) __a, __b, __c);
10458}
10459
682ea749 10460#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 10461__extension__ extern __inline float16x4_t
10462__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 10463vld1_lane_f16 (const float16_t * __a, float16x4_t __b, const int __c)
10464{
10465 return vset_lane_f16 (*__a, __b, __c);
10466}
10467#endif
10468
5c493d36 10469__extension__ extern __inline float32x2_t
10470__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10471vld1_lane_f32 (const float32_t * __a, float32x2_t __b, const int __c)
10472{
52a0d45c 10473 return (float32x2_t)__builtin_neon_vld1_lanev2sf ((const __builtin_neon_sf *) __a, __b, __c);
d98a3884 10474}
10475
5c493d36 10476__extension__ extern __inline uint8x8_t
10477__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10478vld1_lane_u8 (const uint8_t * __a, uint8x8_t __b, const int __c)
10479{
10480 return (uint8x8_t)__builtin_neon_vld1_lanev8qi ((const __builtin_neon_qi *) __a, (int8x8_t) __b, __c);
10481}
10482
5c493d36 10483__extension__ extern __inline uint16x4_t
10484__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10485vld1_lane_u16 (const uint16_t * __a, uint16x4_t __b, const int __c)
10486{
10487 return (uint16x4_t)__builtin_neon_vld1_lanev4hi ((const __builtin_neon_hi *) __a, (int16x4_t) __b, __c);
10488}
10489
5c493d36 10490__extension__ extern __inline uint32x2_t
10491__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10492vld1_lane_u32 (const uint32_t * __a, uint32x2_t __b, const int __c)
10493{
10494 return (uint32x2_t)__builtin_neon_vld1_lanev2si ((const __builtin_neon_si *) __a, (int32x2_t) __b, __c);
10495}
10496
5c493d36 10497__extension__ extern __inline poly8x8_t
10498__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10499vld1_lane_p8 (const poly8_t * __a, poly8x8_t __b, const int __c)
10500{
10501 return (poly8x8_t)__builtin_neon_vld1_lanev8qi ((const __builtin_neon_qi *) __a, (int8x8_t) __b, __c);
10502}
10503
5c493d36 10504__extension__ extern __inline poly16x4_t
10505__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10506vld1_lane_p16 (const poly16_t * __a, poly16x4_t __b, const int __c)
10507{
10508 return (poly16x4_t)__builtin_neon_vld1_lanev4hi ((const __builtin_neon_hi *) __a, (int16x4_t) __b, __c);
10509}
10510
dcbc6813 10511#pragma GCC push_options
10512#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 10513__extension__ extern __inline poly64x1_t
10514__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 10515vld1_lane_p64 (const poly64_t * __a, poly64x1_t __b, const int __c)
10516{
10517 return (poly64x1_t)__builtin_neon_vld1_lanedi ((const __builtin_neon_di *) __a, __b, __c);
10518}
10519
dcbc6813 10520#pragma GCC pop_options
5c493d36 10521__extension__ extern __inline int64x1_t
10522__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10523vld1_lane_s64 (const int64_t * __a, int64x1_t __b, const int __c)
10524{
10525 return (int64x1_t)__builtin_neon_vld1_lanedi ((const __builtin_neon_di *) __a, __b, __c);
10526}
10527
5c493d36 10528__extension__ extern __inline uint64x1_t
10529__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10530vld1_lane_u64 (const uint64_t * __a, uint64x1_t __b, const int __c)
10531{
10532 return (uint64x1_t)__builtin_neon_vld1_lanedi ((const __builtin_neon_di *) __a, (int64x1_t) __b, __c);
10533}
10534
5c493d36 10535__extension__ extern __inline int8x16_t
10536__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10537vld1q_lane_s8 (const int8_t * __a, int8x16_t __b, const int __c)
10538{
10539 return (int8x16_t)__builtin_neon_vld1_lanev16qi ((const __builtin_neon_qi *) __a, __b, __c);
10540}
10541
5c493d36 10542__extension__ extern __inline int16x8_t
10543__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10544vld1q_lane_s16 (const int16_t * __a, int16x8_t __b, const int __c)
10545{
10546 return (int16x8_t)__builtin_neon_vld1_lanev8hi ((const __builtin_neon_hi *) __a, __b, __c);
10547}
10548
5c493d36 10549__extension__ extern __inline int32x4_t
10550__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10551vld1q_lane_s32 (const int32_t * __a, int32x4_t __b, const int __c)
10552{
10553 return (int32x4_t)__builtin_neon_vld1_lanev4si ((const __builtin_neon_si *) __a, __b, __c);
10554}
10555
114e7e56 10556#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 10557__extension__ extern __inline float16x8_t
10558__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 10559vld1q_lane_f16 (const float16_t * __a, float16x8_t __b, const int __c)
10560{
10561 return vsetq_lane_f16 (*__a, __b, __c);
10562}
10563#endif
10564
5c493d36 10565__extension__ extern __inline float32x4_t
10566__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10567vld1q_lane_f32 (const float32_t * __a, float32x4_t __b, const int __c)
10568{
52a0d45c 10569 return (float32x4_t)__builtin_neon_vld1_lanev4sf ((const __builtin_neon_sf *) __a, __b, __c);
d98a3884 10570}
10571
5c493d36 10572__extension__ extern __inline uint8x16_t
10573__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10574vld1q_lane_u8 (const uint8_t * __a, uint8x16_t __b, const int __c)
10575{
10576 return (uint8x16_t)__builtin_neon_vld1_lanev16qi ((const __builtin_neon_qi *) __a, (int8x16_t) __b, __c);
10577}
10578
5c493d36 10579__extension__ extern __inline uint16x8_t
10580__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10581vld1q_lane_u16 (const uint16_t * __a, uint16x8_t __b, const int __c)
10582{
10583 return (uint16x8_t)__builtin_neon_vld1_lanev8hi ((const __builtin_neon_hi *) __a, (int16x8_t) __b, __c);
10584}
10585
5c493d36 10586__extension__ extern __inline uint32x4_t
10587__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10588vld1q_lane_u32 (const uint32_t * __a, uint32x4_t __b, const int __c)
10589{
10590 return (uint32x4_t)__builtin_neon_vld1_lanev4si ((const __builtin_neon_si *) __a, (int32x4_t) __b, __c);
10591}
10592
5c493d36 10593__extension__ extern __inline poly8x16_t
10594__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10595vld1q_lane_p8 (const poly8_t * __a, poly8x16_t __b, const int __c)
10596{
10597 return (poly8x16_t)__builtin_neon_vld1_lanev16qi ((const __builtin_neon_qi *) __a, (int8x16_t) __b, __c);
10598}
10599
5c493d36 10600__extension__ extern __inline poly16x8_t
10601__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10602vld1q_lane_p16 (const poly16_t * __a, poly16x8_t __b, const int __c)
10603{
10604 return (poly16x8_t)__builtin_neon_vld1_lanev8hi ((const __builtin_neon_hi *) __a, (int16x8_t) __b, __c);
10605}
10606
dcbc6813 10607#pragma GCC push_options
10608#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 10609__extension__ extern __inline poly64x2_t
10610__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 10611vld1q_lane_p64 (const poly64_t * __a, poly64x2_t __b, const int __c)
10612{
10613 return (poly64x2_t)__builtin_neon_vld1_lanev2di ((const __builtin_neon_di *) __a, (int64x2_t) __b, __c);
10614}
10615
dcbc6813 10616#pragma GCC pop_options
5c493d36 10617__extension__ extern __inline int64x2_t
10618__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10619vld1q_lane_s64 (const int64_t * __a, int64x2_t __b, const int __c)
10620{
10621 return (int64x2_t)__builtin_neon_vld1_lanev2di ((const __builtin_neon_di *) __a, __b, __c);
10622}
10623
5c493d36 10624__extension__ extern __inline uint64x2_t
10625__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10626vld1q_lane_u64 (const uint64_t * __a, uint64x2_t __b, const int __c)
10627{
10628 return (uint64x2_t)__builtin_neon_vld1_lanev2di ((const __builtin_neon_di *) __a, (int64x2_t) __b, __c);
10629}
10630
5c493d36 10631__extension__ extern __inline int8x8_t
10632__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10633vld1_dup_s8 (const int8_t * __a)
10634{
10635 return (int8x8_t)__builtin_neon_vld1_dupv8qi ((const __builtin_neon_qi *) __a);
10636}
10637
5c493d36 10638__extension__ extern __inline int16x4_t
10639__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10640vld1_dup_s16 (const int16_t * __a)
10641{
10642 return (int16x4_t)__builtin_neon_vld1_dupv4hi ((const __builtin_neon_hi *) __a);
10643}
10644
5c493d36 10645__extension__ extern __inline int32x2_t
10646__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10647vld1_dup_s32 (const int32_t * __a)
10648{
10649 return (int32x2_t)__builtin_neon_vld1_dupv2si ((const __builtin_neon_si *) __a);
10650}
10651
682ea749 10652#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 10653__extension__ extern __inline float16x4_t
10654__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 10655vld1_dup_f16 (const float16_t * __a)
10656{
10657 float16_t __f = *__a;
10658 return (float16x4_t) { __f, __f, __f, __f };
10659}
10660#endif
10661
5c493d36 10662__extension__ extern __inline float32x2_t
10663__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10664vld1_dup_f32 (const float32_t * __a)
10665{
52a0d45c 10666 return (float32x2_t)__builtin_neon_vld1_dupv2sf ((const __builtin_neon_sf *) __a);
d98a3884 10667}
10668
5c493d36 10669__extension__ extern __inline uint8x8_t
10670__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10671vld1_dup_u8 (const uint8_t * __a)
10672{
10673 return (uint8x8_t)__builtin_neon_vld1_dupv8qi ((const __builtin_neon_qi *) __a);
10674}
10675
5c493d36 10676__extension__ extern __inline uint16x4_t
10677__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10678vld1_dup_u16 (const uint16_t * __a)
10679{
10680 return (uint16x4_t)__builtin_neon_vld1_dupv4hi ((const __builtin_neon_hi *) __a);
10681}
10682
5c493d36 10683__extension__ extern __inline uint32x2_t
10684__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10685vld1_dup_u32 (const uint32_t * __a)
10686{
10687 return (uint32x2_t)__builtin_neon_vld1_dupv2si ((const __builtin_neon_si *) __a);
10688}
10689
5c493d36 10690__extension__ extern __inline poly8x8_t
10691__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10692vld1_dup_p8 (const poly8_t * __a)
10693{
10694 return (poly8x8_t)__builtin_neon_vld1_dupv8qi ((const __builtin_neon_qi *) __a);
10695}
10696
5c493d36 10697__extension__ extern __inline poly16x4_t
10698__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10699vld1_dup_p16 (const poly16_t * __a)
10700{
10701 return (poly16x4_t)__builtin_neon_vld1_dupv4hi ((const __builtin_neon_hi *) __a);
10702}
10703
dcbc6813 10704#pragma GCC push_options
10705#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 10706__extension__ extern __inline poly64x1_t
10707__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 10708vld1_dup_p64 (const poly64_t * __a)
10709{
10710 return (poly64x1_t)__builtin_neon_vld1_dupdi ((const __builtin_neon_di *) __a);
10711}
10712
dcbc6813 10713#pragma GCC pop_options
5c493d36 10714__extension__ extern __inline int64x1_t
10715__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10716vld1_dup_s64 (const int64_t * __a)
10717{
10718 return (int64x1_t)__builtin_neon_vld1_dupdi ((const __builtin_neon_di *) __a);
10719}
10720
5c493d36 10721__extension__ extern __inline uint64x1_t
10722__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10723vld1_dup_u64 (const uint64_t * __a)
10724{
10725 return (uint64x1_t)__builtin_neon_vld1_dupdi ((const __builtin_neon_di *) __a);
10726}
10727
5c493d36 10728__extension__ extern __inline int8x16_t
10729__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10730vld1q_dup_s8 (const int8_t * __a)
10731{
10732 return (int8x16_t)__builtin_neon_vld1_dupv16qi ((const __builtin_neon_qi *) __a);
10733}
10734
5c493d36 10735__extension__ extern __inline int16x8_t
10736__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10737vld1q_dup_s16 (const int16_t * __a)
10738{
10739 return (int16x8_t)__builtin_neon_vld1_dupv8hi ((const __builtin_neon_hi *) __a);
10740}
10741
5c493d36 10742__extension__ extern __inline int32x4_t
10743__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10744vld1q_dup_s32 (const int32_t * __a)
10745{
10746 return (int32x4_t)__builtin_neon_vld1_dupv4si ((const __builtin_neon_si *) __a);
10747}
10748
114e7e56 10749#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 10750__extension__ extern __inline float16x8_t
10751__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 10752vld1q_dup_f16 (const float16_t * __a)
10753{
10754 float16_t __f = *__a;
10755 return (float16x8_t) { __f, __f, __f, __f, __f, __f, __f, __f };
10756}
10757#endif
10758
5c493d36 10759__extension__ extern __inline float32x4_t
10760__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10761vld1q_dup_f32 (const float32_t * __a)
10762{
52a0d45c 10763 return (float32x4_t)__builtin_neon_vld1_dupv4sf ((const __builtin_neon_sf *) __a);
d98a3884 10764}
10765
5c493d36 10766__extension__ extern __inline uint8x16_t
10767__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10768vld1q_dup_u8 (const uint8_t * __a)
10769{
10770 return (uint8x16_t)__builtin_neon_vld1_dupv16qi ((const __builtin_neon_qi *) __a);
10771}
10772
5c493d36 10773__extension__ extern __inline uint16x8_t
10774__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10775vld1q_dup_u16 (const uint16_t * __a)
10776{
10777 return (uint16x8_t)__builtin_neon_vld1_dupv8hi ((const __builtin_neon_hi *) __a);
10778}
10779
5c493d36 10780__extension__ extern __inline uint32x4_t
10781__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10782vld1q_dup_u32 (const uint32_t * __a)
10783{
10784 return (uint32x4_t)__builtin_neon_vld1_dupv4si ((const __builtin_neon_si *) __a);
10785}
10786
5c493d36 10787__extension__ extern __inline poly8x16_t
10788__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10789vld1q_dup_p8 (const poly8_t * __a)
10790{
10791 return (poly8x16_t)__builtin_neon_vld1_dupv16qi ((const __builtin_neon_qi *) __a);
10792}
10793
5c493d36 10794__extension__ extern __inline poly16x8_t
10795__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10796vld1q_dup_p16 (const poly16_t * __a)
10797{
10798 return (poly16x8_t)__builtin_neon_vld1_dupv8hi ((const __builtin_neon_hi *) __a);
10799}
10800
dcbc6813 10801#pragma GCC push_options
10802#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 10803__extension__ extern __inline poly64x2_t
10804__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 10805vld1q_dup_p64 (const poly64_t * __a)
10806{
10807 return (poly64x2_t)__builtin_neon_vld1_dupv2di ((const __builtin_neon_di *) __a);
10808}
10809
dcbc6813 10810#pragma GCC pop_options
5c493d36 10811__extension__ extern __inline int64x2_t
10812__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10813vld1q_dup_s64 (const int64_t * __a)
10814{
10815 return (int64x2_t)__builtin_neon_vld1_dupv2di ((const __builtin_neon_di *) __a);
10816}
10817
5c493d36 10818__extension__ extern __inline uint64x2_t
10819__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10820vld1q_dup_u64 (const uint64_t * __a)
10821{
10822 return (uint64x2_t)__builtin_neon_vld1_dupv2di ((const __builtin_neon_di *) __a);
10823}
10824
dcbc6813 10825#pragma GCC push_options
10826#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 10827__extension__ extern __inline void
10828__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 10829vst1_p64 (poly64_t * __a, poly64x1_t __b)
10830{
10831 __builtin_neon_vst1di ((__builtin_neon_di *) __a, __b);
10832}
10833
dcbc6813 10834#pragma GCC pop_options
5c493d36 10835__extension__ extern __inline void
10836__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10837vst1_s8 (int8_t * __a, int8x8_t __b)
10838{
10839 __builtin_neon_vst1v8qi ((__builtin_neon_qi *) __a, __b);
10840}
10841
5c493d36 10842__extension__ extern __inline void
10843__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10844vst1_s16 (int16_t * __a, int16x4_t __b)
10845{
10846 __builtin_neon_vst1v4hi ((__builtin_neon_hi *) __a, __b);
10847}
10848
5c493d36 10849__extension__ extern __inline void
10850__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10851vst1_s32 (int32_t * __a, int32x2_t __b)
10852{
10853 __builtin_neon_vst1v2si ((__builtin_neon_si *) __a, __b);
10854}
10855
5c493d36 10856__extension__ extern __inline void
10857__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10858vst1_s64 (int64_t * __a, int64x1_t __b)
10859{
10860 __builtin_neon_vst1di ((__builtin_neon_di *) __a, __b);
10861}
10862
fb5f110d 10863#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 10864__extension__ extern __inline void
10865__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 10866vst1_f16 (float16_t * __a, float16x4_t __b)
10867{
10868 __builtin_neon_vst1v4hf (__a, __b);
10869}
10870#endif
10871
5c493d36 10872__extension__ extern __inline void
10873__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10874vst1_f32 (float32_t * __a, float32x2_t __b)
10875{
52a0d45c 10876 __builtin_neon_vst1v2sf ((__builtin_neon_sf *) __a, __b);
d98a3884 10877}
10878
5c493d36 10879__extension__ extern __inline void
10880__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10881vst1_u8 (uint8_t * __a, uint8x8_t __b)
10882{
10883 __builtin_neon_vst1v8qi ((__builtin_neon_qi *) __a, (int8x8_t) __b);
10884}
10885
5c493d36 10886__extension__ extern __inline void
10887__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10888vst1_u16 (uint16_t * __a, uint16x4_t __b)
10889{
10890 __builtin_neon_vst1v4hi ((__builtin_neon_hi *) __a, (int16x4_t) __b);
10891}
10892
5c493d36 10893__extension__ extern __inline void
10894__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10895vst1_u32 (uint32_t * __a, uint32x2_t __b)
10896{
10897 __builtin_neon_vst1v2si ((__builtin_neon_si *) __a, (int32x2_t) __b);
10898}
10899
5c493d36 10900__extension__ extern __inline void
10901__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10902vst1_u64 (uint64_t * __a, uint64x1_t __b)
10903{
10904 __builtin_neon_vst1di ((__builtin_neon_di *) __a, (int64x1_t) __b);
10905}
10906
5c493d36 10907__extension__ extern __inline void
10908__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10909vst1_p8 (poly8_t * __a, poly8x8_t __b)
10910{
10911 __builtin_neon_vst1v8qi ((__builtin_neon_qi *) __a, (int8x8_t) __b);
10912}
10913
5c493d36 10914__extension__ extern __inline void
10915__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10916vst1_p16 (poly16_t * __a, poly16x4_t __b)
10917{
10918 __builtin_neon_vst1v4hi ((__builtin_neon_hi *) __a, (int16x4_t) __b);
10919}
10920
dcbc6813 10921#pragma GCC push_options
10922#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 10923__extension__ extern __inline void
10924__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 10925vst1q_p64 (poly64_t * __a, poly64x2_t __b)
10926{
10927 __builtin_neon_vst1v2di ((__builtin_neon_di *) __a, (int64x2_t) __b);
10928}
10929
dcbc6813 10930#pragma GCC pop_options
5c493d36 10931__extension__ extern __inline void
10932__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10933vst1q_s8 (int8_t * __a, int8x16_t __b)
10934{
10935 __builtin_neon_vst1v16qi ((__builtin_neon_qi *) __a, __b);
10936}
10937
5c493d36 10938__extension__ extern __inline void
10939__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10940vst1q_s16 (int16_t * __a, int16x8_t __b)
10941{
10942 __builtin_neon_vst1v8hi ((__builtin_neon_hi *) __a, __b);
10943}
10944
5c493d36 10945__extension__ extern __inline void
10946__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10947vst1q_s32 (int32_t * __a, int32x4_t __b)
10948{
10949 __builtin_neon_vst1v4si ((__builtin_neon_si *) __a, __b);
10950}
10951
5c493d36 10952__extension__ extern __inline void
10953__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10954vst1q_s64 (int64_t * __a, int64x2_t __b)
10955{
10956 __builtin_neon_vst1v2di ((__builtin_neon_di *) __a, __b);
10957}
10958
fb5f110d 10959#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 10960__extension__ extern __inline void
10961__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 10962vst1q_f16 (float16_t * __a, float16x8_t __b)
10963{
10964 __builtin_neon_vst1v8hf (__a, __b);
10965}
10966#endif
10967
5c493d36 10968__extension__ extern __inline void
10969__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10970vst1q_f32 (float32_t * __a, float32x4_t __b)
10971{
52a0d45c 10972 __builtin_neon_vst1v4sf ((__builtin_neon_sf *) __a, __b);
d98a3884 10973}
10974
5c493d36 10975__extension__ extern __inline void
10976__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10977vst1q_u8 (uint8_t * __a, uint8x16_t __b)
10978{
10979 __builtin_neon_vst1v16qi ((__builtin_neon_qi *) __a, (int8x16_t) __b);
10980}
10981
5c493d36 10982__extension__ extern __inline void
10983__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10984vst1q_u16 (uint16_t * __a, uint16x8_t __b)
10985{
10986 __builtin_neon_vst1v8hi ((__builtin_neon_hi *) __a, (int16x8_t) __b);
10987}
10988
5c493d36 10989__extension__ extern __inline void
10990__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10991vst1q_u32 (uint32_t * __a, uint32x4_t __b)
10992{
10993 __builtin_neon_vst1v4si ((__builtin_neon_si *) __a, (int32x4_t) __b);
10994}
10995
5c493d36 10996__extension__ extern __inline void
10997__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 10998vst1q_u64 (uint64_t * __a, uint64x2_t __b)
10999{
11000 __builtin_neon_vst1v2di ((__builtin_neon_di *) __a, (int64x2_t) __b);
11001}
11002
5c493d36 11003__extension__ extern __inline void
11004__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11005vst1q_p8 (poly8_t * __a, poly8x16_t __b)
11006{
11007 __builtin_neon_vst1v16qi ((__builtin_neon_qi *) __a, (int8x16_t) __b);
11008}
11009
5c493d36 11010__extension__ extern __inline void
11011__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11012vst1q_p16 (poly16_t * __a, poly16x8_t __b)
11013{
11014 __builtin_neon_vst1v8hi ((__builtin_neon_hi *) __a, (int16x8_t) __b);
11015}
11016
5c493d36 11017__extension__ extern __inline void
11018__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11019vst1_lane_s8 (int8_t * __a, int8x8_t __b, const int __c)
11020{
11021 __builtin_neon_vst1_lanev8qi ((__builtin_neon_qi *) __a, __b, __c);
11022}
11023
5c493d36 11024__extension__ extern __inline void
11025__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11026vst1_lane_s16 (int16_t * __a, int16x4_t __b, const int __c)
11027{
11028 __builtin_neon_vst1_lanev4hi ((__builtin_neon_hi *) __a, __b, __c);
11029}
11030
5c493d36 11031__extension__ extern __inline void
11032__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11033vst1_lane_s32 (int32_t * __a, int32x2_t __b, const int __c)
11034{
11035 __builtin_neon_vst1_lanev2si ((__builtin_neon_si *) __a, __b, __c);
11036}
11037
fb5f110d 11038#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 11039__extension__ extern __inline void
11040__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 11041vst1_lane_f16 (float16_t * __a, float16x4_t __b, const int __c)
11042{
11043 __builtin_neon_vst1_lanev4hf (__a, __b, __c);
11044}
11045#endif
11046
5c493d36 11047__extension__ extern __inline void
11048__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11049vst1_lane_f32 (float32_t * __a, float32x2_t __b, const int __c)
11050{
52a0d45c 11051 __builtin_neon_vst1_lanev2sf ((__builtin_neon_sf *) __a, __b, __c);
d98a3884 11052}
11053
5c493d36 11054__extension__ extern __inline void
11055__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11056vst1_lane_u8 (uint8_t * __a, uint8x8_t __b, const int __c)
11057{
11058 __builtin_neon_vst1_lanev8qi ((__builtin_neon_qi *) __a, (int8x8_t) __b, __c);
11059}
11060
5c493d36 11061__extension__ extern __inline void
11062__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11063vst1_lane_u16 (uint16_t * __a, uint16x4_t __b, const int __c)
11064{
11065 __builtin_neon_vst1_lanev4hi ((__builtin_neon_hi *) __a, (int16x4_t) __b, __c);
11066}
11067
5c493d36 11068__extension__ extern __inline void
11069__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11070vst1_lane_u32 (uint32_t * __a, uint32x2_t __b, const int __c)
11071{
11072 __builtin_neon_vst1_lanev2si ((__builtin_neon_si *) __a, (int32x2_t) __b, __c);
11073}
11074
5c493d36 11075__extension__ extern __inline void
11076__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11077vst1_lane_p8 (poly8_t * __a, poly8x8_t __b, const int __c)
11078{
11079 __builtin_neon_vst1_lanev8qi ((__builtin_neon_qi *) __a, (int8x8_t) __b, __c);
11080}
11081
5c493d36 11082__extension__ extern __inline void
11083__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11084vst1_lane_p16 (poly16_t * __a, poly16x4_t __b, const int __c)
11085{
11086 __builtin_neon_vst1_lanev4hi ((__builtin_neon_hi *) __a, (int16x4_t) __b, __c);
11087}
11088
dcbc6813 11089#pragma GCC push_options
11090#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 11091__extension__ extern __inline void
11092__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 11093vst1_lane_p64 (poly64_t * __a, poly64x1_t __b, const int __c)
11094{
11095 __builtin_neon_vst1_lanedi ((__builtin_neon_di *) __a, __b, __c);
11096}
11097
dcbc6813 11098#pragma GCC pop_options
5c493d36 11099__extension__ extern __inline void
11100__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11101vst1_lane_s64 (int64_t * __a, int64x1_t __b, const int __c)
11102{
11103 __builtin_neon_vst1_lanedi ((__builtin_neon_di *) __a, __b, __c);
11104}
11105
5c493d36 11106__extension__ extern __inline void
11107__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11108vst1_lane_u64 (uint64_t * __a, uint64x1_t __b, const int __c)
11109{
11110 __builtin_neon_vst1_lanedi ((__builtin_neon_di *) __a, (int64x1_t) __b, __c);
11111}
11112
5c493d36 11113__extension__ extern __inline void
11114__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11115vst1q_lane_s8 (int8_t * __a, int8x16_t __b, const int __c)
11116{
11117 __builtin_neon_vst1_lanev16qi ((__builtin_neon_qi *) __a, __b, __c);
11118}
11119
5c493d36 11120__extension__ extern __inline void
11121__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11122vst1q_lane_s16 (int16_t * __a, int16x8_t __b, const int __c)
11123{
11124 __builtin_neon_vst1_lanev8hi ((__builtin_neon_hi *) __a, __b, __c);
11125}
11126
5c493d36 11127__extension__ extern __inline void
11128__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11129vst1q_lane_s32 (int32_t * __a, int32x4_t __b, const int __c)
11130{
11131 __builtin_neon_vst1_lanev4si ((__builtin_neon_si *) __a, __b, __c);
11132}
11133
fb5f110d 11134#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 11135__extension__ extern __inline void
11136__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 11137vst1q_lane_f16 (float16_t * __a, float16x8_t __b, const int __c)
11138{
11139 __builtin_neon_vst1_lanev8hf (__a, __b, __c);
11140}
11141#endif
11142
5c493d36 11143__extension__ extern __inline void
11144__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11145vst1q_lane_f32 (float32_t * __a, float32x4_t __b, const int __c)
11146{
52a0d45c 11147 __builtin_neon_vst1_lanev4sf ((__builtin_neon_sf *) __a, __b, __c);
d98a3884 11148}
11149
5c493d36 11150__extension__ extern __inline void
11151__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11152vst1q_lane_u8 (uint8_t * __a, uint8x16_t __b, const int __c)
11153{
11154 __builtin_neon_vst1_lanev16qi ((__builtin_neon_qi *) __a, (int8x16_t) __b, __c);
11155}
11156
5c493d36 11157__extension__ extern __inline void
11158__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11159vst1q_lane_u16 (uint16_t * __a, uint16x8_t __b, const int __c)
11160{
11161 __builtin_neon_vst1_lanev8hi ((__builtin_neon_hi *) __a, (int16x8_t) __b, __c);
11162}
11163
5c493d36 11164__extension__ extern __inline void
11165__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11166vst1q_lane_u32 (uint32_t * __a, uint32x4_t __b, const int __c)
11167{
11168 __builtin_neon_vst1_lanev4si ((__builtin_neon_si *) __a, (int32x4_t) __b, __c);
11169}
11170
5c493d36 11171__extension__ extern __inline void
11172__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11173vst1q_lane_p8 (poly8_t * __a, poly8x16_t __b, const int __c)
11174{
11175 __builtin_neon_vst1_lanev16qi ((__builtin_neon_qi *) __a, (int8x16_t) __b, __c);
11176}
11177
5c493d36 11178__extension__ extern __inline void
11179__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11180vst1q_lane_p16 (poly16_t * __a, poly16x8_t __b, const int __c)
11181{
11182 __builtin_neon_vst1_lanev8hi ((__builtin_neon_hi *) __a, (int16x8_t) __b, __c);
11183}
11184
dcbc6813 11185#pragma GCC push_options
11186#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 11187__extension__ extern __inline void
11188__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 11189vst1q_lane_p64 (poly64_t * __a, poly64x2_t __b, const int __c)
11190{
11191 __builtin_neon_vst1_lanev2di ((__builtin_neon_di *) __a, (int64x2_t) __b, __c);
11192}
11193
dcbc6813 11194#pragma GCC pop_options
5c493d36 11195__extension__ extern __inline void
11196__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11197vst1q_lane_s64 (int64_t * __a, int64x2_t __b, const int __c)
11198{
11199 __builtin_neon_vst1_lanev2di ((__builtin_neon_di *) __a, __b, __c);
11200}
11201
5c493d36 11202__extension__ extern __inline void
11203__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11204vst1q_lane_u64 (uint64_t * __a, uint64x2_t __b, const int __c)
11205{
11206 __builtin_neon_vst1_lanev2di ((__builtin_neon_di *) __a, (int64x2_t) __b, __c);
11207}
11208
5c493d36 11209__extension__ extern __inline int8x8x2_t
11210__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11211vld2_s8 (const int8_t * __a)
11212{
11213 union { int8x8x2_t __i; __builtin_neon_ti __o; } __rv;
11214 __rv.__o = __builtin_neon_vld2v8qi ((const __builtin_neon_qi *) __a);
11215 return __rv.__i;
11216}
11217
5c493d36 11218__extension__ extern __inline int16x4x2_t
11219__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11220vld2_s16 (const int16_t * __a)
11221{
11222 union { int16x4x2_t __i; __builtin_neon_ti __o; } __rv;
11223 __rv.__o = __builtin_neon_vld2v4hi ((const __builtin_neon_hi *) __a);
11224 return __rv.__i;
11225}
11226
5c493d36 11227__extension__ extern __inline int32x2x2_t
11228__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11229vld2_s32 (const int32_t * __a)
11230{
11231 union { int32x2x2_t __i; __builtin_neon_ti __o; } __rv;
11232 __rv.__o = __builtin_neon_vld2v2si ((const __builtin_neon_si *) __a);
11233 return __rv.__i;
11234}
11235
fb5f110d 11236#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 11237__extension__ extern __inline float16x4x2_t
11238__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 11239vld2_f16 (const float16_t * __a)
11240{
11241 union { float16x4x2_t __i; __builtin_neon_ti __o; } __rv;
11242 __rv.__o = __builtin_neon_vld2v4hf (__a);
11243 return __rv.__i;
11244}
11245#endif
11246
5c493d36 11247__extension__ extern __inline float32x2x2_t
11248__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11249vld2_f32 (const float32_t * __a)
11250{
11251 union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv;
52a0d45c 11252 __rv.__o = __builtin_neon_vld2v2sf ((const __builtin_neon_sf *) __a);
d98a3884 11253 return __rv.__i;
11254}
11255
5c493d36 11256__extension__ extern __inline uint8x8x2_t
11257__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11258vld2_u8 (const uint8_t * __a)
11259{
11260 union { uint8x8x2_t __i; __builtin_neon_ti __o; } __rv;
11261 __rv.__o = __builtin_neon_vld2v8qi ((const __builtin_neon_qi *) __a);
11262 return __rv.__i;
11263}
11264
5c493d36 11265__extension__ extern __inline uint16x4x2_t
11266__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11267vld2_u16 (const uint16_t * __a)
11268{
11269 union { uint16x4x2_t __i; __builtin_neon_ti __o; } __rv;
11270 __rv.__o = __builtin_neon_vld2v4hi ((const __builtin_neon_hi *) __a);
11271 return __rv.__i;
11272}
11273
5c493d36 11274__extension__ extern __inline uint32x2x2_t
11275__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11276vld2_u32 (const uint32_t * __a)
11277{
11278 union { uint32x2x2_t __i; __builtin_neon_ti __o; } __rv;
11279 __rv.__o = __builtin_neon_vld2v2si ((const __builtin_neon_si *) __a);
11280 return __rv.__i;
11281}
11282
5c493d36 11283__extension__ extern __inline poly8x8x2_t
11284__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11285vld2_p8 (const poly8_t * __a)
11286{
11287 union { poly8x8x2_t __i; __builtin_neon_ti __o; } __rv;
11288 __rv.__o = __builtin_neon_vld2v8qi ((const __builtin_neon_qi *) __a);
11289 return __rv.__i;
11290}
11291
5c493d36 11292__extension__ extern __inline poly16x4x2_t
11293__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11294vld2_p16 (const poly16_t * __a)
11295{
11296 union { poly16x4x2_t __i; __builtin_neon_ti __o; } __rv;
11297 __rv.__o = __builtin_neon_vld2v4hi ((const __builtin_neon_hi *) __a);
11298 return __rv.__i;
11299}
11300
dcbc6813 11301#pragma GCC push_options
11302#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 11303__extension__ extern __inline poly64x1x2_t
11304__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 11305vld2_p64 (const poly64_t * __a)
11306{
11307 union { poly64x1x2_t __i; __builtin_neon_ti __o; } __rv;
11308 __rv.__o = __builtin_neon_vld2di ((const __builtin_neon_di *) __a);
11309 return __rv.__i;
11310}
11311
dcbc6813 11312#pragma GCC pop_options
5c493d36 11313__extension__ extern __inline int64x1x2_t
11314__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11315vld2_s64 (const int64_t * __a)
11316{
11317 union { int64x1x2_t __i; __builtin_neon_ti __o; } __rv;
11318 __rv.__o = __builtin_neon_vld2di ((const __builtin_neon_di *) __a);
11319 return __rv.__i;
11320}
11321
5c493d36 11322__extension__ extern __inline uint64x1x2_t
11323__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11324vld2_u64 (const uint64_t * __a)
11325{
11326 union { uint64x1x2_t __i; __builtin_neon_ti __o; } __rv;
11327 __rv.__o = __builtin_neon_vld2di ((const __builtin_neon_di *) __a);
11328 return __rv.__i;
11329}
11330
5c493d36 11331__extension__ extern __inline int8x16x2_t
11332__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11333vld2q_s8 (const int8_t * __a)
11334{
11335 union { int8x16x2_t __i; __builtin_neon_oi __o; } __rv;
11336 __rv.__o = __builtin_neon_vld2v16qi ((const __builtin_neon_qi *) __a);
11337 return __rv.__i;
11338}
11339
5c493d36 11340__extension__ extern __inline int16x8x2_t
11341__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11342vld2q_s16 (const int16_t * __a)
11343{
11344 union { int16x8x2_t __i; __builtin_neon_oi __o; } __rv;
11345 __rv.__o = __builtin_neon_vld2v8hi ((const __builtin_neon_hi *) __a);
11346 return __rv.__i;
11347}
11348
5c493d36 11349__extension__ extern __inline int32x4x2_t
11350__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11351vld2q_s32 (const int32_t * __a)
11352{
11353 union { int32x4x2_t __i; __builtin_neon_oi __o; } __rv;
11354 __rv.__o = __builtin_neon_vld2v4si ((const __builtin_neon_si *) __a);
11355 return __rv.__i;
11356}
11357
fb5f110d 11358#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 11359__extension__ extern __inline float16x8x2_t
11360__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 11361vld2q_f16 (const float16_t * __a)
11362{
11363 union { float16x8x2_t __i; __builtin_neon_oi __o; } __rv;
11364 __rv.__o = __builtin_neon_vld2v8hf (__a);
11365 return __rv.__i;
11366}
11367#endif
11368
5c493d36 11369__extension__ extern __inline float32x4x2_t
11370__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11371vld2q_f32 (const float32_t * __a)
11372{
11373 union { float32x4x2_t __i; __builtin_neon_oi __o; } __rv;
52a0d45c 11374 __rv.__o = __builtin_neon_vld2v4sf ((const __builtin_neon_sf *) __a);
d98a3884 11375 return __rv.__i;
11376}
11377
5c493d36 11378__extension__ extern __inline uint8x16x2_t
11379__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11380vld2q_u8 (const uint8_t * __a)
11381{
11382 union { uint8x16x2_t __i; __builtin_neon_oi __o; } __rv;
11383 __rv.__o = __builtin_neon_vld2v16qi ((const __builtin_neon_qi *) __a);
11384 return __rv.__i;
11385}
11386
5c493d36 11387__extension__ extern __inline uint16x8x2_t
11388__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11389vld2q_u16 (const uint16_t * __a)
11390{
11391 union { uint16x8x2_t __i; __builtin_neon_oi __o; } __rv;
11392 __rv.__o = __builtin_neon_vld2v8hi ((const __builtin_neon_hi *) __a);
11393 return __rv.__i;
11394}
11395
5c493d36 11396__extension__ extern __inline uint32x4x2_t
11397__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11398vld2q_u32 (const uint32_t * __a)
11399{
11400 union { uint32x4x2_t __i; __builtin_neon_oi __o; } __rv;
11401 __rv.__o = __builtin_neon_vld2v4si ((const __builtin_neon_si *) __a);
11402 return __rv.__i;
11403}
11404
5c493d36 11405__extension__ extern __inline poly8x16x2_t
11406__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11407vld2q_p8 (const poly8_t * __a)
11408{
11409 union { poly8x16x2_t __i; __builtin_neon_oi __o; } __rv;
11410 __rv.__o = __builtin_neon_vld2v16qi ((const __builtin_neon_qi *) __a);
11411 return __rv.__i;
11412}
11413
5c493d36 11414__extension__ extern __inline poly16x8x2_t
11415__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11416vld2q_p16 (const poly16_t * __a)
11417{
11418 union { poly16x8x2_t __i; __builtin_neon_oi __o; } __rv;
11419 __rv.__o = __builtin_neon_vld2v8hi ((const __builtin_neon_hi *) __a);
11420 return __rv.__i;
11421}
11422
5c493d36 11423__extension__ extern __inline int8x8x2_t
11424__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11425vld2_lane_s8 (const int8_t * __a, int8x8x2_t __b, const int __c)
11426{
11427 union { int8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11428 union { int8x8x2_t __i; __builtin_neon_ti __o; } __rv;
11429 __rv.__o = __builtin_neon_vld2_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
11430 return __rv.__i;
11431}
11432
5c493d36 11433__extension__ extern __inline int16x4x2_t
11434__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11435vld2_lane_s16 (const int16_t * __a, int16x4x2_t __b, const int __c)
11436{
11437 union { int16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11438 union { int16x4x2_t __i; __builtin_neon_ti __o; } __rv;
11439 __rv.__o = __builtin_neon_vld2_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
11440 return __rv.__i;
11441}
11442
5c493d36 11443__extension__ extern __inline int32x2x2_t
11444__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11445vld2_lane_s32 (const int32_t * __a, int32x2x2_t __b, const int __c)
11446{
11447 union { int32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11448 union { int32x2x2_t __i; __builtin_neon_ti __o; } __rv;
11449 __rv.__o = __builtin_neon_vld2_lanev2si ((const __builtin_neon_si *) __a, __bu.__o, __c);
11450 return __rv.__i;
11451}
11452
fb5f110d 11453#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 11454__extension__ extern __inline float16x4x2_t
11455__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 11456vld2_lane_f16 (const float16_t * __a, float16x4x2_t __b, const int __c)
11457{
11458 union { float16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11459 union { float16x4x2_t __i; __builtin_neon_ti __o; } __rv;
11460 __rv.__o = __builtin_neon_vld2_lanev4hf ( __a, __bu.__o, __c);
11461 return __rv.__i;
11462}
11463#endif
11464
5c493d36 11465__extension__ extern __inline float32x2x2_t
11466__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11467vld2_lane_f32 (const float32_t * __a, float32x2x2_t __b, const int __c)
11468{
11469 union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11470 union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv;
52a0d45c 11471 __rv.__o = __builtin_neon_vld2_lanev2sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
d98a3884 11472 return __rv.__i;
11473}
11474
5c493d36 11475__extension__ extern __inline uint8x8x2_t
11476__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11477vld2_lane_u8 (const uint8_t * __a, uint8x8x2_t __b, const int __c)
11478{
11479 union { uint8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11480 union { uint8x8x2_t __i; __builtin_neon_ti __o; } __rv;
11481 __rv.__o = __builtin_neon_vld2_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
11482 return __rv.__i;
11483}
11484
5c493d36 11485__extension__ extern __inline uint16x4x2_t
11486__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11487vld2_lane_u16 (const uint16_t * __a, uint16x4x2_t __b, const int __c)
11488{
11489 union { uint16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11490 union { uint16x4x2_t __i; __builtin_neon_ti __o; } __rv;
11491 __rv.__o = __builtin_neon_vld2_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
11492 return __rv.__i;
11493}
11494
5c493d36 11495__extension__ extern __inline uint32x2x2_t
11496__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11497vld2_lane_u32 (const uint32_t * __a, uint32x2x2_t __b, const int __c)
11498{
11499 union { uint32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11500 union { uint32x2x2_t __i; __builtin_neon_ti __o; } __rv;
11501 __rv.__o = __builtin_neon_vld2_lanev2si ((const __builtin_neon_si *) __a, __bu.__o, __c);
11502 return __rv.__i;
11503}
11504
5c493d36 11505__extension__ extern __inline poly8x8x2_t
11506__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11507vld2_lane_p8 (const poly8_t * __a, poly8x8x2_t __b, const int __c)
11508{
11509 union { poly8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11510 union { poly8x8x2_t __i; __builtin_neon_ti __o; } __rv;
11511 __rv.__o = __builtin_neon_vld2_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
11512 return __rv.__i;
11513}
11514
5c493d36 11515__extension__ extern __inline poly16x4x2_t
11516__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11517vld2_lane_p16 (const poly16_t * __a, poly16x4x2_t __b, const int __c)
11518{
11519 union { poly16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11520 union { poly16x4x2_t __i; __builtin_neon_ti __o; } __rv;
11521 __rv.__o = __builtin_neon_vld2_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
11522 return __rv.__i;
11523}
11524
5c493d36 11525__extension__ extern __inline int16x8x2_t
11526__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11527vld2q_lane_s16 (const int16_t * __a, int16x8x2_t __b, const int __c)
11528{
11529 union { int16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11530 union { int16x8x2_t __i; __builtin_neon_oi __o; } __rv;
11531 __rv.__o = __builtin_neon_vld2_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
11532 return __rv.__i;
11533}
11534
5c493d36 11535__extension__ extern __inline int32x4x2_t
11536__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11537vld2q_lane_s32 (const int32_t * __a, int32x4x2_t __b, const int __c)
11538{
11539 union { int32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11540 union { int32x4x2_t __i; __builtin_neon_oi __o; } __rv;
11541 __rv.__o = __builtin_neon_vld2_lanev4si ((const __builtin_neon_si *) __a, __bu.__o, __c);
11542 return __rv.__i;
11543}
11544
fb5f110d 11545#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 11546__extension__ extern __inline float16x8x2_t
11547__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 11548vld2q_lane_f16 (const float16_t * __a, float16x8x2_t __b, const int __c)
11549{
11550 union { float16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11551 union { float16x8x2_t __i; __builtin_neon_oi __o; } __rv;
11552 __rv.__o = __builtin_neon_vld2_lanev8hf (__a, __bu.__o, __c);
11553 return __rv.__i;
11554}
11555#endif
11556
5c493d36 11557__extension__ extern __inline float32x4x2_t
11558__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11559vld2q_lane_f32 (const float32_t * __a, float32x4x2_t __b, const int __c)
11560{
11561 union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11562 union { float32x4x2_t __i; __builtin_neon_oi __o; } __rv;
52a0d45c 11563 __rv.__o = __builtin_neon_vld2_lanev4sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
d98a3884 11564 return __rv.__i;
11565}
11566
5c493d36 11567__extension__ extern __inline uint16x8x2_t
11568__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11569vld2q_lane_u16 (const uint16_t * __a, uint16x8x2_t __b, const int __c)
11570{
11571 union { uint16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11572 union { uint16x8x2_t __i; __builtin_neon_oi __o; } __rv;
11573 __rv.__o = __builtin_neon_vld2_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
11574 return __rv.__i;
11575}
11576
5c493d36 11577__extension__ extern __inline uint32x4x2_t
11578__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11579vld2q_lane_u32 (const uint32_t * __a, uint32x4x2_t __b, const int __c)
11580{
11581 union { uint32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11582 union { uint32x4x2_t __i; __builtin_neon_oi __o; } __rv;
11583 __rv.__o = __builtin_neon_vld2_lanev4si ((const __builtin_neon_si *) __a, __bu.__o, __c);
11584 return __rv.__i;
11585}
11586
5c493d36 11587__extension__ extern __inline poly16x8x2_t
11588__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11589vld2q_lane_p16 (const poly16_t * __a, poly16x8x2_t __b, const int __c)
11590{
11591 union { poly16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11592 union { poly16x8x2_t __i; __builtin_neon_oi __o; } __rv;
11593 __rv.__o = __builtin_neon_vld2_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
11594 return __rv.__i;
11595}
11596
5c493d36 11597__extension__ extern __inline int8x8x2_t
11598__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11599vld2_dup_s8 (const int8_t * __a)
11600{
11601 union { int8x8x2_t __i; __builtin_neon_ti __o; } __rv;
11602 __rv.__o = __builtin_neon_vld2_dupv8qi ((const __builtin_neon_qi *) __a);
11603 return __rv.__i;
11604}
11605
5c493d36 11606__extension__ extern __inline int16x4x2_t
11607__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11608vld2_dup_s16 (const int16_t * __a)
11609{
11610 union { int16x4x2_t __i; __builtin_neon_ti __o; } __rv;
11611 __rv.__o = __builtin_neon_vld2_dupv4hi ((const __builtin_neon_hi *) __a);
11612 return __rv.__i;
11613}
11614
5c493d36 11615__extension__ extern __inline int32x2x2_t
11616__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11617vld2_dup_s32 (const int32_t * __a)
11618{
11619 union { int32x2x2_t __i; __builtin_neon_ti __o; } __rv;
11620 __rv.__o = __builtin_neon_vld2_dupv2si ((const __builtin_neon_si *) __a);
11621 return __rv.__i;
11622}
11623
fb5f110d 11624#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 11625__extension__ extern __inline float16x4x2_t
11626__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 11627vld2_dup_f16 (const float16_t * __a)
11628{
11629 union { float16x4x2_t __i; __builtin_neon_ti __o; } __rv;
11630 __rv.__o = __builtin_neon_vld2_dupv4hf (__a);
11631 return __rv.__i;
11632}
11633#endif
11634
5c493d36 11635__extension__ extern __inline float32x2x2_t
11636__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11637vld2_dup_f32 (const float32_t * __a)
11638{
11639 union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv;
52a0d45c 11640 __rv.__o = __builtin_neon_vld2_dupv2sf ((const __builtin_neon_sf *) __a);
d98a3884 11641 return __rv.__i;
11642}
11643
5c493d36 11644__extension__ extern __inline uint8x8x2_t
11645__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11646vld2_dup_u8 (const uint8_t * __a)
11647{
11648 union { uint8x8x2_t __i; __builtin_neon_ti __o; } __rv;
11649 __rv.__o = __builtin_neon_vld2_dupv8qi ((const __builtin_neon_qi *) __a);
11650 return __rv.__i;
11651}
11652
5c493d36 11653__extension__ extern __inline uint16x4x2_t
11654__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11655vld2_dup_u16 (const uint16_t * __a)
11656{
11657 union { uint16x4x2_t __i; __builtin_neon_ti __o; } __rv;
11658 __rv.__o = __builtin_neon_vld2_dupv4hi ((const __builtin_neon_hi *) __a);
11659 return __rv.__i;
11660}
11661
5c493d36 11662__extension__ extern __inline uint32x2x2_t
11663__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11664vld2_dup_u32 (const uint32_t * __a)
11665{
11666 union { uint32x2x2_t __i; __builtin_neon_ti __o; } __rv;
11667 __rv.__o = __builtin_neon_vld2_dupv2si ((const __builtin_neon_si *) __a);
11668 return __rv.__i;
11669}
11670
5c493d36 11671__extension__ extern __inline poly8x8x2_t
11672__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11673vld2_dup_p8 (const poly8_t * __a)
11674{
11675 union { poly8x8x2_t __i; __builtin_neon_ti __o; } __rv;
11676 __rv.__o = __builtin_neon_vld2_dupv8qi ((const __builtin_neon_qi *) __a);
11677 return __rv.__i;
11678}
11679
5c493d36 11680__extension__ extern __inline poly16x4x2_t
11681__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11682vld2_dup_p16 (const poly16_t * __a)
11683{
11684 union { poly16x4x2_t __i; __builtin_neon_ti __o; } __rv;
11685 __rv.__o = __builtin_neon_vld2_dupv4hi ((const __builtin_neon_hi *) __a);
11686 return __rv.__i;
11687}
11688
dcbc6813 11689#pragma GCC push_options
11690#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 11691__extension__ extern __inline poly64x1x2_t
11692__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 11693vld2_dup_p64 (const poly64_t * __a)
11694{
11695 union { poly64x1x2_t __i; __builtin_neon_ti __o; } __rv;
11696 __rv.__o = __builtin_neon_vld2_dupdi ((const __builtin_neon_di *) __a);
11697 return __rv.__i;
11698}
11699
dcbc6813 11700#pragma GCC pop_options
5c493d36 11701__extension__ extern __inline int64x1x2_t
11702__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11703vld2_dup_s64 (const int64_t * __a)
11704{
11705 union { int64x1x2_t __i; __builtin_neon_ti __o; } __rv;
11706 __rv.__o = __builtin_neon_vld2_dupdi ((const __builtin_neon_di *) __a);
11707 return __rv.__i;
11708}
11709
5c493d36 11710__extension__ extern __inline uint64x1x2_t
11711__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11712vld2_dup_u64 (const uint64_t * __a)
11713{
11714 union { uint64x1x2_t __i; __builtin_neon_ti __o; } __rv;
11715 __rv.__o = __builtin_neon_vld2_dupdi ((const __builtin_neon_di *) __a);
11716 return __rv.__i;
11717}
11718
5c493d36 11719__extension__ extern __inline void
11720__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11721vst2_s8 (int8_t * __a, int8x8x2_t __b)
11722{
11723 union { int8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11724 __builtin_neon_vst2v8qi ((__builtin_neon_qi *) __a, __bu.__o);
11725}
11726
5c493d36 11727__extension__ extern __inline void
11728__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11729vst2_s16 (int16_t * __a, int16x4x2_t __b)
11730{
11731 union { int16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11732 __builtin_neon_vst2v4hi ((__builtin_neon_hi *) __a, __bu.__o);
11733}
11734
5c493d36 11735__extension__ extern __inline void
11736__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11737vst2_s32 (int32_t * __a, int32x2x2_t __b)
11738{
11739 union { int32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11740 __builtin_neon_vst2v2si ((__builtin_neon_si *) __a, __bu.__o);
11741}
11742
fb5f110d 11743#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 11744__extension__ extern __inline void
11745__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 11746vst2_f16 (float16_t * __a, float16x4x2_t __b)
11747{
11748 union { float16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11749 __builtin_neon_vst2v4hf (__a, __bu.__o);
11750}
11751#endif
11752
5c493d36 11753__extension__ extern __inline void
11754__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11755vst2_f32 (float32_t * __a, float32x2x2_t __b)
11756{
11757 union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
52a0d45c 11758 __builtin_neon_vst2v2sf ((__builtin_neon_sf *) __a, __bu.__o);
d98a3884 11759}
11760
5c493d36 11761__extension__ extern __inline void
11762__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11763vst2_u8 (uint8_t * __a, uint8x8x2_t __b)
11764{
11765 union { uint8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11766 __builtin_neon_vst2v8qi ((__builtin_neon_qi *) __a, __bu.__o);
11767}
11768
5c493d36 11769__extension__ extern __inline void
11770__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11771vst2_u16 (uint16_t * __a, uint16x4x2_t __b)
11772{
11773 union { uint16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11774 __builtin_neon_vst2v4hi ((__builtin_neon_hi *) __a, __bu.__o);
11775}
11776
5c493d36 11777__extension__ extern __inline void
11778__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11779vst2_u32 (uint32_t * __a, uint32x2x2_t __b)
11780{
11781 union { uint32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11782 __builtin_neon_vst2v2si ((__builtin_neon_si *) __a, __bu.__o);
11783}
11784
5c493d36 11785__extension__ extern __inline void
11786__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11787vst2_p8 (poly8_t * __a, poly8x8x2_t __b)
11788{
11789 union { poly8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11790 __builtin_neon_vst2v8qi ((__builtin_neon_qi *) __a, __bu.__o);
11791}
11792
5c493d36 11793__extension__ extern __inline void
11794__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11795vst2_p16 (poly16_t * __a, poly16x4x2_t __b)
11796{
11797 union { poly16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11798 __builtin_neon_vst2v4hi ((__builtin_neon_hi *) __a, __bu.__o);
11799}
11800
dcbc6813 11801#pragma GCC push_options
11802#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 11803__extension__ extern __inline void
11804__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 11805vst2_p64 (poly64_t * __a, poly64x1x2_t __b)
11806{
11807 union { poly64x1x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11808 __builtin_neon_vst2di ((__builtin_neon_di *) __a, __bu.__o);
11809}
11810
dcbc6813 11811#pragma GCC pop_options
5c493d36 11812__extension__ extern __inline void
11813__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11814vst2_s64 (int64_t * __a, int64x1x2_t __b)
11815{
11816 union { int64x1x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11817 __builtin_neon_vst2di ((__builtin_neon_di *) __a, __bu.__o);
11818}
11819
5c493d36 11820__extension__ extern __inline void
11821__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11822vst2_u64 (uint64_t * __a, uint64x1x2_t __b)
11823{
11824 union { uint64x1x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11825 __builtin_neon_vst2di ((__builtin_neon_di *) __a, __bu.__o);
11826}
11827
5c493d36 11828__extension__ extern __inline void
11829__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11830vst2q_s8 (int8_t * __a, int8x16x2_t __b)
11831{
11832 union { int8x16x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11833 __builtin_neon_vst2v16qi ((__builtin_neon_qi *) __a, __bu.__o);
11834}
11835
5c493d36 11836__extension__ extern __inline void
11837__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11838vst2q_s16 (int16_t * __a, int16x8x2_t __b)
11839{
11840 union { int16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11841 __builtin_neon_vst2v8hi ((__builtin_neon_hi *) __a, __bu.__o);
11842}
11843
5c493d36 11844__extension__ extern __inline void
11845__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11846vst2q_s32 (int32_t * __a, int32x4x2_t __b)
11847{
11848 union { int32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11849 __builtin_neon_vst2v4si ((__builtin_neon_si *) __a, __bu.__o);
11850}
11851
fb5f110d 11852#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 11853__extension__ extern __inline void
11854__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 11855vst2q_f16 (float16_t * __a, float16x8x2_t __b)
11856{
11857 union { float16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11858 __builtin_neon_vst2v8hf (__a, __bu.__o);
11859}
11860#endif
11861
5c493d36 11862__extension__ extern __inline void
11863__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11864vst2q_f32 (float32_t * __a, float32x4x2_t __b)
11865{
11866 union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
52a0d45c 11867 __builtin_neon_vst2v4sf ((__builtin_neon_sf *) __a, __bu.__o);
d98a3884 11868}
11869
5c493d36 11870__extension__ extern __inline void
11871__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11872vst2q_u8 (uint8_t * __a, uint8x16x2_t __b)
11873{
11874 union { uint8x16x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11875 __builtin_neon_vst2v16qi ((__builtin_neon_qi *) __a, __bu.__o);
11876}
11877
5c493d36 11878__extension__ extern __inline void
11879__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11880vst2q_u16 (uint16_t * __a, uint16x8x2_t __b)
11881{
11882 union { uint16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11883 __builtin_neon_vst2v8hi ((__builtin_neon_hi *) __a, __bu.__o);
11884}
11885
5c493d36 11886__extension__ extern __inline void
11887__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11888vst2q_u32 (uint32_t * __a, uint32x4x2_t __b)
11889{
11890 union { uint32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11891 __builtin_neon_vst2v4si ((__builtin_neon_si *) __a, __bu.__o);
11892}
11893
5c493d36 11894__extension__ extern __inline void
11895__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11896vst2q_p8 (poly8_t * __a, poly8x16x2_t __b)
11897{
11898 union { poly8x16x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11899 __builtin_neon_vst2v16qi ((__builtin_neon_qi *) __a, __bu.__o);
11900}
11901
5c493d36 11902__extension__ extern __inline void
11903__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11904vst2q_p16 (poly16_t * __a, poly16x8x2_t __b)
11905{
11906 union { poly16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11907 __builtin_neon_vst2v8hi ((__builtin_neon_hi *) __a, __bu.__o);
11908}
11909
5c493d36 11910__extension__ extern __inline void
11911__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11912vst2_lane_s8 (int8_t * __a, int8x8x2_t __b, const int __c)
11913{
11914 union { int8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11915 __builtin_neon_vst2_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
11916}
11917
5c493d36 11918__extension__ extern __inline void
11919__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11920vst2_lane_s16 (int16_t * __a, int16x4x2_t __b, const int __c)
11921{
11922 union { int16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11923 __builtin_neon_vst2_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
11924}
11925
5c493d36 11926__extension__ extern __inline void
11927__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11928vst2_lane_s32 (int32_t * __a, int32x2x2_t __b, const int __c)
11929{
11930 union { int32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11931 __builtin_neon_vst2_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
11932}
11933
fb5f110d 11934#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 11935__extension__ extern __inline void
11936__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 11937vst2_lane_f16 (float16_t * __a, float16x4x2_t __b, const int __c)
11938{
11939 union { float16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11940 __builtin_neon_vst2_lanev4hf (__a, __bu.__o, __c);
11941}
11942#endif
11943
5c493d36 11944__extension__ extern __inline void
11945__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11946vst2_lane_f32 (float32_t * __a, float32x2x2_t __b, const int __c)
11947{
11948 union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
52a0d45c 11949 __builtin_neon_vst2_lanev2sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
d98a3884 11950}
11951
5c493d36 11952__extension__ extern __inline void
11953__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11954vst2_lane_u8 (uint8_t * __a, uint8x8x2_t __b, const int __c)
11955{
11956 union { uint8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11957 __builtin_neon_vst2_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
11958}
11959
5c493d36 11960__extension__ extern __inline void
11961__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11962vst2_lane_u16 (uint16_t * __a, uint16x4x2_t __b, const int __c)
11963{
11964 union { uint16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11965 __builtin_neon_vst2_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
11966}
11967
5c493d36 11968__extension__ extern __inline void
11969__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11970vst2_lane_u32 (uint32_t * __a, uint32x2x2_t __b, const int __c)
11971{
11972 union { uint32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11973 __builtin_neon_vst2_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
11974}
11975
5c493d36 11976__extension__ extern __inline void
11977__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11978vst2_lane_p8 (poly8_t * __a, poly8x8x2_t __b, const int __c)
11979{
11980 union { poly8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11981 __builtin_neon_vst2_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
11982}
11983
5c493d36 11984__extension__ extern __inline void
11985__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11986vst2_lane_p16 (poly16_t * __a, poly16x4x2_t __b, const int __c)
11987{
11988 union { poly16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
11989 __builtin_neon_vst2_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
11990}
11991
5c493d36 11992__extension__ extern __inline void
11993__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 11994vst2q_lane_s16 (int16_t * __a, int16x8x2_t __b, const int __c)
11995{
11996 union { int16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
11997 __builtin_neon_vst2_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
11998}
11999
5c493d36 12000__extension__ extern __inline void
12001__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12002vst2q_lane_s32 (int32_t * __a, int32x4x2_t __b, const int __c)
12003{
12004 union { int32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
12005 __builtin_neon_vst2_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
12006}
12007
fb5f110d 12008#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 12009__extension__ extern __inline void
12010__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 12011vst2q_lane_f16 (float16_t * __a, float16x8x2_t __b, const int __c)
12012{
12013 union { float16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
12014 __builtin_neon_vst2_lanev8hf (__a, __bu.__o, __c);
12015}
12016#endif
12017
5c493d36 12018__extension__ extern __inline void
12019__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12020vst2q_lane_f32 (float32_t * __a, float32x4x2_t __b, const int __c)
12021{
12022 union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
52a0d45c 12023 __builtin_neon_vst2_lanev4sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
d98a3884 12024}
12025
5c493d36 12026__extension__ extern __inline void
12027__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12028vst2q_lane_u16 (uint16_t * __a, uint16x8x2_t __b, const int __c)
12029{
12030 union { uint16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
12031 __builtin_neon_vst2_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
12032}
12033
5c493d36 12034__extension__ extern __inline void
12035__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12036vst2q_lane_u32 (uint32_t * __a, uint32x4x2_t __b, const int __c)
12037{
12038 union { uint32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
12039 __builtin_neon_vst2_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
12040}
12041
5c493d36 12042__extension__ extern __inline void
12043__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12044vst2q_lane_p16 (poly16_t * __a, poly16x8x2_t __b, const int __c)
12045{
12046 union { poly16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
12047 __builtin_neon_vst2_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
12048}
12049
5c493d36 12050__extension__ extern __inline int8x8x3_t
12051__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12052vld3_s8 (const int8_t * __a)
12053{
12054 union { int8x8x3_t __i; __builtin_neon_ei __o; } __rv;
12055 __rv.__o = __builtin_neon_vld3v8qi ((const __builtin_neon_qi *) __a);
12056 return __rv.__i;
12057}
12058
5c493d36 12059__extension__ extern __inline int16x4x3_t
12060__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12061vld3_s16 (const int16_t * __a)
12062{
12063 union { int16x4x3_t __i; __builtin_neon_ei __o; } __rv;
12064 __rv.__o = __builtin_neon_vld3v4hi ((const __builtin_neon_hi *) __a);
12065 return __rv.__i;
12066}
12067
5c493d36 12068__extension__ extern __inline int32x2x3_t
12069__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12070vld3_s32 (const int32_t * __a)
12071{
12072 union { int32x2x3_t __i; __builtin_neon_ei __o; } __rv;
12073 __rv.__o = __builtin_neon_vld3v2si ((const __builtin_neon_si *) __a);
12074 return __rv.__i;
12075}
12076
fb5f110d 12077#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 12078__extension__ extern __inline float16x4x3_t
12079__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 12080vld3_f16 (const float16_t * __a)
12081{
12082 union { float16x4x3_t __i; __builtin_neon_ei __o; } __rv;
12083 __rv.__o = __builtin_neon_vld3v4hf (__a);
12084 return __rv.__i;
12085}
12086#endif
12087
5c493d36 12088__extension__ extern __inline float32x2x3_t
12089__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12090vld3_f32 (const float32_t * __a)
12091{
12092 union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv;
52a0d45c 12093 __rv.__o = __builtin_neon_vld3v2sf ((const __builtin_neon_sf *) __a);
d98a3884 12094 return __rv.__i;
12095}
12096
5c493d36 12097__extension__ extern __inline uint8x8x3_t
12098__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12099vld3_u8 (const uint8_t * __a)
12100{
12101 union { uint8x8x3_t __i; __builtin_neon_ei __o; } __rv;
12102 __rv.__o = __builtin_neon_vld3v8qi ((const __builtin_neon_qi *) __a);
12103 return __rv.__i;
12104}
12105
5c493d36 12106__extension__ extern __inline uint16x4x3_t
12107__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12108vld3_u16 (const uint16_t * __a)
12109{
12110 union { uint16x4x3_t __i; __builtin_neon_ei __o; } __rv;
12111 __rv.__o = __builtin_neon_vld3v4hi ((const __builtin_neon_hi *) __a);
12112 return __rv.__i;
12113}
12114
5c493d36 12115__extension__ extern __inline uint32x2x3_t
12116__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12117vld3_u32 (const uint32_t * __a)
12118{
12119 union { uint32x2x3_t __i; __builtin_neon_ei __o; } __rv;
12120 __rv.__o = __builtin_neon_vld3v2si ((const __builtin_neon_si *) __a);
12121 return __rv.__i;
12122}
12123
5c493d36 12124__extension__ extern __inline poly8x8x3_t
12125__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12126vld3_p8 (const poly8_t * __a)
12127{
12128 union { poly8x8x3_t __i; __builtin_neon_ei __o; } __rv;
12129 __rv.__o = __builtin_neon_vld3v8qi ((const __builtin_neon_qi *) __a);
12130 return __rv.__i;
12131}
12132
5c493d36 12133__extension__ extern __inline poly16x4x3_t
12134__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12135vld3_p16 (const poly16_t * __a)
12136{
12137 union { poly16x4x3_t __i; __builtin_neon_ei __o; } __rv;
12138 __rv.__o = __builtin_neon_vld3v4hi ((const __builtin_neon_hi *) __a);
12139 return __rv.__i;
12140}
12141
dcbc6813 12142#pragma GCC push_options
12143#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 12144__extension__ extern __inline poly64x1x3_t
12145__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 12146vld3_p64 (const poly64_t * __a)
12147{
12148 union { poly64x1x3_t __i; __builtin_neon_ei __o; } __rv;
12149 __rv.__o = __builtin_neon_vld3di ((const __builtin_neon_di *) __a);
12150 return __rv.__i;
12151}
12152
dcbc6813 12153#pragma GCC pop_options
5c493d36 12154__extension__ extern __inline int64x1x3_t
12155__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12156vld3_s64 (const int64_t * __a)
12157{
12158 union { int64x1x3_t __i; __builtin_neon_ei __o; } __rv;
12159 __rv.__o = __builtin_neon_vld3di ((const __builtin_neon_di *) __a);
12160 return __rv.__i;
12161}
12162
5c493d36 12163__extension__ extern __inline uint64x1x3_t
12164__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12165vld3_u64 (const uint64_t * __a)
12166{
12167 union { uint64x1x3_t __i; __builtin_neon_ei __o; } __rv;
12168 __rv.__o = __builtin_neon_vld3di ((const __builtin_neon_di *) __a);
12169 return __rv.__i;
12170}
12171
5c493d36 12172__extension__ extern __inline int8x16x3_t
12173__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12174vld3q_s8 (const int8_t * __a)
12175{
12176 union { int8x16x3_t __i; __builtin_neon_ci __o; } __rv;
12177 __rv.__o = __builtin_neon_vld3v16qi ((const __builtin_neon_qi *) __a);
12178 return __rv.__i;
12179}
12180
5c493d36 12181__extension__ extern __inline int16x8x3_t
12182__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12183vld3q_s16 (const int16_t * __a)
12184{
12185 union { int16x8x3_t __i; __builtin_neon_ci __o; } __rv;
12186 __rv.__o = __builtin_neon_vld3v8hi ((const __builtin_neon_hi *) __a);
12187 return __rv.__i;
12188}
12189
5c493d36 12190__extension__ extern __inline int32x4x3_t
12191__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12192vld3q_s32 (const int32_t * __a)
12193{
12194 union { int32x4x3_t __i; __builtin_neon_ci __o; } __rv;
12195 __rv.__o = __builtin_neon_vld3v4si ((const __builtin_neon_si *) __a);
12196 return __rv.__i;
12197}
12198
fb5f110d 12199#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 12200__extension__ extern __inline float16x8x3_t
12201__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 12202vld3q_f16 (const float16_t * __a)
12203{
12204 union { float16x8x3_t __i; __builtin_neon_ci __o; } __rv;
12205 __rv.__o = __builtin_neon_vld3v8hf (__a);
12206 return __rv.__i;
12207}
12208#endif
12209
5c493d36 12210__extension__ extern __inline float32x4x3_t
12211__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12212vld3q_f32 (const float32_t * __a)
12213{
12214 union { float32x4x3_t __i; __builtin_neon_ci __o; } __rv;
52a0d45c 12215 __rv.__o = __builtin_neon_vld3v4sf ((const __builtin_neon_sf *) __a);
d98a3884 12216 return __rv.__i;
12217}
12218
5c493d36 12219__extension__ extern __inline uint8x16x3_t
12220__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12221vld3q_u8 (const uint8_t * __a)
12222{
12223 union { uint8x16x3_t __i; __builtin_neon_ci __o; } __rv;
12224 __rv.__o = __builtin_neon_vld3v16qi ((const __builtin_neon_qi *) __a);
12225 return __rv.__i;
12226}
12227
5c493d36 12228__extension__ extern __inline uint16x8x3_t
12229__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12230vld3q_u16 (const uint16_t * __a)
12231{
12232 union { uint16x8x3_t __i; __builtin_neon_ci __o; } __rv;
12233 __rv.__o = __builtin_neon_vld3v8hi ((const __builtin_neon_hi *) __a);
12234 return __rv.__i;
12235}
12236
5c493d36 12237__extension__ extern __inline uint32x4x3_t
12238__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12239vld3q_u32 (const uint32_t * __a)
12240{
12241 union { uint32x4x3_t __i; __builtin_neon_ci __o; } __rv;
12242 __rv.__o = __builtin_neon_vld3v4si ((const __builtin_neon_si *) __a);
12243 return __rv.__i;
12244}
12245
5c493d36 12246__extension__ extern __inline poly8x16x3_t
12247__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12248vld3q_p8 (const poly8_t * __a)
12249{
12250 union { poly8x16x3_t __i; __builtin_neon_ci __o; } __rv;
12251 __rv.__o = __builtin_neon_vld3v16qi ((const __builtin_neon_qi *) __a);
12252 return __rv.__i;
12253}
12254
5c493d36 12255__extension__ extern __inline poly16x8x3_t
12256__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12257vld3q_p16 (const poly16_t * __a)
12258{
12259 union { poly16x8x3_t __i; __builtin_neon_ci __o; } __rv;
12260 __rv.__o = __builtin_neon_vld3v8hi ((const __builtin_neon_hi *) __a);
12261 return __rv.__i;
12262}
12263
5c493d36 12264__extension__ extern __inline int8x8x3_t
12265__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12266vld3_lane_s8 (const int8_t * __a, int8x8x3_t __b, const int __c)
12267{
12268 union { int8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12269 union { int8x8x3_t __i; __builtin_neon_ei __o; } __rv;
12270 __rv.__o = __builtin_neon_vld3_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
12271 return __rv.__i;
12272}
12273
5c493d36 12274__extension__ extern __inline int16x4x3_t
12275__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12276vld3_lane_s16 (const int16_t * __a, int16x4x3_t __b, const int __c)
12277{
12278 union { int16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12279 union { int16x4x3_t __i; __builtin_neon_ei __o; } __rv;
12280 __rv.__o = __builtin_neon_vld3_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
12281 return __rv.__i;
12282}
12283
5c493d36 12284__extension__ extern __inline int32x2x3_t
12285__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12286vld3_lane_s32 (const int32_t * __a, int32x2x3_t __b, const int __c)
12287{
12288 union { int32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12289 union { int32x2x3_t __i; __builtin_neon_ei __o; } __rv;
12290 __rv.__o = __builtin_neon_vld3_lanev2si ((const __builtin_neon_si *) __a, __bu.__o, __c);
12291 return __rv.__i;
12292}
12293
fb5f110d 12294#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 12295__extension__ extern __inline float16x4x3_t
12296__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 12297vld3_lane_f16 (const float16_t * __a, float16x4x3_t __b, const int __c)
12298{
12299 union { float16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12300 union { float16x4x3_t __i; __builtin_neon_ei __o; } __rv;
12301 __rv.__o = __builtin_neon_vld3_lanev4hf (__a, __bu.__o, __c);
12302 return __rv.__i;
12303}
12304#endif
12305
5c493d36 12306__extension__ extern __inline float32x2x3_t
12307__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12308vld3_lane_f32 (const float32_t * __a, float32x2x3_t __b, const int __c)
12309{
12310 union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12311 union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv;
52a0d45c 12312 __rv.__o = __builtin_neon_vld3_lanev2sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
d98a3884 12313 return __rv.__i;
12314}
12315
5c493d36 12316__extension__ extern __inline uint8x8x3_t
12317__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12318vld3_lane_u8 (const uint8_t * __a, uint8x8x3_t __b, const int __c)
12319{
12320 union { uint8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12321 union { uint8x8x3_t __i; __builtin_neon_ei __o; } __rv;
12322 __rv.__o = __builtin_neon_vld3_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
12323 return __rv.__i;
12324}
12325
5c493d36 12326__extension__ extern __inline uint16x4x3_t
12327__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12328vld3_lane_u16 (const uint16_t * __a, uint16x4x3_t __b, const int __c)
12329{
12330 union { uint16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12331 union { uint16x4x3_t __i; __builtin_neon_ei __o; } __rv;
12332 __rv.__o = __builtin_neon_vld3_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
12333 return __rv.__i;
12334}
12335
5c493d36 12336__extension__ extern __inline uint32x2x3_t
12337__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12338vld3_lane_u32 (const uint32_t * __a, uint32x2x3_t __b, const int __c)
12339{
12340 union { uint32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12341 union { uint32x2x3_t __i; __builtin_neon_ei __o; } __rv;
12342 __rv.__o = __builtin_neon_vld3_lanev2si ((const __builtin_neon_si *) __a, __bu.__o, __c);
12343 return __rv.__i;
12344}
12345
5c493d36 12346__extension__ extern __inline poly8x8x3_t
12347__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12348vld3_lane_p8 (const poly8_t * __a, poly8x8x3_t __b, const int __c)
12349{
12350 union { poly8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12351 union { poly8x8x3_t __i; __builtin_neon_ei __o; } __rv;
12352 __rv.__o = __builtin_neon_vld3_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
12353 return __rv.__i;
12354}
12355
5c493d36 12356__extension__ extern __inline poly16x4x3_t
12357__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12358vld3_lane_p16 (const poly16_t * __a, poly16x4x3_t __b, const int __c)
12359{
12360 union { poly16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12361 union { poly16x4x3_t __i; __builtin_neon_ei __o; } __rv;
12362 __rv.__o = __builtin_neon_vld3_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
12363 return __rv.__i;
12364}
12365
5c493d36 12366__extension__ extern __inline int16x8x3_t
12367__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12368vld3q_lane_s16 (const int16_t * __a, int16x8x3_t __b, const int __c)
12369{
12370 union { int16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12371 union { int16x8x3_t __i; __builtin_neon_ci __o; } __rv;
12372 __rv.__o = __builtin_neon_vld3_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
12373 return __rv.__i;
12374}
12375
5c493d36 12376__extension__ extern __inline int32x4x3_t
12377__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12378vld3q_lane_s32 (const int32_t * __a, int32x4x3_t __b, const int __c)
12379{
12380 union { int32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12381 union { int32x4x3_t __i; __builtin_neon_ci __o; } __rv;
12382 __rv.__o = __builtin_neon_vld3_lanev4si ((const __builtin_neon_si *) __a, __bu.__o, __c);
12383 return __rv.__i;
12384}
12385
fb5f110d 12386#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 12387__extension__ extern __inline float16x8x3_t
12388__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 12389vld3q_lane_f16 (const float16_t * __a, float16x8x3_t __b, const int __c)
12390{
12391 union { float16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12392 union { float16x8x3_t __i; __builtin_neon_ci __o; } __rv;
12393 __rv.__o = __builtin_neon_vld3_lanev8hf (__a, __bu.__o, __c);
12394 return __rv.__i;
12395}
12396#endif
12397
5c493d36 12398__extension__ extern __inline float32x4x3_t
12399__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12400vld3q_lane_f32 (const float32_t * __a, float32x4x3_t __b, const int __c)
12401{
12402 union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12403 union { float32x4x3_t __i; __builtin_neon_ci __o; } __rv;
52a0d45c 12404 __rv.__o = __builtin_neon_vld3_lanev4sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
d98a3884 12405 return __rv.__i;
12406}
12407
5c493d36 12408__extension__ extern __inline uint16x8x3_t
12409__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12410vld3q_lane_u16 (const uint16_t * __a, uint16x8x3_t __b, const int __c)
12411{
12412 union { uint16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12413 union { uint16x8x3_t __i; __builtin_neon_ci __o; } __rv;
12414 __rv.__o = __builtin_neon_vld3_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
12415 return __rv.__i;
12416}
12417
5c493d36 12418__extension__ extern __inline uint32x4x3_t
12419__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12420vld3q_lane_u32 (const uint32_t * __a, uint32x4x3_t __b, const int __c)
12421{
12422 union { uint32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12423 union { uint32x4x3_t __i; __builtin_neon_ci __o; } __rv;
12424 __rv.__o = __builtin_neon_vld3_lanev4si ((const __builtin_neon_si *) __a, __bu.__o, __c);
12425 return __rv.__i;
12426}
12427
5c493d36 12428__extension__ extern __inline poly16x8x3_t
12429__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12430vld3q_lane_p16 (const poly16_t * __a, poly16x8x3_t __b, const int __c)
12431{
12432 union { poly16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12433 union { poly16x8x3_t __i; __builtin_neon_ci __o; } __rv;
12434 __rv.__o = __builtin_neon_vld3_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
12435 return __rv.__i;
12436}
12437
5c493d36 12438__extension__ extern __inline int8x8x3_t
12439__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12440vld3_dup_s8 (const int8_t * __a)
12441{
12442 union { int8x8x3_t __i; __builtin_neon_ei __o; } __rv;
12443 __rv.__o = __builtin_neon_vld3_dupv8qi ((const __builtin_neon_qi *) __a);
12444 return __rv.__i;
12445}
12446
5c493d36 12447__extension__ extern __inline int16x4x3_t
12448__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12449vld3_dup_s16 (const int16_t * __a)
12450{
12451 union { int16x4x3_t __i; __builtin_neon_ei __o; } __rv;
12452 __rv.__o = __builtin_neon_vld3_dupv4hi ((const __builtin_neon_hi *) __a);
12453 return __rv.__i;
12454}
12455
5c493d36 12456__extension__ extern __inline int32x2x3_t
12457__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12458vld3_dup_s32 (const int32_t * __a)
12459{
12460 union { int32x2x3_t __i; __builtin_neon_ei __o; } __rv;
12461 __rv.__o = __builtin_neon_vld3_dupv2si ((const __builtin_neon_si *) __a);
12462 return __rv.__i;
12463}
12464
fb5f110d 12465#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 12466__extension__ extern __inline float16x4x3_t
12467__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 12468vld3_dup_f16 (const float16_t * __a)
12469{
12470 union { float16x4x3_t __i; __builtin_neon_ei __o; } __rv;
12471 __rv.__o = __builtin_neon_vld3_dupv4hf (__a);
12472 return __rv.__i;
12473}
12474#endif
12475
5c493d36 12476__extension__ extern __inline float32x2x3_t
12477__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12478vld3_dup_f32 (const float32_t * __a)
12479{
12480 union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv;
52a0d45c 12481 __rv.__o = __builtin_neon_vld3_dupv2sf ((const __builtin_neon_sf *) __a);
d98a3884 12482 return __rv.__i;
12483}
12484
5c493d36 12485__extension__ extern __inline uint8x8x3_t
12486__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12487vld3_dup_u8 (const uint8_t * __a)
12488{
12489 union { uint8x8x3_t __i; __builtin_neon_ei __o; } __rv;
12490 __rv.__o = __builtin_neon_vld3_dupv8qi ((const __builtin_neon_qi *) __a);
12491 return __rv.__i;
12492}
12493
5c493d36 12494__extension__ extern __inline uint16x4x3_t
12495__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12496vld3_dup_u16 (const uint16_t * __a)
12497{
12498 union { uint16x4x3_t __i; __builtin_neon_ei __o; } __rv;
12499 __rv.__o = __builtin_neon_vld3_dupv4hi ((const __builtin_neon_hi *) __a);
12500 return __rv.__i;
12501}
12502
5c493d36 12503__extension__ extern __inline uint32x2x3_t
12504__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12505vld3_dup_u32 (const uint32_t * __a)
12506{
12507 union { uint32x2x3_t __i; __builtin_neon_ei __o; } __rv;
12508 __rv.__o = __builtin_neon_vld3_dupv2si ((const __builtin_neon_si *) __a);
12509 return __rv.__i;
12510}
12511
5c493d36 12512__extension__ extern __inline poly8x8x3_t
12513__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12514vld3_dup_p8 (const poly8_t * __a)
12515{
12516 union { poly8x8x3_t __i; __builtin_neon_ei __o; } __rv;
12517 __rv.__o = __builtin_neon_vld3_dupv8qi ((const __builtin_neon_qi *) __a);
12518 return __rv.__i;
12519}
12520
5c493d36 12521__extension__ extern __inline poly16x4x3_t
12522__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12523vld3_dup_p16 (const poly16_t * __a)
12524{
12525 union { poly16x4x3_t __i; __builtin_neon_ei __o; } __rv;
12526 __rv.__o = __builtin_neon_vld3_dupv4hi ((const __builtin_neon_hi *) __a);
12527 return __rv.__i;
12528}
12529
dcbc6813 12530#pragma GCC push_options
12531#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 12532__extension__ extern __inline poly64x1x3_t
12533__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 12534vld3_dup_p64 (const poly64_t * __a)
12535{
12536 union { poly64x1x3_t __i; __builtin_neon_ei __o; } __rv;
12537 __rv.__o = __builtin_neon_vld3_dupdi ((const __builtin_neon_di *) __a);
12538 return __rv.__i;
12539}
12540
dcbc6813 12541#pragma GCC pop_options
5c493d36 12542__extension__ extern __inline int64x1x3_t
12543__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12544vld3_dup_s64 (const int64_t * __a)
12545{
12546 union { int64x1x3_t __i; __builtin_neon_ei __o; } __rv;
12547 __rv.__o = __builtin_neon_vld3_dupdi ((const __builtin_neon_di *) __a);
12548 return __rv.__i;
12549}
12550
5c493d36 12551__extension__ extern __inline uint64x1x3_t
12552__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12553vld3_dup_u64 (const uint64_t * __a)
12554{
12555 union { uint64x1x3_t __i; __builtin_neon_ei __o; } __rv;
12556 __rv.__o = __builtin_neon_vld3_dupdi ((const __builtin_neon_di *) __a);
12557 return __rv.__i;
12558}
12559
5c493d36 12560__extension__ extern __inline void
12561__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12562vst3_s8 (int8_t * __a, int8x8x3_t __b)
12563{
12564 union { int8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12565 __builtin_neon_vst3v8qi ((__builtin_neon_qi *) __a, __bu.__o);
12566}
12567
5c493d36 12568__extension__ extern __inline void
12569__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12570vst3_s16 (int16_t * __a, int16x4x3_t __b)
12571{
12572 union { int16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12573 __builtin_neon_vst3v4hi ((__builtin_neon_hi *) __a, __bu.__o);
12574}
12575
5c493d36 12576__extension__ extern __inline void
12577__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12578vst3_s32 (int32_t * __a, int32x2x3_t __b)
12579{
12580 union { int32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12581 __builtin_neon_vst3v2si ((__builtin_neon_si *) __a, __bu.__o);
12582}
12583
fb5f110d 12584#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 12585__extension__ extern __inline void
12586__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 12587vst3_f16 (float16_t * __a, float16x4x3_t __b)
12588{
12589 union { float16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12590 __builtin_neon_vst3v4hf (__a, __bu.__o);
12591}
12592#endif
12593
5c493d36 12594__extension__ extern __inline void
12595__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12596vst3_f32 (float32_t * __a, float32x2x3_t __b)
12597{
12598 union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
52a0d45c 12599 __builtin_neon_vst3v2sf ((__builtin_neon_sf *) __a, __bu.__o);
d98a3884 12600}
12601
5c493d36 12602__extension__ extern __inline void
12603__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12604vst3_u8 (uint8_t * __a, uint8x8x3_t __b)
12605{
12606 union { uint8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12607 __builtin_neon_vst3v8qi ((__builtin_neon_qi *) __a, __bu.__o);
12608}
12609
5c493d36 12610__extension__ extern __inline void
12611__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12612vst3_u16 (uint16_t * __a, uint16x4x3_t __b)
12613{
12614 union { uint16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12615 __builtin_neon_vst3v4hi ((__builtin_neon_hi *) __a, __bu.__o);
12616}
12617
5c493d36 12618__extension__ extern __inline void
12619__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12620vst3_u32 (uint32_t * __a, uint32x2x3_t __b)
12621{
12622 union { uint32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12623 __builtin_neon_vst3v2si ((__builtin_neon_si *) __a, __bu.__o);
12624}
12625
5c493d36 12626__extension__ extern __inline void
12627__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12628vst3_p8 (poly8_t * __a, poly8x8x3_t __b)
12629{
12630 union { poly8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12631 __builtin_neon_vst3v8qi ((__builtin_neon_qi *) __a, __bu.__o);
12632}
12633
5c493d36 12634__extension__ extern __inline void
12635__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12636vst3_p16 (poly16_t * __a, poly16x4x3_t __b)
12637{
12638 union { poly16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12639 __builtin_neon_vst3v4hi ((__builtin_neon_hi *) __a, __bu.__o);
12640}
12641
dcbc6813 12642#pragma GCC push_options
12643#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 12644__extension__ extern __inline void
12645__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 12646vst3_p64 (poly64_t * __a, poly64x1x3_t __b)
12647{
12648 union { poly64x1x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12649 __builtin_neon_vst3di ((__builtin_neon_di *) __a, __bu.__o);
12650}
12651
dcbc6813 12652#pragma GCC pop_options
5c493d36 12653__extension__ extern __inline void
12654__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12655vst3_s64 (int64_t * __a, int64x1x3_t __b)
12656{
12657 union { int64x1x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12658 __builtin_neon_vst3di ((__builtin_neon_di *) __a, __bu.__o);
12659}
12660
5c493d36 12661__extension__ extern __inline void
12662__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12663vst3_u64 (uint64_t * __a, uint64x1x3_t __b)
12664{
12665 union { uint64x1x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12666 __builtin_neon_vst3di ((__builtin_neon_di *) __a, __bu.__o);
12667}
12668
5c493d36 12669__extension__ extern __inline void
12670__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12671vst3q_s8 (int8_t * __a, int8x16x3_t __b)
12672{
12673 union { int8x16x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12674 __builtin_neon_vst3v16qi ((__builtin_neon_qi *) __a, __bu.__o);
12675}
12676
5c493d36 12677__extension__ extern __inline void
12678__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12679vst3q_s16 (int16_t * __a, int16x8x3_t __b)
12680{
12681 union { int16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12682 __builtin_neon_vst3v8hi ((__builtin_neon_hi *) __a, __bu.__o);
12683}
12684
5c493d36 12685__extension__ extern __inline void
12686__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12687vst3q_s32 (int32_t * __a, int32x4x3_t __b)
12688{
12689 union { int32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12690 __builtin_neon_vst3v4si ((__builtin_neon_si *) __a, __bu.__o);
12691}
12692
fb5f110d 12693#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 12694__extension__ extern __inline void
12695__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 12696vst3q_f16 (float16_t * __a, float16x8x3_t __b)
12697{
12698 union { float16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12699 __builtin_neon_vst3v8hf (__a, __bu.__o);
12700}
12701#endif
12702
5c493d36 12703__extension__ extern __inline void
12704__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12705vst3q_f32 (float32_t * __a, float32x4x3_t __b)
12706{
12707 union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
52a0d45c 12708 __builtin_neon_vst3v4sf ((__builtin_neon_sf *) __a, __bu.__o);
d98a3884 12709}
12710
5c493d36 12711__extension__ extern __inline void
12712__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12713vst3q_u8 (uint8_t * __a, uint8x16x3_t __b)
12714{
12715 union { uint8x16x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12716 __builtin_neon_vst3v16qi ((__builtin_neon_qi *) __a, __bu.__o);
12717}
12718
5c493d36 12719__extension__ extern __inline void
12720__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12721vst3q_u16 (uint16_t * __a, uint16x8x3_t __b)
12722{
12723 union { uint16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12724 __builtin_neon_vst3v8hi ((__builtin_neon_hi *) __a, __bu.__o);
12725}
12726
5c493d36 12727__extension__ extern __inline void
12728__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12729vst3q_u32 (uint32_t * __a, uint32x4x3_t __b)
12730{
12731 union { uint32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12732 __builtin_neon_vst3v4si ((__builtin_neon_si *) __a, __bu.__o);
12733}
12734
5c493d36 12735__extension__ extern __inline void
12736__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12737vst3q_p8 (poly8_t * __a, poly8x16x3_t __b)
12738{
12739 union { poly8x16x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12740 __builtin_neon_vst3v16qi ((__builtin_neon_qi *) __a, __bu.__o);
12741}
12742
5c493d36 12743__extension__ extern __inline void
12744__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12745vst3q_p16 (poly16_t * __a, poly16x8x3_t __b)
12746{
12747 union { poly16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12748 __builtin_neon_vst3v8hi ((__builtin_neon_hi *) __a, __bu.__o);
12749}
12750
5c493d36 12751__extension__ extern __inline void
12752__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12753vst3_lane_s8 (int8_t * __a, int8x8x3_t __b, const int __c)
12754{
12755 union { int8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12756 __builtin_neon_vst3_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
12757}
12758
5c493d36 12759__extension__ extern __inline void
12760__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12761vst3_lane_s16 (int16_t * __a, int16x4x3_t __b, const int __c)
12762{
12763 union { int16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12764 __builtin_neon_vst3_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
12765}
12766
5c493d36 12767__extension__ extern __inline void
12768__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12769vst3_lane_s32 (int32_t * __a, int32x2x3_t __b, const int __c)
12770{
12771 union { int32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12772 __builtin_neon_vst3_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
12773}
12774
fb5f110d 12775#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 12776__extension__ extern __inline void
12777__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 12778vst3_lane_f16 (float16_t * __a, float16x4x3_t __b, const int __c)
12779{
12780 union { float16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12781 __builtin_neon_vst3_lanev4hf (__a, __bu.__o, __c);
12782}
12783#endif
12784
5c493d36 12785__extension__ extern __inline void
12786__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12787vst3_lane_f32 (float32_t * __a, float32x2x3_t __b, const int __c)
12788{
12789 union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
52a0d45c 12790 __builtin_neon_vst3_lanev2sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
d98a3884 12791}
12792
5c493d36 12793__extension__ extern __inline void
12794__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12795vst3_lane_u8 (uint8_t * __a, uint8x8x3_t __b, const int __c)
12796{
12797 union { uint8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12798 __builtin_neon_vst3_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
12799}
12800
5c493d36 12801__extension__ extern __inline void
12802__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12803vst3_lane_u16 (uint16_t * __a, uint16x4x3_t __b, const int __c)
12804{
12805 union { uint16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12806 __builtin_neon_vst3_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
12807}
12808
5c493d36 12809__extension__ extern __inline void
12810__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12811vst3_lane_u32 (uint32_t * __a, uint32x2x3_t __b, const int __c)
12812{
12813 union { uint32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12814 __builtin_neon_vst3_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
12815}
12816
5c493d36 12817__extension__ extern __inline void
12818__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12819vst3_lane_p8 (poly8_t * __a, poly8x8x3_t __b, const int __c)
12820{
12821 union { poly8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12822 __builtin_neon_vst3_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
12823}
12824
5c493d36 12825__extension__ extern __inline void
12826__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12827vst3_lane_p16 (poly16_t * __a, poly16x4x3_t __b, const int __c)
12828{
12829 union { poly16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
12830 __builtin_neon_vst3_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
12831}
12832
5c493d36 12833__extension__ extern __inline void
12834__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12835vst3q_lane_s16 (int16_t * __a, int16x8x3_t __b, const int __c)
12836{
12837 union { int16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12838 __builtin_neon_vst3_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
12839}
12840
5c493d36 12841__extension__ extern __inline void
12842__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12843vst3q_lane_s32 (int32_t * __a, int32x4x3_t __b, const int __c)
12844{
12845 union { int32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12846 __builtin_neon_vst3_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
12847}
12848
fb5f110d 12849#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 12850__extension__ extern __inline void
12851__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 12852vst3q_lane_f16 (float16_t * __a, float16x8x3_t __b, const int __c)
12853{
12854 union { float16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12855 __builtin_neon_vst3_lanev8hf (__a, __bu.__o, __c);
12856}
12857#endif
12858
5c493d36 12859__extension__ extern __inline void
12860__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12861vst3q_lane_f32 (float32_t * __a, float32x4x3_t __b, const int __c)
12862{
12863 union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
52a0d45c 12864 __builtin_neon_vst3_lanev4sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
d98a3884 12865}
12866
5c493d36 12867__extension__ extern __inline void
12868__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12869vst3q_lane_u16 (uint16_t * __a, uint16x8x3_t __b, const int __c)
12870{
12871 union { uint16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12872 __builtin_neon_vst3_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
12873}
12874
5c493d36 12875__extension__ extern __inline void
12876__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12877vst3q_lane_u32 (uint32_t * __a, uint32x4x3_t __b, const int __c)
12878{
12879 union { uint32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12880 __builtin_neon_vst3_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
12881}
12882
5c493d36 12883__extension__ extern __inline void
12884__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12885vst3q_lane_p16 (poly16_t * __a, poly16x8x3_t __b, const int __c)
12886{
12887 union { poly16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
12888 __builtin_neon_vst3_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
12889}
12890
5c493d36 12891__extension__ extern __inline int8x8x4_t
12892__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12893vld4_s8 (const int8_t * __a)
12894{
12895 union { int8x8x4_t __i; __builtin_neon_oi __o; } __rv;
12896 __rv.__o = __builtin_neon_vld4v8qi ((const __builtin_neon_qi *) __a);
12897 return __rv.__i;
12898}
12899
5c493d36 12900__extension__ extern __inline int16x4x4_t
12901__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12902vld4_s16 (const int16_t * __a)
12903{
12904 union { int16x4x4_t __i; __builtin_neon_oi __o; } __rv;
12905 __rv.__o = __builtin_neon_vld4v4hi ((const __builtin_neon_hi *) __a);
12906 return __rv.__i;
12907}
12908
5c493d36 12909__extension__ extern __inline int32x2x4_t
12910__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12911vld4_s32 (const int32_t * __a)
12912{
12913 union { int32x2x4_t __i; __builtin_neon_oi __o; } __rv;
12914 __rv.__o = __builtin_neon_vld4v2si ((const __builtin_neon_si *) __a);
12915 return __rv.__i;
12916}
12917
fb5f110d 12918#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 12919__extension__ extern __inline float16x4x4_t
12920__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 12921vld4_f16 (const float16_t * __a)
12922{
12923 union { float16x4x4_t __i; __builtin_neon_oi __o; } __rv;
12924 __rv.__o = __builtin_neon_vld4v4hf (__a);
12925 return __rv.__i;
12926}
12927#endif
12928
5c493d36 12929__extension__ extern __inline float32x2x4_t
12930__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12931vld4_f32 (const float32_t * __a)
12932{
12933 union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv;
52a0d45c 12934 __rv.__o = __builtin_neon_vld4v2sf ((const __builtin_neon_sf *) __a);
d98a3884 12935 return __rv.__i;
12936}
12937
5c493d36 12938__extension__ extern __inline uint8x8x4_t
12939__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12940vld4_u8 (const uint8_t * __a)
12941{
12942 union { uint8x8x4_t __i; __builtin_neon_oi __o; } __rv;
12943 __rv.__o = __builtin_neon_vld4v8qi ((const __builtin_neon_qi *) __a);
12944 return __rv.__i;
12945}
12946
5c493d36 12947__extension__ extern __inline uint16x4x4_t
12948__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12949vld4_u16 (const uint16_t * __a)
12950{
12951 union { uint16x4x4_t __i; __builtin_neon_oi __o; } __rv;
12952 __rv.__o = __builtin_neon_vld4v4hi ((const __builtin_neon_hi *) __a);
12953 return __rv.__i;
12954}
12955
5c493d36 12956__extension__ extern __inline uint32x2x4_t
12957__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12958vld4_u32 (const uint32_t * __a)
12959{
12960 union { uint32x2x4_t __i; __builtin_neon_oi __o; } __rv;
12961 __rv.__o = __builtin_neon_vld4v2si ((const __builtin_neon_si *) __a);
12962 return __rv.__i;
12963}
12964
5c493d36 12965__extension__ extern __inline poly8x8x4_t
12966__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12967vld4_p8 (const poly8_t * __a)
12968{
12969 union { poly8x8x4_t __i; __builtin_neon_oi __o; } __rv;
12970 __rv.__o = __builtin_neon_vld4v8qi ((const __builtin_neon_qi *) __a);
12971 return __rv.__i;
12972}
12973
5c493d36 12974__extension__ extern __inline poly16x4x4_t
12975__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12976vld4_p16 (const poly16_t * __a)
12977{
12978 union { poly16x4x4_t __i; __builtin_neon_oi __o; } __rv;
12979 __rv.__o = __builtin_neon_vld4v4hi ((const __builtin_neon_hi *) __a);
12980 return __rv.__i;
12981}
12982
dcbc6813 12983#pragma GCC push_options
12984#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 12985__extension__ extern __inline poly64x1x4_t
12986__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 12987vld4_p64 (const poly64_t * __a)
12988{
12989 union { poly64x1x4_t __i; __builtin_neon_oi __o; } __rv;
12990 __rv.__o = __builtin_neon_vld4di ((const __builtin_neon_di *) __a);
12991 return __rv.__i;
12992}
12993
dcbc6813 12994#pragma GCC pop_options
5c493d36 12995__extension__ extern __inline int64x1x4_t
12996__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 12997vld4_s64 (const int64_t * __a)
12998{
12999 union { int64x1x4_t __i; __builtin_neon_oi __o; } __rv;
13000 __rv.__o = __builtin_neon_vld4di ((const __builtin_neon_di *) __a);
13001 return __rv.__i;
13002}
13003
5c493d36 13004__extension__ extern __inline uint64x1x4_t
13005__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13006vld4_u64 (const uint64_t * __a)
13007{
13008 union { uint64x1x4_t __i; __builtin_neon_oi __o; } __rv;
13009 __rv.__o = __builtin_neon_vld4di ((const __builtin_neon_di *) __a);
13010 return __rv.__i;
13011}
13012
5c493d36 13013__extension__ extern __inline int8x16x4_t
13014__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13015vld4q_s8 (const int8_t * __a)
13016{
13017 union { int8x16x4_t __i; __builtin_neon_xi __o; } __rv;
13018 __rv.__o = __builtin_neon_vld4v16qi ((const __builtin_neon_qi *) __a);
13019 return __rv.__i;
13020}
13021
5c493d36 13022__extension__ extern __inline int16x8x4_t
13023__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13024vld4q_s16 (const int16_t * __a)
13025{
13026 union { int16x8x4_t __i; __builtin_neon_xi __o; } __rv;
13027 __rv.__o = __builtin_neon_vld4v8hi ((const __builtin_neon_hi *) __a);
13028 return __rv.__i;
13029}
13030
5c493d36 13031__extension__ extern __inline int32x4x4_t
13032__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13033vld4q_s32 (const int32_t * __a)
13034{
13035 union { int32x4x4_t __i; __builtin_neon_xi __o; } __rv;
13036 __rv.__o = __builtin_neon_vld4v4si ((const __builtin_neon_si *) __a);
13037 return __rv.__i;
13038}
13039
fb5f110d 13040#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 13041__extension__ extern __inline float16x8x4_t
13042__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 13043vld4q_f16 (const float16_t * __a)
13044{
13045 union { float16x8x4_t __i; __builtin_neon_xi __o; } __rv;
13046 __rv.__o = __builtin_neon_vld4v8hf (__a);
13047 return __rv.__i;
13048}
13049#endif
13050
5c493d36 13051__extension__ extern __inline float32x4x4_t
13052__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13053vld4q_f32 (const float32_t * __a)
13054{
13055 union { float32x4x4_t __i; __builtin_neon_xi __o; } __rv;
52a0d45c 13056 __rv.__o = __builtin_neon_vld4v4sf ((const __builtin_neon_sf *) __a);
d98a3884 13057 return __rv.__i;
13058}
13059
5c493d36 13060__extension__ extern __inline uint8x16x4_t
13061__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13062vld4q_u8 (const uint8_t * __a)
13063{
13064 union { uint8x16x4_t __i; __builtin_neon_xi __o; } __rv;
13065 __rv.__o = __builtin_neon_vld4v16qi ((const __builtin_neon_qi *) __a);
13066 return __rv.__i;
13067}
13068
5c493d36 13069__extension__ extern __inline uint16x8x4_t
13070__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13071vld4q_u16 (const uint16_t * __a)
13072{
13073 union { uint16x8x4_t __i; __builtin_neon_xi __o; } __rv;
13074 __rv.__o = __builtin_neon_vld4v8hi ((const __builtin_neon_hi *) __a);
13075 return __rv.__i;
13076}
13077
5c493d36 13078__extension__ extern __inline uint32x4x4_t
13079__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13080vld4q_u32 (const uint32_t * __a)
13081{
13082 union { uint32x4x4_t __i; __builtin_neon_xi __o; } __rv;
13083 __rv.__o = __builtin_neon_vld4v4si ((const __builtin_neon_si *) __a);
13084 return __rv.__i;
13085}
13086
5c493d36 13087__extension__ extern __inline poly8x16x4_t
13088__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13089vld4q_p8 (const poly8_t * __a)
13090{
13091 union { poly8x16x4_t __i; __builtin_neon_xi __o; } __rv;
13092 __rv.__o = __builtin_neon_vld4v16qi ((const __builtin_neon_qi *) __a);
13093 return __rv.__i;
13094}
13095
5c493d36 13096__extension__ extern __inline poly16x8x4_t
13097__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13098vld4q_p16 (const poly16_t * __a)
13099{
13100 union { poly16x8x4_t __i; __builtin_neon_xi __o; } __rv;
13101 __rv.__o = __builtin_neon_vld4v8hi ((const __builtin_neon_hi *) __a);
13102 return __rv.__i;
13103}
13104
5c493d36 13105__extension__ extern __inline int8x8x4_t
13106__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13107vld4_lane_s8 (const int8_t * __a, int8x8x4_t __b, const int __c)
13108{
13109 union { int8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13110 union { int8x8x4_t __i; __builtin_neon_oi __o; } __rv;
13111 __rv.__o = __builtin_neon_vld4_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
13112 return __rv.__i;
13113}
13114
5c493d36 13115__extension__ extern __inline int16x4x4_t
13116__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13117vld4_lane_s16 (const int16_t * __a, int16x4x4_t __b, const int __c)
13118{
13119 union { int16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13120 union { int16x4x4_t __i; __builtin_neon_oi __o; } __rv;
13121 __rv.__o = __builtin_neon_vld4_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
13122 return __rv.__i;
13123}
13124
5c493d36 13125__extension__ extern __inline int32x2x4_t
13126__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13127vld4_lane_s32 (const int32_t * __a, int32x2x4_t __b, const int __c)
13128{
13129 union { int32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13130 union { int32x2x4_t __i; __builtin_neon_oi __o; } __rv;
13131 __rv.__o = __builtin_neon_vld4_lanev2si ((const __builtin_neon_si *) __a, __bu.__o, __c);
13132 return __rv.__i;
13133}
13134
fb5f110d 13135#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 13136__extension__ extern __inline float16x4x4_t
13137__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 13138vld4_lane_f16 (const float16_t * __a, float16x4x4_t __b, const int __c)
13139{
13140 union { float16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13141 union { float16x4x4_t __i; __builtin_neon_oi __o; } __rv;
13142 __rv.__o = __builtin_neon_vld4_lanev4hf (__a,
13143 __bu.__o, __c);
13144 return __rv.__i;
13145}
13146#endif
13147
5c493d36 13148__extension__ extern __inline float32x2x4_t
13149__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13150vld4_lane_f32 (const float32_t * __a, float32x2x4_t __b, const int __c)
13151{
13152 union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13153 union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv;
52a0d45c 13154 __rv.__o = __builtin_neon_vld4_lanev2sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
d98a3884 13155 return __rv.__i;
13156}
13157
5c493d36 13158__extension__ extern __inline uint8x8x4_t
13159__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13160vld4_lane_u8 (const uint8_t * __a, uint8x8x4_t __b, const int __c)
13161{
13162 union { uint8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13163 union { uint8x8x4_t __i; __builtin_neon_oi __o; } __rv;
13164 __rv.__o = __builtin_neon_vld4_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
13165 return __rv.__i;
13166}
13167
5c493d36 13168__extension__ extern __inline uint16x4x4_t
13169__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13170vld4_lane_u16 (const uint16_t * __a, uint16x4x4_t __b, const int __c)
13171{
13172 union { uint16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13173 union { uint16x4x4_t __i; __builtin_neon_oi __o; } __rv;
13174 __rv.__o = __builtin_neon_vld4_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
13175 return __rv.__i;
13176}
13177
5c493d36 13178__extension__ extern __inline uint32x2x4_t
13179__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13180vld4_lane_u32 (const uint32_t * __a, uint32x2x4_t __b, const int __c)
13181{
13182 union { uint32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13183 union { uint32x2x4_t __i; __builtin_neon_oi __o; } __rv;
13184 __rv.__o = __builtin_neon_vld4_lanev2si ((const __builtin_neon_si *) __a, __bu.__o, __c);
13185 return __rv.__i;
13186}
13187
5c493d36 13188__extension__ extern __inline poly8x8x4_t
13189__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13190vld4_lane_p8 (const poly8_t * __a, poly8x8x4_t __b, const int __c)
13191{
13192 union { poly8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13193 union { poly8x8x4_t __i; __builtin_neon_oi __o; } __rv;
13194 __rv.__o = __builtin_neon_vld4_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
13195 return __rv.__i;
13196}
13197
5c493d36 13198__extension__ extern __inline poly16x4x4_t
13199__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13200vld4_lane_p16 (const poly16_t * __a, poly16x4x4_t __b, const int __c)
13201{
13202 union { poly16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13203 union { poly16x4x4_t __i; __builtin_neon_oi __o; } __rv;
13204 __rv.__o = __builtin_neon_vld4_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
13205 return __rv.__i;
13206}
13207
5c493d36 13208__extension__ extern __inline int16x8x4_t
13209__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13210vld4q_lane_s16 (const int16_t * __a, int16x8x4_t __b, const int __c)
13211{
13212 union { int16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13213 union { int16x8x4_t __i; __builtin_neon_xi __o; } __rv;
13214 __rv.__o = __builtin_neon_vld4_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
13215 return __rv.__i;
13216}
13217
5c493d36 13218__extension__ extern __inline int32x4x4_t
13219__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13220vld4q_lane_s32 (const int32_t * __a, int32x4x4_t __b, const int __c)
13221{
13222 union { int32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13223 union { int32x4x4_t __i; __builtin_neon_xi __o; } __rv;
13224 __rv.__o = __builtin_neon_vld4_lanev4si ((const __builtin_neon_si *) __a, __bu.__o, __c);
13225 return __rv.__i;
13226}
13227
fb5f110d 13228#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 13229__extension__ extern __inline float16x8x4_t
13230__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 13231vld4q_lane_f16 (const float16_t * __a, float16x8x4_t __b, const int __c)
13232{
13233 union { float16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13234 union { float16x8x4_t __i; __builtin_neon_xi __o; } __rv;
13235 __rv.__o = __builtin_neon_vld4_lanev8hf (__a,
13236 __bu.__o, __c);
13237 return __rv.__i;
13238}
13239#endif
13240
5c493d36 13241__extension__ extern __inline float32x4x4_t
13242__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13243vld4q_lane_f32 (const float32_t * __a, float32x4x4_t __b, const int __c)
13244{
13245 union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13246 union { float32x4x4_t __i; __builtin_neon_xi __o; } __rv;
52a0d45c 13247 __rv.__o = __builtin_neon_vld4_lanev4sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
d98a3884 13248 return __rv.__i;
13249}
13250
5c493d36 13251__extension__ extern __inline uint16x8x4_t
13252__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13253vld4q_lane_u16 (const uint16_t * __a, uint16x8x4_t __b, const int __c)
13254{
13255 union { uint16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13256 union { uint16x8x4_t __i; __builtin_neon_xi __o; } __rv;
13257 __rv.__o = __builtin_neon_vld4_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
13258 return __rv.__i;
13259}
13260
5c493d36 13261__extension__ extern __inline uint32x4x4_t
13262__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13263vld4q_lane_u32 (const uint32_t * __a, uint32x4x4_t __b, const int __c)
13264{
13265 union { uint32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13266 union { uint32x4x4_t __i; __builtin_neon_xi __o; } __rv;
13267 __rv.__o = __builtin_neon_vld4_lanev4si ((const __builtin_neon_si *) __a, __bu.__o, __c);
13268 return __rv.__i;
13269}
13270
5c493d36 13271__extension__ extern __inline poly16x8x4_t
13272__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13273vld4q_lane_p16 (const poly16_t * __a, poly16x8x4_t __b, const int __c)
13274{
13275 union { poly16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13276 union { poly16x8x4_t __i; __builtin_neon_xi __o; } __rv;
13277 __rv.__o = __builtin_neon_vld4_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
13278 return __rv.__i;
13279}
13280
5c493d36 13281__extension__ extern __inline int8x8x4_t
13282__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13283vld4_dup_s8 (const int8_t * __a)
13284{
13285 union { int8x8x4_t __i; __builtin_neon_oi __o; } __rv;
13286 __rv.__o = __builtin_neon_vld4_dupv8qi ((const __builtin_neon_qi *) __a);
13287 return __rv.__i;
13288}
13289
5c493d36 13290__extension__ extern __inline int16x4x4_t
13291__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13292vld4_dup_s16 (const int16_t * __a)
13293{
13294 union { int16x4x4_t __i; __builtin_neon_oi __o; } __rv;
13295 __rv.__o = __builtin_neon_vld4_dupv4hi ((const __builtin_neon_hi *) __a);
13296 return __rv.__i;
13297}
13298
5c493d36 13299__extension__ extern __inline int32x2x4_t
13300__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13301vld4_dup_s32 (const int32_t * __a)
13302{
13303 union { int32x2x4_t __i; __builtin_neon_oi __o; } __rv;
13304 __rv.__o = __builtin_neon_vld4_dupv2si ((const __builtin_neon_si *) __a);
13305 return __rv.__i;
13306}
13307
fb5f110d 13308#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 13309__extension__ extern __inline float16x4x4_t
13310__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 13311vld4_dup_f16 (const float16_t * __a)
13312{
13313 union { float16x4x4_t __i; __builtin_neon_oi __o; } __rv;
13314 __rv.__o = __builtin_neon_vld4_dupv4hf (__a);
13315 return __rv.__i;
13316}
13317#endif
13318
5c493d36 13319__extension__ extern __inline float32x2x4_t
13320__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13321vld4_dup_f32 (const float32_t * __a)
13322{
13323 union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv;
52a0d45c 13324 __rv.__o = __builtin_neon_vld4_dupv2sf ((const __builtin_neon_sf *) __a);
d98a3884 13325 return __rv.__i;
13326}
13327
5c493d36 13328__extension__ extern __inline uint8x8x4_t
13329__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13330vld4_dup_u8 (const uint8_t * __a)
13331{
13332 union { uint8x8x4_t __i; __builtin_neon_oi __o; } __rv;
13333 __rv.__o = __builtin_neon_vld4_dupv8qi ((const __builtin_neon_qi *) __a);
13334 return __rv.__i;
13335}
13336
5c493d36 13337__extension__ extern __inline uint16x4x4_t
13338__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13339vld4_dup_u16 (const uint16_t * __a)
13340{
13341 union { uint16x4x4_t __i; __builtin_neon_oi __o; } __rv;
13342 __rv.__o = __builtin_neon_vld4_dupv4hi ((const __builtin_neon_hi *) __a);
13343 return __rv.__i;
13344}
13345
5c493d36 13346__extension__ extern __inline uint32x2x4_t
13347__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13348vld4_dup_u32 (const uint32_t * __a)
13349{
13350 union { uint32x2x4_t __i; __builtin_neon_oi __o; } __rv;
13351 __rv.__o = __builtin_neon_vld4_dupv2si ((const __builtin_neon_si *) __a);
13352 return __rv.__i;
13353}
13354
5c493d36 13355__extension__ extern __inline poly8x8x4_t
13356__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13357vld4_dup_p8 (const poly8_t * __a)
13358{
13359 union { poly8x8x4_t __i; __builtin_neon_oi __o; } __rv;
13360 __rv.__o = __builtin_neon_vld4_dupv8qi ((const __builtin_neon_qi *) __a);
13361 return __rv.__i;
13362}
13363
5c493d36 13364__extension__ extern __inline poly16x4x4_t
13365__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13366vld4_dup_p16 (const poly16_t * __a)
13367{
13368 union { poly16x4x4_t __i; __builtin_neon_oi __o; } __rv;
13369 __rv.__o = __builtin_neon_vld4_dupv4hi ((const __builtin_neon_hi *) __a);
13370 return __rv.__i;
13371}
13372
dcbc6813 13373#pragma GCC push_options
13374#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 13375__extension__ extern __inline poly64x1x4_t
13376__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 13377vld4_dup_p64 (const poly64_t * __a)
13378{
13379 union { poly64x1x4_t __i; __builtin_neon_oi __o; } __rv;
13380 __rv.__o = __builtin_neon_vld4_dupdi ((const __builtin_neon_di *) __a);
13381 return __rv.__i;
13382}
13383
dcbc6813 13384#pragma GCC pop_options
5c493d36 13385__extension__ extern __inline int64x1x4_t
13386__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13387vld4_dup_s64 (const int64_t * __a)
13388{
13389 union { int64x1x4_t __i; __builtin_neon_oi __o; } __rv;
13390 __rv.__o = __builtin_neon_vld4_dupdi ((const __builtin_neon_di *) __a);
13391 return __rv.__i;
13392}
13393
5c493d36 13394__extension__ extern __inline uint64x1x4_t
13395__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13396vld4_dup_u64 (const uint64_t * __a)
13397{
13398 union { uint64x1x4_t __i; __builtin_neon_oi __o; } __rv;
13399 __rv.__o = __builtin_neon_vld4_dupdi ((const __builtin_neon_di *) __a);
13400 return __rv.__i;
13401}
13402
5c493d36 13403__extension__ extern __inline void
13404__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13405vst4_s8 (int8_t * __a, int8x8x4_t __b)
13406{
13407 union { int8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13408 __builtin_neon_vst4v8qi ((__builtin_neon_qi *) __a, __bu.__o);
13409}
13410
5c493d36 13411__extension__ extern __inline void
13412__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13413vst4_s16 (int16_t * __a, int16x4x4_t __b)
13414{
13415 union { int16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13416 __builtin_neon_vst4v4hi ((__builtin_neon_hi *) __a, __bu.__o);
13417}
13418
5c493d36 13419__extension__ extern __inline void
13420__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13421vst4_s32 (int32_t * __a, int32x2x4_t __b)
13422{
13423 union { int32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13424 __builtin_neon_vst4v2si ((__builtin_neon_si *) __a, __bu.__o);
13425}
13426
fb5f110d 13427#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 13428__extension__ extern __inline void
13429__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 13430vst4_f16 (float16_t * __a, float16x4x4_t __b)
13431{
13432 union { float16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13433 __builtin_neon_vst4v4hf (__a, __bu.__o);
13434}
13435#endif
13436
5c493d36 13437__extension__ extern __inline void
13438__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13439vst4_f32 (float32_t * __a, float32x2x4_t __b)
13440{
13441 union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
52a0d45c 13442 __builtin_neon_vst4v2sf ((__builtin_neon_sf *) __a, __bu.__o);
d98a3884 13443}
13444
5c493d36 13445__extension__ extern __inline void
13446__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13447vst4_u8 (uint8_t * __a, uint8x8x4_t __b)
13448{
13449 union { uint8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13450 __builtin_neon_vst4v8qi ((__builtin_neon_qi *) __a, __bu.__o);
13451}
13452
5c493d36 13453__extension__ extern __inline void
13454__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13455vst4_u16 (uint16_t * __a, uint16x4x4_t __b)
13456{
13457 union { uint16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13458 __builtin_neon_vst4v4hi ((__builtin_neon_hi *) __a, __bu.__o);
13459}
13460
5c493d36 13461__extension__ extern __inline void
13462__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13463vst4_u32 (uint32_t * __a, uint32x2x4_t __b)
13464{
13465 union { uint32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13466 __builtin_neon_vst4v2si ((__builtin_neon_si *) __a, __bu.__o);
13467}
13468
5c493d36 13469__extension__ extern __inline void
13470__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13471vst4_p8 (poly8_t * __a, poly8x8x4_t __b)
13472{
13473 union { poly8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13474 __builtin_neon_vst4v8qi ((__builtin_neon_qi *) __a, __bu.__o);
13475}
13476
5c493d36 13477__extension__ extern __inline void
13478__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13479vst4_p16 (poly16_t * __a, poly16x4x4_t __b)
13480{
13481 union { poly16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13482 __builtin_neon_vst4v4hi ((__builtin_neon_hi *) __a, __bu.__o);
13483}
13484
dcbc6813 13485#pragma GCC push_options
13486#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 13487__extension__ extern __inline void
13488__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 13489vst4_p64 (poly64_t * __a, poly64x1x4_t __b)
13490{
13491 union { poly64x1x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13492 __builtin_neon_vst4di ((__builtin_neon_di *) __a, __bu.__o);
13493}
13494
dcbc6813 13495#pragma GCC pop_options
5c493d36 13496__extension__ extern __inline void
13497__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13498vst4_s64 (int64_t * __a, int64x1x4_t __b)
13499{
13500 union { int64x1x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13501 __builtin_neon_vst4di ((__builtin_neon_di *) __a, __bu.__o);
13502}
13503
5c493d36 13504__extension__ extern __inline void
13505__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13506vst4_u64 (uint64_t * __a, uint64x1x4_t __b)
13507{
13508 union { uint64x1x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13509 __builtin_neon_vst4di ((__builtin_neon_di *) __a, __bu.__o);
13510}
13511
5c493d36 13512__extension__ extern __inline void
13513__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13514vst4q_s8 (int8_t * __a, int8x16x4_t __b)
13515{
13516 union { int8x16x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13517 __builtin_neon_vst4v16qi ((__builtin_neon_qi *) __a, __bu.__o);
13518}
13519
5c493d36 13520__extension__ extern __inline void
13521__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13522vst4q_s16 (int16_t * __a, int16x8x4_t __b)
13523{
13524 union { int16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13525 __builtin_neon_vst4v8hi ((__builtin_neon_hi *) __a, __bu.__o);
13526}
13527
5c493d36 13528__extension__ extern __inline void
13529__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13530vst4q_s32 (int32_t * __a, int32x4x4_t __b)
13531{
13532 union { int32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13533 __builtin_neon_vst4v4si ((__builtin_neon_si *) __a, __bu.__o);
13534}
13535
fb5f110d 13536#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 13537__extension__ extern __inline void
13538__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 13539vst4q_f16 (float16_t * __a, float16x8x4_t __b)
13540{
13541 union { float16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13542 __builtin_neon_vst4v8hf (__a, __bu.__o);
13543}
13544#endif
13545
5c493d36 13546__extension__ extern __inline void
13547__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13548vst4q_f32 (float32_t * __a, float32x4x4_t __b)
13549{
13550 union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
52a0d45c 13551 __builtin_neon_vst4v4sf ((__builtin_neon_sf *) __a, __bu.__o);
d98a3884 13552}
13553
5c493d36 13554__extension__ extern __inline void
13555__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13556vst4q_u8 (uint8_t * __a, uint8x16x4_t __b)
13557{
13558 union { uint8x16x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13559 __builtin_neon_vst4v16qi ((__builtin_neon_qi *) __a, __bu.__o);
13560}
13561
5c493d36 13562__extension__ extern __inline void
13563__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13564vst4q_u16 (uint16_t * __a, uint16x8x4_t __b)
13565{
13566 union { uint16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13567 __builtin_neon_vst4v8hi ((__builtin_neon_hi *) __a, __bu.__o);
13568}
13569
5c493d36 13570__extension__ extern __inline void
13571__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13572vst4q_u32 (uint32_t * __a, uint32x4x4_t __b)
13573{
13574 union { uint32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13575 __builtin_neon_vst4v4si ((__builtin_neon_si *) __a, __bu.__o);
13576}
13577
5c493d36 13578__extension__ extern __inline void
13579__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13580vst4q_p8 (poly8_t * __a, poly8x16x4_t __b)
13581{
13582 union { poly8x16x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13583 __builtin_neon_vst4v16qi ((__builtin_neon_qi *) __a, __bu.__o);
13584}
13585
5c493d36 13586__extension__ extern __inline void
13587__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13588vst4q_p16 (poly16_t * __a, poly16x8x4_t __b)
13589{
13590 union { poly16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13591 __builtin_neon_vst4v8hi ((__builtin_neon_hi *) __a, __bu.__o);
13592}
13593
5c493d36 13594__extension__ extern __inline void
13595__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13596vst4_lane_s8 (int8_t * __a, int8x8x4_t __b, const int __c)
13597{
13598 union { int8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13599 __builtin_neon_vst4_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
13600}
13601
5c493d36 13602__extension__ extern __inline void
13603__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13604vst4_lane_s16 (int16_t * __a, int16x4x4_t __b, const int __c)
13605{
13606 union { int16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13607 __builtin_neon_vst4_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
13608}
13609
5c493d36 13610__extension__ extern __inline void
13611__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13612vst4_lane_s32 (int32_t * __a, int32x2x4_t __b, const int __c)
13613{
13614 union { int32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13615 __builtin_neon_vst4_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
13616}
13617
fb5f110d 13618#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 13619__extension__ extern __inline void
13620__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 13621vst4_lane_f16 (float16_t * __a, float16x4x4_t __b, const int __c)
13622{
13623 union { float16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13624 __builtin_neon_vst4_lanev4hf (__a, __bu.__o, __c);
13625}
13626#endif
13627
5c493d36 13628__extension__ extern __inline void
13629__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13630vst4_lane_f32 (float32_t * __a, float32x2x4_t __b, const int __c)
13631{
13632 union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
52a0d45c 13633 __builtin_neon_vst4_lanev2sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
d98a3884 13634}
13635
5c493d36 13636__extension__ extern __inline void
13637__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13638vst4_lane_u8 (uint8_t * __a, uint8x8x4_t __b, const int __c)
13639{
13640 union { uint8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13641 __builtin_neon_vst4_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
13642}
13643
5c493d36 13644__extension__ extern __inline void
13645__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13646vst4_lane_u16 (uint16_t * __a, uint16x4x4_t __b, const int __c)
13647{
13648 union { uint16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13649 __builtin_neon_vst4_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
13650}
13651
5c493d36 13652__extension__ extern __inline void
13653__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13654vst4_lane_u32 (uint32_t * __a, uint32x2x4_t __b, const int __c)
13655{
13656 union { uint32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13657 __builtin_neon_vst4_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
13658}
13659
5c493d36 13660__extension__ extern __inline void
13661__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13662vst4_lane_p8 (poly8_t * __a, poly8x8x4_t __b, const int __c)
13663{
13664 union { poly8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13665 __builtin_neon_vst4_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
13666}
13667
5c493d36 13668__extension__ extern __inline void
13669__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13670vst4_lane_p16 (poly16_t * __a, poly16x4x4_t __b, const int __c)
13671{
13672 union { poly16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
13673 __builtin_neon_vst4_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
13674}
13675
5c493d36 13676__extension__ extern __inline void
13677__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13678vst4q_lane_s16 (int16_t * __a, int16x8x4_t __b, const int __c)
13679{
13680 union { int16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13681 __builtin_neon_vst4_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
13682}
13683
5c493d36 13684__extension__ extern __inline void
13685__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13686vst4q_lane_s32 (int32_t * __a, int32x4x4_t __b, const int __c)
13687{
13688 union { int32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13689 __builtin_neon_vst4_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
13690}
13691
fb5f110d 13692#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 13693__extension__ extern __inline void
13694__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
fb5f110d 13695vst4q_lane_f16 (float16_t * __a, float16x8x4_t __b, const int __c)
13696{
13697 union { float16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13698 __builtin_neon_vst4_lanev8hf (__a, __bu.__o, __c);
13699}
13700#endif
13701
5c493d36 13702__extension__ extern __inline void
13703__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13704vst4q_lane_f32 (float32_t * __a, float32x4x4_t __b, const int __c)
13705{
13706 union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
52a0d45c 13707 __builtin_neon_vst4_lanev4sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
d98a3884 13708}
13709
5c493d36 13710__extension__ extern __inline void
13711__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13712vst4q_lane_u16 (uint16_t * __a, uint16x8x4_t __b, const int __c)
13713{
13714 union { uint16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13715 __builtin_neon_vst4_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
13716}
13717
5c493d36 13718__extension__ extern __inline void
13719__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13720vst4q_lane_u32 (uint32_t * __a, uint32x4x4_t __b, const int __c)
13721{
13722 union { uint32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13723 __builtin_neon_vst4_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
13724}
13725
5c493d36 13726__extension__ extern __inline void
13727__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13728vst4q_lane_p16 (poly16_t * __a, poly16x8x4_t __b, const int __c)
13729{
13730 union { poly16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
13731 __builtin_neon_vst4_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
13732}
13733
5c493d36 13734__extension__ extern __inline int8x8_t
13735__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13736vand_s8 (int8x8_t __a, int8x8_t __b)
13737{
f8ccff16 13738 return __a & __b;
d98a3884 13739}
13740
5c493d36 13741__extension__ extern __inline int16x4_t
13742__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13743vand_s16 (int16x4_t __a, int16x4_t __b)
13744{
f8ccff16 13745 return __a & __b;
d98a3884 13746}
13747
5c493d36 13748__extension__ extern __inline int32x2_t
13749__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13750vand_s32 (int32x2_t __a, int32x2_t __b)
13751{
f8ccff16 13752 return __a & __b;
d98a3884 13753}
13754
5c493d36 13755__extension__ extern __inline uint8x8_t
13756__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13757vand_u8 (uint8x8_t __a, uint8x8_t __b)
13758{
f8ccff16 13759 return __a & __b;
d98a3884 13760}
13761
5c493d36 13762__extension__ extern __inline uint16x4_t
13763__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13764vand_u16 (uint16x4_t __a, uint16x4_t __b)
13765{
f8ccff16 13766 return __a & __b;
d98a3884 13767}
13768
5c493d36 13769__extension__ extern __inline uint32x2_t
13770__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13771vand_u32 (uint32x2_t __a, uint32x2_t __b)
13772{
f8ccff16 13773 return __a & __b;
d98a3884 13774}
13775
5c493d36 13776__extension__ extern __inline int64x1_t
13777__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e2669ea7 13778vand_s64 (int64x1_t __a, int64x1_t __b)
13779{
f8ccff16 13780 return __a & __b;
e2669ea7 13781}
13782
5c493d36 13783__extension__ extern __inline uint64x1_t
13784__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13785vand_u64 (uint64x1_t __a, uint64x1_t __b)
13786{
f8ccff16 13787 return __a & __b;
d98a3884 13788}
13789
5c493d36 13790__extension__ extern __inline int8x16_t
13791__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13792vandq_s8 (int8x16_t __a, int8x16_t __b)
13793{
f8ccff16 13794 return __a & __b;
d98a3884 13795}
13796
5c493d36 13797__extension__ extern __inline int16x8_t
13798__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13799vandq_s16 (int16x8_t __a, int16x8_t __b)
13800{
f8ccff16 13801 return __a & __b;
d98a3884 13802}
13803
5c493d36 13804__extension__ extern __inline int32x4_t
13805__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13806vandq_s32 (int32x4_t __a, int32x4_t __b)
13807{
f8ccff16 13808 return __a & __b;
d98a3884 13809}
13810
5c493d36 13811__extension__ extern __inline int64x2_t
13812__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13813vandq_s64 (int64x2_t __a, int64x2_t __b)
13814{
f8ccff16 13815 return __a & __b;
d98a3884 13816}
13817
5c493d36 13818__extension__ extern __inline uint8x16_t
13819__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13820vandq_u8 (uint8x16_t __a, uint8x16_t __b)
13821{
f8ccff16 13822 return __a & __b;
d98a3884 13823}
13824
5c493d36 13825__extension__ extern __inline uint16x8_t
13826__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13827vandq_u16 (uint16x8_t __a, uint16x8_t __b)
13828{
f8ccff16 13829 return __a & __b;
d98a3884 13830}
13831
5c493d36 13832__extension__ extern __inline uint32x4_t
13833__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13834vandq_u32 (uint32x4_t __a, uint32x4_t __b)
13835{
f8ccff16 13836 return __a & __b;
d98a3884 13837}
13838
5c493d36 13839__extension__ extern __inline uint64x2_t
13840__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13841vandq_u64 (uint64x2_t __a, uint64x2_t __b)
13842{
f8ccff16 13843 return __a & __b;
d98a3884 13844}
13845
5c493d36 13846__extension__ extern __inline int8x8_t
13847__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13848vorr_s8 (int8x8_t __a, int8x8_t __b)
13849{
f8ccff16 13850 return __a | __b;
d98a3884 13851}
13852
5c493d36 13853__extension__ extern __inline int16x4_t
13854__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13855vorr_s16 (int16x4_t __a, int16x4_t __b)
13856{
f8ccff16 13857 return __a | __b;
d98a3884 13858}
13859
5c493d36 13860__extension__ extern __inline int32x2_t
13861__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13862vorr_s32 (int32x2_t __a, int32x2_t __b)
13863{
f8ccff16 13864 return __a | __b;
d98a3884 13865}
13866
5c493d36 13867__extension__ extern __inline uint8x8_t
13868__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13869vorr_u8 (uint8x8_t __a, uint8x8_t __b)
13870{
f8ccff16 13871 return __a | __b;
d98a3884 13872}
13873
5c493d36 13874__extension__ extern __inline uint16x4_t
13875__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13876vorr_u16 (uint16x4_t __a, uint16x4_t __b)
13877{
f8ccff16 13878 return __a | __b;
d98a3884 13879}
13880
5c493d36 13881__extension__ extern __inline uint32x2_t
13882__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13883vorr_u32 (uint32x2_t __a, uint32x2_t __b)
13884{
f8ccff16 13885 return __a | __b;
d98a3884 13886}
13887
5c493d36 13888__extension__ extern __inline int64x1_t
13889__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e2669ea7 13890vorr_s64 (int64x1_t __a, int64x1_t __b)
13891{
f8ccff16 13892 return __a | __b;
e2669ea7 13893}
13894
5c493d36 13895__extension__ extern __inline uint64x1_t
13896__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13897vorr_u64 (uint64x1_t __a, uint64x1_t __b)
13898{
f8ccff16 13899 return __a | __b;
d98a3884 13900}
13901
5c493d36 13902__extension__ extern __inline int8x16_t
13903__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13904vorrq_s8 (int8x16_t __a, int8x16_t __b)
13905{
f8ccff16 13906 return __a | __b;
d98a3884 13907}
13908
5c493d36 13909__extension__ extern __inline int16x8_t
13910__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13911vorrq_s16 (int16x8_t __a, int16x8_t __b)
13912{
f8ccff16 13913 return __a | __b;
d98a3884 13914}
13915
5c493d36 13916__extension__ extern __inline int32x4_t
13917__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13918vorrq_s32 (int32x4_t __a, int32x4_t __b)
13919{
f8ccff16 13920 return __a | __b;
d98a3884 13921}
13922
5c493d36 13923__extension__ extern __inline int64x2_t
13924__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13925vorrq_s64 (int64x2_t __a, int64x2_t __b)
13926{
f8ccff16 13927 return __a | __b;
d98a3884 13928}
13929
5c493d36 13930__extension__ extern __inline uint8x16_t
13931__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13932vorrq_u8 (uint8x16_t __a, uint8x16_t __b)
13933{
f8ccff16 13934 return __a | __b;
d98a3884 13935}
13936
5c493d36 13937__extension__ extern __inline uint16x8_t
13938__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13939vorrq_u16 (uint16x8_t __a, uint16x8_t __b)
13940{
f8ccff16 13941 return __a | __b;
d98a3884 13942}
13943
5c493d36 13944__extension__ extern __inline uint32x4_t
13945__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13946vorrq_u32 (uint32x4_t __a, uint32x4_t __b)
13947{
f8ccff16 13948 return __a | __b;
d98a3884 13949}
13950
5c493d36 13951__extension__ extern __inline uint64x2_t
13952__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13953vorrq_u64 (uint64x2_t __a, uint64x2_t __b)
13954{
f8ccff16 13955 return __a | __b;
d98a3884 13956}
13957
5c493d36 13958__extension__ extern __inline int8x8_t
13959__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13960veor_s8 (int8x8_t __a, int8x8_t __b)
13961{
f8ccff16 13962 return __a ^ __b;
d98a3884 13963}
13964
5c493d36 13965__extension__ extern __inline int16x4_t
13966__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13967veor_s16 (int16x4_t __a, int16x4_t __b)
13968{
f8ccff16 13969 return __a ^ __b;
d98a3884 13970}
13971
5c493d36 13972__extension__ extern __inline int32x2_t
13973__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13974veor_s32 (int32x2_t __a, int32x2_t __b)
13975{
f8ccff16 13976 return __a ^ __b;
d98a3884 13977}
13978
5c493d36 13979__extension__ extern __inline uint8x8_t
13980__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13981veor_u8 (uint8x8_t __a, uint8x8_t __b)
13982{
f8ccff16 13983 return __a ^ __b;
d98a3884 13984}
13985
5c493d36 13986__extension__ extern __inline uint16x4_t
13987__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13988veor_u16 (uint16x4_t __a, uint16x4_t __b)
13989{
f8ccff16 13990 return __a ^ __b;
d98a3884 13991}
13992
5c493d36 13993__extension__ extern __inline uint32x2_t
13994__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 13995veor_u32 (uint32x2_t __a, uint32x2_t __b)
13996{
f8ccff16 13997 return __a ^ __b;
d98a3884 13998}
13999
5c493d36 14000__extension__ extern __inline int64x1_t
14001__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e2669ea7 14002veor_s64 (int64x1_t __a, int64x1_t __b)
14003{
f8ccff16 14004 return __a ^ __b;
e2669ea7 14005}
14006
5c493d36 14007__extension__ extern __inline uint64x1_t
14008__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14009veor_u64 (uint64x1_t __a, uint64x1_t __b)
14010{
f8ccff16 14011 return __a ^ __b;
d98a3884 14012}
14013
5c493d36 14014__extension__ extern __inline int8x16_t
14015__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14016veorq_s8 (int8x16_t __a, int8x16_t __b)
14017{
f8ccff16 14018 return __a ^ __b;
d98a3884 14019}
14020
5c493d36 14021__extension__ extern __inline int16x8_t
14022__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14023veorq_s16 (int16x8_t __a, int16x8_t __b)
14024{
f8ccff16 14025 return __a ^ __b;
d98a3884 14026}
14027
5c493d36 14028__extension__ extern __inline int32x4_t
14029__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14030veorq_s32 (int32x4_t __a, int32x4_t __b)
14031{
f8ccff16 14032 return __a ^ __b;
d98a3884 14033}
14034
5c493d36 14035__extension__ extern __inline int64x2_t
14036__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14037veorq_s64 (int64x2_t __a, int64x2_t __b)
14038{
f8ccff16 14039 return __a ^ __b;
d98a3884 14040}
14041
5c493d36 14042__extension__ extern __inline uint8x16_t
14043__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14044veorq_u8 (uint8x16_t __a, uint8x16_t __b)
14045{
f8ccff16 14046 return __a ^ __b;
d98a3884 14047}
14048
5c493d36 14049__extension__ extern __inline uint16x8_t
14050__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14051veorq_u16 (uint16x8_t __a, uint16x8_t __b)
14052{
f8ccff16 14053 return __a ^ __b;
d98a3884 14054}
14055
5c493d36 14056__extension__ extern __inline uint32x4_t
14057__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14058veorq_u32 (uint32x4_t __a, uint32x4_t __b)
14059{
f8ccff16 14060 return __a ^ __b;
d98a3884 14061}
14062
5c493d36 14063__extension__ extern __inline uint64x2_t
14064__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14065veorq_u64 (uint64x2_t __a, uint64x2_t __b)
14066{
f8ccff16 14067 return __a ^ __b;
d98a3884 14068}
14069
5c493d36 14070__extension__ extern __inline int8x8_t
14071__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14072vbic_s8 (int8x8_t __a, int8x8_t __b)
14073{
f8ccff16 14074 return __a & ~__b;
d98a3884 14075}
14076
5c493d36 14077__extension__ extern __inline int16x4_t
14078__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14079vbic_s16 (int16x4_t __a, int16x4_t __b)
14080{
f8ccff16 14081 return __a & ~__b;
d98a3884 14082}
14083
5c493d36 14084__extension__ extern __inline int32x2_t
14085__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14086vbic_s32 (int32x2_t __a, int32x2_t __b)
14087{
f8ccff16 14088 return __a & ~__b;
d98a3884 14089}
14090
5c493d36 14091__extension__ extern __inline uint8x8_t
14092__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14093vbic_u8 (uint8x8_t __a, uint8x8_t __b)
14094{
f8ccff16 14095 return __a & ~__b;
d98a3884 14096}
14097
5c493d36 14098__extension__ extern __inline uint16x4_t
14099__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14100vbic_u16 (uint16x4_t __a, uint16x4_t __b)
14101{
f8ccff16 14102 return __a & ~__b;
d98a3884 14103}
14104
5c493d36 14105__extension__ extern __inline uint32x2_t
14106__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14107vbic_u32 (uint32x2_t __a, uint32x2_t __b)
14108{
f8ccff16 14109 return __a & ~__b;
d98a3884 14110}
14111
5c493d36 14112__extension__ extern __inline int64x1_t
14113__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e2669ea7 14114vbic_s64 (int64x1_t __a, int64x1_t __b)
14115{
f8ccff16 14116 return __a & ~__b;
e2669ea7 14117}
14118
5c493d36 14119__extension__ extern __inline uint64x1_t
14120__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14121vbic_u64 (uint64x1_t __a, uint64x1_t __b)
14122{
f8ccff16 14123 return __a & ~__b;
d98a3884 14124}
14125
5c493d36 14126__extension__ extern __inline int8x16_t
14127__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14128vbicq_s8 (int8x16_t __a, int8x16_t __b)
14129{
f8ccff16 14130 return __a & ~__b;
d98a3884 14131}
14132
5c493d36 14133__extension__ extern __inline int16x8_t
14134__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14135vbicq_s16 (int16x8_t __a, int16x8_t __b)
14136{
f8ccff16 14137 return __a & ~__b;
d98a3884 14138}
14139
5c493d36 14140__extension__ extern __inline int32x4_t
14141__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14142vbicq_s32 (int32x4_t __a, int32x4_t __b)
14143{
f8ccff16 14144 return __a & ~__b;
d98a3884 14145}
14146
5c493d36 14147__extension__ extern __inline int64x2_t
14148__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14149vbicq_s64 (int64x2_t __a, int64x2_t __b)
14150{
f8ccff16 14151 return __a & ~__b;
d98a3884 14152}
14153
5c493d36 14154__extension__ extern __inline uint8x16_t
14155__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14156vbicq_u8 (uint8x16_t __a, uint8x16_t __b)
14157{
f8ccff16 14158 return __a & ~__b;
d98a3884 14159}
14160
5c493d36 14161__extension__ extern __inline uint16x8_t
14162__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14163vbicq_u16 (uint16x8_t __a, uint16x8_t __b)
14164{
f8ccff16 14165 return __a & ~__b;
d98a3884 14166}
14167
5c493d36 14168__extension__ extern __inline uint32x4_t
14169__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14170vbicq_u32 (uint32x4_t __a, uint32x4_t __b)
14171{
f8ccff16 14172 return __a & ~__b;
d98a3884 14173}
14174
5c493d36 14175__extension__ extern __inline uint64x2_t
14176__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14177vbicq_u64 (uint64x2_t __a, uint64x2_t __b)
14178{
f8ccff16 14179 return __a & ~__b;
d98a3884 14180}
14181
5c493d36 14182__extension__ extern __inline int8x8_t
14183__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14184vorn_s8 (int8x8_t __a, int8x8_t __b)
14185{
f8ccff16 14186 return __a | ~__b;
d98a3884 14187}
14188
5c493d36 14189__extension__ extern __inline int16x4_t
14190__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14191vorn_s16 (int16x4_t __a, int16x4_t __b)
14192{
f8ccff16 14193 return __a | ~__b;
d98a3884 14194}
14195
5c493d36 14196__extension__ extern __inline int32x2_t
14197__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14198vorn_s32 (int32x2_t __a, int32x2_t __b)
14199{
f8ccff16 14200 return __a | ~__b;
d98a3884 14201}
14202
5c493d36 14203__extension__ extern __inline uint8x8_t
14204__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14205vorn_u8 (uint8x8_t __a, uint8x8_t __b)
14206{
f8ccff16 14207 return __a | ~__b;
d98a3884 14208}
14209
5c493d36 14210__extension__ extern __inline uint16x4_t
14211__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14212vorn_u16 (uint16x4_t __a, uint16x4_t __b)
14213{
f8ccff16 14214 return __a | ~__b;
d98a3884 14215}
14216
5c493d36 14217__extension__ extern __inline uint32x2_t
14218__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14219vorn_u32 (uint32x2_t __a, uint32x2_t __b)
14220{
f8ccff16 14221 return __a | ~__b;
d98a3884 14222}
14223
5c493d36 14224__extension__ extern __inline int64x1_t
14225__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e2669ea7 14226vorn_s64 (int64x1_t __a, int64x1_t __b)
14227{
f8ccff16 14228 return __a | ~__b;
e2669ea7 14229}
14230
5c493d36 14231__extension__ extern __inline uint64x1_t
14232__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14233vorn_u64 (uint64x1_t __a, uint64x1_t __b)
14234{
f8ccff16 14235 return __a | ~__b;
d98a3884 14236}
14237
5c493d36 14238__extension__ extern __inline int8x16_t
14239__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14240vornq_s8 (int8x16_t __a, int8x16_t __b)
14241{
f8ccff16 14242 return __a | ~__b;
d98a3884 14243}
14244
5c493d36 14245__extension__ extern __inline int16x8_t
14246__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14247vornq_s16 (int16x8_t __a, int16x8_t __b)
14248{
f8ccff16 14249 return __a | ~__b;
d98a3884 14250}
14251
5c493d36 14252__extension__ extern __inline int32x4_t
14253__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14254vornq_s32 (int32x4_t __a, int32x4_t __b)
14255{
f8ccff16 14256 return __a | ~__b;
d98a3884 14257}
14258
5c493d36 14259__extension__ extern __inline int64x2_t
14260__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14261vornq_s64 (int64x2_t __a, int64x2_t __b)
14262{
f8ccff16 14263 return __a | ~__b;
d98a3884 14264}
14265
5c493d36 14266__extension__ extern __inline uint8x16_t
14267__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14268vornq_u8 (uint8x16_t __a, uint8x16_t __b)
14269{
f8ccff16 14270 return __a | ~__b;
d98a3884 14271}
14272
5c493d36 14273__extension__ extern __inline uint16x8_t
14274__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14275vornq_u16 (uint16x8_t __a, uint16x8_t __b)
14276{
f8ccff16 14277 return __a | ~__b;
d98a3884 14278}
14279
5c493d36 14280__extension__ extern __inline uint32x4_t
14281__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14282vornq_u32 (uint32x4_t __a, uint32x4_t __b)
14283{
f8ccff16 14284 return __a | ~__b;
d98a3884 14285}
14286
5c493d36 14287__extension__ extern __inline uint64x2_t
14288__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14289vornq_u64 (uint64x2_t __a, uint64x2_t __b)
14290{
f8ccff16 14291 return __a | ~__b;
d98a3884 14292}
14293
5c493d36 14294__extension__ extern __inline poly8x8_t
14295__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14296vreinterpret_p8_p16 (poly16x4_t __a)
d98a3884 14297{
da08cb55 14298 return (poly8x8_t) __a;
d98a3884 14299}
14300
682ea749 14301#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14302__extension__ extern __inline poly8x8_t
14303__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14304vreinterpret_p8_f16 (float16x4_t __a)
14305{
14306 return (poly8x8_t) __a;
14307}
14308#endif
14309
5c493d36 14310__extension__ extern __inline poly8x8_t
14311__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14312vreinterpret_p8_f32 (float32x2_t __a)
d98a3884 14313{
da08cb55 14314 return (poly8x8_t)__a;
d98a3884 14315}
14316
dcbc6813 14317#pragma GCC push_options
14318#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 14319__extension__ extern __inline poly8x8_t
14320__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14321vreinterpret_p8_p64 (poly64x1_t __a)
d98a3884 14322{
da08cb55 14323 return (poly8x8_t)__a;
d98a3884 14324}
14325
dcbc6813 14326#pragma GCC pop_options
5c493d36 14327__extension__ extern __inline poly8x8_t
14328__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14329vreinterpret_p8_s64 (int64x1_t __a)
14330{
da08cb55 14331 return (poly8x8_t)__a;
d98a3884 14332}
14333
5c493d36 14334__extension__ extern __inline poly8x8_t
14335__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14336vreinterpret_p8_u64 (uint64x1_t __a)
d98a3884 14337{
da08cb55 14338 return (poly8x8_t)__a;
d98a3884 14339}
14340
5c493d36 14341__extension__ extern __inline poly8x8_t
14342__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14343vreinterpret_p8_s8 (int8x8_t __a)
d98a3884 14344{
da08cb55 14345 return (poly8x8_t)__a;
d98a3884 14346}
14347
5c493d36 14348__extension__ extern __inline poly8x8_t
14349__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14350vreinterpret_p8_s16 (int16x4_t __a)
d98a3884 14351{
da08cb55 14352 return (poly8x8_t)__a;
d98a3884 14353}
14354
5c493d36 14355__extension__ extern __inline poly8x8_t
14356__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14357vreinterpret_p8_s32 (int32x2_t __a)
d98a3884 14358{
da08cb55 14359 return (poly8x8_t)__a;
d98a3884 14360}
14361
5c493d36 14362__extension__ extern __inline poly8x8_t
14363__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14364vreinterpret_p8_u8 (uint8x8_t __a)
d98a3884 14365{
da08cb55 14366 return (poly8x8_t)__a;
d98a3884 14367}
14368
5c493d36 14369__extension__ extern __inline poly8x8_t
14370__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14371vreinterpret_p8_u16 (uint16x4_t __a)
d98a3884 14372{
da08cb55 14373 return (poly8x8_t)__a;
d98a3884 14374}
14375
5c493d36 14376__extension__ extern __inline poly8x8_t
14377__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14378vreinterpret_p8_u32 (uint32x2_t __a)
d98a3884 14379{
da08cb55 14380 return (poly8x8_t)__a;
d98a3884 14381}
14382
5c493d36 14383__extension__ extern __inline poly16x4_t
14384__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14385vreinterpret_p16_p8 (poly8x8_t __a)
d98a3884 14386{
da08cb55 14387 return (poly16x4_t)__a;
d98a3884 14388}
14389
682ea749 14390#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14391__extension__ extern __inline poly16x4_t
14392__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14393vreinterpret_p16_f16 (float16x4_t __a)
14394{
14395 return (poly16x4_t) __a;
14396}
14397#endif
14398
5c493d36 14399__extension__ extern __inline poly16x4_t
14400__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14401vreinterpret_p16_f32 (float32x2_t __a)
d98a3884 14402{
da08cb55 14403 return (poly16x4_t)__a;
d98a3884 14404}
14405
dcbc6813 14406#pragma GCC push_options
14407#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 14408__extension__ extern __inline poly16x4_t
14409__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14410vreinterpret_p16_p64 (poly64x1_t __a)
d98a3884 14411{
da08cb55 14412 return (poly16x4_t)__a;
d98a3884 14413}
14414
dcbc6813 14415#pragma GCC pop_options
5c493d36 14416__extension__ extern __inline poly16x4_t
14417__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14418vreinterpret_p16_s64 (int64x1_t __a)
d98a3884 14419{
da08cb55 14420 return (poly16x4_t)__a;
d98a3884 14421}
14422
5c493d36 14423__extension__ extern __inline poly16x4_t
14424__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14425vreinterpret_p16_u64 (uint64x1_t __a)
d98a3884 14426{
da08cb55 14427 return (poly16x4_t)__a;
d98a3884 14428}
14429
5c493d36 14430__extension__ extern __inline poly16x4_t
14431__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14432vreinterpret_p16_s8 (int8x8_t __a)
14433{
da08cb55 14434 return (poly16x4_t)__a;
d98a3884 14435}
14436
5c493d36 14437__extension__ extern __inline poly16x4_t
14438__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14439vreinterpret_p16_s16 (int16x4_t __a)
14440{
da08cb55 14441 return (poly16x4_t)__a;
d98a3884 14442}
14443
5c493d36 14444__extension__ extern __inline poly16x4_t
14445__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14446vreinterpret_p16_s32 (int32x2_t __a)
14447{
da08cb55 14448 return (poly16x4_t)__a;
d98a3884 14449}
14450
5c493d36 14451__extension__ extern __inline poly16x4_t
14452__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14453vreinterpret_p16_u8 (uint8x8_t __a)
14454{
da08cb55 14455 return (poly16x4_t)__a;
d98a3884 14456}
14457
5c493d36 14458__extension__ extern __inline poly16x4_t
14459__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14460vreinterpret_p16_u16 (uint16x4_t __a)
14461{
da08cb55 14462 return (poly16x4_t)__a;
d98a3884 14463}
14464
5c493d36 14465__extension__ extern __inline poly16x4_t
14466__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14467vreinterpret_p16_u32 (uint32x2_t __a)
14468{
da08cb55 14469 return (poly16x4_t)__a;
d98a3884 14470}
14471
682ea749 14472#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14473__extension__ extern __inline float16x4_t
14474__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14475vreinterpret_f16_p8 (poly8x8_t __a)
14476{
14477 return (float16x4_t) __a;
14478}
14479#endif
14480
14481#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14482__extension__ extern __inline float16x4_t
14483__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14484vreinterpret_f16_p16 (poly16x4_t __a)
14485{
14486 return (float16x4_t) __a;
14487}
14488#endif
14489
14490#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14491__extension__ extern __inline float16x4_t
14492__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14493vreinterpret_f16_f32 (float32x2_t __a)
14494{
14495 return (float16x4_t) __a;
14496}
14497#endif
14498
682ea749 14499#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
dcbc6813 14500#pragma GCC push_options
14501#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 14502__extension__ extern __inline float16x4_t
14503__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14504vreinterpret_f16_p64 (poly64x1_t __a)
14505{
14506 return (float16x4_t) __a;
14507}
dcbc6813 14508#pragma GCC pop_options
682ea749 14509#endif
14510
14511#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14512__extension__ extern __inline float16x4_t
14513__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14514vreinterpret_f16_s64 (int64x1_t __a)
14515{
14516 return (float16x4_t) __a;
14517}
14518#endif
14519
14520#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14521__extension__ extern __inline float16x4_t
14522__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14523vreinterpret_f16_u64 (uint64x1_t __a)
14524{
14525 return (float16x4_t) __a;
14526}
14527#endif
14528
14529#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14530__extension__ extern __inline float16x4_t
14531__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14532vreinterpret_f16_s8 (int8x8_t __a)
14533{
14534 return (float16x4_t) __a;
14535}
14536#endif
14537
14538#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14539__extension__ extern __inline float16x4_t
14540__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14541vreinterpret_f16_s16 (int16x4_t __a)
14542{
14543 return (float16x4_t) __a;
14544}
14545#endif
14546
14547#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14548__extension__ extern __inline float16x4_t
14549__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14550vreinterpret_f16_s32 (int32x2_t __a)
14551{
14552 return (float16x4_t) __a;
14553}
14554#endif
14555
14556#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14557__extension__ extern __inline float16x4_t
14558__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14559vreinterpret_f16_u8 (uint8x8_t __a)
14560{
14561 return (float16x4_t) __a;
14562}
14563#endif
14564
14565#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14566__extension__ extern __inline float16x4_t
14567__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14568vreinterpret_f16_u16 (uint16x4_t __a)
14569{
14570 return (float16x4_t) __a;
14571}
14572#endif
14573
14574#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14575__extension__ extern __inline float16x4_t
14576__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14577vreinterpret_f16_u32 (uint32x2_t __a)
14578{
14579 return (float16x4_t) __a;
14580}
14581#endif
14582
5c493d36 14583__extension__ extern __inline float32x2_t
14584__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14585vreinterpret_f32_p8 (poly8x8_t __a)
d98a3884 14586{
da08cb55 14587 return (float32x2_t)__a;
d98a3884 14588}
14589
5c493d36 14590__extension__ extern __inline float32x2_t
14591__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14592vreinterpret_f32_p16 (poly16x4_t __a)
d98a3884 14593{
da08cb55 14594 return (float32x2_t)__a;
d98a3884 14595}
14596
682ea749 14597#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14598__extension__ extern __inline float32x2_t
14599__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14600vreinterpret_f32_f16 (float16x4_t __a)
14601{
14602 return (float32x2_t) __a;
14603}
14604#endif
14605
dcbc6813 14606#pragma GCC push_options
14607#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 14608__extension__ extern __inline float32x2_t
14609__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14610vreinterpret_f32_p64 (poly64x1_t __a)
d98a3884 14611{
da08cb55 14612 return (float32x2_t)__a;
d98a3884 14613}
14614
dcbc6813 14615#pragma GCC pop_options
5c493d36 14616__extension__ extern __inline float32x2_t
14617__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14618vreinterpret_f32_s64 (int64x1_t __a)
d98a3884 14619{
da08cb55 14620 return (float32x2_t)__a;
d98a3884 14621}
14622
5c493d36 14623__extension__ extern __inline float32x2_t
14624__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14625vreinterpret_f32_u64 (uint64x1_t __a)
d98a3884 14626{
da08cb55 14627 return (float32x2_t)__a;
d98a3884 14628}
14629
5c493d36 14630__extension__ extern __inline float32x2_t
14631__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14632vreinterpret_f32_s8 (int8x8_t __a)
14633{
da08cb55 14634 return (float32x2_t)__a;
d98a3884 14635}
14636
5c493d36 14637__extension__ extern __inline float32x2_t
14638__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14639vreinterpret_f32_s16 (int16x4_t __a)
14640{
da08cb55 14641 return (float32x2_t)__a;
d98a3884 14642}
14643
5c493d36 14644__extension__ extern __inline float32x2_t
14645__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14646vreinterpret_f32_s32 (int32x2_t __a)
14647{
da08cb55 14648 return (float32x2_t)__a;
d98a3884 14649}
14650
5c493d36 14651__extension__ extern __inline float32x2_t
14652__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14653vreinterpret_f32_u8 (uint8x8_t __a)
14654{
da08cb55 14655 return (float32x2_t)__a;
d98a3884 14656}
14657
5c493d36 14658__extension__ extern __inline float32x2_t
14659__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14660vreinterpret_f32_u16 (uint16x4_t __a)
14661{
da08cb55 14662 return (float32x2_t)__a;
d98a3884 14663}
14664
5c493d36 14665__extension__ extern __inline float32x2_t
14666__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14667vreinterpret_f32_u32 (uint32x2_t __a)
14668{
da08cb55 14669 return (float32x2_t)__a;
d98a3884 14670}
14671
dcbc6813 14672#pragma GCC push_options
14673#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 14674__extension__ extern __inline poly64x1_t
14675__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14676vreinterpret_p64_p8 (poly8x8_t __a)
d98a3884 14677{
da08cb55 14678 return (poly64x1_t)__a;
d98a3884 14679}
14680
5c493d36 14681__extension__ extern __inline poly64x1_t
14682__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14683vreinterpret_p64_p16 (poly16x4_t __a)
d98a3884 14684{
da08cb55 14685 return (poly64x1_t)__a;
d98a3884 14686}
14687
682ea749 14688#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14689__extension__ extern __inline poly64x1_t
14690__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14691vreinterpret_p64_f16 (float16x4_t __a)
14692{
14693 return (poly64x1_t) __a;
14694}
14695#endif
682ea749 14696
5c493d36 14697__extension__ extern __inline poly64x1_t
14698__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14699vreinterpret_p64_f32 (float32x2_t __a)
d98a3884 14700{
da08cb55 14701 return (poly64x1_t)__a;
d98a3884 14702}
14703
5c493d36 14704__extension__ extern __inline poly64x1_t
14705__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14706vreinterpret_p64_s64 (int64x1_t __a)
d98a3884 14707{
da08cb55 14708 return (poly64x1_t)__a;
d98a3884 14709}
14710
5c493d36 14711__extension__ extern __inline poly64x1_t
14712__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14713vreinterpret_p64_u64 (uint64x1_t __a)
d98a3884 14714{
da08cb55 14715 return (poly64x1_t)__a;
d98a3884 14716}
14717
5c493d36 14718__extension__ extern __inline poly64x1_t
14719__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14720vreinterpret_p64_s8 (int8x8_t __a)
d98a3884 14721{
da08cb55 14722 return (poly64x1_t)__a;
d98a3884 14723}
14724
5c493d36 14725__extension__ extern __inline poly64x1_t
14726__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14727vreinterpret_p64_s16 (int16x4_t __a)
d98a3884 14728{
da08cb55 14729 return (poly64x1_t)__a;
d98a3884 14730}
14731
5c493d36 14732__extension__ extern __inline poly64x1_t
14733__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14734vreinterpret_p64_s32 (int32x2_t __a)
d98a3884 14735{
da08cb55 14736 return (poly64x1_t)__a;
d98a3884 14737}
14738
5c493d36 14739__extension__ extern __inline poly64x1_t
14740__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14741vreinterpret_p64_u8 (uint8x8_t __a)
d98a3884 14742{
da08cb55 14743 return (poly64x1_t)__a;
d98a3884 14744}
14745
5c493d36 14746__extension__ extern __inline poly64x1_t
14747__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14748vreinterpret_p64_u16 (uint16x4_t __a)
d98a3884 14749{
da08cb55 14750 return (poly64x1_t)__a;
d98a3884 14751}
14752
5c493d36 14753__extension__ extern __inline poly64x1_t
14754__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14755vreinterpret_p64_u32 (uint32x2_t __a)
d98a3884 14756{
da08cb55 14757 return (poly64x1_t)__a;
d98a3884 14758}
14759
dcbc6813 14760#pragma GCC pop_options
5c493d36 14761__extension__ extern __inline int64x1_t
14762__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14763vreinterpret_s64_p8 (poly8x8_t __a)
d98a3884 14764{
da08cb55 14765 return (int64x1_t)__a;
d98a3884 14766}
14767
5c493d36 14768__extension__ extern __inline int64x1_t
14769__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14770vreinterpret_s64_p16 (poly16x4_t __a)
d98a3884 14771{
da08cb55 14772 return (int64x1_t)__a;
e84fdf6e 14773}
14774
682ea749 14775#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14776__extension__ extern __inline int64x1_t
14777__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14778vreinterpret_s64_f16 (float16x4_t __a)
14779{
14780 return (int64x1_t) __a;
14781}
14782#endif
14783
5c493d36 14784__extension__ extern __inline int64x1_t
14785__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14786vreinterpret_s64_f32 (float32x2_t __a)
14787{
da08cb55 14788 return (int64x1_t)__a;
e84fdf6e 14789}
14790
dcbc6813 14791#pragma GCC push_options
14792#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 14793__extension__ extern __inline int64x1_t
14794__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14795vreinterpret_s64_p64 (poly64x1_t __a)
14796{
da08cb55 14797 return (int64x1_t)__a;
e84fdf6e 14798}
14799
dcbc6813 14800#pragma GCC pop_options
5c493d36 14801__extension__ extern __inline int64x1_t
14802__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14803vreinterpret_s64_u64 (uint64x1_t __a)
14804{
da08cb55 14805 return (int64x1_t)__a;
d98a3884 14806}
14807
5c493d36 14808__extension__ extern __inline int64x1_t
14809__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14810vreinterpret_s64_s8 (int8x8_t __a)
14811{
da08cb55 14812 return (int64x1_t)__a;
d98a3884 14813}
14814
5c493d36 14815__extension__ extern __inline int64x1_t
14816__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14817vreinterpret_s64_s16 (int16x4_t __a)
14818{
da08cb55 14819 return (int64x1_t)__a;
d98a3884 14820}
14821
5c493d36 14822__extension__ extern __inline int64x1_t
14823__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14824vreinterpret_s64_s32 (int32x2_t __a)
14825{
da08cb55 14826 return (int64x1_t)__a;
d98a3884 14827}
14828
5c493d36 14829__extension__ extern __inline int64x1_t
14830__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14831vreinterpret_s64_u8 (uint8x8_t __a)
14832{
da08cb55 14833 return (int64x1_t)__a;
d98a3884 14834}
14835
5c493d36 14836__extension__ extern __inline int64x1_t
14837__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14838vreinterpret_s64_u16 (uint16x4_t __a)
14839{
da08cb55 14840 return (int64x1_t)__a;
d98a3884 14841}
14842
5c493d36 14843__extension__ extern __inline int64x1_t
14844__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 14845vreinterpret_s64_u32 (uint32x2_t __a)
14846{
da08cb55 14847 return (int64x1_t)__a;
d98a3884 14848}
14849
5c493d36 14850__extension__ extern __inline uint64x1_t
14851__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14852vreinterpret_u64_p8 (poly8x8_t __a)
d98a3884 14853{
da08cb55 14854 return (uint64x1_t)__a;
d98a3884 14855}
14856
5c493d36 14857__extension__ extern __inline uint64x1_t
14858__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14859vreinterpret_u64_p16 (poly16x4_t __a)
d98a3884 14860{
da08cb55 14861 return (uint64x1_t)__a;
d98a3884 14862}
14863
682ea749 14864#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14865__extension__ extern __inline uint64x1_t
14866__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14867vreinterpret_u64_f16 (float16x4_t __a)
14868{
14869 return (uint64x1_t) __a;
14870}
14871#endif
14872
5c493d36 14873__extension__ extern __inline uint64x1_t
14874__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14875vreinterpret_u64_f32 (float32x2_t __a)
d98a3884 14876{
da08cb55 14877 return (uint64x1_t)__a;
d98a3884 14878}
14879
dcbc6813 14880#pragma GCC push_options
14881#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 14882__extension__ extern __inline uint64x1_t
14883__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14884vreinterpret_u64_p64 (poly64x1_t __a)
d98a3884 14885{
da08cb55 14886 return (uint64x1_t)__a;
d98a3884 14887}
14888
dcbc6813 14889#pragma GCC pop_options
5c493d36 14890__extension__ extern __inline uint64x1_t
14891__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14892vreinterpret_u64_s64 (int64x1_t __a)
d98a3884 14893{
da08cb55 14894 return (uint64x1_t)__a;
d98a3884 14895}
14896
5c493d36 14897__extension__ extern __inline uint64x1_t
14898__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14899vreinterpret_u64_s8 (int8x8_t __a)
d98a3884 14900{
da08cb55 14901 return (uint64x1_t)__a;
d98a3884 14902}
14903
5c493d36 14904__extension__ extern __inline uint64x1_t
14905__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14906vreinterpret_u64_s16 (int16x4_t __a)
d98a3884 14907{
da08cb55 14908 return (uint64x1_t)__a;
d98a3884 14909}
14910
5c493d36 14911__extension__ extern __inline uint64x1_t
14912__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14913vreinterpret_u64_s32 (int32x2_t __a)
d98a3884 14914{
da08cb55 14915 return (uint64x1_t)__a;
d98a3884 14916}
14917
5c493d36 14918__extension__ extern __inline uint64x1_t
14919__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14920vreinterpret_u64_u8 (uint8x8_t __a)
d98a3884 14921{
da08cb55 14922 return (uint64x1_t)__a;
d98a3884 14923}
14924
5c493d36 14925__extension__ extern __inline uint64x1_t
14926__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14927vreinterpret_u64_u16 (uint16x4_t __a)
14928{
da08cb55 14929 return (uint64x1_t)__a;
e84fdf6e 14930}
14931
5c493d36 14932__extension__ extern __inline uint64x1_t
14933__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14934vreinterpret_u64_u32 (uint32x2_t __a)
14935{
da08cb55 14936 return (uint64x1_t)__a;
e84fdf6e 14937}
14938
5c493d36 14939__extension__ extern __inline int8x8_t
14940__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14941vreinterpret_s8_p8 (poly8x8_t __a)
14942{
da08cb55 14943 return (int8x8_t)__a;
e84fdf6e 14944}
14945
5c493d36 14946__extension__ extern __inline int8x8_t
14947__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14948vreinterpret_s8_p16 (poly16x4_t __a)
14949{
da08cb55 14950 return (int8x8_t)__a;
e84fdf6e 14951}
14952
682ea749 14953#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 14954__extension__ extern __inline int8x8_t
14955__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 14956vreinterpret_s8_f16 (float16x4_t __a)
14957{
14958 return (int8x8_t) __a;
14959}
14960#endif
14961
5c493d36 14962__extension__ extern __inline int8x8_t
14963__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14964vreinterpret_s8_f32 (float32x2_t __a)
14965{
da08cb55 14966 return (int8x8_t)__a;
e84fdf6e 14967}
14968
dcbc6813 14969#pragma GCC push_options
14970#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 14971__extension__ extern __inline int8x8_t
14972__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14973vreinterpret_s8_p64 (poly64x1_t __a)
14974{
da08cb55 14975 return (int8x8_t)__a;
e84fdf6e 14976}
14977
dcbc6813 14978#pragma GCC pop_options
5c493d36 14979__extension__ extern __inline int8x8_t
14980__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14981vreinterpret_s8_s64 (int64x1_t __a)
14982{
da08cb55 14983 return (int8x8_t)__a;
e84fdf6e 14984}
14985
5c493d36 14986__extension__ extern __inline int8x8_t
14987__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14988vreinterpret_s8_u64 (uint64x1_t __a)
14989{
da08cb55 14990 return (int8x8_t)__a;
e84fdf6e 14991}
14992
5c493d36 14993__extension__ extern __inline int8x8_t
14994__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 14995vreinterpret_s8_s16 (int16x4_t __a)
14996{
da08cb55 14997 return (int8x8_t)__a;
e84fdf6e 14998}
14999
5c493d36 15000__extension__ extern __inline int8x8_t
15001__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15002vreinterpret_s8_s32 (int32x2_t __a)
15003{
da08cb55 15004 return (int8x8_t)__a;
e84fdf6e 15005}
15006
5c493d36 15007__extension__ extern __inline int8x8_t
15008__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15009vreinterpret_s8_u8 (uint8x8_t __a)
15010{
da08cb55 15011 return (int8x8_t)__a;
e84fdf6e 15012}
15013
5c493d36 15014__extension__ extern __inline int8x8_t
15015__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15016vreinterpret_s8_u16 (uint16x4_t __a)
15017{
da08cb55 15018 return (int8x8_t)__a;
e84fdf6e 15019}
15020
5c493d36 15021__extension__ extern __inline int8x8_t
15022__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15023vreinterpret_s8_u32 (uint32x2_t __a)
15024{
da08cb55 15025 return (int8x8_t)__a;
e84fdf6e 15026}
15027
5c493d36 15028__extension__ extern __inline int16x4_t
15029__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15030vreinterpret_s16_p8 (poly8x8_t __a)
15031{
da08cb55 15032 return (int16x4_t)__a;
e84fdf6e 15033}
15034
5c493d36 15035__extension__ extern __inline int16x4_t
15036__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15037vreinterpret_s16_p16 (poly16x4_t __a)
15038{
da08cb55 15039 return (int16x4_t)__a;
e84fdf6e 15040}
15041
682ea749 15042#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15043__extension__ extern __inline int16x4_t
15044__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 15045vreinterpret_s16_f16 (float16x4_t __a)
15046{
15047 return (int16x4_t) __a;
15048}
15049#endif
15050
5c493d36 15051__extension__ extern __inline int16x4_t
15052__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15053vreinterpret_s16_f32 (float32x2_t __a)
15054{
da08cb55 15055 return (int16x4_t)__a;
e84fdf6e 15056}
15057
dcbc6813 15058#pragma GCC push_options
15059#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 15060__extension__ extern __inline int16x4_t
15061__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15062vreinterpret_s16_p64 (poly64x1_t __a)
15063{
da08cb55 15064 return (int16x4_t)__a;
e84fdf6e 15065}
15066
dcbc6813 15067#pragma GCC pop_options
5c493d36 15068__extension__ extern __inline int16x4_t
15069__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15070vreinterpret_s16_s64 (int64x1_t __a)
15071{
da08cb55 15072 return (int16x4_t)__a;
e84fdf6e 15073}
15074
5c493d36 15075__extension__ extern __inline int16x4_t
15076__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15077vreinterpret_s16_u64 (uint64x1_t __a)
15078{
da08cb55 15079 return (int16x4_t)__a;
e84fdf6e 15080}
15081
5c493d36 15082__extension__ extern __inline int16x4_t
15083__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15084vreinterpret_s16_s8 (int8x8_t __a)
15085{
da08cb55 15086 return (int16x4_t)__a;
e84fdf6e 15087}
15088
5c493d36 15089__extension__ extern __inline int16x4_t
15090__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15091vreinterpret_s16_s32 (int32x2_t __a)
15092{
da08cb55 15093 return (int16x4_t)__a;
e84fdf6e 15094}
15095
5c493d36 15096__extension__ extern __inline int16x4_t
15097__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15098vreinterpret_s16_u8 (uint8x8_t __a)
15099{
da08cb55 15100 return (int16x4_t)__a;
e84fdf6e 15101}
15102
5c493d36 15103__extension__ extern __inline int16x4_t
15104__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15105vreinterpret_s16_u16 (uint16x4_t __a)
15106{
da08cb55 15107 return (int16x4_t)__a;
e84fdf6e 15108}
15109
5c493d36 15110__extension__ extern __inline int16x4_t
15111__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15112vreinterpret_s16_u32 (uint32x2_t __a)
15113{
da08cb55 15114 return (int16x4_t)__a;
e84fdf6e 15115}
15116
5c493d36 15117__extension__ extern __inline int32x2_t
15118__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15119vreinterpret_s32_p8 (poly8x8_t __a)
15120{
da08cb55 15121 return (int32x2_t)__a;
e84fdf6e 15122}
15123
5c493d36 15124__extension__ extern __inline int32x2_t
15125__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15126vreinterpret_s32_p16 (poly16x4_t __a)
15127{
da08cb55 15128 return (int32x2_t)__a;
e84fdf6e 15129}
15130
682ea749 15131#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15132__extension__ extern __inline int32x2_t
15133__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 15134vreinterpret_s32_f16 (float16x4_t __a)
15135{
15136 return (int32x2_t) __a;
15137}
15138#endif
15139
5c493d36 15140__extension__ extern __inline int32x2_t
15141__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15142vreinterpret_s32_f32 (float32x2_t __a)
15143{
da08cb55 15144 return (int32x2_t)__a;
e84fdf6e 15145}
15146
dcbc6813 15147#pragma GCC push_options
15148#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 15149__extension__ extern __inline int32x2_t
15150__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15151vreinterpret_s32_p64 (poly64x1_t __a)
15152{
da08cb55 15153 return (int32x2_t)__a;
e84fdf6e 15154}
15155
dcbc6813 15156#pragma GCC pop_options
5c493d36 15157__extension__ extern __inline int32x2_t
15158__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15159vreinterpret_s32_s64 (int64x1_t __a)
15160{
da08cb55 15161 return (int32x2_t)__a;
e84fdf6e 15162}
15163
5c493d36 15164__extension__ extern __inline int32x2_t
15165__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15166vreinterpret_s32_u64 (uint64x1_t __a)
15167{
da08cb55 15168 return (int32x2_t)__a;
e84fdf6e 15169}
15170
5c493d36 15171__extension__ extern __inline int32x2_t
15172__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15173vreinterpret_s32_s8 (int8x8_t __a)
15174{
da08cb55 15175 return (int32x2_t)__a;
e84fdf6e 15176}
15177
5c493d36 15178__extension__ extern __inline int32x2_t
15179__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15180vreinterpret_s32_s16 (int16x4_t __a)
15181{
da08cb55 15182 return (int32x2_t)__a;
e84fdf6e 15183}
15184
5c493d36 15185__extension__ extern __inline int32x2_t
15186__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15187vreinterpret_s32_u8 (uint8x8_t __a)
15188{
da08cb55 15189 return (int32x2_t)__a;
e84fdf6e 15190}
15191
5c493d36 15192__extension__ extern __inline int32x2_t
15193__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15194vreinterpret_s32_u16 (uint16x4_t __a)
15195{
da08cb55 15196 return (int32x2_t)__a;
e84fdf6e 15197}
15198
5c493d36 15199__extension__ extern __inline int32x2_t
15200__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15201vreinterpret_s32_u32 (uint32x2_t __a)
15202{
da08cb55 15203 return (int32x2_t)__a;
e84fdf6e 15204}
15205
5c493d36 15206__extension__ extern __inline uint8x8_t
15207__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15208vreinterpret_u8_p8 (poly8x8_t __a)
15209{
da08cb55 15210 return (uint8x8_t)__a;
e84fdf6e 15211}
15212
5c493d36 15213__extension__ extern __inline uint8x8_t
15214__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15215vreinterpret_u8_p16 (poly16x4_t __a)
15216{
da08cb55 15217 return (uint8x8_t)__a;
e84fdf6e 15218}
15219
682ea749 15220#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15221__extension__ extern __inline uint8x8_t
15222__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 15223vreinterpret_u8_f16 (float16x4_t __a)
15224{
15225 return (uint8x8_t) __a;
15226}
15227#endif
15228
5c493d36 15229__extension__ extern __inline uint8x8_t
15230__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15231vreinterpret_u8_f32 (float32x2_t __a)
15232{
da08cb55 15233 return (uint8x8_t)__a;
e84fdf6e 15234}
15235
dcbc6813 15236#pragma GCC push_options
15237#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 15238__extension__ extern __inline uint8x8_t
15239__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15240vreinterpret_u8_p64 (poly64x1_t __a)
15241{
da08cb55 15242 return (uint8x8_t)__a;
e84fdf6e 15243}
15244
dcbc6813 15245#pragma GCC pop_options
5c493d36 15246__extension__ extern __inline uint8x8_t
15247__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15248vreinterpret_u8_s64 (int64x1_t __a)
15249{
da08cb55 15250 return (uint8x8_t)__a;
e84fdf6e 15251}
15252
5c493d36 15253__extension__ extern __inline uint8x8_t
15254__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15255vreinterpret_u8_u64 (uint64x1_t __a)
15256{
da08cb55 15257 return (uint8x8_t)__a;
e84fdf6e 15258}
15259
5c493d36 15260__extension__ extern __inline uint8x8_t
15261__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15262vreinterpret_u8_s8 (int8x8_t __a)
15263{
da08cb55 15264 return (uint8x8_t)__a;
e84fdf6e 15265}
15266
5c493d36 15267__extension__ extern __inline uint8x8_t
15268__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15269vreinterpret_u8_s16 (int16x4_t __a)
15270{
da08cb55 15271 return (uint8x8_t)__a;
e84fdf6e 15272}
15273
5c493d36 15274__extension__ extern __inline uint8x8_t
15275__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15276vreinterpret_u8_s32 (int32x2_t __a)
15277{
da08cb55 15278 return (uint8x8_t)__a;
e84fdf6e 15279}
15280
5c493d36 15281__extension__ extern __inline uint8x8_t
15282__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15283vreinterpret_u8_u16 (uint16x4_t __a)
15284{
da08cb55 15285 return (uint8x8_t)__a;
e84fdf6e 15286}
15287
5c493d36 15288__extension__ extern __inline uint8x8_t
15289__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15290vreinterpret_u8_u32 (uint32x2_t __a)
15291{
da08cb55 15292 return (uint8x8_t)__a;
e84fdf6e 15293}
15294
5c493d36 15295__extension__ extern __inline uint16x4_t
15296__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15297vreinterpret_u16_p8 (poly8x8_t __a)
15298{
da08cb55 15299 return (uint16x4_t)__a;
e84fdf6e 15300}
15301
5c493d36 15302__extension__ extern __inline uint16x4_t
15303__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15304vreinterpret_u16_p16 (poly16x4_t __a)
15305{
da08cb55 15306 return (uint16x4_t)__a;
e84fdf6e 15307}
15308
682ea749 15309#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15310__extension__ extern __inline uint16x4_t
15311__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 15312vreinterpret_u16_f16 (float16x4_t __a)
15313{
15314 return (uint16x4_t) __a;
15315}
15316#endif
15317
5c493d36 15318__extension__ extern __inline uint16x4_t
15319__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15320vreinterpret_u16_f32 (float32x2_t __a)
15321{
da08cb55 15322 return (uint16x4_t)__a;
e84fdf6e 15323}
15324
dcbc6813 15325#pragma GCC push_options
15326#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 15327__extension__ extern __inline uint16x4_t
15328__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15329vreinterpret_u16_p64 (poly64x1_t __a)
15330{
da08cb55 15331 return (uint16x4_t)__a;
e84fdf6e 15332}
15333
dcbc6813 15334#pragma GCC pop_options
5c493d36 15335__extension__ extern __inline uint16x4_t
15336__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15337vreinterpret_u16_s64 (int64x1_t __a)
15338{
da08cb55 15339 return (uint16x4_t)__a;
e84fdf6e 15340}
15341
5c493d36 15342__extension__ extern __inline uint16x4_t
15343__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15344vreinterpret_u16_u64 (uint64x1_t __a)
15345{
da08cb55 15346 return (uint16x4_t)__a;
e84fdf6e 15347}
15348
5c493d36 15349__extension__ extern __inline uint16x4_t
15350__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15351vreinterpret_u16_s8 (int8x8_t __a)
15352{
da08cb55 15353 return (uint16x4_t)__a;
e84fdf6e 15354}
15355
5c493d36 15356__extension__ extern __inline uint16x4_t
15357__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15358vreinterpret_u16_s16 (int16x4_t __a)
15359{
da08cb55 15360 return (uint16x4_t)__a;
e84fdf6e 15361}
15362
5c493d36 15363__extension__ extern __inline uint16x4_t
15364__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15365vreinterpret_u16_s32 (int32x2_t __a)
15366{
da08cb55 15367 return (uint16x4_t)__a;
e84fdf6e 15368}
15369
5c493d36 15370__extension__ extern __inline uint16x4_t
15371__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15372vreinterpret_u16_u8 (uint8x8_t __a)
15373{
da08cb55 15374 return (uint16x4_t)__a;
e84fdf6e 15375}
15376
5c493d36 15377__extension__ extern __inline uint16x4_t
15378__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15379vreinterpret_u16_u32 (uint32x2_t __a)
15380{
da08cb55 15381 return (uint16x4_t)__a;
e84fdf6e 15382}
15383
5c493d36 15384__extension__ extern __inline uint32x2_t
15385__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15386vreinterpret_u32_p8 (poly8x8_t __a)
15387{
da08cb55 15388 return (uint32x2_t)__a;
e84fdf6e 15389}
15390
5c493d36 15391__extension__ extern __inline uint32x2_t
15392__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15393vreinterpret_u32_p16 (poly16x4_t __a)
15394{
da08cb55 15395 return (uint32x2_t)__a;
e84fdf6e 15396}
15397
682ea749 15398#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15399__extension__ extern __inline uint32x2_t
15400__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
682ea749 15401vreinterpret_u32_f16 (float16x4_t __a)
15402{
15403 return (uint32x2_t) __a;
15404}
15405#endif
15406
5c493d36 15407__extension__ extern __inline uint32x2_t
15408__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15409vreinterpret_u32_f32 (float32x2_t __a)
15410{
da08cb55 15411 return (uint32x2_t)__a;
e84fdf6e 15412}
15413
dcbc6813 15414#pragma GCC push_options
15415#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 15416__extension__ extern __inline uint32x2_t
15417__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15418vreinterpret_u32_p64 (poly64x1_t __a)
15419{
da08cb55 15420 return (uint32x2_t)__a;
e84fdf6e 15421}
15422
dcbc6813 15423#pragma GCC pop_options
5c493d36 15424__extension__ extern __inline uint32x2_t
15425__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15426vreinterpret_u32_s64 (int64x1_t __a)
15427{
da08cb55 15428 return (uint32x2_t)__a;
e84fdf6e 15429}
15430
5c493d36 15431__extension__ extern __inline uint32x2_t
15432__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15433vreinterpret_u32_u64 (uint64x1_t __a)
15434{
da08cb55 15435 return (uint32x2_t)__a;
e84fdf6e 15436}
15437
5c493d36 15438__extension__ extern __inline uint32x2_t
15439__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15440vreinterpret_u32_s8 (int8x8_t __a)
15441{
da08cb55 15442 return (uint32x2_t)__a;
e84fdf6e 15443}
15444
5c493d36 15445__extension__ extern __inline uint32x2_t
15446__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15447vreinterpret_u32_s16 (int16x4_t __a)
15448{
da08cb55 15449 return (uint32x2_t)__a;
e84fdf6e 15450}
15451
5c493d36 15452__extension__ extern __inline uint32x2_t
15453__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15454vreinterpret_u32_s32 (int32x2_t __a)
15455{
da08cb55 15456 return (uint32x2_t)__a;
e84fdf6e 15457}
15458
5c493d36 15459__extension__ extern __inline uint32x2_t
15460__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15461vreinterpret_u32_u8 (uint8x8_t __a)
15462{
da08cb55 15463 return (uint32x2_t)__a;
e84fdf6e 15464}
15465
5c493d36 15466__extension__ extern __inline uint32x2_t
15467__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15468vreinterpret_u32_u16 (uint16x4_t __a)
15469{
da08cb55 15470 return (uint32x2_t)__a;
e84fdf6e 15471}
15472
5c493d36 15473__extension__ extern __inline poly8x16_t
15474__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15475vreinterpretq_p8_p16 (poly16x8_t __a)
15476{
da08cb55 15477 return (poly8x16_t)__a;
e84fdf6e 15478}
15479
114e7e56 15480#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15481__extension__ extern __inline poly8x16_t
15482__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15483vreinterpretq_p8_f16 (float16x8_t __a)
15484{
15485 return (poly8x16_t) __a;
15486}
15487#endif
15488
5c493d36 15489__extension__ extern __inline poly8x16_t
15490__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15491vreinterpretq_p8_f32 (float32x4_t __a)
15492{
da08cb55 15493 return (poly8x16_t)__a;
e84fdf6e 15494}
15495
dcbc6813 15496#pragma GCC push_options
15497#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 15498__extension__ extern __inline poly8x16_t
15499__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15500vreinterpretq_p8_p64 (poly64x2_t __a)
15501{
da08cb55 15502 return (poly8x16_t)__a;
e84fdf6e 15503}
15504
dcbc6813 15505
5c493d36 15506__extension__ extern __inline poly8x16_t
15507__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15508vreinterpretq_p8_p128 (poly128_t __a)
15509{
da08cb55 15510 return (poly8x16_t)__a;
e84fdf6e 15511}
15512
dcbc6813 15513#pragma GCC pop_options
5c493d36 15514__extension__ extern __inline poly8x16_t
15515__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15516vreinterpretq_p8_s64 (int64x2_t __a)
15517{
da08cb55 15518 return (poly8x16_t)__a;
e84fdf6e 15519}
15520
5c493d36 15521__extension__ extern __inline poly8x16_t
15522__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15523vreinterpretq_p8_u64 (uint64x2_t __a)
15524{
da08cb55 15525 return (poly8x16_t)__a;
e84fdf6e 15526}
15527
5c493d36 15528__extension__ extern __inline poly8x16_t
15529__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15530vreinterpretq_p8_s8 (int8x16_t __a)
15531{
da08cb55 15532 return (poly8x16_t)__a;
e84fdf6e 15533}
15534
5c493d36 15535__extension__ extern __inline poly8x16_t
15536__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15537vreinterpretq_p8_s16 (int16x8_t __a)
15538{
da08cb55 15539 return (poly8x16_t)__a;
e84fdf6e 15540}
15541
5c493d36 15542__extension__ extern __inline poly8x16_t
15543__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15544vreinterpretq_p8_s32 (int32x4_t __a)
15545{
da08cb55 15546 return (poly8x16_t)__a;
e84fdf6e 15547}
15548
5c493d36 15549__extension__ extern __inline poly8x16_t
15550__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15551vreinterpretq_p8_u8 (uint8x16_t __a)
15552{
da08cb55 15553 return (poly8x16_t)__a;
e84fdf6e 15554}
15555
5c493d36 15556__extension__ extern __inline poly8x16_t
15557__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15558vreinterpretq_p8_u16 (uint16x8_t __a)
15559{
da08cb55 15560 return (poly8x16_t)__a;
e84fdf6e 15561}
15562
5c493d36 15563__extension__ extern __inline poly8x16_t
15564__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15565vreinterpretq_p8_u32 (uint32x4_t __a)
15566{
da08cb55 15567 return (poly8x16_t)__a;
e84fdf6e 15568}
15569
5c493d36 15570__extension__ extern __inline poly16x8_t
15571__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15572vreinterpretq_p16_p8 (poly8x16_t __a)
15573{
da08cb55 15574 return (poly16x8_t)__a;
e84fdf6e 15575}
15576
114e7e56 15577#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15578__extension__ extern __inline poly16x8_t
15579__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15580vreinterpretq_p16_f16 (float16x8_t __a)
15581{
15582 return (poly16x8_t) __a;
15583}
15584#endif
15585
5c493d36 15586__extension__ extern __inline poly16x8_t
15587__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15588vreinterpretq_p16_f32 (float32x4_t __a)
15589{
da08cb55 15590 return (poly16x8_t)__a;
e84fdf6e 15591}
15592
dcbc6813 15593#pragma GCC push_options
15594#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 15595__extension__ extern __inline poly16x8_t
15596__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15597vreinterpretq_p16_p64 (poly64x2_t __a)
15598{
da08cb55 15599 return (poly16x8_t)__a;
e84fdf6e 15600}
15601
5c493d36 15602__extension__ extern __inline poly16x8_t
15603__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15604vreinterpretq_p16_p128 (poly128_t __a)
15605{
da08cb55 15606 return (poly16x8_t)__a;
e84fdf6e 15607}
15608
dcbc6813 15609#pragma GCC pop_options
5c493d36 15610__extension__ extern __inline poly16x8_t
15611__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15612vreinterpretq_p16_s64 (int64x2_t __a)
15613{
da08cb55 15614 return (poly16x8_t)__a;
e84fdf6e 15615}
15616
5c493d36 15617__extension__ extern __inline poly16x8_t
15618__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15619vreinterpretq_p16_u64 (uint64x2_t __a)
15620{
da08cb55 15621 return (poly16x8_t)__a;
e84fdf6e 15622}
15623
5c493d36 15624__extension__ extern __inline poly16x8_t
15625__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15626vreinterpretq_p16_s8 (int8x16_t __a)
15627{
da08cb55 15628 return (poly16x8_t)__a;
e84fdf6e 15629}
15630
5c493d36 15631__extension__ extern __inline poly16x8_t
15632__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15633vreinterpretq_p16_s16 (int16x8_t __a)
15634{
da08cb55 15635 return (poly16x8_t)__a;
e84fdf6e 15636}
15637
5c493d36 15638__extension__ extern __inline poly16x8_t
15639__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15640vreinterpretq_p16_s32 (int32x4_t __a)
d98a3884 15641{
da08cb55 15642 return (poly16x8_t)__a;
d98a3884 15643}
15644
5c493d36 15645__extension__ extern __inline poly16x8_t
15646__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15647vreinterpretq_p16_u8 (uint8x16_t __a)
d98a3884 15648{
da08cb55 15649 return (poly16x8_t)__a;
d98a3884 15650}
15651
5c493d36 15652__extension__ extern __inline poly16x8_t
15653__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15654vreinterpretq_p16_u16 (uint16x8_t __a)
d98a3884 15655{
da08cb55 15656 return (poly16x8_t)__a;
d98a3884 15657}
15658
5c493d36 15659__extension__ extern __inline poly16x8_t
15660__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15661vreinterpretq_p16_u32 (uint32x4_t __a)
d98a3884 15662{
da08cb55 15663 return (poly16x8_t)__a;
d98a3884 15664}
15665
114e7e56 15666#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15667__extension__ extern __inline float16x8_t
15668__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15669vreinterpretq_f16_p8 (poly8x16_t __a)
15670{
15671 return (float16x8_t) __a;
15672}
15673#endif
15674
15675#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15676__extension__ extern __inline float16x8_t
15677__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15678vreinterpretq_f16_p16 (poly16x8_t __a)
15679{
15680 return (float16x8_t) __a;
15681}
15682#endif
15683
15684#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15685__extension__ extern __inline float16x8_t
15686__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15687vreinterpretq_f16_f32 (float32x4_t __a)
15688{
15689 return (float16x8_t) __a;
15690}
15691#endif
15692
dcbc6813 15693#pragma GCC push_options
15694#pragma GCC target ("fpu=crypto-neon-fp-armv8")
15695
114e7e56 15696#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15697__extension__ extern __inline float16x8_t
15698__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15699vreinterpretq_f16_p64 (poly64x2_t __a)
15700{
15701 return (float16x8_t) __a;
15702}
15703#endif
114e7e56 15704
15705#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15706__extension__ extern __inline float16x8_t
15707__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15708vreinterpretq_f16_p128 (poly128_t __a)
15709{
15710 return (float16x8_t) __a;
15711}
15712#endif
dcbc6813 15713
15714#pragma GCC pop_options
114e7e56 15715
15716#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15717__extension__ extern __inline float16x8_t
15718__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15719vreinterpretq_f16_s64 (int64x2_t __a)
15720{
15721 return (float16x8_t) __a;
15722}
15723#endif
15724
15725#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15726__extension__ extern __inline float16x8_t
15727__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15728vreinterpretq_f16_u64 (uint64x2_t __a)
15729{
15730 return (float16x8_t) __a;
15731}
15732#endif
15733
15734#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15735__extension__ extern __inline float16x8_t
15736__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15737vreinterpretq_f16_s8 (int8x16_t __a)
15738{
15739 return (float16x8_t) __a;
15740}
15741#endif
15742
15743#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15744__extension__ extern __inline float16x8_t
15745__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15746vreinterpretq_f16_s16 (int16x8_t __a)
15747{
15748 return (float16x8_t) __a;
15749}
15750#endif
15751
15752#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15753__extension__ extern __inline float16x8_t
15754__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15755vreinterpretq_f16_s32 (int32x4_t __a)
15756{
15757 return (float16x8_t) __a;
15758}
15759#endif
15760
15761#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15762__extension__ extern __inline float16x8_t
15763__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15764vreinterpretq_f16_u8 (uint8x16_t __a)
15765{
15766 return (float16x8_t) __a;
15767}
15768#endif
15769
15770#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15771__extension__ extern __inline float16x8_t
15772__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15773vreinterpretq_f16_u16 (uint16x8_t __a)
15774{
15775 return (float16x8_t) __a;
15776}
15777#endif
15778
15779#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15780__extension__ extern __inline float16x8_t
15781__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15782vreinterpretq_f16_u32 (uint32x4_t __a)
15783{
15784 return (float16x8_t) __a;
15785}
15786#endif
15787
5c493d36 15788__extension__ extern __inline float32x4_t
15789__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15790vreinterpretq_f32_p8 (poly8x16_t __a)
d98a3884 15791{
da08cb55 15792 return (float32x4_t)__a;
d98a3884 15793}
15794
5c493d36 15795__extension__ extern __inline float32x4_t
15796__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15797vreinterpretq_f32_p16 (poly16x8_t __a)
d98a3884 15798{
da08cb55 15799 return (float32x4_t)__a;
d98a3884 15800}
15801
114e7e56 15802#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15803__extension__ extern __inline float32x4_t
15804__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15805vreinterpretq_f32_f16 (float16x8_t __a)
15806{
15807 return (float32x4_t) __a;
15808}
15809#endif
15810
dcbc6813 15811#pragma GCC push_options
15812#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 15813__extension__ extern __inline float32x4_t
15814__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15815vreinterpretq_f32_p64 (poly64x2_t __a)
d98a3884 15816{
da08cb55 15817 return (float32x4_t)__a;
d98a3884 15818}
15819
5c493d36 15820__extension__ extern __inline float32x4_t
15821__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15822vreinterpretq_f32_p128 (poly128_t __a)
d98a3884 15823{
da08cb55 15824 return (float32x4_t)__a;
d98a3884 15825}
15826
dcbc6813 15827#pragma GCC pop_options
5c493d36 15828__extension__ extern __inline float32x4_t
15829__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15830vreinterpretq_f32_s64 (int64x2_t __a)
d98a3884 15831{
da08cb55 15832 return (float32x4_t)__a;
d98a3884 15833}
15834
5c493d36 15835__extension__ extern __inline float32x4_t
15836__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15837vreinterpretq_f32_u64 (uint64x2_t __a)
d98a3884 15838{
da08cb55 15839 return (float32x4_t)__a;
d98a3884 15840}
15841
5c493d36 15842__extension__ extern __inline float32x4_t
15843__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15844vreinterpretq_f32_s8 (int8x16_t __a)
d98a3884 15845{
da08cb55 15846 return (float32x4_t)__a;
d98a3884 15847}
15848
5c493d36 15849__extension__ extern __inline float32x4_t
15850__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15851vreinterpretq_f32_s16 (int16x8_t __a)
d98a3884 15852{
da08cb55 15853 return (float32x4_t)__a;
d98a3884 15854}
15855
5c493d36 15856__extension__ extern __inline float32x4_t
15857__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15858vreinterpretq_f32_s32 (int32x4_t __a)
d98a3884 15859{
da08cb55 15860 return (float32x4_t)__a;
d98a3884 15861}
15862
5c493d36 15863__extension__ extern __inline float32x4_t
15864__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15865vreinterpretq_f32_u8 (uint8x16_t __a)
d98a3884 15866{
da08cb55 15867 return (float32x4_t)__a;
d98a3884 15868}
15869
5c493d36 15870__extension__ extern __inline float32x4_t
15871__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15872vreinterpretq_f32_u16 (uint16x8_t __a)
d98a3884 15873{
da08cb55 15874 return (float32x4_t)__a;
d98a3884 15875}
15876
5c493d36 15877__extension__ extern __inline float32x4_t
15878__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15879vreinterpretq_f32_u32 (uint32x4_t __a)
d98a3884 15880{
da08cb55 15881 return (float32x4_t)__a;
d98a3884 15882}
15883
dcbc6813 15884#pragma GCC push_options
15885#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 15886__extension__ extern __inline poly64x2_t
15887__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15888vreinterpretq_p64_p8 (poly8x16_t __a)
d98a3884 15889{
da08cb55 15890 return (poly64x2_t)__a;
d98a3884 15891}
15892
5c493d36 15893__extension__ extern __inline poly64x2_t
15894__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15895vreinterpretq_p64_p16 (poly16x8_t __a)
d98a3884 15896{
da08cb55 15897 return (poly64x2_t)__a;
d98a3884 15898}
15899
114e7e56 15900#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15901__extension__ extern __inline poly64x2_t
15902__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15903vreinterpretq_p64_f16 (float16x8_t __a)
15904{
15905 return (poly64x2_t) __a;
15906}
15907#endif
114e7e56 15908
5c493d36 15909__extension__ extern __inline poly64x2_t
15910__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15911vreinterpretq_p64_f32 (float32x4_t __a)
d98a3884 15912{
da08cb55 15913 return (poly64x2_t)__a;
d98a3884 15914}
15915
5c493d36 15916__extension__ extern __inline poly64x2_t
15917__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15918vreinterpretq_p64_p128 (poly128_t __a)
d98a3884 15919{
da08cb55 15920 return (poly64x2_t)__a;
d98a3884 15921}
15922
5c493d36 15923__extension__ extern __inline poly64x2_t
15924__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15925vreinterpretq_p64_s64 (int64x2_t __a)
d98a3884 15926{
da08cb55 15927 return (poly64x2_t)__a;
d98a3884 15928}
15929
5c493d36 15930__extension__ extern __inline poly64x2_t
15931__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15932vreinterpretq_p64_u64 (uint64x2_t __a)
d98a3884 15933{
da08cb55 15934 return (poly64x2_t)__a;
d98a3884 15935}
15936
5c493d36 15937__extension__ extern __inline poly64x2_t
15938__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15939vreinterpretq_p64_s8 (int8x16_t __a)
d98a3884 15940{
da08cb55 15941 return (poly64x2_t)__a;
d98a3884 15942}
15943
5c493d36 15944__extension__ extern __inline poly64x2_t
15945__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15946vreinterpretq_p64_s16 (int16x8_t __a)
d98a3884 15947{
da08cb55 15948 return (poly64x2_t)__a;
d98a3884 15949}
15950
5c493d36 15951__extension__ extern __inline poly64x2_t
15952__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15953vreinterpretq_p64_s32 (int32x4_t __a)
d98a3884 15954{
da08cb55 15955 return (poly64x2_t)__a;
d98a3884 15956}
15957
5c493d36 15958__extension__ extern __inline poly64x2_t
15959__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15960vreinterpretq_p64_u8 (uint8x16_t __a)
d98a3884 15961{
da08cb55 15962 return (poly64x2_t)__a;
d98a3884 15963}
15964
5c493d36 15965__extension__ extern __inline poly64x2_t
15966__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15967vreinterpretq_p64_u16 (uint16x8_t __a)
d98a3884 15968{
da08cb55 15969 return (poly64x2_t)__a;
d98a3884 15970}
15971
5c493d36 15972__extension__ extern __inline poly64x2_t
15973__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15974vreinterpretq_p64_u32 (uint32x4_t __a)
d98a3884 15975{
da08cb55 15976 return (poly64x2_t)__a;
d98a3884 15977}
15978
5c493d36 15979__extension__ extern __inline poly128_t
15980__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15981vreinterpretq_p128_p8 (poly8x16_t __a)
d98a3884 15982{
da08cb55 15983 return (poly128_t)__a;
d98a3884 15984}
15985
5c493d36 15986__extension__ extern __inline poly128_t
15987__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 15988vreinterpretq_p128_p16 (poly16x8_t __a)
d98a3884 15989{
da08cb55 15990 return (poly128_t)__a;
d98a3884 15991}
15992
114e7e56 15993#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 15994__extension__ extern __inline poly128_t
15995__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 15996vreinterpretq_p128_f16 (float16x8_t __a)
15997{
15998 return (poly128_t) __a;
15999}
16000#endif
114e7e56 16001
5c493d36 16002__extension__ extern __inline poly128_t
16003__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16004vreinterpretq_p128_f32 (float32x4_t __a)
d98a3884 16005{
da08cb55 16006 return (poly128_t)__a;
d98a3884 16007}
16008
5c493d36 16009__extension__ extern __inline poly128_t
16010__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16011vreinterpretq_p128_p64 (poly64x2_t __a)
d98a3884 16012{
da08cb55 16013 return (poly128_t)__a;
d98a3884 16014}
16015
5c493d36 16016__extension__ extern __inline poly128_t
16017__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16018vreinterpretq_p128_s64 (int64x2_t __a)
d98a3884 16019{
da08cb55 16020 return (poly128_t)__a;
d98a3884 16021}
16022
5c493d36 16023__extension__ extern __inline poly128_t
16024__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16025vreinterpretq_p128_u64 (uint64x2_t __a)
d98a3884 16026{
da08cb55 16027 return (poly128_t)__a;
d98a3884 16028}
16029
5c493d36 16030__extension__ extern __inline poly128_t
16031__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16032vreinterpretq_p128_s8 (int8x16_t __a)
d98a3884 16033{
da08cb55 16034 return (poly128_t)__a;
d98a3884 16035}
16036
5c493d36 16037__extension__ extern __inline poly128_t
16038__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16039vreinterpretq_p128_s16 (int16x8_t __a)
d98a3884 16040{
da08cb55 16041 return (poly128_t)__a;
d98a3884 16042}
16043
5c493d36 16044__extension__ extern __inline poly128_t
16045__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16046vreinterpretq_p128_s32 (int32x4_t __a)
d98a3884 16047{
da08cb55 16048 return (poly128_t)__a;
d98a3884 16049}
16050
5c493d36 16051__extension__ extern __inline poly128_t
16052__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16053vreinterpretq_p128_u8 (uint8x16_t __a)
d98a3884 16054{
da08cb55 16055 return (poly128_t)__a;
d98a3884 16056}
16057
5c493d36 16058__extension__ extern __inline poly128_t
16059__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16060vreinterpretq_p128_u16 (uint16x8_t __a)
d98a3884 16061{
da08cb55 16062 return (poly128_t)__a;
d98a3884 16063}
16064
5c493d36 16065__extension__ extern __inline poly128_t
16066__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16067vreinterpretq_p128_u32 (uint32x4_t __a)
d98a3884 16068{
da08cb55 16069 return (poly128_t)__a;
d98a3884 16070}
16071
dcbc6813 16072#pragma GCC pop_options
5c493d36 16073__extension__ extern __inline int64x2_t
16074__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16075vreinterpretq_s64_p8 (poly8x16_t __a)
d98a3884 16076{
da08cb55 16077 return (int64x2_t)__a;
d98a3884 16078}
16079
5c493d36 16080__extension__ extern __inline int64x2_t
16081__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16082vreinterpretq_s64_p16 (poly16x8_t __a)
d98a3884 16083{
da08cb55 16084 return (int64x2_t)__a;
d98a3884 16085}
16086
114e7e56 16087#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 16088__extension__ extern __inline int64x2_t
16089__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 16090vreinterpretq_s64_f16 (float16x8_t __a)
16091{
16092 return (int64x2_t) __a;
16093}
16094#endif
16095
5c493d36 16096__extension__ extern __inline int64x2_t
16097__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16098vreinterpretq_s64_f32 (float32x4_t __a)
d98a3884 16099{
da08cb55 16100 return (int64x2_t)__a;
d98a3884 16101}
16102
dcbc6813 16103#pragma GCC push_options
16104#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 16105__extension__ extern __inline int64x2_t
16106__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16107vreinterpretq_s64_p64 (poly64x2_t __a)
d98a3884 16108{
da08cb55 16109 return (int64x2_t)__a;
d98a3884 16110}
16111
5c493d36 16112__extension__ extern __inline int64x2_t
16113__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16114vreinterpretq_s64_p128 (poly128_t __a)
d98a3884 16115{
da08cb55 16116 return (int64x2_t)__a;
d98a3884 16117}
16118
dcbc6813 16119#pragma GCC pop_options
5c493d36 16120__extension__ extern __inline int64x2_t
16121__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16122vreinterpretq_s64_u64 (uint64x2_t __a)
16123{
da08cb55 16124 return (int64x2_t)__a;
e84fdf6e 16125}
16126
5c493d36 16127__extension__ extern __inline int64x2_t
16128__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16129vreinterpretq_s64_s8 (int8x16_t __a)
16130{
da08cb55 16131 return (int64x2_t)__a;
e84fdf6e 16132}
16133
5c493d36 16134__extension__ extern __inline int64x2_t
16135__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16136vreinterpretq_s64_s16 (int16x8_t __a)
16137{
da08cb55 16138 return (int64x2_t)__a;
e84fdf6e 16139}
16140
5c493d36 16141__extension__ extern __inline int64x2_t
16142__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16143vreinterpretq_s64_s32 (int32x4_t __a)
16144{
da08cb55 16145 return (int64x2_t)__a;
e84fdf6e 16146}
16147
5c493d36 16148__extension__ extern __inline int64x2_t
16149__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16150vreinterpretq_s64_u8 (uint8x16_t __a)
16151{
da08cb55 16152 return (int64x2_t)__a;
e84fdf6e 16153}
16154
5c493d36 16155__extension__ extern __inline int64x2_t
16156__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16157vreinterpretq_s64_u16 (uint16x8_t __a)
16158{
da08cb55 16159 return (int64x2_t)__a;
e84fdf6e 16160}
16161
5c493d36 16162__extension__ extern __inline int64x2_t
16163__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16164vreinterpretq_s64_u32 (uint32x4_t __a)
d98a3884 16165{
da08cb55 16166 return (int64x2_t)__a;
d98a3884 16167}
16168
5c493d36 16169__extension__ extern __inline uint64x2_t
16170__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16171vreinterpretq_u64_p8 (poly8x16_t __a)
d98a3884 16172{
da08cb55 16173 return (uint64x2_t)__a;
d98a3884 16174}
16175
5c493d36 16176__extension__ extern __inline uint64x2_t
16177__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16178vreinterpretq_u64_p16 (poly16x8_t __a)
d98a3884 16179{
da08cb55 16180 return (uint64x2_t)__a;
d98a3884 16181}
16182
114e7e56 16183#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 16184__extension__ extern __inline uint64x2_t
16185__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 16186vreinterpretq_u64_f16 (float16x8_t __a)
16187{
16188 return (uint64x2_t) __a;
16189}
16190#endif
16191
5c493d36 16192__extension__ extern __inline uint64x2_t
16193__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16194vreinterpretq_u64_f32 (float32x4_t __a)
d98a3884 16195{
da08cb55 16196 return (uint64x2_t)__a;
d98a3884 16197}
16198
dcbc6813 16199#pragma GCC push_options
16200#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 16201__extension__ extern __inline uint64x2_t
16202__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16203vreinterpretq_u64_p64 (poly64x2_t __a)
d98a3884 16204{
da08cb55 16205 return (uint64x2_t)__a;
d98a3884 16206}
16207
5c493d36 16208__extension__ extern __inline uint64x2_t
16209__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16210vreinterpretq_u64_p128 (poly128_t __a)
d98a3884 16211{
da08cb55 16212 return (uint64x2_t)__a;
d98a3884 16213}
16214
dcbc6813 16215#pragma GCC pop_options
5c493d36 16216__extension__ extern __inline uint64x2_t
16217__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16218vreinterpretq_u64_s64 (int64x2_t __a)
d98a3884 16219{
da08cb55 16220 return (uint64x2_t)__a;
d98a3884 16221}
16222
5c493d36 16223__extension__ extern __inline uint64x2_t
16224__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16225vreinterpretq_u64_s8 (int8x16_t __a)
d98a3884 16226{
da08cb55 16227 return (uint64x2_t)__a;
d98a3884 16228}
16229
5c493d36 16230__extension__ extern __inline uint64x2_t
16231__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16232vreinterpretq_u64_s16 (int16x8_t __a)
d98a3884 16233{
da08cb55 16234 return (uint64x2_t)__a;
d98a3884 16235}
16236
5c493d36 16237__extension__ extern __inline uint64x2_t
16238__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16239vreinterpretq_u64_s32 (int32x4_t __a)
d98a3884 16240{
da08cb55 16241 return (uint64x2_t)__a;
d98a3884 16242}
16243
5c493d36 16244__extension__ extern __inline uint64x2_t
16245__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16246vreinterpretq_u64_u8 (uint8x16_t __a)
d98a3884 16247{
da08cb55 16248 return (uint64x2_t)__a;
d98a3884 16249}
16250
5c493d36 16251__extension__ extern __inline uint64x2_t
16252__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16253vreinterpretq_u64_u16 (uint16x8_t __a)
d98a3884 16254{
da08cb55 16255 return (uint64x2_t)__a;
d98a3884 16256}
16257
5c493d36 16258__extension__ extern __inline uint64x2_t
16259__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16260vreinterpretq_u64_u32 (uint32x4_t __a)
d98a3884 16261{
da08cb55 16262 return (uint64x2_t)__a;
d98a3884 16263}
16264
5c493d36 16265__extension__ extern __inline int8x16_t
16266__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16267vreinterpretq_s8_p8 (poly8x16_t __a)
d98a3884 16268{
da08cb55 16269 return (int8x16_t)__a;
d98a3884 16270}
16271
5c493d36 16272__extension__ extern __inline int8x16_t
16273__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16274vreinterpretq_s8_p16 (poly16x8_t __a)
d98a3884 16275{
da08cb55 16276 return (int8x16_t)__a;
d98a3884 16277}
16278
114e7e56 16279#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 16280__extension__ extern __inline int8x16_t
16281__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 16282vreinterpretq_s8_f16 (float16x8_t __a)
16283{
16284 return (int8x16_t) __a;
16285}
16286#endif
16287
5c493d36 16288__extension__ extern __inline int8x16_t
16289__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16290vreinterpretq_s8_f32 (float32x4_t __a)
d98a3884 16291{
da08cb55 16292 return (int8x16_t)__a;
d98a3884 16293}
16294
dcbc6813 16295#pragma GCC push_options
16296#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 16297__extension__ extern __inline int8x16_t
16298__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16299vreinterpretq_s8_p64 (poly64x2_t __a)
d98a3884 16300{
da08cb55 16301 return (int8x16_t)__a;
d98a3884 16302}
16303
5c493d36 16304__extension__ extern __inline int8x16_t
16305__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16306vreinterpretq_s8_p128 (poly128_t __a)
d98a3884 16307{
da08cb55 16308 return (int8x16_t)__a;
d98a3884 16309}
16310
dcbc6813 16311#pragma GCC pop_options
5c493d36 16312__extension__ extern __inline int8x16_t
16313__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16314vreinterpretq_s8_s64 (int64x2_t __a)
d98a3884 16315{
da08cb55 16316 return (int8x16_t)__a;
d98a3884 16317}
16318
5c493d36 16319__extension__ extern __inline int8x16_t
16320__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16321vreinterpretq_s8_u64 (uint64x2_t __a)
d98a3884 16322{
da08cb55 16323 return (int8x16_t)__a;
d98a3884 16324}
16325
5c493d36 16326__extension__ extern __inline int8x16_t
16327__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16328vreinterpretq_s8_s16 (int16x8_t __a)
d98a3884 16329{
da08cb55 16330 return (int8x16_t)__a;
d98a3884 16331}
16332
5c493d36 16333__extension__ extern __inline int8x16_t
16334__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16335vreinterpretq_s8_s32 (int32x4_t __a)
d98a3884 16336{
da08cb55 16337 return (int8x16_t)__a;
d98a3884 16338}
16339
5c493d36 16340__extension__ extern __inline int8x16_t
16341__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16342vreinterpretq_s8_u8 (uint8x16_t __a)
d98a3884 16343{
da08cb55 16344 return (int8x16_t)__a;
d98a3884 16345}
16346
5c493d36 16347__extension__ extern __inline int8x16_t
16348__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16349vreinterpretq_s8_u16 (uint16x8_t __a)
d98a3884 16350{
da08cb55 16351 return (int8x16_t)__a;
d98a3884 16352}
16353
5c493d36 16354__extension__ extern __inline int8x16_t
16355__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16356vreinterpretq_s8_u32 (uint32x4_t __a)
d98a3884 16357{
da08cb55 16358 return (int8x16_t)__a;
d98a3884 16359}
16360
5c493d36 16361__extension__ extern __inline int16x8_t
16362__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16363vreinterpretq_s16_p8 (poly8x16_t __a)
d98a3884 16364{
da08cb55 16365 return (int16x8_t)__a;
d98a3884 16366}
16367
5c493d36 16368__extension__ extern __inline int16x8_t
16369__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16370vreinterpretq_s16_p16 (poly16x8_t __a)
d98a3884 16371{
da08cb55 16372 return (int16x8_t)__a;
d98a3884 16373}
16374
114e7e56 16375#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 16376__extension__ extern __inline int16x8_t
16377__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 16378vreinterpretq_s16_f16 (float16x8_t __a)
16379{
16380 return (int16x8_t) __a;
16381}
16382#endif
16383
5c493d36 16384__extension__ extern __inline int16x8_t
16385__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16386vreinterpretq_s16_f32 (float32x4_t __a)
d98a3884 16387{
da08cb55 16388 return (int16x8_t)__a;
d98a3884 16389}
16390
dcbc6813 16391#pragma GCC push_options
16392#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 16393__extension__ extern __inline int16x8_t
16394__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16395vreinterpretq_s16_p64 (poly64x2_t __a)
d98a3884 16396{
da08cb55 16397 return (int16x8_t)__a;
d98a3884 16398}
16399
5c493d36 16400__extension__ extern __inline int16x8_t
16401__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16402vreinterpretq_s16_p128 (poly128_t __a)
d98a3884 16403{
da08cb55 16404 return (int16x8_t)__a;
d98a3884 16405}
16406
dcbc6813 16407#pragma GCC pop_options
5c493d36 16408__extension__ extern __inline int16x8_t
16409__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16410vreinterpretq_s16_s64 (int64x2_t __a)
d98a3884 16411{
da08cb55 16412 return (int16x8_t)__a;
d98a3884 16413}
16414
5c493d36 16415__extension__ extern __inline int16x8_t
16416__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16417vreinterpretq_s16_u64 (uint64x2_t __a)
d98a3884 16418{
da08cb55 16419 return (int16x8_t)__a;
d98a3884 16420}
16421
5c493d36 16422__extension__ extern __inline int16x8_t
16423__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16424vreinterpretq_s16_s8 (int8x16_t __a)
d98a3884 16425{
da08cb55 16426 return (int16x8_t)__a;
d98a3884 16427}
16428
5c493d36 16429__extension__ extern __inline int16x8_t
16430__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16431vreinterpretq_s16_s32 (int32x4_t __a)
d98a3884 16432{
da08cb55 16433 return (int16x8_t)__a;
d98a3884 16434}
16435
5c493d36 16436__extension__ extern __inline int16x8_t
16437__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16438vreinterpretq_s16_u8 (uint8x16_t __a)
d98a3884 16439{
da08cb55 16440 return (int16x8_t)__a;
d98a3884 16441}
16442
5c493d36 16443__extension__ extern __inline int16x8_t
16444__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16445vreinterpretq_s16_u16 (uint16x8_t __a)
d98a3884 16446{
da08cb55 16447 return (int16x8_t)__a;
d98a3884 16448}
16449
5c493d36 16450__extension__ extern __inline int16x8_t
16451__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16452vreinterpretq_s16_u32 (uint32x4_t __a)
d98a3884 16453{
da08cb55 16454 return (int16x8_t)__a;
d98a3884 16455}
16456
5c493d36 16457__extension__ extern __inline int32x4_t
16458__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 16459vreinterpretq_s32_p8 (poly8x16_t __a)
16460{
da08cb55 16461 return (int32x4_t)__a;
d98a3884 16462}
16463
5c493d36 16464__extension__ extern __inline int32x4_t
16465__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 16466vreinterpretq_s32_p16 (poly16x8_t __a)
16467{
da08cb55 16468 return (int32x4_t)__a;
d98a3884 16469}
16470
114e7e56 16471#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 16472__extension__ extern __inline int32x4_t
16473__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 16474vreinterpretq_s32_f16 (float16x8_t __a)
16475{
da08cb55 16476 return (int32x4_t)__a;
114e7e56 16477}
16478#endif
16479
5c493d36 16480__extension__ extern __inline int32x4_t
16481__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16482vreinterpretq_s32_f32 (float32x4_t __a)
d98a3884 16483{
da08cb55 16484 return (int32x4_t)__a;
d98a3884 16485}
16486
dcbc6813 16487#pragma GCC push_options
16488#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 16489__extension__ extern __inline int32x4_t
16490__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16491vreinterpretq_s32_p64 (poly64x2_t __a)
d98a3884 16492{
da08cb55 16493 return (int32x4_t)__a;
d98a3884 16494}
16495
5c493d36 16496__extension__ extern __inline int32x4_t
16497__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16498vreinterpretq_s32_p128 (poly128_t __a)
d98a3884 16499{
da08cb55 16500 return (int32x4_t)__a;
d98a3884 16501}
16502
dcbc6813 16503#pragma GCC pop_options
5c493d36 16504__extension__ extern __inline int32x4_t
16505__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16506vreinterpretq_s32_s64 (int64x2_t __a)
d98a3884 16507{
da08cb55 16508 return (int32x4_t)__a;
d98a3884 16509}
16510
5c493d36 16511__extension__ extern __inline int32x4_t
16512__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16513vreinterpretq_s32_u64 (uint64x2_t __a)
d98a3884 16514{
da08cb55 16515 return (int32x4_t)__a;
d98a3884 16516}
16517
5c493d36 16518__extension__ extern __inline int32x4_t
16519__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16520vreinterpretq_s32_s8 (int8x16_t __a)
d98a3884 16521{
da08cb55 16522 return (int32x4_t)__a;
d98a3884 16523}
16524
5c493d36 16525__extension__ extern __inline int32x4_t
16526__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16527vreinterpretq_s32_s16 (int16x8_t __a)
d98a3884 16528{
da08cb55 16529 return (int32x4_t)__a;
d98a3884 16530}
16531
5c493d36 16532__extension__ extern __inline int32x4_t
16533__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16534vreinterpretq_s32_u8 (uint8x16_t __a)
d98a3884 16535{
da08cb55 16536 return (int32x4_t)__a;
d98a3884 16537}
16538
5c493d36 16539__extension__ extern __inline int32x4_t
16540__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16541vreinterpretq_s32_u16 (uint16x8_t __a)
d98a3884 16542{
da08cb55 16543 return (int32x4_t)__a;
d98a3884 16544}
16545
5c493d36 16546__extension__ extern __inline int32x4_t
16547__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16548vreinterpretq_s32_u32 (uint32x4_t __a)
d98a3884 16549{
da08cb55 16550 return (int32x4_t)__a;
d98a3884 16551}
16552
5c493d36 16553__extension__ extern __inline uint8x16_t
16554__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16555vreinterpretq_u8_p8 (poly8x16_t __a)
d98a3884 16556{
da08cb55 16557 return (uint8x16_t)__a;
d98a3884 16558}
16559
5c493d36 16560__extension__ extern __inline uint8x16_t
16561__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16562vreinterpretq_u8_p16 (poly16x8_t __a)
d98a3884 16563{
da08cb55 16564 return (uint8x16_t)__a;
d98a3884 16565}
16566
114e7e56 16567#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 16568__extension__ extern __inline uint8x16_t
16569__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 16570vreinterpretq_u8_f16 (float16x8_t __a)
16571{
16572 return (uint8x16_t) __a;
16573}
16574#endif
16575
5c493d36 16576__extension__ extern __inline uint8x16_t
16577__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 16578vreinterpretq_u8_f32 (float32x4_t __a)
16579{
da08cb55 16580 return (uint8x16_t)__a;
d98a3884 16581}
16582
dcbc6813 16583#pragma GCC push_options
16584#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 16585__extension__ extern __inline uint8x16_t
16586__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16587vreinterpretq_u8_p64 (poly64x2_t __a)
d98a3884 16588{
da08cb55 16589 return (uint8x16_t)__a;
d98a3884 16590}
16591
5c493d36 16592__extension__ extern __inline uint8x16_t
16593__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16594vreinterpretq_u8_p128 (poly128_t __a)
d98a3884 16595{
da08cb55 16596 return (uint8x16_t)__a;
e84fdf6e 16597}
16598
dcbc6813 16599#pragma GCC pop_options
5c493d36 16600__extension__ extern __inline uint8x16_t
16601__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16602vreinterpretq_u8_s64 (int64x2_t __a)
16603{
da08cb55 16604 return (uint8x16_t)__a;
d98a3884 16605}
16606
5c493d36 16607__extension__ extern __inline uint8x16_t
16608__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 16609vreinterpretq_u8_u64 (uint64x2_t __a)
16610{
da08cb55 16611 return (uint8x16_t)__a;
d98a3884 16612}
16613
5c493d36 16614__extension__ extern __inline uint8x16_t
16615__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16616vreinterpretq_u8_s8 (int8x16_t __a)
d98a3884 16617{
da08cb55 16618 return (uint8x16_t)__a;
d98a3884 16619}
16620
5c493d36 16621__extension__ extern __inline uint8x16_t
16622__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16623vreinterpretq_u8_s16 (int16x8_t __a)
d98a3884 16624{
da08cb55 16625 return (uint8x16_t)__a;
d98a3884 16626}
16627
5c493d36 16628__extension__ extern __inline uint8x16_t
16629__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16630vreinterpretq_u8_s32 (int32x4_t __a)
d98a3884 16631{
da08cb55 16632 return (uint8x16_t)__a;
d98a3884 16633}
16634
5c493d36 16635__extension__ extern __inline uint8x16_t
16636__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16637vreinterpretq_u8_u16 (uint16x8_t __a)
d98a3884 16638{
da08cb55 16639 return (uint8x16_t)__a;
d98a3884 16640}
16641
5c493d36 16642__extension__ extern __inline uint8x16_t
16643__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16644vreinterpretq_u8_u32 (uint32x4_t __a)
d98a3884 16645{
da08cb55 16646 return (uint8x16_t)__a;
d98a3884 16647}
16648
5c493d36 16649__extension__ extern __inline uint16x8_t
16650__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16651vreinterpretq_u16_p8 (poly8x16_t __a)
d98a3884 16652{
da08cb55 16653 return (uint16x8_t)__a;
d98a3884 16654}
16655
5c493d36 16656__extension__ extern __inline uint16x8_t
16657__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16658vreinterpretq_u16_p16 (poly16x8_t __a)
d98a3884 16659{
da08cb55 16660 return (uint16x8_t)__a;
d98a3884 16661}
16662
114e7e56 16663#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 16664__extension__ extern __inline uint16x8_t
16665__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 16666vreinterpretq_u16_f16 (float16x8_t __a)
16667{
16668 return (uint16x8_t) __a;
16669}
16670#endif
16671
5c493d36 16672__extension__ extern __inline uint16x8_t
16673__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16674vreinterpretq_u16_f32 (float32x4_t __a)
d98a3884 16675{
da08cb55 16676 return (uint16x8_t)__a;
d98a3884 16677}
16678
dcbc6813 16679#pragma GCC push_options
16680#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 16681__extension__ extern __inline uint16x8_t
16682__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16683vreinterpretq_u16_p64 (poly64x2_t __a)
d98a3884 16684{
da08cb55 16685 return (uint16x8_t)__a;
d98a3884 16686}
16687
5c493d36 16688__extension__ extern __inline uint16x8_t
16689__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16690vreinterpretq_u16_p128 (poly128_t __a)
d98a3884 16691{
da08cb55 16692 return (uint16x8_t)__a;
d98a3884 16693}
16694
dcbc6813 16695#pragma GCC pop_options
5c493d36 16696__extension__ extern __inline uint16x8_t
16697__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16698vreinterpretq_u16_s64 (int64x2_t __a)
d98a3884 16699{
da08cb55 16700 return (uint16x8_t)__a;
d98a3884 16701}
16702
5c493d36 16703__extension__ extern __inline uint16x8_t
16704__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16705vreinterpretq_u16_u64 (uint64x2_t __a)
d98a3884 16706{
da08cb55 16707 return (uint16x8_t)__a;
d98a3884 16708}
16709
5c493d36 16710__extension__ extern __inline uint16x8_t
16711__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 16712vreinterpretq_u16_s8 (int8x16_t __a)
16713{
da08cb55 16714 return (uint16x8_t)__a;
d98a3884 16715}
16716
5c493d36 16717__extension__ extern __inline uint16x8_t
16718__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 16719vreinterpretq_u16_s16 (int16x8_t __a)
16720{
da08cb55 16721 return (uint16x8_t)__a;
d98a3884 16722}
16723
5c493d36 16724__extension__ extern __inline uint16x8_t
16725__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
d98a3884 16726vreinterpretq_u16_s32 (int32x4_t __a)
16727{
da08cb55 16728 return (uint16x8_t)__a;
d98a3884 16729}
16730
5c493d36 16731__extension__ extern __inline uint16x8_t
16732__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16733vreinterpretq_u16_u8 (uint8x16_t __a)
d98a3884 16734{
da08cb55 16735 return (uint16x8_t)__a;
d98a3884 16736}
16737
5c493d36 16738__extension__ extern __inline uint16x8_t
16739__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16740vreinterpretq_u16_u32 (uint32x4_t __a)
d98a3884 16741{
da08cb55 16742 return (uint16x8_t)__a;
d98a3884 16743}
16744
5c493d36 16745__extension__ extern __inline uint32x4_t
16746__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16747vreinterpretq_u32_p8 (poly8x16_t __a)
d98a3884 16748{
da08cb55 16749 return (uint32x4_t)__a;
d98a3884 16750}
16751
5c493d36 16752__extension__ extern __inline uint32x4_t
16753__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16754vreinterpretq_u32_p16 (poly16x8_t __a)
d98a3884 16755{
da08cb55 16756 return (uint32x4_t)__a;
d98a3884 16757}
16758
114e7e56 16759#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
5c493d36 16760__extension__ extern __inline uint32x4_t
16761__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
114e7e56 16762vreinterpretq_u32_f16 (float16x8_t __a)
16763{
16764 return (uint32x4_t) __a;
16765}
16766#endif
16767
5c493d36 16768__extension__ extern __inline uint32x4_t
16769__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16770vreinterpretq_u32_f32 (float32x4_t __a)
d98a3884 16771{
da08cb55 16772 return (uint32x4_t)__a;
d98a3884 16773}
16774
dcbc6813 16775#pragma GCC push_options
16776#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 16777__extension__ extern __inline uint32x4_t
16778__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16779vreinterpretq_u32_p64 (poly64x2_t __a)
d98a3884 16780{
da08cb55 16781 return (uint32x4_t)__a;
d98a3884 16782}
16783
5c493d36 16784__extension__ extern __inline uint32x4_t
16785__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16786vreinterpretq_u32_p128 (poly128_t __a)
d98a3884 16787{
da08cb55 16788 return (uint32x4_t)__a;
d98a3884 16789}
16790
dcbc6813 16791#pragma GCC pop_options
5c493d36 16792__extension__ extern __inline uint32x4_t
16793__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16794vreinterpretq_u32_s64 (int64x2_t __a)
d98a3884 16795{
da08cb55 16796 return (uint32x4_t)__a;
d98a3884 16797}
16798
5c493d36 16799__extension__ extern __inline uint32x4_t
16800__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16801vreinterpretq_u32_u64 (uint64x2_t __a)
d98a3884 16802{
da08cb55 16803 return (uint32x4_t)__a;
d98a3884 16804}
16805
5c493d36 16806__extension__ extern __inline uint32x4_t
16807__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16808vreinterpretq_u32_s8 (int8x16_t __a)
d98a3884 16809{
da08cb55 16810 return (uint32x4_t)__a;
d98a3884 16811}
16812
5c493d36 16813__extension__ extern __inline uint32x4_t
16814__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16815vreinterpretq_u32_s16 (int16x8_t __a)
d98a3884 16816{
da08cb55 16817 return (uint32x4_t)__a;
d98a3884 16818}
16819
5c493d36 16820__extension__ extern __inline uint32x4_t
16821__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16822vreinterpretq_u32_s32 (int32x4_t __a)
d98a3884 16823{
da08cb55 16824 return (uint32x4_t)__a;
d98a3884 16825}
16826
5c493d36 16827__extension__ extern __inline uint32x4_t
16828__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16829vreinterpretq_u32_u8 (uint8x16_t __a)
d98a3884 16830{
da08cb55 16831 return (uint32x4_t)__a;
d98a3884 16832}
16833
5c493d36 16834__extension__ extern __inline uint32x4_t
16835__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16836vreinterpretq_u32_u16 (uint16x8_t __a)
d98a3884 16837{
da08cb55 16838 return (uint32x4_t)__a;
d98a3884 16839}
16840
e84fdf6e 16841
dcbc6813 16842#pragma GCC push_options
16843#pragma GCC target ("fpu=crypto-neon-fp-armv8")
5c493d36 16844__extension__ extern __inline poly128_t
16845__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16846vldrq_p128 (poly128_t const * __ptr)
d98a3884 16847{
e84fdf6e 16848#ifdef __ARM_BIG_ENDIAN
16849 poly64_t* __ptmp = (poly64_t*) __ptr;
16850 poly64_t __d0 = vld1_p64 (__ptmp);
16851 poly64_t __d1 = vld1_p64 (__ptmp + 1);
16852 return vreinterpretq_p128_p64 (vcombine_p64 (__d1, __d0));
16853#else
16854 return vreinterpretq_p128_p64 (vld1q_p64 ((poly64_t*) __ptr));
16855#endif
d98a3884 16856}
16857
5c493d36 16858__extension__ extern __inline void
16859__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16860vstrq_p128 (poly128_t * __ptr, poly128_t __val)
d98a3884 16861{
e84fdf6e 16862#ifdef __ARM_BIG_ENDIAN
16863 poly64x2_t __tmp = vreinterpretq_p64_p128 (__val);
16864 poly64_t __d0 = vget_high_p64 (__tmp);
16865 poly64_t __d1 = vget_low_p64 (__tmp);
16866 vst1q_p64 ((poly64_t*) __ptr, vcombine_p64 (__d0, __d1));
16867#else
16868 vst1q_p64 ((poly64_t*) __ptr, vreinterpretq_p64_p128 (__val));
16869#endif
d98a3884 16870}
16871
c46598c1 16872/* The vceq_p64 intrinsic does not map to a single instruction.
16873 Instead we emulate it by performing a 32-bit variant of the vceq
16874 and applying a pairwise min reduction to the result.
16875 vceq_u32 will produce two 32-bit halves, each of which will contain either
16876 all ones or all zeros depending on whether the corresponding 32-bit
16877 halves of the poly64_t were equal. The whole poly64_t values are equal
16878 if and only if both halves are equal, i.e. vceq_u32 returns all ones.
16879 If the result is all zeroes for any half then the whole result is zeroes.
16880 This is what the pairwise min reduction achieves. */
16881
5c493d36 16882__extension__ extern __inline uint64x1_t
16883__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
c46598c1 16884vceq_p64 (poly64x1_t __a, poly64x1_t __b)
16885{
16886 uint32x2_t __t_a = vreinterpret_u32_p64 (__a);
16887 uint32x2_t __t_b = vreinterpret_u32_p64 (__b);
16888 uint32x2_t __c = vceq_u32 (__t_a, __t_b);
16889 uint32x2_t __m = vpmin_u32 (__c, __c);
16890 return vreinterpret_u64_u32 (__m);
16891}
16892
16893/* The vtst_p64 intrinsic does not map to a single instruction.
16894 We emulate it in way similar to vceq_p64 above but here we do
16895 a reduction with max since if any two corresponding bits
16896 in the two poly64_t's match, then the whole result must be all ones. */
16897
5c493d36 16898__extension__ extern __inline uint64x1_t
16899__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
c46598c1 16900vtst_p64 (poly64x1_t __a, poly64x1_t __b)
16901{
16902 uint32x2_t __t_a = vreinterpret_u32_p64 (__a);
16903 uint32x2_t __t_b = vreinterpret_u32_p64 (__b);
16904 uint32x2_t __c = vtst_u32 (__t_a, __t_b);
16905 uint32x2_t __m = vpmax_u32 (__c, __c);
16906 return vreinterpret_u64_u32 (__m);
16907}
16908
5c493d36 16909__extension__ extern __inline uint8x16_t
16910__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16911vaeseq_u8 (uint8x16_t __data, uint8x16_t __key)
d98a3884 16912{
e84fdf6e 16913 return __builtin_arm_crypto_aese (__data, __key);
d98a3884 16914}
16915
5c493d36 16916__extension__ extern __inline uint8x16_t
16917__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16918vaesdq_u8 (uint8x16_t __data, uint8x16_t __key)
d98a3884 16919{
e84fdf6e 16920 return __builtin_arm_crypto_aesd (__data, __key);
16921}
16922
5c493d36 16923__extension__ extern __inline uint8x16_t
16924__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16925vaesmcq_u8 (uint8x16_t __data)
16926{
16927 return __builtin_arm_crypto_aesmc (__data);
16928}
16929
5c493d36 16930__extension__ extern __inline uint8x16_t
16931__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16932vaesimcq_u8 (uint8x16_t __data)
16933{
16934 return __builtin_arm_crypto_aesimc (__data);
16935}
16936
5c493d36 16937__extension__ extern __inline uint32_t
16938__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16939vsha1h_u32 (uint32_t __hash_e)
16940{
16941 uint32x4_t __t = vdupq_n_u32 (0);
16942 __t = vsetq_lane_u32 (__hash_e, __t, 0);
16943 __t = __builtin_arm_crypto_sha1h (__t);
16944 return vgetq_lane_u32 (__t, 0);
d98a3884 16945}
16946
5c493d36 16947__extension__ extern __inline uint32x4_t
16948__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16949vsha1cq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk)
d98a3884 16950{
e84fdf6e 16951 uint32x4_t __t = vdupq_n_u32 (0);
16952 __t = vsetq_lane_u32 (__hash_e, __t, 0);
16953 return __builtin_arm_crypto_sha1c (__hash_abcd, __t, __wk);
d98a3884 16954}
16955
5c493d36 16956__extension__ extern __inline uint32x4_t
16957__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16958vsha1pq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk)
d98a3884 16959{
e84fdf6e 16960 uint32x4_t __t = vdupq_n_u32 (0);
16961 __t = vsetq_lane_u32 (__hash_e, __t, 0);
16962 return __builtin_arm_crypto_sha1p (__hash_abcd, __t, __wk);
d98a3884 16963}
16964
5c493d36 16965__extension__ extern __inline uint32x4_t
16966__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16967vsha1mq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk)
d98a3884 16968{
e84fdf6e 16969 uint32x4_t __t = vdupq_n_u32 (0);
16970 __t = vsetq_lane_u32 (__hash_e, __t, 0);
16971 return __builtin_arm_crypto_sha1m (__hash_abcd, __t, __wk);
d98a3884 16972}
16973
5c493d36 16974__extension__ extern __inline uint32x4_t
16975__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16976vsha1su0q_u32 (uint32x4_t __w0_3, uint32x4_t __w4_7, uint32x4_t __w8_11)
d98a3884 16977{
e84fdf6e 16978 return __builtin_arm_crypto_sha1su0 (__w0_3, __w4_7, __w8_11);
d98a3884 16979}
16980
5c493d36 16981__extension__ extern __inline uint32x4_t
16982__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16983vsha1su1q_u32 (uint32x4_t __tw0_3, uint32x4_t __w12_15)
d98a3884 16984{
e84fdf6e 16985 return __builtin_arm_crypto_sha1su1 (__tw0_3, __w12_15);
d98a3884 16986}
16987
5c493d36 16988__extension__ extern __inline uint32x4_t
16989__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16990vsha256hq_u32 (uint32x4_t __hash_abcd, uint32x4_t __hash_efgh, uint32x4_t __wk)
d98a3884 16991{
e84fdf6e 16992 return __builtin_arm_crypto_sha256h (__hash_abcd, __hash_efgh, __wk);
d98a3884 16993}
16994
5c493d36 16995__extension__ extern __inline uint32x4_t
16996__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 16997vsha256h2q_u32 (uint32x4_t __hash_abcd, uint32x4_t __hash_efgh, uint32x4_t __wk)
d98a3884 16998{
e84fdf6e 16999 return __builtin_arm_crypto_sha256h2 (__hash_abcd, __hash_efgh, __wk);
d98a3884 17000}
17001
5c493d36 17002__extension__ extern __inline uint32x4_t
17003__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 17004vsha256su0q_u32 (uint32x4_t __w0_3, uint32x4_t __w4_7)
d98a3884 17005{
e84fdf6e 17006 return __builtin_arm_crypto_sha256su0 (__w0_3, __w4_7);
d98a3884 17007}
17008
5c493d36 17009__extension__ extern __inline uint32x4_t
17010__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 17011vsha256su1q_u32 (uint32x4_t __tw0_3, uint32x4_t __w8_11, uint32x4_t __w12_15)
d98a3884 17012{
e84fdf6e 17013 return __builtin_arm_crypto_sha256su1 (__tw0_3, __w8_11, __w12_15);
d98a3884 17014}
17015
5c493d36 17016__extension__ extern __inline poly128_t
17017__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 17018vmull_p64 (poly64_t __a, poly64_t __b)
17019{
17020 return (poly128_t) __builtin_arm_crypto_vmullp64 ((uint64_t) __a, (uint64_t) __b);
17021}
17022
5c493d36 17023__extension__ extern __inline poly128_t
17024__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
e84fdf6e 17025vmull_high_p64 (poly64x2_t __a, poly64x2_t __b)
17026{
17027 poly64_t __t1 = vget_high_p64 (__a);
17028 poly64_t __t2 = vget_high_p64 (__b);
17029
17030 return (poly128_t) __builtin_arm_crypto_vmullp64 ((uint64_t) __t1, (uint64_t) __t2);
17031}
17032
34ac15c4 17033#pragma GCC pop_options
17034
17035 /* Intrinsics for FP16 instructions. */
17036#pragma GCC push_options
17037#pragma GCC target ("fpu=neon-fp-armv8")
17038#if defined (__ARM_FEATURE_FP16_VECTOR_ARITHMETIC)
17039
5c493d36 17040__extension__ extern __inline float16x4_t
17041__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17042vabd_f16 (float16x4_t __a, float16x4_t __b)
17043{
17044 return __builtin_neon_vabdv4hf (__a, __b);
17045}
17046
5c493d36 17047__extension__ extern __inline float16x8_t
17048__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17049vabdq_f16 (float16x8_t __a, float16x8_t __b)
17050{
17051 return __builtin_neon_vabdv8hf (__a, __b);
17052}
17053
5c493d36 17054__extension__ extern __inline float16x4_t
17055__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17056vabs_f16 (float16x4_t __a)
17057{
17058 return __builtin_neon_vabsv4hf (__a);
17059}
17060
5c493d36 17061__extension__ extern __inline float16x8_t
17062__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17063vabsq_f16 (float16x8_t __a)
17064{
17065 return __builtin_neon_vabsv8hf (__a);
17066}
17067
5c493d36 17068__extension__ extern __inline float16x4_t
17069__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17070vadd_f16 (float16x4_t __a, float16x4_t __b)
17071{
1d16e072 17072#ifdef __FAST_MATH__
17073 return __a + __b;
17074#else
34ac15c4 17075 return __builtin_neon_vaddv4hf (__a, __b);
1d16e072 17076#endif
34ac15c4 17077}
17078
5c493d36 17079__extension__ extern __inline float16x8_t
17080__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17081vaddq_f16 (float16x8_t __a, float16x8_t __b)
17082{
1d16e072 17083#ifdef __FAST_MATH__
17084 return __a + __b;
17085#else
34ac15c4 17086 return __builtin_neon_vaddv8hf (__a, __b);
1d16e072 17087#endif
34ac15c4 17088}
17089
5c493d36 17090__extension__ extern __inline uint16x4_t
17091__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17092vcage_f16 (float16x4_t __a, float16x4_t __b)
17093{
17094 return (uint16x4_t)__builtin_neon_vcagev4hf (__a, __b);
17095}
17096
5c493d36 17097__extension__ extern __inline uint16x8_t
17098__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17099vcageq_f16 (float16x8_t __a, float16x8_t __b)
17100{
17101 return (uint16x8_t)__builtin_neon_vcagev8hf (__a, __b);
17102}
17103
5c493d36 17104__extension__ extern __inline uint16x4_t
17105__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17106vcagt_f16 (float16x4_t __a, float16x4_t __b)
17107{
17108 return (uint16x4_t)__builtin_neon_vcagtv4hf (__a, __b);
17109}
17110
5c493d36 17111__extension__ extern __inline uint16x8_t
17112__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17113vcagtq_f16 (float16x8_t __a, float16x8_t __b)
17114{
17115 return (uint16x8_t)__builtin_neon_vcagtv8hf (__a, __b);
17116}
17117
5c493d36 17118__extension__ extern __inline uint16x4_t
17119__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17120vcale_f16 (float16x4_t __a, float16x4_t __b)
17121{
17122 return (uint16x4_t)__builtin_neon_vcalev4hf (__a, __b);
17123}
17124
5c493d36 17125__extension__ extern __inline uint16x8_t
17126__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17127vcaleq_f16 (float16x8_t __a, float16x8_t __b)
17128{
17129 return (uint16x8_t)__builtin_neon_vcalev8hf (__a, __b);
17130}
17131
5c493d36 17132__extension__ extern __inline uint16x4_t
17133__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17134vcalt_f16 (float16x4_t __a, float16x4_t __b)
17135{
17136 return (uint16x4_t)__builtin_neon_vcaltv4hf (__a, __b);
17137}
17138
5c493d36 17139__extension__ extern __inline uint16x8_t
17140__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17141vcaltq_f16 (float16x8_t __a, float16x8_t __b)
17142{
17143 return (uint16x8_t)__builtin_neon_vcaltv8hf (__a, __b);
17144}
17145
5c493d36 17146__extension__ extern __inline uint16x4_t
17147__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17148vceq_f16 (float16x4_t __a, float16x4_t __b)
17149{
17150 return (uint16x4_t)__builtin_neon_vceqv4hf (__a, __b);
17151}
17152
5c493d36 17153__extension__ extern __inline uint16x8_t
17154__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17155vceqq_f16 (float16x8_t __a, float16x8_t __b)
17156{
17157 return (uint16x8_t)__builtin_neon_vceqv8hf (__a, __b);
17158}
17159
5c493d36 17160__extension__ extern __inline uint16x4_t
17161__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17162vceqz_f16 (float16x4_t __a)
17163{
17164 return (uint16x4_t)__builtin_neon_vceqzv4hf (__a);
17165}
17166
5c493d36 17167__extension__ extern __inline uint16x8_t
17168__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17169vceqzq_f16 (float16x8_t __a)
17170{
17171 return (uint16x8_t)__builtin_neon_vceqzv8hf (__a);
17172}
17173
5c493d36 17174__extension__ extern __inline uint16x4_t
17175__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17176vcge_f16 (float16x4_t __a, float16x4_t __b)
17177{
17178 return (uint16x4_t)__builtin_neon_vcgev4hf (__a, __b);
17179}
17180
5c493d36 17181__extension__ extern __inline uint16x8_t
17182__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17183vcgeq_f16 (float16x8_t __a, float16x8_t __b)
17184{
17185 return (uint16x8_t)__builtin_neon_vcgev8hf (__a, __b);
17186}
17187
5c493d36 17188__extension__ extern __inline uint16x4_t
17189__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17190vcgez_f16 (float16x4_t __a)
17191{
17192 return (uint16x4_t)__builtin_neon_vcgezv4hf (__a);
17193}
17194
5c493d36 17195__extension__ extern __inline uint16x8_t
17196__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17197vcgezq_f16 (float16x8_t __a)
17198{
17199 return (uint16x8_t)__builtin_neon_vcgezv8hf (__a);
17200}
17201
5c493d36 17202__extension__ extern __inline uint16x4_t
17203__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17204vcgt_f16 (float16x4_t __a, float16x4_t __b)
17205{
17206 return (uint16x4_t)__builtin_neon_vcgtv4hf (__a, __b);
17207}
17208
5c493d36 17209__extension__ extern __inline uint16x8_t
17210__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17211vcgtq_f16 (float16x8_t __a, float16x8_t __b)
17212{
17213 return (uint16x8_t)__builtin_neon_vcgtv8hf (__a, __b);
17214}
17215
5c493d36 17216__extension__ extern __inline uint16x4_t
17217__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17218vcgtz_f16 (float16x4_t __a)
17219{
17220 return (uint16x4_t)__builtin_neon_vcgtzv4hf (__a);
17221}
17222
5c493d36 17223__extension__ extern __inline uint16x8_t
17224__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17225vcgtzq_f16 (float16x8_t __a)
17226{
17227 return (uint16x8_t)__builtin_neon_vcgtzv8hf (__a);
17228}
17229
5c493d36 17230__extension__ extern __inline uint16x4_t
17231__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17232vcle_f16 (float16x4_t __a, float16x4_t __b)
17233{
17234 return (uint16x4_t)__builtin_neon_vclev4hf (__a, __b);
17235}
17236
5c493d36 17237__extension__ extern __inline uint16x8_t
17238__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17239vcleq_f16 (float16x8_t __a, float16x8_t __b)
17240{
17241 return (uint16x8_t)__builtin_neon_vclev8hf (__a, __b);
17242}
17243
5c493d36 17244__extension__ extern __inline uint16x4_t
17245__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17246vclez_f16 (float16x4_t __a)
17247{
17248 return (uint16x4_t)__builtin_neon_vclezv4hf (__a);
17249}
17250
5c493d36 17251__extension__ extern __inline uint16x8_t
17252__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17253vclezq_f16 (float16x8_t __a)
17254{
17255 return (uint16x8_t)__builtin_neon_vclezv8hf (__a);
17256}
17257
5c493d36 17258__extension__ extern __inline uint16x4_t
17259__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17260vclt_f16 (float16x4_t __a, float16x4_t __b)
17261{
17262 return (uint16x4_t)__builtin_neon_vcltv4hf (__a, __b);
17263}
17264
5c493d36 17265__extension__ extern __inline uint16x8_t
17266__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17267vcltq_f16 (float16x8_t __a, float16x8_t __b)
17268{
17269 return (uint16x8_t)__builtin_neon_vcltv8hf (__a, __b);
17270}
17271
5c493d36 17272__extension__ extern __inline uint16x4_t
17273__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17274vcltz_f16 (float16x4_t __a)
17275{
17276 return (uint16x4_t)__builtin_neon_vcltzv4hf (__a);
17277}
17278
5c493d36 17279__extension__ extern __inline uint16x8_t
17280__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17281vcltzq_f16 (float16x8_t __a)
17282{
17283 return (uint16x8_t)__builtin_neon_vcltzv8hf (__a);
17284}
17285
5c493d36 17286__extension__ extern __inline float16x4_t
17287__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17288vcvt_f16_s16 (int16x4_t __a)
17289{
17290 return (float16x4_t)__builtin_neon_vcvtsv4hi (__a);
17291}
17292
5c493d36 17293__extension__ extern __inline float16x4_t
17294__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17295vcvt_f16_u16 (uint16x4_t __a)
17296{
17297 return (float16x4_t)__builtin_neon_vcvtuv4hi ((int16x4_t)__a);
17298}
17299
5c493d36 17300__extension__ extern __inline int16x4_t
17301__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17302vcvt_s16_f16 (float16x4_t __a)
17303{
17304 return (int16x4_t)__builtin_neon_vcvtsv4hf (__a);
17305}
17306
5c493d36 17307__extension__ extern __inline uint16x4_t
17308__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17309vcvt_u16_f16 (float16x4_t __a)
17310{
17311 return (uint16x4_t)__builtin_neon_vcvtuv4hf (__a);
17312}
17313
5c493d36 17314__extension__ extern __inline float16x8_t
17315__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17316vcvtq_f16_s16 (int16x8_t __a)
17317{
17318 return (float16x8_t)__builtin_neon_vcvtsv8hi (__a);
17319}
17320
5c493d36 17321__extension__ extern __inline float16x8_t
17322__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17323vcvtq_f16_u16 (uint16x8_t __a)
17324{
17325 return (float16x8_t)__builtin_neon_vcvtuv8hi ((int16x8_t)__a);
17326}
17327
5c493d36 17328__extension__ extern __inline int16x8_t
17329__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17330vcvtq_s16_f16 (float16x8_t __a)
17331{
17332 return (int16x8_t)__builtin_neon_vcvtsv8hf (__a);
17333}
17334
5c493d36 17335__extension__ extern __inline uint16x8_t
17336__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17337vcvtq_u16_f16 (float16x8_t __a)
17338{
17339 return (uint16x8_t)__builtin_neon_vcvtuv8hf (__a);
17340}
17341
5c493d36 17342__extension__ extern __inline int16x4_t
17343__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17344vcvta_s16_f16 (float16x4_t __a)
17345{
17346 return __builtin_neon_vcvtasv4hf (__a);
17347}
17348
5c493d36 17349__extension__ extern __inline uint16x4_t
17350__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17351vcvta_u16_f16 (float16x4_t __a)
17352{
17353 return (uint16x4_t)__builtin_neon_vcvtauv4hf (__a);
17354}
17355
5c493d36 17356__extension__ extern __inline int16x8_t
17357__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17358vcvtaq_s16_f16 (float16x8_t __a)
17359{
17360 return __builtin_neon_vcvtasv8hf (__a);
17361}
17362
5c493d36 17363__extension__ extern __inline uint16x8_t
17364__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17365vcvtaq_u16_f16 (float16x8_t __a)
17366{
17367 return (uint16x8_t)__builtin_neon_vcvtauv8hf (__a);
17368}
17369
5c493d36 17370__extension__ extern __inline int16x4_t
17371__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17372vcvtm_s16_f16 (float16x4_t __a)
17373{
17374 return __builtin_neon_vcvtmsv4hf (__a);
17375}
17376
5c493d36 17377__extension__ extern __inline uint16x4_t
17378__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17379vcvtm_u16_f16 (float16x4_t __a)
17380{
17381 return (uint16x4_t)__builtin_neon_vcvtmuv4hf (__a);
17382}
17383
5c493d36 17384__extension__ extern __inline int16x8_t
17385__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17386vcvtmq_s16_f16 (float16x8_t __a)
17387{
17388 return __builtin_neon_vcvtmsv8hf (__a);
17389}
17390
5c493d36 17391__extension__ extern __inline uint16x8_t
17392__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17393vcvtmq_u16_f16 (float16x8_t __a)
17394{
17395 return (uint16x8_t)__builtin_neon_vcvtmuv8hf (__a);
17396}
17397
5c493d36 17398__extension__ extern __inline int16x4_t
17399__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17400vcvtn_s16_f16 (float16x4_t __a)
17401{
17402 return __builtin_neon_vcvtnsv4hf (__a);
17403}
17404
5c493d36 17405__extension__ extern __inline uint16x4_t
17406__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17407vcvtn_u16_f16 (float16x4_t __a)
17408{
17409 return (uint16x4_t)__builtin_neon_vcvtnuv4hf (__a);
17410}
17411
5c493d36 17412__extension__ extern __inline int16x8_t
17413__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17414vcvtnq_s16_f16 (float16x8_t __a)
17415{
17416 return __builtin_neon_vcvtnsv8hf (__a);
17417}
17418
5c493d36 17419__extension__ extern __inline uint16x8_t
17420__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17421vcvtnq_u16_f16 (float16x8_t __a)
17422{
17423 return (uint16x8_t)__builtin_neon_vcvtnuv8hf (__a);
17424}
17425
5c493d36 17426__extension__ extern __inline int16x4_t
17427__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17428vcvtp_s16_f16 (float16x4_t __a)
17429{
17430 return __builtin_neon_vcvtpsv4hf (__a);
17431}
17432
5c493d36 17433__extension__ extern __inline uint16x4_t
17434__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17435vcvtp_u16_f16 (float16x4_t __a)
17436{
17437 return (uint16x4_t)__builtin_neon_vcvtpuv4hf (__a);
17438}
17439
5c493d36 17440__extension__ extern __inline int16x8_t
17441__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17442vcvtpq_s16_f16 (float16x8_t __a)
17443{
17444 return __builtin_neon_vcvtpsv8hf (__a);
17445}
17446
5c493d36 17447__extension__ extern __inline uint16x8_t
17448__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17449vcvtpq_u16_f16 (float16x8_t __a)
17450{
17451 return (uint16x8_t)__builtin_neon_vcvtpuv8hf (__a);
17452}
17453
5c493d36 17454__extension__ extern __inline float16x4_t
17455__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17456vcvt_n_f16_s16 (int16x4_t __a, const int __b)
17457{
17458 return __builtin_neon_vcvts_nv4hi (__a, __b);
17459}
17460
5c493d36 17461__extension__ extern __inline float16x4_t
17462__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17463vcvt_n_f16_u16 (uint16x4_t __a, const int __b)
17464{
17465 return __builtin_neon_vcvtu_nv4hi ((int16x4_t)__a, __b);
17466}
17467
5c493d36 17468__extension__ extern __inline float16x8_t
17469__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17470vcvtq_n_f16_s16 (int16x8_t __a, const int __b)
17471{
17472 return __builtin_neon_vcvts_nv8hi (__a, __b);
17473}
17474
5c493d36 17475__extension__ extern __inline float16x8_t
17476__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17477vcvtq_n_f16_u16 (uint16x8_t __a, const int __b)
17478{
17479 return __builtin_neon_vcvtu_nv8hi ((int16x8_t)__a, __b);
17480}
17481
5c493d36 17482__extension__ extern __inline int16x4_t
17483__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17484vcvt_n_s16_f16 (float16x4_t __a, const int __b)
17485{
17486 return __builtin_neon_vcvts_nv4hf (__a, __b);
17487}
17488
5c493d36 17489__extension__ extern __inline uint16x4_t
17490__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17491vcvt_n_u16_f16 (float16x4_t __a, const int __b)
17492{
17493 return (uint16x4_t)__builtin_neon_vcvtu_nv4hf (__a, __b);
17494}
17495
5c493d36 17496__extension__ extern __inline int16x8_t
17497__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17498vcvtq_n_s16_f16 (float16x8_t __a, const int __b)
17499{
17500 return __builtin_neon_vcvts_nv8hf (__a, __b);
17501}
17502
5c493d36 17503__extension__ extern __inline uint16x8_t
17504__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17505vcvtq_n_u16_f16 (float16x8_t __a, const int __b)
17506{
17507 return (uint16x8_t)__builtin_neon_vcvtu_nv8hf (__a, __b);
17508}
17509
5c493d36 17510__extension__ extern __inline float16x4_t
17511__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17512vfma_f16 (float16x4_t __a, float16x4_t __b, float16x4_t __c)
17513{
17514 return __builtin_neon_vfmav4hf (__a, __b, __c);
17515}
17516
5c493d36 17517__extension__ extern __inline float16x8_t
17518__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17519vfmaq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c)
17520{
17521 return __builtin_neon_vfmav8hf (__a, __b, __c);
17522}
17523
5c493d36 17524__extension__ extern __inline float16x4_t
17525__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17526vfms_f16 (float16x4_t __a, float16x4_t __b, float16x4_t __c)
17527{
17528 return __builtin_neon_vfmsv4hf (__a, __b, __c);
17529}
17530
5c493d36 17531__extension__ extern __inline float16x8_t
17532__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17533vfmsq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c)
17534{
17535 return __builtin_neon_vfmsv8hf (__a, __b, __c);
17536}
17537
5c493d36 17538__extension__ extern __inline float16x4_t
17539__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17540vmax_f16 (float16x4_t __a, float16x4_t __b)
17541{
17542 return __builtin_neon_vmaxfv4hf (__a, __b);
17543}
17544
5c493d36 17545__extension__ extern __inline float16x8_t
17546__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17547vmaxq_f16 (float16x8_t __a, float16x8_t __b)
17548{
17549 return __builtin_neon_vmaxfv8hf (__a, __b);
17550}
17551
5c493d36 17552__extension__ extern __inline float16x4_t
17553__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17554vmaxnm_f16 (float16x4_t __a, float16x4_t __b)
17555{
17556 return __builtin_neon_vmaxnmv4hf (__a, __b);
17557}
17558
5c493d36 17559__extension__ extern __inline float16x8_t
17560__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17561vmaxnmq_f16 (float16x8_t __a, float16x8_t __b)
17562{
17563 return __builtin_neon_vmaxnmv8hf (__a, __b);
17564}
17565
5c493d36 17566__extension__ extern __inline float16x4_t
17567__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17568vmin_f16 (float16x4_t __a, float16x4_t __b)
17569{
17570 return __builtin_neon_vminfv4hf (__a, __b);
17571}
17572
5c493d36 17573__extension__ extern __inline float16x8_t
17574__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17575vminq_f16 (float16x8_t __a, float16x8_t __b)
17576{
17577 return __builtin_neon_vminfv8hf (__a, __b);
17578}
17579
5c493d36 17580__extension__ extern __inline float16x4_t
17581__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17582vminnm_f16 (float16x4_t __a, float16x4_t __b)
17583{
17584 return __builtin_neon_vminnmv4hf (__a, __b);
17585}
17586
5c493d36 17587__extension__ extern __inline float16x8_t
17588__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17589vminnmq_f16 (float16x8_t __a, float16x8_t __b)
17590{
17591 return __builtin_neon_vminnmv8hf (__a, __b);
17592}
17593
5c493d36 17594__extension__ extern __inline float16x4_t
17595__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17596vmul_f16 (float16x4_t __a, float16x4_t __b)
17597{
1d16e072 17598#ifdef __FAST_MATH__
17599 return __a * __b;
17600#else
34ac15c4 17601 return __builtin_neon_vmulfv4hf (__a, __b);
1d16e072 17602#endif
34ac15c4 17603}
17604
5c493d36 17605__extension__ extern __inline float16x4_t
17606__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17607vmul_lane_f16 (float16x4_t __a, float16x4_t __b, const int __c)
17608{
17609 return __builtin_neon_vmul_lanev4hf (__a, __b, __c);
17610}
17611
5c493d36 17612__extension__ extern __inline float16x4_t
17613__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17614vmul_n_f16 (float16x4_t __a, float16_t __b)
17615{
17616 return __builtin_neon_vmul_nv4hf (__a, __b);
17617}
17618
5c493d36 17619__extension__ extern __inline float16x8_t
17620__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17621vmulq_f16 (float16x8_t __a, float16x8_t __b)
17622{
1d16e072 17623#ifdef __FAST_MATH__
17624 return __a * __b;
17625#else
34ac15c4 17626 return __builtin_neon_vmulfv8hf (__a, __b);
1d16e072 17627#endif
34ac15c4 17628}
17629
5c493d36 17630__extension__ extern __inline float16x8_t
17631__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17632vmulq_lane_f16 (float16x8_t __a, float16x4_t __b, const int __c)
17633{
17634 return __builtin_neon_vmul_lanev8hf (__a, __b, __c);
17635}
17636
5c493d36 17637__extension__ extern __inline float16x8_t
17638__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17639vmulq_n_f16 (float16x8_t __a, float16_t __b)
17640{
17641 return __builtin_neon_vmul_nv8hf (__a, __b);
17642}
17643
5c493d36 17644__extension__ extern __inline float16x4_t
17645__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17646vneg_f16 (float16x4_t __a)
17647{
17648 return __builtin_neon_vnegv4hf (__a);
17649}
17650
5c493d36 17651__extension__ extern __inline float16x8_t
17652__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17653vnegq_f16 (float16x8_t __a)
17654{
17655 return __builtin_neon_vnegv8hf (__a);
17656}
17657
5c493d36 17658__extension__ extern __inline float16x4_t
17659__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17660vpadd_f16 (float16x4_t __a, float16x4_t __b)
17661{
17662 return __builtin_neon_vpaddv4hf (__a, __b);
17663}
17664
5c493d36 17665__extension__ extern __inline float16x4_t
17666__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17667vpmax_f16 (float16x4_t __a, float16x4_t __b)
17668{
17669 return __builtin_neon_vpmaxfv4hf (__a, __b);
17670}
17671
5c493d36 17672__extension__ extern __inline float16x4_t
17673__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17674vpmin_f16 (float16x4_t __a, float16x4_t __b)
17675{
17676 return __builtin_neon_vpminfv4hf (__a, __b);
17677}
17678
5c493d36 17679__extension__ extern __inline float16x4_t
17680__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17681vrecpe_f16 (float16x4_t __a)
17682{
17683 return __builtin_neon_vrecpev4hf (__a);
17684}
17685
5c493d36 17686__extension__ extern __inline float16x8_t
17687__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17688vrecpeq_f16 (float16x8_t __a)
17689{
17690 return __builtin_neon_vrecpev8hf (__a);
17691}
17692
5c493d36 17693__extension__ extern __inline float16x4_t
17694__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17695vrnd_f16 (float16x4_t __a)
17696{
17697 return __builtin_neon_vrndv4hf (__a);
17698}
17699
5c493d36 17700__extension__ extern __inline float16x8_t
17701__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17702vrndq_f16 (float16x8_t __a)
17703{
17704 return __builtin_neon_vrndv8hf (__a);
17705}
17706
5c493d36 17707__extension__ extern __inline float16x4_t
17708__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17709vrnda_f16 (float16x4_t __a)
17710{
17711 return __builtin_neon_vrndav4hf (__a);
17712}
17713
5c493d36 17714__extension__ extern __inline float16x8_t
17715__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17716vrndaq_f16 (float16x8_t __a)
17717{
17718 return __builtin_neon_vrndav8hf (__a);
17719}
17720
5c493d36 17721__extension__ extern __inline float16x4_t
17722__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17723vrndm_f16 (float16x4_t __a)
17724{
17725 return __builtin_neon_vrndmv4hf (__a);
17726}
17727
5c493d36 17728__extension__ extern __inline float16x8_t
17729__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17730vrndmq_f16 (float16x8_t __a)
17731{
17732 return __builtin_neon_vrndmv8hf (__a);
17733}
17734
5c493d36 17735__extension__ extern __inline float16x4_t
17736__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17737vrndn_f16 (float16x4_t __a)
17738{
17739 return __builtin_neon_vrndnv4hf (__a);
17740}
17741
5c493d36 17742__extension__ extern __inline float16x8_t
17743__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17744vrndnq_f16 (float16x8_t __a)
17745{
17746 return __builtin_neon_vrndnv8hf (__a);
17747}
17748
5c493d36 17749__extension__ extern __inline float16x4_t
17750__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17751vrndp_f16 (float16x4_t __a)
17752{
17753 return __builtin_neon_vrndpv4hf (__a);
17754}
17755
5c493d36 17756__extension__ extern __inline float16x8_t
17757__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17758vrndpq_f16 (float16x8_t __a)
17759{
17760 return __builtin_neon_vrndpv8hf (__a);
17761}
17762
5c493d36 17763__extension__ extern __inline float16x4_t
17764__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17765vrndx_f16 (float16x4_t __a)
17766{
17767 return __builtin_neon_vrndxv4hf (__a);
17768}
17769
5c493d36 17770__extension__ extern __inline float16x8_t
17771__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17772vrndxq_f16 (float16x8_t __a)
17773{
17774 return __builtin_neon_vrndxv8hf (__a);
17775}
17776
5c493d36 17777__extension__ extern __inline float16x4_t
17778__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17779vrsqrte_f16 (float16x4_t __a)
17780{
17781 return __builtin_neon_vrsqrtev4hf (__a);
17782}
17783
5c493d36 17784__extension__ extern __inline float16x8_t
17785__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17786vrsqrteq_f16 (float16x8_t __a)
17787{
17788 return __builtin_neon_vrsqrtev8hf (__a);
17789}
17790
5c493d36 17791__extension__ extern __inline float16x4_t
17792__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17793vrecps_f16 (float16x4_t __a, float16x4_t __b)
17794{
17795 return __builtin_neon_vrecpsv4hf (__a, __b);
17796}
17797
5c493d36 17798__extension__ extern __inline float16x8_t
17799__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17800vrecpsq_f16 (float16x8_t __a, float16x8_t __b)
17801{
17802 return __builtin_neon_vrecpsv8hf (__a, __b);
17803}
17804
5c493d36 17805__extension__ extern __inline float16x4_t
17806__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17807vrsqrts_f16 (float16x4_t __a, float16x4_t __b)
17808{
17809 return __builtin_neon_vrsqrtsv4hf (__a, __b);
17810}
17811
5c493d36 17812__extension__ extern __inline float16x8_t
17813__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17814vrsqrtsq_f16 (float16x8_t __a, float16x8_t __b)
17815{
17816 return __builtin_neon_vrsqrtsv8hf (__a, __b);
17817}
17818
5c493d36 17819__extension__ extern __inline float16x4_t
17820__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17821vsub_f16 (float16x4_t __a, float16x4_t __b)
17822{
1d16e072 17823#ifdef __FAST_MATH__
17824 return __a - __b;
17825#else
34ac15c4 17826 return __builtin_neon_vsubv4hf (__a, __b);
1d16e072 17827#endif
34ac15c4 17828}
17829
5c493d36 17830__extension__ extern __inline float16x8_t
17831__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
34ac15c4 17832vsubq_f16 (float16x8_t __a, float16x8_t __b)
17833{
1d16e072 17834#ifdef __FAST_MATH__
17835 return __a - __b;
17836#else
34ac15c4 17837 return __builtin_neon_vsubv8hf (__a, __b);
1d16e072 17838#endif
34ac15c4 17839}
17840
17841#endif /* __ARM_FEATURE_VECTOR_FP16_ARITHMETIC. */
dcbc6813 17842#pragma GCC pop_options
17843
388ce7db 17844 /* Half-precision data processing intrinsics. */
17845#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
17846
5c493d36 17847__extension__ extern __inline float16x4_t
17848__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17849vbsl_f16 (uint16x4_t __a, float16x4_t __b, float16x4_t __c)
17850{
17851 return __builtin_neon_vbslv4hf ((int16x4_t)__a, __b, __c);
17852}
17853
5c493d36 17854__extension__ extern __inline float16x8_t
17855__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17856vbslq_f16 (uint16x8_t __a, float16x8_t __b, float16x8_t __c)
17857{
17858 return __builtin_neon_vbslv8hf ((int16x8_t)__a, __b, __c);
17859}
17860
5c493d36 17861__extension__ extern __inline float16x4_t
17862__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17863vdup_n_f16 (float16_t __a)
17864{
17865 return __builtin_neon_vdup_nv4hf (__a);
17866}
17867
5c493d36 17868__extension__ extern __inline float16x8_t
17869__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17870vdupq_n_f16 (float16_t __a)
17871{
17872 return __builtin_neon_vdup_nv8hf (__a);
17873}
17874
5c493d36 17875__extension__ extern __inline float16x4_t
17876__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17877vdup_lane_f16 (float16x4_t __a, const int __b)
17878{
17879 return __builtin_neon_vdup_lanev4hf (__a, __b);
17880}
17881
5c493d36 17882__extension__ extern __inline float16x8_t
17883__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17884vdupq_lane_f16 (float16x4_t __a, const int __b)
17885{
17886 return __builtin_neon_vdup_lanev8hf (__a, __b);
17887}
17888
5c493d36 17889__extension__ extern __inline float16x4_t
17890__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17891vext_f16 (float16x4_t __a, float16x4_t __b, const int __c)
17892{
17893 return __builtin_neon_vextv4hf (__a, __b, __c);
17894}
17895
5c493d36 17896__extension__ extern __inline float16x8_t
17897__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17898vextq_f16 (float16x8_t __a, float16x8_t __b, const int __c)
17899{
17900 return __builtin_neon_vextv8hf (__a, __b, __c);
17901}
17902
5c493d36 17903__extension__ extern __inline float16x4_t
17904__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17905vmov_n_f16 (float16_t __a)
17906{
17907 return __builtin_neon_vdup_nv4hf (__a);
17908}
17909
5c493d36 17910__extension__ extern __inline float16x8_t
17911__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17912vmovq_n_f16 (float16_t __a)
17913{
17914 return __builtin_neon_vdup_nv8hf (__a);
17915}
17916
5c493d36 17917__extension__ extern __inline float16x4_t
17918__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17919vrev64_f16 (float16x4_t __a)
17920{
17921 return (float16x4_t)__builtin_shuffle (__a, (uint16x4_t){ 3, 2, 1, 0 });
17922}
17923
5c493d36 17924__extension__ extern __inline float16x8_t
17925__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17926vrev64q_f16 (float16x8_t __a)
17927{
17928 return
17929 (float16x8_t)__builtin_shuffle (__a,
17930 (uint16x8_t){ 3, 2, 1, 0, 7, 6, 5, 4 });
17931}
17932
5c493d36 17933__extension__ extern __inline float16x4x2_t
17934__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17935vtrn_f16 (float16x4_t __a, float16x4_t __b)
17936{
17937 float16x4x2_t __rv;
17938#ifdef __ARM_BIG_ENDIAN
17939 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t){ 5, 1, 7, 3 });
17940 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t){ 4, 0, 6, 2 });
17941#else
17942 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t){ 0, 4, 2, 6 });
17943 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t){ 1, 5, 3, 7 });
17944#endif
17945 return __rv;
17946}
17947
5c493d36 17948__extension__ extern __inline float16x8x2_t
17949__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17950vtrnq_f16 (float16x8_t __a, float16x8_t __b)
17951{
17952 float16x8x2_t __rv;
17953#ifdef __ARM_BIG_ENDIAN
17954 __rv.val[0] = __builtin_shuffle (__a, __b,
17955 (uint16x8_t){ 9, 1, 11, 3, 13, 5, 15, 7 });
17956 __rv.val[1] = __builtin_shuffle (__a, __b,
17957 (uint16x8_t){ 8, 0, 10, 2, 12, 4, 14, 6 });
17958#else
17959 __rv.val[0] = __builtin_shuffle (__a, __b,
17960 (uint16x8_t){ 0, 8, 2, 10, 4, 12, 6, 14 });
17961 __rv.val[1] = __builtin_shuffle (__a, __b,
17962 (uint16x8_t){ 1, 9, 3, 11, 5, 13, 7, 15 });
17963#endif
17964 return __rv;
17965}
17966
5c493d36 17967__extension__ extern __inline float16x4x2_t
17968__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17969vuzp_f16 (float16x4_t __a, float16x4_t __b)
17970{
17971 float16x4x2_t __rv;
17972#ifdef __ARM_BIG_ENDIAN
17973 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t){ 5, 7, 1, 3 });
17974 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t){ 4, 6, 0, 2 });
17975#else
17976 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t){ 0, 2, 4, 6 });
17977 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t){ 1, 3, 5, 7 });
17978#endif
17979 return __rv;
17980}
17981
5c493d36 17982__extension__ extern __inline float16x8x2_t
17983__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 17984vuzpq_f16 (float16x8_t __a, float16x8_t __b)
17985{
17986 float16x8x2_t __rv;
17987#ifdef __ARM_BIG_ENDIAN
17988 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
17989 { 5, 7, 1, 3, 13, 15, 9, 11 });
17990 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
17991 { 4, 6, 0, 2, 12, 14, 8, 10 });
17992#else
17993 __rv.val[0] = __builtin_shuffle (__a, __b,
17994 (uint16x8_t){ 0, 2, 4, 6, 8, 10, 12, 14 });
17995 __rv.val[1] = __builtin_shuffle (__a, __b,
17996 (uint16x8_t){ 1, 3, 5, 7, 9, 11, 13, 15 });
17997#endif
17998 return __rv;
17999}
18000
5c493d36 18001__extension__ extern __inline float16x4x2_t
18002__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 18003vzip_f16 (float16x4_t __a, float16x4_t __b)
18004{
18005 float16x4x2_t __rv;
18006#ifdef __ARM_BIG_ENDIAN
18007 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t){ 6, 2, 7, 3 });
18008 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t){ 4, 0, 5, 1 });
18009#else
18010 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t){ 0, 4, 1, 5 });
18011 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t){ 2, 6, 3, 7 });
18012#endif
18013 return __rv;
18014}
18015
5c493d36 18016__extension__ extern __inline float16x8x2_t
18017__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
388ce7db 18018vzipq_f16 (float16x8_t __a, float16x8_t __b)
18019{
18020 float16x8x2_t __rv;
18021#ifdef __ARM_BIG_ENDIAN
18022 __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
18023 { 10, 2, 11, 3, 8, 0, 9, 1 });
18024 __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
18025 { 14, 6, 15, 7, 12, 4, 13, 5 });
18026#else
18027 __rv.val[0] = __builtin_shuffle (__a, __b,
18028 (uint16x8_t){ 0, 8, 1, 9, 2, 10, 3, 11 });
18029 __rv.val[1] = __builtin_shuffle (__a, __b,
18030 (uint16x8_t){ 4, 12, 5, 13, 6, 14, 7, 15 });
18031#endif
18032 return __rv;
18033}
18034
18035#endif
18036
74a5d131 18037/* AdvSIMD Dot Product intrinsics. */
18038
74a5d131 18039#if __ARM_ARCH >= 8
e04cb903 18040#pragma GCC push_options
74a5d131 18041#pragma GCC target ("arch=armv8.2-a+dotprod")
18042
18043__extension__ extern __inline uint32x2_t
18044__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18045vdot_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b)
18046{
18047 return __builtin_neon_udotv8qi_uuuu (__r, __a, __b);
18048}
18049
18050__extension__ extern __inline uint32x4_t
18051__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18052vdotq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b)
18053{
18054 return __builtin_neon_udotv16qi_uuuu (__r, __a, __b);
18055}
18056
18057__extension__ extern __inline int32x2_t
18058__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18059vdot_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b)
18060{
18061 return __builtin_neon_sdotv8qi (__r, __a, __b);
18062}
18063
18064__extension__ extern __inline int32x4_t
18065__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18066vdotq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b)
18067{
18068 return __builtin_neon_sdotv16qi (__r, __a, __b);
18069}
18070
18071__extension__ extern __inline uint32x2_t
18072__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18073vdot_lane_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b, const int __index)
18074{
18075 return __builtin_neon_udot_lanev8qi_uuuus (__r, __a, __b, __index);
18076}
18077
18078__extension__ extern __inline uint32x4_t
18079__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18080vdotq_lane_u32 (uint32x4_t __r, uint8x16_t __a, uint8x8_t __b,
18081 const int __index)
18082{
18083 return __builtin_neon_udot_lanev16qi_uuuus (__r, __a, __b, __index);
18084}
18085
18086__extension__ extern __inline int32x2_t
18087__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18088vdot_lane_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b, const int __index)
18089{
18090 return __builtin_neon_sdot_lanev8qi (__r, __a, __b, __index);
18091}
18092
18093__extension__ extern __inline int32x4_t
18094__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18095vdotq_lane_s32 (int32x4_t __r, int8x16_t __a, int8x8_t __b, const int __index)
18096{
18097 return __builtin_neon_sdot_lanev16qi (__r, __a, __b, __index);
18098}
18099
18100#pragma GCC pop_options
18101#endif
18102
00b2ca01 18103#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
18104#pragma GCC push_options
18105#pragma GCC target ("arch=armv8.2-a+fp16fml")
18106
18107__extension__ extern __inline float32x2_t
18108__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18109vfmlal_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b)
18110{
18111 return __builtin_neon_vfmal_lowv2sf (__r, __a, __b);
18112}
18113
18114__extension__ extern __inline float32x2_t
18115__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18116vfmlsl_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b)
18117{
18118 return __builtin_neon_vfmsl_lowv2sf (__r, __a, __b);
18119}
18120
18121__extension__ extern __inline float32x2_t
18122__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18123vfmlal_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b)
18124{
18125 return __builtin_neon_vfmal_highv2sf (__r, __a, __b);
18126}
18127
18128__extension__ extern __inline float32x2_t
18129__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18130vfmlsl_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b)
18131{
18132 return __builtin_neon_vfmsl_highv2sf (__r, __a, __b);
18133}
18134
18135__extension__ extern __inline float32x4_t
18136__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18137vfmlalq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b)
18138{
18139 return __builtin_neon_vfmal_lowv4sf (__r, __a, __b);
18140}
18141
18142__extension__ extern __inline float32x4_t
18143__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18144vfmlslq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b)
18145{
18146 return __builtin_neon_vfmsl_lowv4sf (__r, __a, __b);
18147}
18148
18149__extension__ extern __inline float32x4_t
18150__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18151vfmlalq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b)
18152{
18153 return __builtin_neon_vfmal_highv4sf (__r, __a, __b);
18154}
18155
18156__extension__ extern __inline float32x4_t
18157__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18158vfmlslq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b)
18159{
18160 return __builtin_neon_vfmsl_highv4sf (__r, __a, __b);
18161}
18162
ecbb9d7d 18163__extension__ extern __inline float32x2_t
18164__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18165vfmlal_lane_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b,
18166 const int __index)
18167{
18168 __builtin_arm_lane_check (4, __index);
18169 return __builtin_neon_vfmal_lane_lowv2sf (__r, __a, __b, __index);
18170}
18171
18172__extension__ extern __inline float32x2_t
18173__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18174vfmlal_lane_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b,
18175 const int __index)
18176{
18177 __builtin_arm_lane_check (4, __index);
18178 return __builtin_neon_vfmal_lane_highv2sf (__r, __a, __b, __index);
18179}
18180
18181__extension__ extern __inline float32x4_t
18182__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18183vfmlalq_laneq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b,
18184 const int __index)
18185{
18186 __builtin_arm_lane_check (8, __index);
18187 return __builtin_neon_vfmal_lane_lowv4sf (__r, __a, __b, __index);
18188}
18189
18190__extension__ extern __inline float32x4_t
18191__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18192vfmlalq_lane_low_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b,
18193 const int __index)
18194{
18195 __builtin_arm_lane_check (4, __index);
18196 return __builtin_neon_vfmal_lane_lowv4hfv4sf (__r, __a, __b, __index);
18197}
18198
18199__extension__ extern __inline float32x2_t
18200__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18201vfmlal_laneq_low_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b,
18202 const int __index)
18203{
18204 __builtin_arm_lane_check (8, __index);
18205 return __builtin_neon_vfmal_lane_lowv8hfv2sf (__r, __a, __b, __index);
18206}
18207
18208__extension__ extern __inline float32x4_t
18209__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18210vfmlalq_laneq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b,
18211 const int __index)
18212{
18213 __builtin_arm_lane_check (8, __index);
18214 return __builtin_neon_vfmal_lane_highv4sf (__r, __a, __b, __index);
18215}
18216
18217__extension__ extern __inline float32x4_t
18218__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18219vfmlalq_lane_high_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b,
18220 const int __index)
18221{
18222 __builtin_arm_lane_check (4, __index);
18223 return __builtin_neon_vfmal_lane_highv4hfv4sf (__r, __a, __b, __index);
18224}
18225
18226__extension__ extern __inline float32x2_t
18227__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18228vfmlal_laneq_high_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b,
18229 const int __index)
18230{
18231 __builtin_arm_lane_check (8, __index);
18232 return __builtin_neon_vfmal_lane_highv8hfv2sf (__r, __a, __b, __index);
18233}
18234
18235__extension__ extern __inline float32x2_t
18236__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18237vfmlsl_lane_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b,
18238 const int __index)
18239{
18240 __builtin_arm_lane_check (4, __index);
18241 return __builtin_neon_vfmsl_lane_lowv2sf (__r, __a, __b, __index);
18242}
18243
18244__extension__ extern __inline float32x2_t
18245__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18246vfmlsl_lane_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b,
18247 const int __index)
18248{
18249 __builtin_arm_lane_check (4, __index);
18250 return __builtin_neon_vfmsl_lane_highv2sf (__r, __a, __b, __index);
18251}
18252
18253__extension__ extern __inline float32x4_t
18254__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18255vfmlslq_laneq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b,
18256 const int __index)
18257{
18258 __builtin_arm_lane_check (8, __index);
18259 return __builtin_neon_vfmsl_lane_lowv4sf (__r, __a, __b, __index);
18260}
18261
18262__extension__ extern __inline float32x4_t
18263__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18264vfmlslq_lane_low_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b,
18265 const int __index)
18266{
18267 __builtin_arm_lane_check (4, __index);
18268 return __builtin_neon_vfmsl_lane_lowv4hfv4sf (__r, __a, __b, __index);
18269}
18270
18271__extension__ extern __inline float32x2_t
18272__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18273vfmlsl_laneq_low_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b,
18274 const int __index)
18275{
18276 __builtin_arm_lane_check (8, __index);
18277 return __builtin_neon_vfmsl_lane_lowv8hfv2sf (__r, __a, __b, __index);
18278}
18279
18280__extension__ extern __inline float32x4_t
18281__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18282vfmlslq_laneq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b,
18283 const int __index)
18284{
18285 __builtin_arm_lane_check (8, __index);
18286 return __builtin_neon_vfmsl_lane_highv4sf (__r, __a, __b, __index);
18287}
18288
18289__extension__ extern __inline float32x4_t
18290__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18291vfmlslq_lane_high_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b,
18292 const int __index)
18293{
18294 __builtin_arm_lane_check (4, __index);
18295 return __builtin_neon_vfmsl_lane_highv4hfv4sf (__r, __a, __b, __index);
18296}
18297
18298__extension__ extern __inline float32x2_t
18299__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
18300vfmlsl_laneq_high_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b,
18301 const int __index)
18302{
18303 __builtin_arm_lane_check (8, __index);
18304 return __builtin_neon_vfmsl_lane_highv8hfv2sf (__r, __a, __b, __index);
18305}
18306
00b2ca01 18307#pragma GCC pop_options
18308#endif
18309
d98a3884 18310#ifdef __cplusplus
18311}
18312#endif
dcbc6813 18313
18314#pragma GCC pop_options
18315
d98a3884 18316#endif
b5b33ba6 18317#endif