1 /* ARM NEON intrinsics include file.
3 Copyright (C) 2011-2013 Free Software Foundation, Inc.
4 Contributed by ARM Ltd.
6 This file is part of GCC.
8 GCC is free software; you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published
10 by the Free Software Foundation; either version 3, or (at your
11 option) any later version.
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.
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.
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/>. */
27 #ifndef _AARCH64_NEON_H_
28 #define _AARCH64_NEON_H_
32 #define __AARCH64_UINT64_C(__C) ((uint64_t) __C)
33 #define __AARCH64_INT64_C(__C) ((int64_t) __C)
35 typedef __builtin_aarch64_simd_qi int8x8_t
36 __attribute__ ((__vector_size__ (8)));
37 typedef __builtin_aarch64_simd_hi int16x4_t
38 __attribute__ ((__vector_size__ (8)));
39 typedef __builtin_aarch64_simd_si int32x2_t
40 __attribute__ ((__vector_size__ (8)));
41 typedef int64_t int64x1_t
;
42 typedef int32_t int32x1_t
;
43 typedef int16_t int16x1_t
;
44 typedef int8_t int8x1_t
;
45 typedef double float64x1_t
;
46 typedef __builtin_aarch64_simd_sf float32x2_t
47 __attribute__ ((__vector_size__ (8)));
48 typedef __builtin_aarch64_simd_poly8 poly8x8_t
49 __attribute__ ((__vector_size__ (8)));
50 typedef __builtin_aarch64_simd_poly16 poly16x4_t
51 __attribute__ ((__vector_size__ (8)));
52 typedef __builtin_aarch64_simd_uqi uint8x8_t
53 __attribute__ ((__vector_size__ (8)));
54 typedef __builtin_aarch64_simd_uhi uint16x4_t
55 __attribute__ ((__vector_size__ (8)));
56 typedef __builtin_aarch64_simd_usi uint32x2_t
57 __attribute__ ((__vector_size__ (8)));
58 typedef uint64_t uint64x1_t
;
59 typedef uint32_t uint32x1_t
;
60 typedef uint16_t uint16x1_t
;
61 typedef uint8_t uint8x1_t
;
62 typedef __builtin_aarch64_simd_qi int8x16_t
63 __attribute__ ((__vector_size__ (16)));
64 typedef __builtin_aarch64_simd_hi int16x8_t
65 __attribute__ ((__vector_size__ (16)));
66 typedef __builtin_aarch64_simd_si int32x4_t
67 __attribute__ ((__vector_size__ (16)));
68 typedef __builtin_aarch64_simd_di int64x2_t
69 __attribute__ ((__vector_size__ (16)));
70 typedef __builtin_aarch64_simd_sf float32x4_t
71 __attribute__ ((__vector_size__ (16)));
72 typedef __builtin_aarch64_simd_df float64x2_t
73 __attribute__ ((__vector_size__ (16)));
74 typedef __builtin_aarch64_simd_poly8 poly8x16_t
75 __attribute__ ((__vector_size__ (16)));
76 typedef __builtin_aarch64_simd_poly16 poly16x8_t
77 __attribute__ ((__vector_size__ (16)));
78 typedef __builtin_aarch64_simd_uqi uint8x16_t
79 __attribute__ ((__vector_size__ (16)));
80 typedef __builtin_aarch64_simd_uhi uint16x8_t
81 __attribute__ ((__vector_size__ (16)));
82 typedef __builtin_aarch64_simd_usi uint32x4_t
83 __attribute__ ((__vector_size__ (16)));
84 typedef __builtin_aarch64_simd_udi uint64x2_t
85 __attribute__ ((__vector_size__ (16)));
87 typedef float float32_t
;
88 typedef double float64_t
;
89 typedef __builtin_aarch64_simd_poly8 poly8_t
;
90 typedef __builtin_aarch64_simd_poly16 poly16_t
;
92 typedef struct int8x8x2_t
97 typedef struct int8x16x2_t
102 typedef struct int16x4x2_t
107 typedef struct int16x8x2_t
112 typedef struct int32x2x2_t
117 typedef struct int32x4x2_t
122 typedef struct int64x1x2_t
127 typedef struct int64x2x2_t
132 typedef struct uint8x8x2_t
137 typedef struct uint8x16x2_t
142 typedef struct uint16x4x2_t
147 typedef struct uint16x8x2_t
152 typedef struct uint32x2x2_t
157 typedef struct uint32x4x2_t
162 typedef struct uint64x1x2_t
167 typedef struct uint64x2x2_t
172 typedef struct float32x2x2_t
177 typedef struct float32x4x2_t
182 typedef struct float64x2x2_t
187 typedef struct float64x1x2_t
192 typedef struct poly8x8x2_t
197 typedef struct poly8x16x2_t
202 typedef struct poly16x4x2_t
207 typedef struct poly16x8x2_t
212 typedef struct int8x8x3_t
217 typedef struct int8x16x3_t
222 typedef struct int16x4x3_t
227 typedef struct int16x8x3_t
232 typedef struct int32x2x3_t
237 typedef struct int32x4x3_t
242 typedef struct int64x1x3_t
247 typedef struct int64x2x3_t
252 typedef struct uint8x8x3_t
257 typedef struct uint8x16x3_t
262 typedef struct uint16x4x3_t
267 typedef struct uint16x8x3_t
272 typedef struct uint32x2x3_t
277 typedef struct uint32x4x3_t
282 typedef struct uint64x1x3_t
287 typedef struct uint64x2x3_t
292 typedef struct float32x2x3_t
297 typedef struct float32x4x3_t
302 typedef struct float64x2x3_t
307 typedef struct float64x1x3_t
312 typedef struct poly8x8x3_t
317 typedef struct poly8x16x3_t
322 typedef struct poly16x4x3_t
327 typedef struct poly16x8x3_t
332 typedef struct int8x8x4_t
337 typedef struct int8x16x4_t
342 typedef struct int16x4x4_t
347 typedef struct int16x8x4_t
352 typedef struct int32x2x4_t
357 typedef struct int32x4x4_t
362 typedef struct int64x1x4_t
367 typedef struct int64x2x4_t
372 typedef struct uint8x8x4_t
377 typedef struct uint8x16x4_t
382 typedef struct uint16x4x4_t
387 typedef struct uint16x8x4_t
392 typedef struct uint32x2x4_t
397 typedef struct uint32x4x4_t
402 typedef struct uint64x1x4_t
407 typedef struct uint64x2x4_t
412 typedef struct float32x2x4_t
417 typedef struct float32x4x4_t
422 typedef struct float64x2x4_t
427 typedef struct float64x1x4_t
432 typedef struct poly8x8x4_t
437 typedef struct poly8x16x4_t
442 typedef struct poly16x4x4_t
447 typedef struct poly16x8x4_t
452 /* vget_lane internal macros. */
454 #define __aarch64_vget_lane_any(__size, __cast_ret, __cast_a, __a, __b) \
456 __builtin_aarch64_get_lane##__size (__cast_a __a, __b))
458 #define __aarch64_vget_lane_f32(__a, __b) \
459 __aarch64_vget_lane_any (v2sf, , , __a, __b)
460 #define __aarch64_vget_lane_f64(__a, __b) (__a)
462 #define __aarch64_vget_lane_p8(__a, __b) \
463 __aarch64_vget_lane_any (v8qi, (poly8_t), (int8x8_t), __a, __b)
464 #define __aarch64_vget_lane_p16(__a, __b) \
465 __aarch64_vget_lane_any (v4hi, (poly16_t), (int16x4_t), __a, __b)
467 #define __aarch64_vget_lane_s8(__a, __b) \
468 __aarch64_vget_lane_any (v8qi, , ,__a, __b)
469 #define __aarch64_vget_lane_s16(__a, __b) \
470 __aarch64_vget_lane_any (v4hi, , ,__a, __b)
471 #define __aarch64_vget_lane_s32(__a, __b) \
472 __aarch64_vget_lane_any (v2si, , ,__a, __b)
473 #define __aarch64_vget_lane_s64(__a, __b) (__a)
475 #define __aarch64_vget_lane_u8(__a, __b) \
476 __aarch64_vget_lane_any (v8qi, (uint8_t), (int8x8_t), __a, __b)
477 #define __aarch64_vget_lane_u16(__a, __b) \
478 __aarch64_vget_lane_any (v4hi, (uint16_t), (int16x4_t), __a, __b)
479 #define __aarch64_vget_lane_u32(__a, __b) \
480 __aarch64_vget_lane_any (v2si, (uint32_t), (int32x2_t), __a, __b)
481 #define __aarch64_vget_lane_u64(__a, __b) (__a)
483 #define __aarch64_vgetq_lane_f32(__a, __b) \
484 __aarch64_vget_lane_any (v4sf, , , __a, __b)
485 #define __aarch64_vgetq_lane_f64(__a, __b) \
486 __aarch64_vget_lane_any (v2df, , , __a, __b)
488 #define __aarch64_vgetq_lane_p8(__a, __b) \
489 __aarch64_vget_lane_any (v16qi, (poly8_t), (int8x16_t), __a, __b)
490 #define __aarch64_vgetq_lane_p16(__a, __b) \
491 __aarch64_vget_lane_any (v8hi, (poly16_t), (int16x8_t), __a, __b)
493 #define __aarch64_vgetq_lane_s8(__a, __b) \
494 __aarch64_vget_lane_any (v16qi, , ,__a, __b)
495 #define __aarch64_vgetq_lane_s16(__a, __b) \
496 __aarch64_vget_lane_any (v8hi, , ,__a, __b)
497 #define __aarch64_vgetq_lane_s32(__a, __b) \
498 __aarch64_vget_lane_any (v4si, , ,__a, __b)
499 #define __aarch64_vgetq_lane_s64(__a, __b) \
500 __aarch64_vget_lane_any (v2di, , ,__a, __b)
502 #define __aarch64_vgetq_lane_u8(__a, __b) \
503 __aarch64_vget_lane_any (v16qi, (uint8_t), (int8x16_t), __a, __b)
504 #define __aarch64_vgetq_lane_u16(__a, __b) \
505 __aarch64_vget_lane_any (v8hi, (uint16_t), (int16x8_t), __a, __b)
506 #define __aarch64_vgetq_lane_u32(__a, __b) \
507 __aarch64_vget_lane_any (v4si, (uint32_t), (int32x4_t), __a, __b)
508 #define __aarch64_vgetq_lane_u64(__a, __b) \
509 __aarch64_vget_lane_any (v2di, (uint64_t), (int64x2_t), __a, __b)
511 /* __aarch64_vdup_lane internal macros. */
512 #define __aarch64_vdup_lane_any(__size, __q1, __q2, __a, __b) \
513 vdup##__q1##_n_##__size (__aarch64_vget##__q2##_lane_##__size (__a, __b))
515 #define __aarch64_vdup_lane_f32(__a, __b) \
516 __aarch64_vdup_lane_any (f32, , , __a, __b)
517 #define __aarch64_vdup_lane_f64(__a, __b) (__a)
518 #define __aarch64_vdup_lane_p8(__a, __b) \
519 __aarch64_vdup_lane_any (p8, , , __a, __b)
520 #define __aarch64_vdup_lane_p16(__a, __b) \
521 __aarch64_vdup_lane_any (p16, , , __a, __b)
522 #define __aarch64_vdup_lane_s8(__a, __b) \
523 __aarch64_vdup_lane_any (s8, , , __a, __b)
524 #define __aarch64_vdup_lane_s16(__a, __b) \
525 __aarch64_vdup_lane_any (s16, , , __a, __b)
526 #define __aarch64_vdup_lane_s32(__a, __b) \
527 __aarch64_vdup_lane_any (s32, , , __a, __b)
528 #define __aarch64_vdup_lane_s64(__a, __b) (__a)
529 #define __aarch64_vdup_lane_u8(__a, __b) \
530 __aarch64_vdup_lane_any (u8, , , __a, __b)
531 #define __aarch64_vdup_lane_u16(__a, __b) \
532 __aarch64_vdup_lane_any (u16, , , __a, __b)
533 #define __aarch64_vdup_lane_u32(__a, __b) \
534 __aarch64_vdup_lane_any (u32, , , __a, __b)
535 #define __aarch64_vdup_lane_u64(__a, __b) (__a)
537 /* __aarch64_vdup_laneq internal macros. */
538 #define __aarch64_vdup_laneq_f32(__a, __b) \
539 __aarch64_vdup_lane_any (f32, , q, __a, __b)
540 #define __aarch64_vdup_laneq_f64(__a, __b) \
541 __aarch64_vdup_lane_any (f64, , q, __a, __b)
542 #define __aarch64_vdup_laneq_p8(__a, __b) \
543 __aarch64_vdup_lane_any (p8, , q, __a, __b)
544 #define __aarch64_vdup_laneq_p16(__a, __b) \
545 __aarch64_vdup_lane_any (p16, , q, __a, __b)
546 #define __aarch64_vdup_laneq_s8(__a, __b) \
547 __aarch64_vdup_lane_any (s8, , q, __a, __b)
548 #define __aarch64_vdup_laneq_s16(__a, __b) \
549 __aarch64_vdup_lane_any (s16, , q, __a, __b)
550 #define __aarch64_vdup_laneq_s32(__a, __b) \
551 __aarch64_vdup_lane_any (s32, , q, __a, __b)
552 #define __aarch64_vdup_laneq_s64(__a, __b) \
553 __aarch64_vdup_lane_any (s64, , q, __a, __b)
554 #define __aarch64_vdup_laneq_u8(__a, __b) \
555 __aarch64_vdup_lane_any (u8, , q, __a, __b)
556 #define __aarch64_vdup_laneq_u16(__a, __b) \
557 __aarch64_vdup_lane_any (u16, , q, __a, __b)
558 #define __aarch64_vdup_laneq_u32(__a, __b) \
559 __aarch64_vdup_lane_any (u32, , q, __a, __b)
560 #define __aarch64_vdup_laneq_u64(__a, __b) \
561 __aarch64_vdup_lane_any (u64, , q, __a, __b)
563 /* __aarch64_vdupq_lane internal macros. */
564 #define __aarch64_vdupq_lane_f32(__a, __b) \
565 __aarch64_vdup_lane_any (f32, q, , __a, __b)
566 #define __aarch64_vdupq_lane_f64(__a, __b) (vdupq_n_f64 (__a))
567 #define __aarch64_vdupq_lane_p8(__a, __b) \
568 __aarch64_vdup_lane_any (p8, q, , __a, __b)
569 #define __aarch64_vdupq_lane_p16(__a, __b) \
570 __aarch64_vdup_lane_any (p16, q, , __a, __b)
571 #define __aarch64_vdupq_lane_s8(__a, __b) \
572 __aarch64_vdup_lane_any (s8, q, , __a, __b)
573 #define __aarch64_vdupq_lane_s16(__a, __b) \
574 __aarch64_vdup_lane_any (s16, q, , __a, __b)
575 #define __aarch64_vdupq_lane_s32(__a, __b) \
576 __aarch64_vdup_lane_any (s32, q, , __a, __b)
577 #define __aarch64_vdupq_lane_s64(__a, __b) (vdupq_n_s64 (__a))
578 #define __aarch64_vdupq_lane_u8(__a, __b) \
579 __aarch64_vdup_lane_any (u8, q, , __a, __b)
580 #define __aarch64_vdupq_lane_u16(__a, __b) \
581 __aarch64_vdup_lane_any (u16, q, , __a, __b)
582 #define __aarch64_vdupq_lane_u32(__a, __b) \
583 __aarch64_vdup_lane_any (u32, q, , __a, __b)
584 #define __aarch64_vdupq_lane_u64(__a, __b) (vdupq_n_u64 (__a))
586 /* __aarch64_vdupq_laneq internal macros. */
587 #define __aarch64_vdupq_laneq_f32(__a, __b) \
588 __aarch64_vdup_lane_any (f32, q, q, __a, __b)
589 #define __aarch64_vdupq_laneq_f64(__a, __b) \
590 __aarch64_vdup_lane_any (f64, q, q, __a, __b)
591 #define __aarch64_vdupq_laneq_p8(__a, __b) \
592 __aarch64_vdup_lane_any (p8, q, q, __a, __b)
593 #define __aarch64_vdupq_laneq_p16(__a, __b) \
594 __aarch64_vdup_lane_any (p16, q, q, __a, __b)
595 #define __aarch64_vdupq_laneq_s8(__a, __b) \
596 __aarch64_vdup_lane_any (s8, q, q, __a, __b)
597 #define __aarch64_vdupq_laneq_s16(__a, __b) \
598 __aarch64_vdup_lane_any (s16, q, q, __a, __b)
599 #define __aarch64_vdupq_laneq_s32(__a, __b) \
600 __aarch64_vdup_lane_any (s32, q, q, __a, __b)
601 #define __aarch64_vdupq_laneq_s64(__a, __b) \
602 __aarch64_vdup_lane_any (s64, q, q, __a, __b)
603 #define __aarch64_vdupq_laneq_u8(__a, __b) \
604 __aarch64_vdup_lane_any (u8, q, q, __a, __b)
605 #define __aarch64_vdupq_laneq_u16(__a, __b) \
606 __aarch64_vdup_lane_any (u16, q, q, __a, __b)
607 #define __aarch64_vdupq_laneq_u32(__a, __b) \
608 __aarch64_vdup_lane_any (u32, q, q, __a, __b)
609 #define __aarch64_vdupq_laneq_u64(__a, __b) \
610 __aarch64_vdup_lane_any (u64, q, q, __a, __b)
613 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
614 vadd_s8 (int8x8_t __a
, int8x8_t __b
)
619 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
620 vadd_s16 (int16x4_t __a
, int16x4_t __b
)
625 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
626 vadd_s32 (int32x2_t __a
, int32x2_t __b
)
631 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
632 vadd_f32 (float32x2_t __a
, float32x2_t __b
)
637 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
638 vadd_u8 (uint8x8_t __a
, uint8x8_t __b
)
643 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
644 vadd_u16 (uint16x4_t __a
, uint16x4_t __b
)
649 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
650 vadd_u32 (uint32x2_t __a
, uint32x2_t __b
)
655 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
656 vadd_s64 (int64x1_t __a
, int64x1_t __b
)
661 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
662 vadd_u64 (uint64x1_t __a
, uint64x1_t __b
)
667 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
668 vaddq_s8 (int8x16_t __a
, int8x16_t __b
)
673 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
674 vaddq_s16 (int16x8_t __a
, int16x8_t __b
)
679 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
680 vaddq_s32 (int32x4_t __a
, int32x4_t __b
)
685 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
686 vaddq_s64 (int64x2_t __a
, int64x2_t __b
)
691 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
692 vaddq_f32 (float32x4_t __a
, float32x4_t __b
)
697 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
698 vaddq_f64 (float64x2_t __a
, float64x2_t __b
)
703 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
704 vaddq_u8 (uint8x16_t __a
, uint8x16_t __b
)
709 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
710 vaddq_u16 (uint16x8_t __a
, uint16x8_t __b
)
715 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
716 vaddq_u32 (uint32x4_t __a
, uint32x4_t __b
)
721 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
722 vaddq_u64 (uint64x2_t __a
, uint64x2_t __b
)
727 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
728 vaddl_s8 (int8x8_t __a
, int8x8_t __b
)
730 return (int16x8_t
) __builtin_aarch64_saddlv8qi (__a
, __b
);
733 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
734 vaddl_s16 (int16x4_t __a
, int16x4_t __b
)
736 return (int32x4_t
) __builtin_aarch64_saddlv4hi (__a
, __b
);
739 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
740 vaddl_s32 (int32x2_t __a
, int32x2_t __b
)
742 return (int64x2_t
) __builtin_aarch64_saddlv2si (__a
, __b
);
745 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
746 vaddl_u8 (uint8x8_t __a
, uint8x8_t __b
)
748 return (uint16x8_t
) __builtin_aarch64_uaddlv8qi ((int8x8_t
) __a
,
752 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
753 vaddl_u16 (uint16x4_t __a
, uint16x4_t __b
)
755 return (uint32x4_t
) __builtin_aarch64_uaddlv4hi ((int16x4_t
) __a
,
759 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
760 vaddl_u32 (uint32x2_t __a
, uint32x2_t __b
)
762 return (uint64x2_t
) __builtin_aarch64_uaddlv2si ((int32x2_t
) __a
,
766 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
767 vaddl_high_s8 (int8x16_t __a
, int8x16_t __b
)
769 return (int16x8_t
) __builtin_aarch64_saddl2v16qi (__a
, __b
);
772 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
773 vaddl_high_s16 (int16x8_t __a
, int16x8_t __b
)
775 return (int32x4_t
) __builtin_aarch64_saddl2v8hi (__a
, __b
);
778 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
779 vaddl_high_s32 (int32x4_t __a
, int32x4_t __b
)
781 return (int64x2_t
) __builtin_aarch64_saddl2v4si (__a
, __b
);
784 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
785 vaddl_high_u8 (uint8x16_t __a
, uint8x16_t __b
)
787 return (uint16x8_t
) __builtin_aarch64_uaddl2v16qi ((int8x16_t
) __a
,
791 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
792 vaddl_high_u16 (uint16x8_t __a
, uint16x8_t __b
)
794 return (uint32x4_t
) __builtin_aarch64_uaddl2v8hi ((int16x8_t
) __a
,
798 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
799 vaddl_high_u32 (uint32x4_t __a
, uint32x4_t __b
)
801 return (uint64x2_t
) __builtin_aarch64_uaddl2v4si ((int32x4_t
) __a
,
805 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
806 vaddw_s8 (int16x8_t __a
, int8x8_t __b
)
808 return (int16x8_t
) __builtin_aarch64_saddwv8qi (__a
, __b
);
811 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
812 vaddw_s16 (int32x4_t __a
, int16x4_t __b
)
814 return (int32x4_t
) __builtin_aarch64_saddwv4hi (__a
, __b
);
817 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
818 vaddw_s32 (int64x2_t __a
, int32x2_t __b
)
820 return (int64x2_t
) __builtin_aarch64_saddwv2si (__a
, __b
);
823 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
824 vaddw_u8 (uint16x8_t __a
, uint8x8_t __b
)
826 return (uint16x8_t
) __builtin_aarch64_uaddwv8qi ((int16x8_t
) __a
,
830 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
831 vaddw_u16 (uint32x4_t __a
, uint16x4_t __b
)
833 return (uint32x4_t
) __builtin_aarch64_uaddwv4hi ((int32x4_t
) __a
,
837 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
838 vaddw_u32 (uint64x2_t __a
, uint32x2_t __b
)
840 return (uint64x2_t
) __builtin_aarch64_uaddwv2si ((int64x2_t
) __a
,
844 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
845 vaddw_high_s8 (int16x8_t __a
, int8x16_t __b
)
847 return (int16x8_t
) __builtin_aarch64_saddw2v16qi (__a
, __b
);
850 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
851 vaddw_high_s16 (int32x4_t __a
, int16x8_t __b
)
853 return (int32x4_t
) __builtin_aarch64_saddw2v8hi (__a
, __b
);
856 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
857 vaddw_high_s32 (int64x2_t __a
, int32x4_t __b
)
859 return (int64x2_t
) __builtin_aarch64_saddw2v4si (__a
, __b
);
862 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
863 vaddw_high_u8 (uint16x8_t __a
, uint8x16_t __b
)
865 return (uint16x8_t
) __builtin_aarch64_uaddw2v16qi ((int16x8_t
) __a
,
869 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
870 vaddw_high_u16 (uint32x4_t __a
, uint16x8_t __b
)
872 return (uint32x4_t
) __builtin_aarch64_uaddw2v8hi ((int32x4_t
) __a
,
876 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
877 vaddw_high_u32 (uint64x2_t __a
, uint32x4_t __b
)
879 return (uint64x2_t
) __builtin_aarch64_uaddw2v4si ((int64x2_t
) __a
,
883 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
884 vhadd_s8 (int8x8_t __a
, int8x8_t __b
)
886 return (int8x8_t
) __builtin_aarch64_shaddv8qi (__a
, __b
);
889 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
890 vhadd_s16 (int16x4_t __a
, int16x4_t __b
)
892 return (int16x4_t
) __builtin_aarch64_shaddv4hi (__a
, __b
);
895 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
896 vhadd_s32 (int32x2_t __a
, int32x2_t __b
)
898 return (int32x2_t
) __builtin_aarch64_shaddv2si (__a
, __b
);
901 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
902 vhadd_u8 (uint8x8_t __a
, uint8x8_t __b
)
904 return (uint8x8_t
) __builtin_aarch64_uhaddv8qi ((int8x8_t
) __a
,
908 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
909 vhadd_u16 (uint16x4_t __a
, uint16x4_t __b
)
911 return (uint16x4_t
) __builtin_aarch64_uhaddv4hi ((int16x4_t
) __a
,
915 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
916 vhadd_u32 (uint32x2_t __a
, uint32x2_t __b
)
918 return (uint32x2_t
) __builtin_aarch64_uhaddv2si ((int32x2_t
) __a
,
922 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
923 vhaddq_s8 (int8x16_t __a
, int8x16_t __b
)
925 return (int8x16_t
) __builtin_aarch64_shaddv16qi (__a
, __b
);
928 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
929 vhaddq_s16 (int16x8_t __a
, int16x8_t __b
)
931 return (int16x8_t
) __builtin_aarch64_shaddv8hi (__a
, __b
);
934 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
935 vhaddq_s32 (int32x4_t __a
, int32x4_t __b
)
937 return (int32x4_t
) __builtin_aarch64_shaddv4si (__a
, __b
);
940 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
941 vhaddq_u8 (uint8x16_t __a
, uint8x16_t __b
)
943 return (uint8x16_t
) __builtin_aarch64_uhaddv16qi ((int8x16_t
) __a
,
947 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
948 vhaddq_u16 (uint16x8_t __a
, uint16x8_t __b
)
950 return (uint16x8_t
) __builtin_aarch64_uhaddv8hi ((int16x8_t
) __a
,
954 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
955 vhaddq_u32 (uint32x4_t __a
, uint32x4_t __b
)
957 return (uint32x4_t
) __builtin_aarch64_uhaddv4si ((int32x4_t
) __a
,
961 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
962 vrhadd_s8 (int8x8_t __a
, int8x8_t __b
)
964 return (int8x8_t
) __builtin_aarch64_srhaddv8qi (__a
, __b
);
967 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
968 vrhadd_s16 (int16x4_t __a
, int16x4_t __b
)
970 return (int16x4_t
) __builtin_aarch64_srhaddv4hi (__a
, __b
);
973 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
974 vrhadd_s32 (int32x2_t __a
, int32x2_t __b
)
976 return (int32x2_t
) __builtin_aarch64_srhaddv2si (__a
, __b
);
979 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
980 vrhadd_u8 (uint8x8_t __a
, uint8x8_t __b
)
982 return (uint8x8_t
) __builtin_aarch64_urhaddv8qi ((int8x8_t
) __a
,
986 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
987 vrhadd_u16 (uint16x4_t __a
, uint16x4_t __b
)
989 return (uint16x4_t
) __builtin_aarch64_urhaddv4hi ((int16x4_t
) __a
,
993 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
994 vrhadd_u32 (uint32x2_t __a
, uint32x2_t __b
)
996 return (uint32x2_t
) __builtin_aarch64_urhaddv2si ((int32x2_t
) __a
,
1000 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1001 vrhaddq_s8 (int8x16_t __a
, int8x16_t __b
)
1003 return (int8x16_t
) __builtin_aarch64_srhaddv16qi (__a
, __b
);
1006 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1007 vrhaddq_s16 (int16x8_t __a
, int16x8_t __b
)
1009 return (int16x8_t
) __builtin_aarch64_srhaddv8hi (__a
, __b
);
1012 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1013 vrhaddq_s32 (int32x4_t __a
, int32x4_t __b
)
1015 return (int32x4_t
) __builtin_aarch64_srhaddv4si (__a
, __b
);
1018 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1019 vrhaddq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1021 return (uint8x16_t
) __builtin_aarch64_urhaddv16qi ((int8x16_t
) __a
,
1025 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1026 vrhaddq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1028 return (uint16x8_t
) __builtin_aarch64_urhaddv8hi ((int16x8_t
) __a
,
1032 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1033 vrhaddq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1035 return (uint32x4_t
) __builtin_aarch64_urhaddv4si ((int32x4_t
) __a
,
1039 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1040 vaddhn_s16 (int16x8_t __a
, int16x8_t __b
)
1042 return (int8x8_t
) __builtin_aarch64_addhnv8hi (__a
, __b
);
1045 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1046 vaddhn_s32 (int32x4_t __a
, int32x4_t __b
)
1048 return (int16x4_t
) __builtin_aarch64_addhnv4si (__a
, __b
);
1051 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1052 vaddhn_s64 (int64x2_t __a
, int64x2_t __b
)
1054 return (int32x2_t
) __builtin_aarch64_addhnv2di (__a
, __b
);
1057 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1058 vaddhn_u16 (uint16x8_t __a
, uint16x8_t __b
)
1060 return (uint8x8_t
) __builtin_aarch64_addhnv8hi ((int16x8_t
) __a
,
1064 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1065 vaddhn_u32 (uint32x4_t __a
, uint32x4_t __b
)
1067 return (uint16x4_t
) __builtin_aarch64_addhnv4si ((int32x4_t
) __a
,
1071 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1072 vaddhn_u64 (uint64x2_t __a
, uint64x2_t __b
)
1074 return (uint32x2_t
) __builtin_aarch64_addhnv2di ((int64x2_t
) __a
,
1078 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1079 vraddhn_s16 (int16x8_t __a
, int16x8_t __b
)
1081 return (int8x8_t
) __builtin_aarch64_raddhnv8hi (__a
, __b
);
1084 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1085 vraddhn_s32 (int32x4_t __a
, int32x4_t __b
)
1087 return (int16x4_t
) __builtin_aarch64_raddhnv4si (__a
, __b
);
1090 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1091 vraddhn_s64 (int64x2_t __a
, int64x2_t __b
)
1093 return (int32x2_t
) __builtin_aarch64_raddhnv2di (__a
, __b
);
1096 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1097 vraddhn_u16 (uint16x8_t __a
, uint16x8_t __b
)
1099 return (uint8x8_t
) __builtin_aarch64_raddhnv8hi ((int16x8_t
) __a
,
1103 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1104 vraddhn_u32 (uint32x4_t __a
, uint32x4_t __b
)
1106 return (uint16x4_t
) __builtin_aarch64_raddhnv4si ((int32x4_t
) __a
,
1110 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1111 vraddhn_u64 (uint64x2_t __a
, uint64x2_t __b
)
1113 return (uint32x2_t
) __builtin_aarch64_raddhnv2di ((int64x2_t
) __a
,
1117 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1118 vaddhn_high_s16 (int8x8_t __a
, int16x8_t __b
, int16x8_t __c
)
1120 return (int8x16_t
) __builtin_aarch64_addhn2v8hi (__a
, __b
, __c
);
1123 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1124 vaddhn_high_s32 (int16x4_t __a
, int32x4_t __b
, int32x4_t __c
)
1126 return (int16x8_t
) __builtin_aarch64_addhn2v4si (__a
, __b
, __c
);
1129 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1130 vaddhn_high_s64 (int32x2_t __a
, int64x2_t __b
, int64x2_t __c
)
1132 return (int32x4_t
) __builtin_aarch64_addhn2v2di (__a
, __b
, __c
);
1135 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1136 vaddhn_high_u16 (uint8x8_t __a
, uint16x8_t __b
, uint16x8_t __c
)
1138 return (uint8x16_t
) __builtin_aarch64_addhn2v8hi ((int8x8_t
) __a
,
1143 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1144 vaddhn_high_u32 (uint16x4_t __a
, uint32x4_t __b
, uint32x4_t __c
)
1146 return (uint16x8_t
) __builtin_aarch64_addhn2v4si ((int16x4_t
) __a
,
1151 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1152 vaddhn_high_u64 (uint32x2_t __a
, uint64x2_t __b
, uint64x2_t __c
)
1154 return (uint32x4_t
) __builtin_aarch64_addhn2v2di ((int32x2_t
) __a
,
1159 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1160 vraddhn_high_s16 (int8x8_t __a
, int16x8_t __b
, int16x8_t __c
)
1162 return (int8x16_t
) __builtin_aarch64_raddhn2v8hi (__a
, __b
, __c
);
1165 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1166 vraddhn_high_s32 (int16x4_t __a
, int32x4_t __b
, int32x4_t __c
)
1168 return (int16x8_t
) __builtin_aarch64_raddhn2v4si (__a
, __b
, __c
);
1171 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1172 vraddhn_high_s64 (int32x2_t __a
, int64x2_t __b
, int64x2_t __c
)
1174 return (int32x4_t
) __builtin_aarch64_raddhn2v2di (__a
, __b
, __c
);
1177 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1178 vraddhn_high_u16 (uint8x8_t __a
, uint16x8_t __b
, uint16x8_t __c
)
1180 return (uint8x16_t
) __builtin_aarch64_raddhn2v8hi ((int8x8_t
) __a
,
1185 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1186 vraddhn_high_u32 (uint16x4_t __a
, uint32x4_t __b
, uint32x4_t __c
)
1188 return (uint16x8_t
) __builtin_aarch64_raddhn2v4si ((int16x4_t
) __a
,
1193 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1194 vraddhn_high_u64 (uint32x2_t __a
, uint64x2_t __b
, uint64x2_t __c
)
1196 return (uint32x4_t
) __builtin_aarch64_raddhn2v2di ((int32x2_t
) __a
,
1201 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
1202 vdiv_f32 (float32x2_t __a
, float32x2_t __b
)
1207 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
1208 vdivq_f32 (float32x4_t __a
, float32x4_t __b
)
1213 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
1214 vdivq_f64 (float64x2_t __a
, float64x2_t __b
)
1219 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1220 vmul_s8 (int8x8_t __a
, int8x8_t __b
)
1225 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1226 vmul_s16 (int16x4_t __a
, int16x4_t __b
)
1231 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1232 vmul_s32 (int32x2_t __a
, int32x2_t __b
)
1237 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
1238 vmul_f32 (float32x2_t __a
, float32x2_t __b
)
1243 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1244 vmul_u8 (uint8x8_t __a
, uint8x8_t __b
)
1249 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1250 vmul_u16 (uint16x4_t __a
, uint16x4_t __b
)
1255 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1256 vmul_u32 (uint32x2_t __a
, uint32x2_t __b
)
1261 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
1262 vmul_p8 (poly8x8_t __a
, poly8x8_t __b
)
1264 return (poly8x8_t
) __builtin_aarch64_pmulv8qi ((int8x8_t
) __a
,
1268 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1269 vmulq_s8 (int8x16_t __a
, int8x16_t __b
)
1274 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1275 vmulq_s16 (int16x8_t __a
, int16x8_t __b
)
1280 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1281 vmulq_s32 (int32x4_t __a
, int32x4_t __b
)
1286 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
1287 vmulq_f32 (float32x4_t __a
, float32x4_t __b
)
1292 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
1293 vmulq_f64 (float64x2_t __a
, float64x2_t __b
)
1298 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1299 vmulq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1304 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1305 vmulq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1310 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1311 vmulq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1316 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
1317 vmulq_p8 (poly8x16_t __a
, poly8x16_t __b
)
1319 return (poly8x16_t
) __builtin_aarch64_pmulv16qi ((int8x16_t
) __a
,
1323 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1324 vand_s8 (int8x8_t __a
, int8x8_t __b
)
1329 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1330 vand_s16 (int16x4_t __a
, int16x4_t __b
)
1335 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1336 vand_s32 (int32x2_t __a
, int32x2_t __b
)
1341 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1342 vand_u8 (uint8x8_t __a
, uint8x8_t __b
)
1347 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1348 vand_u16 (uint16x4_t __a
, uint16x4_t __b
)
1353 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1354 vand_u32 (uint32x2_t __a
, uint32x2_t __b
)
1359 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
1360 vand_s64 (int64x1_t __a
, int64x1_t __b
)
1365 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
1366 vand_u64 (uint64x1_t __a
, uint64x1_t __b
)
1371 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1372 vandq_s8 (int8x16_t __a
, int8x16_t __b
)
1377 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1378 vandq_s16 (int16x8_t __a
, int16x8_t __b
)
1383 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1384 vandq_s32 (int32x4_t __a
, int32x4_t __b
)
1389 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1390 vandq_s64 (int64x2_t __a
, int64x2_t __b
)
1395 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1396 vandq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1401 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1402 vandq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1407 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1408 vandq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1413 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1414 vandq_u64 (uint64x2_t __a
, uint64x2_t __b
)
1419 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1420 vorr_s8 (int8x8_t __a
, int8x8_t __b
)
1425 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1426 vorr_s16 (int16x4_t __a
, int16x4_t __b
)
1431 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1432 vorr_s32 (int32x2_t __a
, int32x2_t __b
)
1437 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1438 vorr_u8 (uint8x8_t __a
, uint8x8_t __b
)
1443 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1444 vorr_u16 (uint16x4_t __a
, uint16x4_t __b
)
1449 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1450 vorr_u32 (uint32x2_t __a
, uint32x2_t __b
)
1455 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
1456 vorr_s64 (int64x1_t __a
, int64x1_t __b
)
1461 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
1462 vorr_u64 (uint64x1_t __a
, uint64x1_t __b
)
1467 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1468 vorrq_s8 (int8x16_t __a
, int8x16_t __b
)
1473 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1474 vorrq_s16 (int16x8_t __a
, int16x8_t __b
)
1479 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1480 vorrq_s32 (int32x4_t __a
, int32x4_t __b
)
1485 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1486 vorrq_s64 (int64x2_t __a
, int64x2_t __b
)
1491 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1492 vorrq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1497 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1498 vorrq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1503 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1504 vorrq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1509 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1510 vorrq_u64 (uint64x2_t __a
, uint64x2_t __b
)
1515 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1516 veor_s8 (int8x8_t __a
, int8x8_t __b
)
1521 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1522 veor_s16 (int16x4_t __a
, int16x4_t __b
)
1527 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1528 veor_s32 (int32x2_t __a
, int32x2_t __b
)
1533 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1534 veor_u8 (uint8x8_t __a
, uint8x8_t __b
)
1539 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1540 veor_u16 (uint16x4_t __a
, uint16x4_t __b
)
1545 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1546 veor_u32 (uint32x2_t __a
, uint32x2_t __b
)
1551 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
1552 veor_s64 (int64x1_t __a
, int64x1_t __b
)
1557 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
1558 veor_u64 (uint64x1_t __a
, uint64x1_t __b
)
1563 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1564 veorq_s8 (int8x16_t __a
, int8x16_t __b
)
1569 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1570 veorq_s16 (int16x8_t __a
, int16x8_t __b
)
1575 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1576 veorq_s32 (int32x4_t __a
, int32x4_t __b
)
1581 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1582 veorq_s64 (int64x2_t __a
, int64x2_t __b
)
1587 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1588 veorq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1593 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1594 veorq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1599 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1600 veorq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1605 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1606 veorq_u64 (uint64x2_t __a
, uint64x2_t __b
)
1611 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1612 vbic_s8 (int8x8_t __a
, int8x8_t __b
)
1617 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1618 vbic_s16 (int16x4_t __a
, int16x4_t __b
)
1623 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1624 vbic_s32 (int32x2_t __a
, int32x2_t __b
)
1629 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1630 vbic_u8 (uint8x8_t __a
, uint8x8_t __b
)
1635 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1636 vbic_u16 (uint16x4_t __a
, uint16x4_t __b
)
1641 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1642 vbic_u32 (uint32x2_t __a
, uint32x2_t __b
)
1647 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
1648 vbic_s64 (int64x1_t __a
, int64x1_t __b
)
1653 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
1654 vbic_u64 (uint64x1_t __a
, uint64x1_t __b
)
1659 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1660 vbicq_s8 (int8x16_t __a
, int8x16_t __b
)
1665 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1666 vbicq_s16 (int16x8_t __a
, int16x8_t __b
)
1671 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1672 vbicq_s32 (int32x4_t __a
, int32x4_t __b
)
1677 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1678 vbicq_s64 (int64x2_t __a
, int64x2_t __b
)
1683 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1684 vbicq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1689 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1690 vbicq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1695 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1696 vbicq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1701 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1702 vbicq_u64 (uint64x2_t __a
, uint64x2_t __b
)
1707 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1708 vorn_s8 (int8x8_t __a
, int8x8_t __b
)
1713 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1714 vorn_s16 (int16x4_t __a
, int16x4_t __b
)
1719 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1720 vorn_s32 (int32x2_t __a
, int32x2_t __b
)
1725 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1726 vorn_u8 (uint8x8_t __a
, uint8x8_t __b
)
1731 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1732 vorn_u16 (uint16x4_t __a
, uint16x4_t __b
)
1737 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1738 vorn_u32 (uint32x2_t __a
, uint32x2_t __b
)
1743 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
1744 vorn_s64 (int64x1_t __a
, int64x1_t __b
)
1749 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
1750 vorn_u64 (uint64x1_t __a
, uint64x1_t __b
)
1755 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1756 vornq_s8 (int8x16_t __a
, int8x16_t __b
)
1761 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1762 vornq_s16 (int16x8_t __a
, int16x8_t __b
)
1767 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1768 vornq_s32 (int32x4_t __a
, int32x4_t __b
)
1773 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1774 vornq_s64 (int64x2_t __a
, int64x2_t __b
)
1779 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1780 vornq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1785 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1786 vornq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1791 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1792 vornq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1797 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1798 vornq_u64 (uint64x2_t __a
, uint64x2_t __b
)
1803 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1804 vsub_s8 (int8x8_t __a
, int8x8_t __b
)
1809 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1810 vsub_s16 (int16x4_t __a
, int16x4_t __b
)
1815 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1816 vsub_s32 (int32x2_t __a
, int32x2_t __b
)
1821 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
1822 vsub_f32 (float32x2_t __a
, float32x2_t __b
)
1827 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1828 vsub_u8 (uint8x8_t __a
, uint8x8_t __b
)
1833 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1834 vsub_u16 (uint16x4_t __a
, uint16x4_t __b
)
1839 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1840 vsub_u32 (uint32x2_t __a
, uint32x2_t __b
)
1845 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
1846 vsub_s64 (int64x1_t __a
, int64x1_t __b
)
1851 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
1852 vsub_u64 (uint64x1_t __a
, uint64x1_t __b
)
1857 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1858 vsubq_s8 (int8x16_t __a
, int8x16_t __b
)
1863 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1864 vsubq_s16 (int16x8_t __a
, int16x8_t __b
)
1869 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1870 vsubq_s32 (int32x4_t __a
, int32x4_t __b
)
1875 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1876 vsubq_s64 (int64x2_t __a
, int64x2_t __b
)
1881 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
1882 vsubq_f32 (float32x4_t __a
, float32x4_t __b
)
1887 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
1888 vsubq_f64 (float64x2_t __a
, float64x2_t __b
)
1893 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1894 vsubq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1899 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1900 vsubq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1905 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1906 vsubq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1911 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1912 vsubq_u64 (uint64x2_t __a
, uint64x2_t __b
)
1917 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1918 vsubl_s8 (int8x8_t __a
, int8x8_t __b
)
1920 return (int16x8_t
) __builtin_aarch64_ssublv8qi (__a
, __b
);
1923 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1924 vsubl_s16 (int16x4_t __a
, int16x4_t __b
)
1926 return (int32x4_t
) __builtin_aarch64_ssublv4hi (__a
, __b
);
1929 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1930 vsubl_s32 (int32x2_t __a
, int32x2_t __b
)
1932 return (int64x2_t
) __builtin_aarch64_ssublv2si (__a
, __b
);
1935 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1936 vsubl_u8 (uint8x8_t __a
, uint8x8_t __b
)
1938 return (uint16x8_t
) __builtin_aarch64_usublv8qi ((int8x8_t
) __a
,
1942 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1943 vsubl_u16 (uint16x4_t __a
, uint16x4_t __b
)
1945 return (uint32x4_t
) __builtin_aarch64_usublv4hi ((int16x4_t
) __a
,
1949 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1950 vsubl_u32 (uint32x2_t __a
, uint32x2_t __b
)
1952 return (uint64x2_t
) __builtin_aarch64_usublv2si ((int32x2_t
) __a
,
1956 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1957 vsubl_high_s8 (int8x16_t __a
, int8x16_t __b
)
1959 return (int16x8_t
) __builtin_aarch64_ssubl2v16qi (__a
, __b
);
1962 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1963 vsubl_high_s16 (int16x8_t __a
, int16x8_t __b
)
1965 return (int32x4_t
) __builtin_aarch64_ssubl2v8hi (__a
, __b
);
1968 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1969 vsubl_high_s32 (int32x4_t __a
, int32x4_t __b
)
1971 return (int64x2_t
) __builtin_aarch64_ssubl2v4si (__a
, __b
);
1974 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1975 vsubl_high_u8 (uint8x16_t __a
, uint8x16_t __b
)
1977 return (uint16x8_t
) __builtin_aarch64_usubl2v16qi ((int8x16_t
) __a
,
1981 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1982 vsubl_high_u16 (uint16x8_t __a
, uint16x8_t __b
)
1984 return (uint32x4_t
) __builtin_aarch64_usubl2v8hi ((int16x8_t
) __a
,
1988 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1989 vsubl_high_u32 (uint32x4_t __a
, uint32x4_t __b
)
1991 return (uint64x2_t
) __builtin_aarch64_usubl2v4si ((int32x4_t
) __a
,
1995 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1996 vsubw_s8 (int16x8_t __a
, int8x8_t __b
)
1998 return (int16x8_t
) __builtin_aarch64_ssubwv8qi (__a
, __b
);
2001 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2002 vsubw_s16 (int32x4_t __a
, int16x4_t __b
)
2004 return (int32x4_t
) __builtin_aarch64_ssubwv4hi (__a
, __b
);
2007 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
2008 vsubw_s32 (int64x2_t __a
, int32x2_t __b
)
2010 return (int64x2_t
) __builtin_aarch64_ssubwv2si (__a
, __b
);
2013 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
2014 vsubw_u8 (uint16x8_t __a
, uint8x8_t __b
)
2016 return (uint16x8_t
) __builtin_aarch64_usubwv8qi ((int16x8_t
) __a
,
2020 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
2021 vsubw_u16 (uint32x4_t __a
, uint16x4_t __b
)
2023 return (uint32x4_t
) __builtin_aarch64_usubwv4hi ((int32x4_t
) __a
,
2027 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
2028 vsubw_u32 (uint64x2_t __a
, uint32x2_t __b
)
2030 return (uint64x2_t
) __builtin_aarch64_usubwv2si ((int64x2_t
) __a
,
2034 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2035 vsubw_high_s8 (int16x8_t __a
, int8x16_t __b
)
2037 return (int16x8_t
) __builtin_aarch64_ssubw2v16qi (__a
, __b
);
2040 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2041 vsubw_high_s16 (int32x4_t __a
, int16x8_t __b
)
2043 return (int32x4_t
) __builtin_aarch64_ssubw2v8hi (__a
, __b
);
2046 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
2047 vsubw_high_s32 (int64x2_t __a
, int32x4_t __b
)
2049 return (int64x2_t
) __builtin_aarch64_ssubw2v4si (__a
, __b
);
2052 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
2053 vsubw_high_u8 (uint16x8_t __a
, uint8x16_t __b
)
2055 return (uint16x8_t
) __builtin_aarch64_usubw2v16qi ((int16x8_t
) __a
,
2059 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
2060 vsubw_high_u16 (uint32x4_t __a
, uint16x8_t __b
)
2062 return (uint32x4_t
) __builtin_aarch64_usubw2v8hi ((int32x4_t
) __a
,
2066 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
2067 vsubw_high_u32 (uint64x2_t __a
, uint32x4_t __b
)
2069 return (uint64x2_t
) __builtin_aarch64_usubw2v4si ((int64x2_t
) __a
,
2073 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
2074 vqadd_s8 (int8x8_t __a
, int8x8_t __b
)
2076 return (int8x8_t
) __builtin_aarch64_sqaddv8qi (__a
, __b
);
2079 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
2080 vqadd_s16 (int16x4_t __a
, int16x4_t __b
)
2082 return (int16x4_t
) __builtin_aarch64_sqaddv4hi (__a
, __b
);
2085 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
2086 vqadd_s32 (int32x2_t __a
, int32x2_t __b
)
2088 return (int32x2_t
) __builtin_aarch64_sqaddv2si (__a
, __b
);
2091 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
2092 vqadd_s64 (int64x1_t __a
, int64x1_t __b
)
2094 return (int64x1_t
) __builtin_aarch64_sqadddi (__a
, __b
);
2097 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
2098 vqadd_u8 (uint8x8_t __a
, uint8x8_t __b
)
2100 return (uint8x8_t
) __builtin_aarch64_uqaddv8qi ((int8x8_t
) __a
,
2104 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
2105 vqadd_u16 (uint16x4_t __a
, uint16x4_t __b
)
2107 return (uint16x4_t
) __builtin_aarch64_uqaddv4hi ((int16x4_t
) __a
,
2111 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
2112 vqadd_u32 (uint32x2_t __a
, uint32x2_t __b
)
2114 return (uint32x2_t
) __builtin_aarch64_uqaddv2si ((int32x2_t
) __a
,
2118 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
2119 vqadd_u64 (uint64x1_t __a
, uint64x1_t __b
)
2121 return (uint64x1_t
) __builtin_aarch64_uqadddi ((int64x1_t
) __a
,
2125 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
2126 vqaddq_s8 (int8x16_t __a
, int8x16_t __b
)
2128 return (int8x16_t
) __builtin_aarch64_sqaddv16qi (__a
, __b
);
2131 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2132 vqaddq_s16 (int16x8_t __a
, int16x8_t __b
)
2134 return (int16x8_t
) __builtin_aarch64_sqaddv8hi (__a
, __b
);
2137 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2138 vqaddq_s32 (int32x4_t __a
, int32x4_t __b
)
2140 return (int32x4_t
) __builtin_aarch64_sqaddv4si (__a
, __b
);
2143 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
2144 vqaddq_s64 (int64x2_t __a
, int64x2_t __b
)
2146 return (int64x2_t
) __builtin_aarch64_sqaddv2di (__a
, __b
);
2149 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
2150 vqaddq_u8 (uint8x16_t __a
, uint8x16_t __b
)
2152 return (uint8x16_t
) __builtin_aarch64_uqaddv16qi ((int8x16_t
) __a
,
2156 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
2157 vqaddq_u16 (uint16x8_t __a
, uint16x8_t __b
)
2159 return (uint16x8_t
) __builtin_aarch64_uqaddv8hi ((int16x8_t
) __a
,
2163 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
2164 vqaddq_u32 (uint32x4_t __a
, uint32x4_t __b
)
2166 return (uint32x4_t
) __builtin_aarch64_uqaddv4si ((int32x4_t
) __a
,
2170 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
2171 vqaddq_u64 (uint64x2_t __a
, uint64x2_t __b
)
2173 return (uint64x2_t
) __builtin_aarch64_uqaddv2di ((int64x2_t
) __a
,
2177 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
2178 vqsub_s8 (int8x8_t __a
, int8x8_t __b
)
2180 return (int8x8_t
) __builtin_aarch64_sqsubv8qi (__a
, __b
);
2183 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
2184 vqsub_s16 (int16x4_t __a
, int16x4_t __b
)
2186 return (int16x4_t
) __builtin_aarch64_sqsubv4hi (__a
, __b
);
2189 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
2190 vqsub_s32 (int32x2_t __a
, int32x2_t __b
)
2192 return (int32x2_t
) __builtin_aarch64_sqsubv2si (__a
, __b
);
2195 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
2196 vqsub_s64 (int64x1_t __a
, int64x1_t __b
)
2198 return (int64x1_t
) __builtin_aarch64_sqsubdi (__a
, __b
);
2201 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
2202 vqsub_u8 (uint8x8_t __a
, uint8x8_t __b
)
2204 return (uint8x8_t
) __builtin_aarch64_uqsubv8qi ((int8x8_t
) __a
,
2208 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
2209 vqsub_u16 (uint16x4_t __a
, uint16x4_t __b
)
2211 return (uint16x4_t
) __builtin_aarch64_uqsubv4hi ((int16x4_t
) __a
,
2215 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
2216 vqsub_u32 (uint32x2_t __a
, uint32x2_t __b
)
2218 return (uint32x2_t
) __builtin_aarch64_uqsubv2si ((int32x2_t
) __a
,
2222 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
2223 vqsub_u64 (uint64x1_t __a
, uint64x1_t __b
)
2225 return (uint64x1_t
) __builtin_aarch64_uqsubdi ((int64x1_t
) __a
,
2229 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
2230 vqsubq_s8 (int8x16_t __a
, int8x16_t __b
)
2232 return (int8x16_t
) __builtin_aarch64_sqsubv16qi (__a
, __b
);
2235 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2236 vqsubq_s16 (int16x8_t __a
, int16x8_t __b
)
2238 return (int16x8_t
) __builtin_aarch64_sqsubv8hi (__a
, __b
);
2241 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2242 vqsubq_s32 (int32x4_t __a
, int32x4_t __b
)
2244 return (int32x4_t
) __builtin_aarch64_sqsubv4si (__a
, __b
);
2247 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
2248 vqsubq_s64 (int64x2_t __a
, int64x2_t __b
)
2250 return (int64x2_t
) __builtin_aarch64_sqsubv2di (__a
, __b
);
2253 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
2254 vqsubq_u8 (uint8x16_t __a
, uint8x16_t __b
)
2256 return (uint8x16_t
) __builtin_aarch64_uqsubv16qi ((int8x16_t
) __a
,
2260 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
2261 vqsubq_u16 (uint16x8_t __a
, uint16x8_t __b
)
2263 return (uint16x8_t
) __builtin_aarch64_uqsubv8hi ((int16x8_t
) __a
,
2267 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
2268 vqsubq_u32 (uint32x4_t __a
, uint32x4_t __b
)
2270 return (uint32x4_t
) __builtin_aarch64_uqsubv4si ((int32x4_t
) __a
,
2274 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
2275 vqsubq_u64 (uint64x2_t __a
, uint64x2_t __b
)
2277 return (uint64x2_t
) __builtin_aarch64_uqsubv2di ((int64x2_t
) __a
,
2281 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
2282 vqneg_s8 (int8x8_t __a
)
2284 return (int8x8_t
) __builtin_aarch64_sqnegv8qi (__a
);
2287 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
2288 vqneg_s16 (int16x4_t __a
)
2290 return (int16x4_t
) __builtin_aarch64_sqnegv4hi (__a
);
2293 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
2294 vqneg_s32 (int32x2_t __a
)
2296 return (int32x2_t
) __builtin_aarch64_sqnegv2si (__a
);
2299 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
2300 vqnegq_s8 (int8x16_t __a
)
2302 return (int8x16_t
) __builtin_aarch64_sqnegv16qi (__a
);
2305 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2306 vqnegq_s16 (int16x8_t __a
)
2308 return (int16x8_t
) __builtin_aarch64_sqnegv8hi (__a
);
2311 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2312 vqnegq_s32 (int32x4_t __a
)
2314 return (int32x4_t
) __builtin_aarch64_sqnegv4si (__a
);
2317 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
2318 vqabs_s8 (int8x8_t __a
)
2320 return (int8x8_t
) __builtin_aarch64_sqabsv8qi (__a
);
2323 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
2324 vqabs_s16 (int16x4_t __a
)
2326 return (int16x4_t
) __builtin_aarch64_sqabsv4hi (__a
);
2329 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
2330 vqabs_s32 (int32x2_t __a
)
2332 return (int32x2_t
) __builtin_aarch64_sqabsv2si (__a
);
2335 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
2336 vqabsq_s8 (int8x16_t __a
)
2338 return (int8x16_t
) __builtin_aarch64_sqabsv16qi (__a
);
2341 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2342 vqabsq_s16 (int16x8_t __a
)
2344 return (int16x8_t
) __builtin_aarch64_sqabsv8hi (__a
);
2347 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2348 vqabsq_s32 (int32x4_t __a
)
2350 return (int32x4_t
) __builtin_aarch64_sqabsv4si (__a
);
2353 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
2354 vqdmulh_s16 (int16x4_t __a
, int16x4_t __b
)
2356 return (int16x4_t
) __builtin_aarch64_sqdmulhv4hi (__a
, __b
);
2359 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
2360 vqdmulh_s32 (int32x2_t __a
, int32x2_t __b
)
2362 return (int32x2_t
) __builtin_aarch64_sqdmulhv2si (__a
, __b
);
2365 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2366 vqdmulhq_s16 (int16x8_t __a
, int16x8_t __b
)
2368 return (int16x8_t
) __builtin_aarch64_sqdmulhv8hi (__a
, __b
);
2371 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2372 vqdmulhq_s32 (int32x4_t __a
, int32x4_t __b
)
2374 return (int32x4_t
) __builtin_aarch64_sqdmulhv4si (__a
, __b
);
2377 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
2378 vqrdmulh_s16 (int16x4_t __a
, int16x4_t __b
)
2380 return (int16x4_t
) __builtin_aarch64_sqrdmulhv4hi (__a
, __b
);
2383 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
2384 vqrdmulh_s32 (int32x2_t __a
, int32x2_t __b
)
2386 return (int32x2_t
) __builtin_aarch64_sqrdmulhv2si (__a
, __b
);
2389 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2390 vqrdmulhq_s16 (int16x8_t __a
, int16x8_t __b
)
2392 return (int16x8_t
) __builtin_aarch64_sqrdmulhv8hi (__a
, __b
);
2395 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2396 vqrdmulhq_s32 (int32x4_t __a
, int32x4_t __b
)
2398 return (int32x4_t
) __builtin_aarch64_sqrdmulhv4si (__a
, __b
);
2401 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
2402 vcreate_s8 (uint64_t __a
)
2404 return (int8x8_t
) __a
;
2407 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
2408 vcreate_s16 (uint64_t __a
)
2410 return (int16x4_t
) __a
;
2413 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
2414 vcreate_s32 (uint64_t __a
)
2416 return (int32x2_t
) __a
;
2419 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
2420 vcreate_s64 (uint64_t __a
)
2422 return (int64x1_t
) __a
;
2425 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2426 vcreate_f32 (uint64_t __a
)
2428 return (float32x2_t
) __a
;
2431 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
2432 vcreate_u8 (uint64_t __a
)
2434 return (uint8x8_t
) __a
;
2437 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
2438 vcreate_u16 (uint64_t __a
)
2440 return (uint16x4_t
) __a
;
2443 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
2444 vcreate_u32 (uint64_t __a
)
2446 return (uint32x2_t
) __a
;
2449 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
2450 vcreate_u64 (uint64_t __a
)
2452 return (uint64x1_t
) __a
;
2455 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
2456 vcreate_f64 (uint64_t __a
)
2458 return (float64x1_t
) __builtin_aarch64_createdf (__a
);
2461 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2462 vcreate_p8 (uint64_t __a
)
2464 return (poly8x8_t
) __a
;
2467 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2468 vcreate_p16 (uint64_t __a
)
2470 return (poly16x4_t
) __a
;
2475 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
2476 vget_lane_f32 (float32x2_t __a
, const int __b
)
2478 return __aarch64_vget_lane_f32 (__a
, __b
);
2481 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
2482 vget_lane_f64 (float64x1_t __a
, const int __b
)
2484 return __aarch64_vget_lane_f64 (__a
, __b
);
2487 __extension__
static __inline poly8_t
__attribute__ ((__always_inline__
))
2488 vget_lane_p8 (poly8x8_t __a
, const int __b
)
2490 return __aarch64_vget_lane_p8 (__a
, __b
);
2493 __extension__
static __inline poly16_t
__attribute__ ((__always_inline__
))
2494 vget_lane_p16 (poly16x4_t __a
, const int __b
)
2496 return __aarch64_vget_lane_p16 (__a
, __b
);
2499 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
2500 vget_lane_s8 (int8x8_t __a
, const int __b
)
2502 return __aarch64_vget_lane_s8 (__a
, __b
);
2505 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
2506 vget_lane_s16 (int16x4_t __a
, const int __b
)
2508 return __aarch64_vget_lane_s16 (__a
, __b
);
2511 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
2512 vget_lane_s32 (int32x2_t __a
, const int __b
)
2514 return __aarch64_vget_lane_s32 (__a
, __b
);
2517 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
2518 vget_lane_s64 (int64x1_t __a
, const int __b
)
2520 return __aarch64_vget_lane_s64 (__a
, __b
);
2523 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
2524 vget_lane_u8 (uint8x8_t __a
, const int __b
)
2526 return __aarch64_vget_lane_u8 (__a
, __b
);
2529 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
2530 vget_lane_u16 (uint16x4_t __a
, const int __b
)
2532 return __aarch64_vget_lane_u16 (__a
, __b
);
2535 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
2536 vget_lane_u32 (uint32x2_t __a
, const int __b
)
2538 return __aarch64_vget_lane_u32 (__a
, __b
);
2541 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
2542 vget_lane_u64 (uint64x1_t __a
, const int __b
)
2544 return __aarch64_vget_lane_u64 (__a
, __b
);
2549 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
2550 vgetq_lane_f32 (float32x4_t __a
, const int __b
)
2552 return __aarch64_vgetq_lane_f32 (__a
, __b
);
2555 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
2556 vgetq_lane_f64 (float64x2_t __a
, const int __b
)
2558 return __aarch64_vgetq_lane_f64 (__a
, __b
);
2561 __extension__
static __inline poly8_t
__attribute__ ((__always_inline__
))
2562 vgetq_lane_p8 (poly8x16_t __a
, const int __b
)
2564 return __aarch64_vgetq_lane_p8 (__a
, __b
);
2567 __extension__
static __inline poly16_t
__attribute__ ((__always_inline__
))
2568 vgetq_lane_p16 (poly16x8_t __a
, const int __b
)
2570 return __aarch64_vgetq_lane_p16 (__a
, __b
);
2573 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
2574 vgetq_lane_s8 (int8x16_t __a
, const int __b
)
2576 return __aarch64_vgetq_lane_s8 (__a
, __b
);
2579 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
2580 vgetq_lane_s16 (int16x8_t __a
, const int __b
)
2582 return __aarch64_vgetq_lane_s16 (__a
, __b
);
2585 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
2586 vgetq_lane_s32 (int32x4_t __a
, const int __b
)
2588 return __aarch64_vgetq_lane_s32 (__a
, __b
);
2591 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
2592 vgetq_lane_s64 (int64x2_t __a
, const int __b
)
2594 return __aarch64_vgetq_lane_s64 (__a
, __b
);
2597 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
2598 vgetq_lane_u8 (uint8x16_t __a
, const int __b
)
2600 return __aarch64_vgetq_lane_u8 (__a
, __b
);
2603 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
2604 vgetq_lane_u16 (uint16x8_t __a
, const int __b
)
2606 return __aarch64_vgetq_lane_u16 (__a
, __b
);
2609 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
2610 vgetq_lane_u32 (uint32x4_t __a
, const int __b
)
2612 return __aarch64_vgetq_lane_u32 (__a
, __b
);
2615 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
2616 vgetq_lane_u64 (uint64x2_t __a
, const int __b
)
2618 return __aarch64_vgetq_lane_u64 (__a
, __b
);
2623 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2624 vreinterpret_p8_s8 (int8x8_t __a
)
2626 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv8qi (__a
);
2629 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2630 vreinterpret_p8_s16 (int16x4_t __a
)
2632 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi (__a
);
2635 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2636 vreinterpret_p8_s32 (int32x2_t __a
)
2638 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv2si (__a
);
2641 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2642 vreinterpret_p8_s64 (int64x1_t __a
)
2644 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qidi (__a
);
2647 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2648 vreinterpret_p8_f32 (float32x2_t __a
)
2650 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv2sf (__a
);
2653 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2654 vreinterpret_p8_u8 (uint8x8_t __a
)
2656 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv8qi ((int8x8_t
) __a
);
2659 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2660 vreinterpret_p8_u16 (uint16x4_t __a
)
2662 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t
) __a
);
2665 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2666 vreinterpret_p8_u32 (uint32x2_t __a
)
2668 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv2si ((int32x2_t
) __a
);
2671 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2672 vreinterpret_p8_u64 (uint64x1_t __a
)
2674 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qidi ((int64x1_t
) __a
);
2677 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2678 vreinterpret_p8_p16 (poly16x4_t __a
)
2680 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t
) __a
);
2683 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2684 vreinterpretq_p8_s8 (int8x16_t __a
)
2686 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv16qi (__a
);
2689 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2690 vreinterpretq_p8_s16 (int16x8_t __a
)
2692 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi (__a
);
2695 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2696 vreinterpretq_p8_s32 (int32x4_t __a
)
2698 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv4si (__a
);
2701 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2702 vreinterpretq_p8_s64 (int64x2_t __a
)
2704 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv2di (__a
);
2707 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2708 vreinterpretq_p8_f32 (float32x4_t __a
)
2710 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv4sf (__a
);
2713 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2714 vreinterpretq_p8_u8 (uint8x16_t __a
)
2716 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv16qi ((int8x16_t
)
2720 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2721 vreinterpretq_p8_u16 (uint16x8_t __a
)
2723 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t
)
2727 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2728 vreinterpretq_p8_u32 (uint32x4_t __a
)
2730 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv4si ((int32x4_t
)
2734 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2735 vreinterpretq_p8_u64 (uint64x2_t __a
)
2737 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv2di ((int64x2_t
)
2741 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2742 vreinterpretq_p8_p16 (poly16x8_t __a
)
2744 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t
)
2748 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2749 vreinterpret_p16_s8 (int8x8_t __a
)
2751 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi (__a
);
2754 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2755 vreinterpret_p16_s16 (int16x4_t __a
)
2757 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv4hi (__a
);
2760 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2761 vreinterpret_p16_s32 (int32x2_t __a
)
2763 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv2si (__a
);
2766 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2767 vreinterpret_p16_s64 (int64x1_t __a
)
2769 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hidi (__a
);
2772 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2773 vreinterpret_p16_f32 (float32x2_t __a
)
2775 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv2sf (__a
);
2778 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2779 vreinterpret_p16_u8 (uint8x8_t __a
)
2781 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t
) __a
);
2784 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2785 vreinterpret_p16_u16 (uint16x4_t __a
)
2787 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv4hi ((int16x4_t
) __a
);
2790 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2791 vreinterpret_p16_u32 (uint32x2_t __a
)
2793 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv2si ((int32x2_t
) __a
);
2796 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2797 vreinterpret_p16_u64 (uint64x1_t __a
)
2799 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hidi ((int64x1_t
) __a
);
2802 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2803 vreinterpret_p16_p8 (poly8x8_t __a
)
2805 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t
) __a
);
2808 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2809 vreinterpretq_p16_s8 (int8x16_t __a
)
2811 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi (__a
);
2814 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2815 vreinterpretq_p16_s16 (int16x8_t __a
)
2817 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv8hi (__a
);
2820 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2821 vreinterpretq_p16_s32 (int32x4_t __a
)
2823 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv4si (__a
);
2826 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2827 vreinterpretq_p16_s64 (int64x2_t __a
)
2829 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv2di (__a
);
2832 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2833 vreinterpretq_p16_f32 (float32x4_t __a
)
2835 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv4sf (__a
);
2838 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2839 vreinterpretq_p16_u8 (uint8x16_t __a
)
2841 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t
)
2845 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2846 vreinterpretq_p16_u16 (uint16x8_t __a
)
2848 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv8hi ((int16x8_t
) __a
);
2851 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2852 vreinterpretq_p16_u32 (uint32x4_t __a
)
2854 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv4si ((int32x4_t
) __a
);
2857 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2858 vreinterpretq_p16_u64 (uint64x2_t __a
)
2860 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv2di ((int64x2_t
) __a
);
2863 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2864 vreinterpretq_p16_p8 (poly8x16_t __a
)
2866 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t
)
2870 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2871 vreinterpret_f32_s8 (int8x8_t __a
)
2873 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv8qi (__a
);
2876 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2877 vreinterpret_f32_s16 (int16x4_t __a
)
2879 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv4hi (__a
);
2882 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2883 vreinterpret_f32_s32 (int32x2_t __a
)
2885 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv2si (__a
);
2888 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2889 vreinterpret_f32_s64 (int64x1_t __a
)
2891 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfdi (__a
);
2894 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2895 vreinterpret_f32_u8 (uint8x8_t __a
)
2897 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv8qi ((int8x8_t
) __a
);
2900 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2901 vreinterpret_f32_u16 (uint16x4_t __a
)
2903 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv4hi ((int16x4_t
)
2907 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2908 vreinterpret_f32_u32 (uint32x2_t __a
)
2910 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv2si ((int32x2_t
)
2914 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2915 vreinterpret_f32_u64 (uint64x1_t __a
)
2917 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfdi ((int64x1_t
) __a
);
2920 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2921 vreinterpret_f32_p8 (poly8x8_t __a
)
2923 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv8qi ((int8x8_t
) __a
);
2926 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2927 vreinterpret_f32_p16 (poly16x4_t __a
)
2929 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv4hi ((int16x4_t
)
2933 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2934 vreinterpretq_f32_s8 (int8x16_t __a
)
2936 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv16qi (__a
);
2939 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2940 vreinterpretq_f32_s16 (int16x8_t __a
)
2942 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv8hi (__a
);
2945 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2946 vreinterpretq_f32_s32 (int32x4_t __a
)
2948 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv4si (__a
);
2951 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2952 vreinterpretq_f32_s64 (int64x2_t __a
)
2954 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv2di (__a
);
2957 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2958 vreinterpretq_f32_u8 (uint8x16_t __a
)
2960 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv16qi ((int8x16_t
)
2964 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2965 vreinterpretq_f32_u16 (uint16x8_t __a
)
2967 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv8hi ((int16x8_t
)
2971 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2972 vreinterpretq_f32_u32 (uint32x4_t __a
)
2974 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv4si ((int32x4_t
)
2978 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2979 vreinterpretq_f32_u64 (uint64x2_t __a
)
2981 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv2di ((int64x2_t
)
2985 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2986 vreinterpretq_f32_p8 (poly8x16_t __a
)
2988 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv16qi ((int8x16_t
)
2992 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2993 vreinterpretq_f32_p16 (poly16x8_t __a
)
2995 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv8hi ((int16x8_t
)
2999 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3000 vreinterpret_s64_s8 (int8x8_t __a
)
3002 return (int64x1_t
) __builtin_aarch64_reinterpretdiv8qi (__a
);
3005 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3006 vreinterpret_s64_s16 (int16x4_t __a
)
3008 return (int64x1_t
) __builtin_aarch64_reinterpretdiv4hi (__a
);
3011 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3012 vreinterpret_s64_s32 (int32x2_t __a
)
3014 return (int64x1_t
) __builtin_aarch64_reinterpretdiv2si (__a
);
3017 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3018 vreinterpret_s64_f32 (float32x2_t __a
)
3020 return (int64x1_t
) __builtin_aarch64_reinterpretdiv2sf (__a
);
3023 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3024 vreinterpret_s64_u8 (uint8x8_t __a
)
3026 return (int64x1_t
) __builtin_aarch64_reinterpretdiv8qi ((int8x8_t
) __a
);
3029 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3030 vreinterpret_s64_u16 (uint16x4_t __a
)
3032 return (int64x1_t
) __builtin_aarch64_reinterpretdiv4hi ((int16x4_t
) __a
);
3035 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3036 vreinterpret_s64_u32 (uint32x2_t __a
)
3038 return (int64x1_t
) __builtin_aarch64_reinterpretdiv2si ((int32x2_t
) __a
);
3041 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3042 vreinterpret_s64_u64 (uint64x1_t __a
)
3044 return (int64x1_t
) __builtin_aarch64_reinterpretdidi ((int64x1_t
) __a
);
3047 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3048 vreinterpret_s64_p8 (poly8x8_t __a
)
3050 return (int64x1_t
) __builtin_aarch64_reinterpretdiv8qi ((int8x8_t
) __a
);
3053 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3054 vreinterpret_s64_p16 (poly16x4_t __a
)
3056 return (int64x1_t
) __builtin_aarch64_reinterpretdiv4hi ((int16x4_t
) __a
);
3059 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3060 vreinterpretq_s64_s8 (int8x16_t __a
)
3062 return (int64x2_t
) __builtin_aarch64_reinterpretv2div16qi (__a
);
3065 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3066 vreinterpretq_s64_s16 (int16x8_t __a
)
3068 return (int64x2_t
) __builtin_aarch64_reinterpretv2div8hi (__a
);
3071 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3072 vreinterpretq_s64_s32 (int32x4_t __a
)
3074 return (int64x2_t
) __builtin_aarch64_reinterpretv2div4si (__a
);
3077 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3078 vreinterpretq_s64_f32 (float32x4_t __a
)
3080 return (int64x2_t
) __builtin_aarch64_reinterpretv2div4sf (__a
);
3083 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3084 vreinterpretq_s64_u8 (uint8x16_t __a
)
3086 return (int64x2_t
) __builtin_aarch64_reinterpretv2div16qi ((int8x16_t
) __a
);
3089 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3090 vreinterpretq_s64_u16 (uint16x8_t __a
)
3092 return (int64x2_t
) __builtin_aarch64_reinterpretv2div8hi ((int16x8_t
) __a
);
3095 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3096 vreinterpretq_s64_u32 (uint32x4_t __a
)
3098 return (int64x2_t
) __builtin_aarch64_reinterpretv2div4si ((int32x4_t
) __a
);
3101 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3102 vreinterpretq_s64_u64 (uint64x2_t __a
)
3104 return (int64x2_t
) __builtin_aarch64_reinterpretv2div2di ((int64x2_t
) __a
);
3107 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3108 vreinterpretq_s64_p8 (poly8x16_t __a
)
3110 return (int64x2_t
) __builtin_aarch64_reinterpretv2div16qi ((int8x16_t
) __a
);
3113 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3114 vreinterpretq_s64_p16 (poly16x8_t __a
)
3116 return (int64x2_t
) __builtin_aarch64_reinterpretv2div8hi ((int16x8_t
) __a
);
3119 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3120 vreinterpret_u64_s8 (int8x8_t __a
)
3122 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv8qi (__a
);
3125 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3126 vreinterpret_u64_s16 (int16x4_t __a
)
3128 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv4hi (__a
);
3131 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3132 vreinterpret_u64_s32 (int32x2_t __a
)
3134 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv2si (__a
);
3137 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3138 vreinterpret_u64_s64 (int64x1_t __a
)
3140 return (uint64x1_t
) __builtin_aarch64_reinterpretdidi (__a
);
3143 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3144 vreinterpret_u64_f32 (float32x2_t __a
)
3146 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv2sf (__a
);
3149 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3150 vreinterpret_u64_u8 (uint8x8_t __a
)
3152 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv8qi ((int8x8_t
) __a
);
3155 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3156 vreinterpret_u64_u16 (uint16x4_t __a
)
3158 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv4hi ((int16x4_t
) __a
);
3161 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3162 vreinterpret_u64_u32 (uint32x2_t __a
)
3164 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv2si ((int32x2_t
) __a
);
3167 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3168 vreinterpret_u64_p8 (poly8x8_t __a
)
3170 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv8qi ((int8x8_t
) __a
);
3173 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3174 vreinterpret_u64_p16 (poly16x4_t __a
)
3176 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv4hi ((int16x4_t
) __a
);
3179 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3180 vreinterpretq_u64_s8 (int8x16_t __a
)
3182 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div16qi (__a
);
3185 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3186 vreinterpretq_u64_s16 (int16x8_t __a
)
3188 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div8hi (__a
);
3191 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3192 vreinterpretq_u64_s32 (int32x4_t __a
)
3194 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div4si (__a
);
3197 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3198 vreinterpretq_u64_s64 (int64x2_t __a
)
3200 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div2di (__a
);
3203 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3204 vreinterpretq_u64_f32 (float32x4_t __a
)
3206 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div4sf (__a
);
3209 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3210 vreinterpretq_u64_u8 (uint8x16_t __a
)
3212 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div16qi ((int8x16_t
)
3216 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3217 vreinterpretq_u64_u16 (uint16x8_t __a
)
3219 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div8hi ((int16x8_t
) __a
);
3222 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3223 vreinterpretq_u64_u32 (uint32x4_t __a
)
3225 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div4si ((int32x4_t
) __a
);
3228 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3229 vreinterpretq_u64_p8 (poly8x16_t __a
)
3231 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div16qi ((int8x16_t
)
3235 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3236 vreinterpretq_u64_p16 (poly16x8_t __a
)
3238 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div8hi ((int16x8_t
) __a
);
3241 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3242 vreinterpret_s8_s16 (int16x4_t __a
)
3244 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi (__a
);
3247 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3248 vreinterpret_s8_s32 (int32x2_t __a
)
3250 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv2si (__a
);
3253 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3254 vreinterpret_s8_s64 (int64x1_t __a
)
3256 return (int8x8_t
) __builtin_aarch64_reinterpretv8qidi (__a
);
3259 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3260 vreinterpret_s8_f32 (float32x2_t __a
)
3262 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv2sf (__a
);
3265 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3266 vreinterpret_s8_u8 (uint8x8_t __a
)
3268 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv8qi ((int8x8_t
) __a
);
3271 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3272 vreinterpret_s8_u16 (uint16x4_t __a
)
3274 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t
) __a
);
3277 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3278 vreinterpret_s8_u32 (uint32x2_t __a
)
3280 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv2si ((int32x2_t
) __a
);
3283 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3284 vreinterpret_s8_u64 (uint64x1_t __a
)
3286 return (int8x8_t
) __builtin_aarch64_reinterpretv8qidi ((int64x1_t
) __a
);
3289 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3290 vreinterpret_s8_p8 (poly8x8_t __a
)
3292 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv8qi ((int8x8_t
) __a
);
3295 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3296 vreinterpret_s8_p16 (poly16x4_t __a
)
3298 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t
) __a
);
3301 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3302 vreinterpretq_s8_s16 (int16x8_t __a
)
3304 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi (__a
);
3307 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3308 vreinterpretq_s8_s32 (int32x4_t __a
)
3310 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv4si (__a
);
3313 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3314 vreinterpretq_s8_s64 (int64x2_t __a
)
3316 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv2di (__a
);
3319 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3320 vreinterpretq_s8_f32 (float32x4_t __a
)
3322 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv4sf (__a
);
3325 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3326 vreinterpretq_s8_u8 (uint8x16_t __a
)
3328 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv16qi ((int8x16_t
)
3332 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3333 vreinterpretq_s8_u16 (uint16x8_t __a
)
3335 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t
) __a
);
3338 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3339 vreinterpretq_s8_u32 (uint32x4_t __a
)
3341 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv4si ((int32x4_t
) __a
);
3344 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3345 vreinterpretq_s8_u64 (uint64x2_t __a
)
3347 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv2di ((int64x2_t
) __a
);
3350 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3351 vreinterpretq_s8_p8 (poly8x16_t __a
)
3353 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv16qi ((int8x16_t
)
3357 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3358 vreinterpretq_s8_p16 (poly16x8_t __a
)
3360 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t
) __a
);
3363 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3364 vreinterpret_s16_s8 (int8x8_t __a
)
3366 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi (__a
);
3369 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3370 vreinterpret_s16_s32 (int32x2_t __a
)
3372 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv2si (__a
);
3375 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3376 vreinterpret_s16_s64 (int64x1_t __a
)
3378 return (int16x4_t
) __builtin_aarch64_reinterpretv4hidi (__a
);
3381 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3382 vreinterpret_s16_f32 (float32x2_t __a
)
3384 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv2sf (__a
);
3387 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3388 vreinterpret_s16_u8 (uint8x8_t __a
)
3390 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t
) __a
);
3393 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3394 vreinterpret_s16_u16 (uint16x4_t __a
)
3396 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv4hi ((int16x4_t
) __a
);
3399 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3400 vreinterpret_s16_u32 (uint32x2_t __a
)
3402 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv2si ((int32x2_t
) __a
);
3405 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3406 vreinterpret_s16_u64 (uint64x1_t __a
)
3408 return (int16x4_t
) __builtin_aarch64_reinterpretv4hidi ((int64x1_t
) __a
);
3411 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3412 vreinterpret_s16_p8 (poly8x8_t __a
)
3414 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t
) __a
);
3417 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3418 vreinterpret_s16_p16 (poly16x4_t __a
)
3420 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv4hi ((int16x4_t
) __a
);
3423 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3424 vreinterpretq_s16_s8 (int8x16_t __a
)
3426 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi (__a
);
3429 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3430 vreinterpretq_s16_s32 (int32x4_t __a
)
3432 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv4si (__a
);
3435 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3436 vreinterpretq_s16_s64 (int64x2_t __a
)
3438 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv2di (__a
);
3441 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3442 vreinterpretq_s16_f32 (float32x4_t __a
)
3444 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv4sf (__a
);
3447 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3448 vreinterpretq_s16_u8 (uint8x16_t __a
)
3450 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t
) __a
);
3453 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3454 vreinterpretq_s16_u16 (uint16x8_t __a
)
3456 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv8hi ((int16x8_t
) __a
);
3459 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3460 vreinterpretq_s16_u32 (uint32x4_t __a
)
3462 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv4si ((int32x4_t
) __a
);
3465 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3466 vreinterpretq_s16_u64 (uint64x2_t __a
)
3468 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv2di ((int64x2_t
) __a
);
3471 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3472 vreinterpretq_s16_p8 (poly8x16_t __a
)
3474 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t
) __a
);
3477 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3478 vreinterpretq_s16_p16 (poly16x8_t __a
)
3480 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv8hi ((int16x8_t
) __a
);
3483 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3484 vreinterpret_s32_s8 (int8x8_t __a
)
3486 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv8qi (__a
);
3489 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3490 vreinterpret_s32_s16 (int16x4_t __a
)
3492 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv4hi (__a
);
3495 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3496 vreinterpret_s32_s64 (int64x1_t __a
)
3498 return (int32x2_t
) __builtin_aarch64_reinterpretv2sidi (__a
);
3501 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3502 vreinterpret_s32_f32 (float32x2_t __a
)
3504 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv2sf (__a
);
3507 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3508 vreinterpret_s32_u8 (uint8x8_t __a
)
3510 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv8qi ((int8x8_t
) __a
);
3513 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3514 vreinterpret_s32_u16 (uint16x4_t __a
)
3516 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv4hi ((int16x4_t
) __a
);
3519 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3520 vreinterpret_s32_u32 (uint32x2_t __a
)
3522 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv2si ((int32x2_t
) __a
);
3525 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3526 vreinterpret_s32_u64 (uint64x1_t __a
)
3528 return (int32x2_t
) __builtin_aarch64_reinterpretv2sidi ((int64x1_t
) __a
);
3531 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3532 vreinterpret_s32_p8 (poly8x8_t __a
)
3534 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv8qi ((int8x8_t
) __a
);
3537 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3538 vreinterpret_s32_p16 (poly16x4_t __a
)
3540 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv4hi ((int16x4_t
) __a
);
3543 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3544 vreinterpretq_s32_s8 (int8x16_t __a
)
3546 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv16qi (__a
);
3549 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3550 vreinterpretq_s32_s16 (int16x8_t __a
)
3552 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv8hi (__a
);
3555 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3556 vreinterpretq_s32_s64 (int64x2_t __a
)
3558 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv2di (__a
);
3561 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3562 vreinterpretq_s32_f32 (float32x4_t __a
)
3564 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv4sf (__a
);
3567 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3568 vreinterpretq_s32_u8 (uint8x16_t __a
)
3570 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv16qi ((int8x16_t
) __a
);
3573 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3574 vreinterpretq_s32_u16 (uint16x8_t __a
)
3576 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv8hi ((int16x8_t
) __a
);
3579 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3580 vreinterpretq_s32_u32 (uint32x4_t __a
)
3582 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv4si ((int32x4_t
) __a
);
3585 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3586 vreinterpretq_s32_u64 (uint64x2_t __a
)
3588 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv2di ((int64x2_t
) __a
);
3591 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3592 vreinterpretq_s32_p8 (poly8x16_t __a
)
3594 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv16qi ((int8x16_t
) __a
);
3597 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3598 vreinterpretq_s32_p16 (poly16x8_t __a
)
3600 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv8hi ((int16x8_t
) __a
);
3603 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3604 vreinterpret_u8_s8 (int8x8_t __a
)
3606 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv8qi (__a
);
3609 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3610 vreinterpret_u8_s16 (int16x4_t __a
)
3612 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi (__a
);
3615 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3616 vreinterpret_u8_s32 (int32x2_t __a
)
3618 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv2si (__a
);
3621 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3622 vreinterpret_u8_s64 (int64x1_t __a
)
3624 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qidi (__a
);
3627 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3628 vreinterpret_u8_f32 (float32x2_t __a
)
3630 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv2sf (__a
);
3633 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3634 vreinterpret_u8_u16 (uint16x4_t __a
)
3636 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t
) __a
);
3639 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3640 vreinterpret_u8_u32 (uint32x2_t __a
)
3642 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv2si ((int32x2_t
) __a
);
3645 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3646 vreinterpret_u8_u64 (uint64x1_t __a
)
3648 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qidi ((int64x1_t
) __a
);
3651 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3652 vreinterpret_u8_p8 (poly8x8_t __a
)
3654 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv8qi ((int8x8_t
) __a
);
3657 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3658 vreinterpret_u8_p16 (poly16x4_t __a
)
3660 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t
) __a
);
3663 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3664 vreinterpretq_u8_s8 (int8x16_t __a
)
3666 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv16qi (__a
);
3669 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3670 vreinterpretq_u8_s16 (int16x8_t __a
)
3672 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi (__a
);
3675 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3676 vreinterpretq_u8_s32 (int32x4_t __a
)
3678 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv4si (__a
);
3681 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3682 vreinterpretq_u8_s64 (int64x2_t __a
)
3684 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv2di (__a
);
3687 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3688 vreinterpretq_u8_f32 (float32x4_t __a
)
3690 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv4sf (__a
);
3693 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3694 vreinterpretq_u8_u16 (uint16x8_t __a
)
3696 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t
)
3700 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3701 vreinterpretq_u8_u32 (uint32x4_t __a
)
3703 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv4si ((int32x4_t
)
3707 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3708 vreinterpretq_u8_u64 (uint64x2_t __a
)
3710 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv2di ((int64x2_t
)
3714 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3715 vreinterpretq_u8_p8 (poly8x16_t __a
)
3717 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv16qi ((int8x16_t
)
3721 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3722 vreinterpretq_u8_p16 (poly16x8_t __a
)
3724 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t
)
3728 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3729 vreinterpret_u16_s8 (int8x8_t __a
)
3731 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi (__a
);
3734 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3735 vreinterpret_u16_s16 (int16x4_t __a
)
3737 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv4hi (__a
);
3740 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3741 vreinterpret_u16_s32 (int32x2_t __a
)
3743 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv2si (__a
);
3746 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3747 vreinterpret_u16_s64 (int64x1_t __a
)
3749 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hidi (__a
);
3752 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3753 vreinterpret_u16_f32 (float32x2_t __a
)
3755 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv2sf (__a
);
3758 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3759 vreinterpret_u16_u8 (uint8x8_t __a
)
3761 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t
) __a
);
3764 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3765 vreinterpret_u16_u32 (uint32x2_t __a
)
3767 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv2si ((int32x2_t
) __a
);
3770 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3771 vreinterpret_u16_u64 (uint64x1_t __a
)
3773 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hidi ((int64x1_t
) __a
);
3776 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3777 vreinterpret_u16_p8 (poly8x8_t __a
)
3779 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t
) __a
);
3782 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3783 vreinterpret_u16_p16 (poly16x4_t __a
)
3785 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv4hi ((int16x4_t
) __a
);
3788 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3789 vreinterpretq_u16_s8 (int8x16_t __a
)
3791 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi (__a
);
3794 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3795 vreinterpretq_u16_s16 (int16x8_t __a
)
3797 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv8hi (__a
);
3800 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3801 vreinterpretq_u16_s32 (int32x4_t __a
)
3803 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv4si (__a
);
3806 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3807 vreinterpretq_u16_s64 (int64x2_t __a
)
3809 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv2di (__a
);
3812 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3813 vreinterpretq_u16_f32 (float32x4_t __a
)
3815 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv4sf (__a
);
3818 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3819 vreinterpretq_u16_u8 (uint8x16_t __a
)
3821 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t
)
3825 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3826 vreinterpretq_u16_u32 (uint32x4_t __a
)
3828 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv4si ((int32x4_t
) __a
);
3831 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3832 vreinterpretq_u16_u64 (uint64x2_t __a
)
3834 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv2di ((int64x2_t
) __a
);
3837 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3838 vreinterpretq_u16_p8 (poly8x16_t __a
)
3840 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t
)
3844 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3845 vreinterpretq_u16_p16 (poly16x8_t __a
)
3847 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv8hi ((int16x8_t
) __a
);
3850 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3851 vreinterpret_u32_s8 (int8x8_t __a
)
3853 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv8qi (__a
);
3856 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3857 vreinterpret_u32_s16 (int16x4_t __a
)
3859 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv4hi (__a
);
3862 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3863 vreinterpret_u32_s32 (int32x2_t __a
)
3865 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv2si (__a
);
3868 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3869 vreinterpret_u32_s64 (int64x1_t __a
)
3871 return (uint32x2_t
) __builtin_aarch64_reinterpretv2sidi (__a
);
3874 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3875 vreinterpret_u32_f32 (float32x2_t __a
)
3877 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv2sf (__a
);
3880 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3881 vreinterpret_u32_u8 (uint8x8_t __a
)
3883 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv8qi ((int8x8_t
) __a
);
3886 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3887 vreinterpret_u32_u16 (uint16x4_t __a
)
3889 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv4hi ((int16x4_t
) __a
);
3892 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3893 vreinterpret_u32_u64 (uint64x1_t __a
)
3895 return (uint32x2_t
) __builtin_aarch64_reinterpretv2sidi ((int64x1_t
) __a
);
3898 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3899 vreinterpret_u32_p8 (poly8x8_t __a
)
3901 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv8qi ((int8x8_t
) __a
);
3904 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3905 vreinterpret_u32_p16 (poly16x4_t __a
)
3907 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv4hi ((int16x4_t
) __a
);
3910 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3911 vreinterpretq_u32_s8 (int8x16_t __a
)
3913 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv16qi (__a
);
3916 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3917 vreinterpretq_u32_s16 (int16x8_t __a
)
3919 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv8hi (__a
);
3922 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3923 vreinterpretq_u32_s32 (int32x4_t __a
)
3925 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv4si (__a
);
3928 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3929 vreinterpretq_u32_s64 (int64x2_t __a
)
3931 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv2di (__a
);
3934 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3935 vreinterpretq_u32_f32 (float32x4_t __a
)
3937 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv4sf (__a
);
3940 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3941 vreinterpretq_u32_u8 (uint8x16_t __a
)
3943 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv16qi ((int8x16_t
)
3947 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3948 vreinterpretq_u32_u16 (uint16x8_t __a
)
3950 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv8hi ((int16x8_t
) __a
);
3953 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3954 vreinterpretq_u32_u64 (uint64x2_t __a
)
3956 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv2di ((int64x2_t
) __a
);
3959 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3960 vreinterpretq_u32_p8 (poly8x16_t __a
)
3962 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv16qi ((int8x16_t
)
3966 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3967 vreinterpretq_u32_p16 (poly16x8_t __a
)
3969 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv8hi ((int16x8_t
) __a
);
3972 #define __GET_LOW(__TYPE) \
3973 uint64x2_t tmp = vreinterpretq_u64_##__TYPE (__a); \
3974 uint64_t lo = vgetq_lane_u64 (tmp, 0); \
3975 return vreinterpret_##__TYPE##_u64 (lo);
3977 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
3978 vget_low_f32 (float32x4_t __a
)
3983 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
3984 vget_low_f64 (float64x2_t __a
)
3986 return vgetq_lane_f64 (__a
, 0);
3989 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
3990 vget_low_p8 (poly8x16_t __a
)
3995 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
3996 vget_low_p16 (poly16x8_t __a
)
4001 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
4002 vget_low_s8 (int8x16_t __a
)
4007 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
4008 vget_low_s16 (int16x8_t __a
)
4013 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
4014 vget_low_s32 (int32x4_t __a
)
4019 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
4020 vget_low_s64 (int64x2_t __a
)
4022 return vgetq_lane_s64 (__a
, 0);
4025 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
4026 vget_low_u8 (uint8x16_t __a
)
4031 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
4032 vget_low_u16 (uint16x8_t __a
)
4037 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
4038 vget_low_u32 (uint32x4_t __a
)
4043 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
4044 vget_low_u64 (uint64x2_t __a
)
4046 return vgetq_lane_u64 (__a
, 0);
4051 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
4052 vcombine_s8 (int8x8_t __a
, int8x8_t __b
)
4054 return (int8x16_t
) __builtin_aarch64_combinev8qi (__a
, __b
);
4057 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4058 vcombine_s16 (int16x4_t __a
, int16x4_t __b
)
4060 return (int16x8_t
) __builtin_aarch64_combinev4hi (__a
, __b
);
4063 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4064 vcombine_s32 (int32x2_t __a
, int32x2_t __b
)
4066 return (int32x4_t
) __builtin_aarch64_combinev2si (__a
, __b
);
4069 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
4070 vcombine_s64 (int64x1_t __a
, int64x1_t __b
)
4072 return (int64x2_t
) __builtin_aarch64_combinedi (__a
, __b
);
4075 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
4076 vcombine_f32 (float32x2_t __a
, float32x2_t __b
)
4078 return (float32x4_t
) __builtin_aarch64_combinev2sf (__a
, __b
);
4081 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
4082 vcombine_u8 (uint8x8_t __a
, uint8x8_t __b
)
4084 return (uint8x16_t
) __builtin_aarch64_combinev8qi ((int8x8_t
) __a
,
4088 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
4089 vcombine_u16 (uint16x4_t __a
, uint16x4_t __b
)
4091 return (uint16x8_t
) __builtin_aarch64_combinev4hi ((int16x4_t
) __a
,
4095 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
4096 vcombine_u32 (uint32x2_t __a
, uint32x2_t __b
)
4098 return (uint32x4_t
) __builtin_aarch64_combinev2si ((int32x2_t
) __a
,
4102 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
4103 vcombine_u64 (uint64x1_t __a
, uint64x1_t __b
)
4105 return (uint64x2_t
) __builtin_aarch64_combinedi ((int64x1_t
) __a
,
4109 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
4110 vcombine_f64 (float64x1_t __a
, float64x1_t __b
)
4112 return (float64x2_t
) __builtin_aarch64_combinedf (__a
, __b
);
4115 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
4116 vcombine_p8 (poly8x8_t __a
, poly8x8_t __b
)
4118 return (poly8x16_t
) __builtin_aarch64_combinev8qi ((int8x8_t
) __a
,
4122 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
4123 vcombine_p16 (poly16x4_t __a
, poly16x4_t __b
)
4125 return (poly16x8_t
) __builtin_aarch64_combinev4hi ((int16x4_t
) __a
,
4129 /* Start of temporary inline asm implementations. */
4131 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
4132 vaba_s8 (int8x8_t a
, int8x8_t b
, int8x8_t c
)
4135 __asm__ ("saba %0.8b,%2.8b,%3.8b"
4137 : "0"(a
), "w"(b
), "w"(c
)
4138 : /* No clobbers */);
4142 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
4143 vaba_s16 (int16x4_t a
, int16x4_t b
, int16x4_t c
)
4146 __asm__ ("saba %0.4h,%2.4h,%3.4h"
4148 : "0"(a
), "w"(b
), "w"(c
)
4149 : /* No clobbers */);
4153 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
4154 vaba_s32 (int32x2_t a
, int32x2_t b
, int32x2_t c
)
4157 __asm__ ("saba %0.2s,%2.2s,%3.2s"
4159 : "0"(a
), "w"(b
), "w"(c
)
4160 : /* No clobbers */);
4164 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
4165 vaba_u8 (uint8x8_t a
, uint8x8_t b
, uint8x8_t c
)
4168 __asm__ ("uaba %0.8b,%2.8b,%3.8b"
4170 : "0"(a
), "w"(b
), "w"(c
)
4171 : /* No clobbers */);
4175 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
4176 vaba_u16 (uint16x4_t a
, uint16x4_t b
, uint16x4_t c
)
4179 __asm__ ("uaba %0.4h,%2.4h,%3.4h"
4181 : "0"(a
), "w"(b
), "w"(c
)
4182 : /* No clobbers */);
4186 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
4187 vaba_u32 (uint32x2_t a
, uint32x2_t b
, uint32x2_t c
)
4190 __asm__ ("uaba %0.2s,%2.2s,%3.2s"
4192 : "0"(a
), "w"(b
), "w"(c
)
4193 : /* No clobbers */);
4197 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4198 vabal_high_s8 (int16x8_t a
, int8x16_t b
, int8x16_t c
)
4201 __asm__ ("sabal2 %0.8h,%2.16b,%3.16b"
4203 : "0"(a
), "w"(b
), "w"(c
)
4204 : /* No clobbers */);
4208 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4209 vabal_high_s16 (int32x4_t a
, int16x8_t b
, int16x8_t c
)
4212 __asm__ ("sabal2 %0.4s,%2.8h,%3.8h"
4214 : "0"(a
), "w"(b
), "w"(c
)
4215 : /* No clobbers */);
4219 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
4220 vabal_high_s32 (int64x2_t a
, int32x4_t b
, int32x4_t c
)
4223 __asm__ ("sabal2 %0.2d,%2.4s,%3.4s"
4225 : "0"(a
), "w"(b
), "w"(c
)
4226 : /* No clobbers */);
4230 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
4231 vabal_high_u8 (uint16x8_t a
, uint8x16_t b
, uint8x16_t c
)
4234 __asm__ ("uabal2 %0.8h,%2.16b,%3.16b"
4236 : "0"(a
), "w"(b
), "w"(c
)
4237 : /* No clobbers */);
4241 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
4242 vabal_high_u16 (uint32x4_t a
, uint16x8_t b
, uint16x8_t c
)
4245 __asm__ ("uabal2 %0.4s,%2.8h,%3.8h"
4247 : "0"(a
), "w"(b
), "w"(c
)
4248 : /* No clobbers */);
4252 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
4253 vabal_high_u32 (uint64x2_t a
, uint32x4_t b
, uint32x4_t c
)
4256 __asm__ ("uabal2 %0.2d,%2.4s,%3.4s"
4258 : "0"(a
), "w"(b
), "w"(c
)
4259 : /* No clobbers */);
4263 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4264 vabal_s8 (int16x8_t a
, int8x8_t b
, int8x8_t c
)
4267 __asm__ ("sabal %0.8h,%2.8b,%3.8b"
4269 : "0"(a
), "w"(b
), "w"(c
)
4270 : /* No clobbers */);
4274 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4275 vabal_s16 (int32x4_t a
, int16x4_t b
, int16x4_t c
)
4278 __asm__ ("sabal %0.4s,%2.4h,%3.4h"
4280 : "0"(a
), "w"(b
), "w"(c
)
4281 : /* No clobbers */);
4285 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
4286 vabal_s32 (int64x2_t a
, int32x2_t b
, int32x2_t c
)
4289 __asm__ ("sabal %0.2d,%2.2s,%3.2s"
4291 : "0"(a
), "w"(b
), "w"(c
)
4292 : /* No clobbers */);
4296 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
4297 vabal_u8 (uint16x8_t a
, uint8x8_t b
, uint8x8_t c
)
4300 __asm__ ("uabal %0.8h,%2.8b,%3.8b"
4302 : "0"(a
), "w"(b
), "w"(c
)
4303 : /* No clobbers */);
4307 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
4308 vabal_u16 (uint32x4_t a
, uint16x4_t b
, uint16x4_t c
)
4311 __asm__ ("uabal %0.4s,%2.4h,%3.4h"
4313 : "0"(a
), "w"(b
), "w"(c
)
4314 : /* No clobbers */);
4318 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
4319 vabal_u32 (uint64x2_t a
, uint32x2_t b
, uint32x2_t c
)
4322 __asm__ ("uabal %0.2d,%2.2s,%3.2s"
4324 : "0"(a
), "w"(b
), "w"(c
)
4325 : /* No clobbers */);
4329 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
4330 vabaq_s8 (int8x16_t a
, int8x16_t b
, int8x16_t c
)
4333 __asm__ ("saba %0.16b,%2.16b,%3.16b"
4335 : "0"(a
), "w"(b
), "w"(c
)
4336 : /* No clobbers */);
4340 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4341 vabaq_s16 (int16x8_t a
, int16x8_t b
, int16x8_t c
)
4344 __asm__ ("saba %0.8h,%2.8h,%3.8h"
4346 : "0"(a
), "w"(b
), "w"(c
)
4347 : /* No clobbers */);
4351 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4352 vabaq_s32 (int32x4_t a
, int32x4_t b
, int32x4_t c
)
4355 __asm__ ("saba %0.4s,%2.4s,%3.4s"
4357 : "0"(a
), "w"(b
), "w"(c
)
4358 : /* No clobbers */);
4362 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
4363 vabaq_u8 (uint8x16_t a
, uint8x16_t b
, uint8x16_t c
)
4366 __asm__ ("uaba %0.16b,%2.16b,%3.16b"
4368 : "0"(a
), "w"(b
), "w"(c
)
4369 : /* No clobbers */);
4373 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
4374 vabaq_u16 (uint16x8_t a
, uint16x8_t b
, uint16x8_t c
)
4377 __asm__ ("uaba %0.8h,%2.8h,%3.8h"
4379 : "0"(a
), "w"(b
), "w"(c
)
4380 : /* No clobbers */);
4384 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
4385 vabaq_u32 (uint32x4_t a
, uint32x4_t b
, uint32x4_t c
)
4388 __asm__ ("uaba %0.4s,%2.4s,%3.4s"
4390 : "0"(a
), "w"(b
), "w"(c
)
4391 : /* No clobbers */);
4395 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
4396 vabd_f32 (float32x2_t a
, float32x2_t b
)
4399 __asm__ ("fabd %0.2s, %1.2s, %2.2s"
4402 : /* No clobbers */);
4406 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
4407 vabd_s8 (int8x8_t a
, int8x8_t b
)
4410 __asm__ ("sabd %0.8b, %1.8b, %2.8b"
4413 : /* No clobbers */);
4417 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
4418 vabd_s16 (int16x4_t a
, int16x4_t b
)
4421 __asm__ ("sabd %0.4h, %1.4h, %2.4h"
4424 : /* No clobbers */);
4428 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
4429 vabd_s32 (int32x2_t a
, int32x2_t b
)
4432 __asm__ ("sabd %0.2s, %1.2s, %2.2s"
4435 : /* No clobbers */);
4439 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
4440 vabd_u8 (uint8x8_t a
, uint8x8_t b
)
4443 __asm__ ("uabd %0.8b, %1.8b, %2.8b"
4446 : /* No clobbers */);
4450 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
4451 vabd_u16 (uint16x4_t a
, uint16x4_t b
)
4454 __asm__ ("uabd %0.4h, %1.4h, %2.4h"
4457 : /* No clobbers */);
4461 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
4462 vabd_u32 (uint32x2_t a
, uint32x2_t b
)
4465 __asm__ ("uabd %0.2s, %1.2s, %2.2s"
4468 : /* No clobbers */);
4472 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
4473 vabdd_f64 (float64_t a
, float64_t b
)
4476 __asm__ ("fabd %d0, %d1, %d2"
4479 : /* No clobbers */);
4483 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4484 vabdl_high_s8 (int8x16_t a
, int8x16_t b
)
4487 __asm__ ("sabdl2 %0.8h,%1.16b,%2.16b"
4490 : /* No clobbers */);
4494 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4495 vabdl_high_s16 (int16x8_t a
, int16x8_t b
)
4498 __asm__ ("sabdl2 %0.4s,%1.8h,%2.8h"
4501 : /* No clobbers */);
4505 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
4506 vabdl_high_s32 (int32x4_t a
, int32x4_t b
)
4509 __asm__ ("sabdl2 %0.2d,%1.4s,%2.4s"
4512 : /* No clobbers */);
4516 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
4517 vabdl_high_u8 (uint8x16_t a
, uint8x16_t b
)
4520 __asm__ ("uabdl2 %0.8h,%1.16b,%2.16b"
4523 : /* No clobbers */);
4527 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
4528 vabdl_high_u16 (uint16x8_t a
, uint16x8_t b
)
4531 __asm__ ("uabdl2 %0.4s,%1.8h,%2.8h"
4534 : /* No clobbers */);
4538 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
4539 vabdl_high_u32 (uint32x4_t a
, uint32x4_t b
)
4542 __asm__ ("uabdl2 %0.2d,%1.4s,%2.4s"
4545 : /* No clobbers */);
4549 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4550 vabdl_s8 (int8x8_t a
, int8x8_t b
)
4553 __asm__ ("sabdl %0.8h, %1.8b, %2.8b"
4556 : /* No clobbers */);
4560 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4561 vabdl_s16 (int16x4_t a
, int16x4_t b
)
4564 __asm__ ("sabdl %0.4s, %1.4h, %2.4h"
4567 : /* No clobbers */);
4571 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
4572 vabdl_s32 (int32x2_t a
, int32x2_t b
)
4575 __asm__ ("sabdl %0.2d, %1.2s, %2.2s"
4578 : /* No clobbers */);
4582 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
4583 vabdl_u8 (uint8x8_t a
, uint8x8_t b
)
4586 __asm__ ("uabdl %0.8h, %1.8b, %2.8b"
4589 : /* No clobbers */);
4593 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
4594 vabdl_u16 (uint16x4_t a
, uint16x4_t b
)
4597 __asm__ ("uabdl %0.4s, %1.4h, %2.4h"
4600 : /* No clobbers */);
4604 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
4605 vabdl_u32 (uint32x2_t a
, uint32x2_t b
)
4608 __asm__ ("uabdl %0.2d, %1.2s, %2.2s"
4611 : /* No clobbers */);
4615 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
4616 vabdq_f32 (float32x4_t a
, float32x4_t b
)
4619 __asm__ ("fabd %0.4s, %1.4s, %2.4s"
4622 : /* No clobbers */);
4626 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
4627 vabdq_f64 (float64x2_t a
, float64x2_t b
)
4630 __asm__ ("fabd %0.2d, %1.2d, %2.2d"
4633 : /* No clobbers */);
4637 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
4638 vabdq_s8 (int8x16_t a
, int8x16_t b
)
4641 __asm__ ("sabd %0.16b, %1.16b, %2.16b"
4644 : /* No clobbers */);
4648 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4649 vabdq_s16 (int16x8_t a
, int16x8_t b
)
4652 __asm__ ("sabd %0.8h, %1.8h, %2.8h"
4655 : /* No clobbers */);
4659 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4660 vabdq_s32 (int32x4_t a
, int32x4_t b
)
4663 __asm__ ("sabd %0.4s, %1.4s, %2.4s"
4666 : /* No clobbers */);
4670 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
4671 vabdq_u8 (uint8x16_t a
, uint8x16_t b
)
4674 __asm__ ("uabd %0.16b, %1.16b, %2.16b"
4677 : /* No clobbers */);
4681 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
4682 vabdq_u16 (uint16x8_t a
, uint16x8_t b
)
4685 __asm__ ("uabd %0.8h, %1.8h, %2.8h"
4688 : /* No clobbers */);
4692 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
4693 vabdq_u32 (uint32x4_t a
, uint32x4_t b
)
4696 __asm__ ("uabd %0.4s, %1.4s, %2.4s"
4699 : /* No clobbers */);
4703 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
4704 vabds_f32 (float32_t a
, float32_t b
)
4707 __asm__ ("fabd %s0, %s1, %s2"
4710 : /* No clobbers */);
4714 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
4715 vaddlv_s8 (int8x8_t a
)
4718 __asm__ ("saddlv %h0,%1.8b"
4721 : /* No clobbers */);
4725 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
4726 vaddlv_s16 (int16x4_t a
)
4729 __asm__ ("saddlv %s0,%1.4h"
4732 : /* No clobbers */);
4736 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
4737 vaddlv_u8 (uint8x8_t a
)
4740 __asm__ ("uaddlv %h0,%1.8b"
4743 : /* No clobbers */);
4747 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
4748 vaddlv_u16 (uint16x4_t a
)
4751 __asm__ ("uaddlv %s0,%1.4h"
4754 : /* No clobbers */);
4758 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
4759 vaddlvq_s8 (int8x16_t a
)
4762 __asm__ ("saddlv %h0,%1.16b"
4765 : /* No clobbers */);
4769 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
4770 vaddlvq_s16 (int16x8_t a
)
4773 __asm__ ("saddlv %s0,%1.8h"
4776 : /* No clobbers */);
4780 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
4781 vaddlvq_s32 (int32x4_t a
)
4784 __asm__ ("saddlv %d0,%1.4s"
4787 : /* No clobbers */);
4791 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
4792 vaddlvq_u8 (uint8x16_t a
)
4795 __asm__ ("uaddlv %h0,%1.16b"
4798 : /* No clobbers */);
4802 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
4803 vaddlvq_u16 (uint16x8_t a
)
4806 __asm__ ("uaddlv %s0,%1.8h"
4809 : /* No clobbers */);
4813 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
4814 vaddlvq_u32 (uint32x4_t a
)
4817 __asm__ ("uaddlv %d0,%1.4s"
4820 : /* No clobbers */);
4824 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
4825 vbsl_f32 (uint32x2_t a
, float32x2_t b
, float32x2_t c
)
4828 __asm__ ("bsl %0.8b, %2.8b, %3.8b"
4830 : "0"(a
), "w"(b
), "w"(c
)
4831 : /* No clobbers */);
4835 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
4836 vbsl_p8 (uint8x8_t a
, poly8x8_t b
, poly8x8_t c
)
4839 __asm__ ("bsl %0.8b, %2.8b, %3.8b"
4841 : "0"(a
), "w"(b
), "w"(c
)
4842 : /* No clobbers */);
4846 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
4847 vbsl_p16 (uint16x4_t a
, poly16x4_t b
, poly16x4_t c
)
4850 __asm__ ("bsl %0.8b, %2.8b, %3.8b"
4852 : "0"(a
), "w"(b
), "w"(c
)
4853 : /* No clobbers */);
4857 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
4858 vbsl_s8 (uint8x8_t a
, int8x8_t b
, int8x8_t c
)
4861 __asm__ ("bsl %0.8b, %2.8b, %3.8b"
4863 : "0"(a
), "w"(b
), "w"(c
)
4864 : /* No clobbers */);
4868 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
4869 vbsl_s16 (uint16x4_t a
, int16x4_t b
, int16x4_t c
)
4872 __asm__ ("bsl %0.8b, %2.8b, %3.8b"
4874 : "0"(a
), "w"(b
), "w"(c
)
4875 : /* No clobbers */);
4879 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
4880 vbsl_s32 (uint32x2_t a
, int32x2_t b
, int32x2_t c
)
4883 __asm__ ("bsl %0.8b, %2.8b, %3.8b"
4885 : "0"(a
), "w"(b
), "w"(c
)
4886 : /* No clobbers */);
4890 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
4891 vbsl_s64 (uint64x1_t a
, int64x1_t b
, int64x1_t c
)
4894 __asm__ ("bsl %0.8b, %2.8b, %3.8b"
4896 : "0"(a
), "w"(b
), "w"(c
)
4897 : /* No clobbers */);
4901 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
4902 vbsl_u8 (uint8x8_t a
, uint8x8_t b
, uint8x8_t c
)
4905 __asm__ ("bsl %0.8b, %2.8b, %3.8b"
4907 : "0"(a
), "w"(b
), "w"(c
)
4908 : /* No clobbers */);
4912 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
4913 vbsl_u16 (uint16x4_t a
, uint16x4_t b
, uint16x4_t c
)
4916 __asm__ ("bsl %0.8b, %2.8b, %3.8b"
4918 : "0"(a
), "w"(b
), "w"(c
)
4919 : /* No clobbers */);
4923 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
4924 vbsl_u32 (uint32x2_t a
, uint32x2_t b
, uint32x2_t c
)
4927 __asm__ ("bsl %0.8b, %2.8b, %3.8b"
4929 : "0"(a
), "w"(b
), "w"(c
)
4930 : /* No clobbers */);
4934 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
4935 vbsl_u64 (uint64x1_t a
, uint64x1_t b
, uint64x1_t c
)
4938 __asm__ ("bsl %0.8b, %2.8b, %3.8b"
4940 : "0"(a
), "w"(b
), "w"(c
)
4941 : /* No clobbers */);
4945 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
4946 vbslq_f32 (uint32x4_t a
, float32x4_t b
, float32x4_t c
)
4949 __asm__ ("bsl %0.16b, %2.16b, %3.16b"
4951 : "0"(a
), "w"(b
), "w"(c
)
4952 : /* No clobbers */);
4956 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
4957 vbslq_f64 (uint64x2_t a
, float64x2_t b
, float64x2_t c
)
4960 __asm__ ("bsl %0.16b, %2.16b, %3.16b"
4962 : "0"(a
), "w"(b
), "w"(c
)
4963 : /* No clobbers */);
4967 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
4968 vbslq_p8 (uint8x16_t a
, poly8x16_t b
, poly8x16_t c
)
4971 __asm__ ("bsl %0.16b, %2.16b, %3.16b"
4973 : "0"(a
), "w"(b
), "w"(c
)
4974 : /* No clobbers */);
4978 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
4979 vbslq_p16 (uint16x8_t a
, poly16x8_t b
, poly16x8_t c
)
4982 __asm__ ("bsl %0.16b, %2.16b, %3.16b"
4984 : "0"(a
), "w"(b
), "w"(c
)
4985 : /* No clobbers */);
4989 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
4990 vbslq_s8 (uint8x16_t a
, int8x16_t b
, int8x16_t c
)
4993 __asm__ ("bsl %0.16b, %2.16b, %3.16b"
4995 : "0"(a
), "w"(b
), "w"(c
)
4996 : /* No clobbers */);
5000 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
5001 vbslq_s16 (uint16x8_t a
, int16x8_t b
, int16x8_t c
)
5004 __asm__ ("bsl %0.16b, %2.16b, %3.16b"
5006 : "0"(a
), "w"(b
), "w"(c
)
5007 : /* No clobbers */);
5011 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
5012 vbslq_s32 (uint32x4_t a
, int32x4_t b
, int32x4_t c
)
5015 __asm__ ("bsl %0.16b, %2.16b, %3.16b"
5017 : "0"(a
), "w"(b
), "w"(c
)
5018 : /* No clobbers */);
5022 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
5023 vbslq_s64 (uint64x2_t a
, int64x2_t b
, int64x2_t c
)
5026 __asm__ ("bsl %0.16b, %2.16b, %3.16b"
5028 : "0"(a
), "w"(b
), "w"(c
)
5029 : /* No clobbers */);
5033 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
5034 vbslq_u8 (uint8x16_t a
, uint8x16_t b
, uint8x16_t c
)
5037 __asm__ ("bsl %0.16b, %2.16b, %3.16b"
5039 : "0"(a
), "w"(b
), "w"(c
)
5040 : /* No clobbers */);
5044 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
5045 vbslq_u16 (uint16x8_t a
, uint16x8_t b
, uint16x8_t c
)
5048 __asm__ ("bsl %0.16b, %2.16b, %3.16b"
5050 : "0"(a
), "w"(b
), "w"(c
)
5051 : /* No clobbers */);
5055 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
5056 vbslq_u32 (uint32x4_t a
, uint32x4_t b
, uint32x4_t c
)
5059 __asm__ ("bsl %0.16b, %2.16b, %3.16b"
5061 : "0"(a
), "w"(b
), "w"(c
)
5062 : /* No clobbers */);
5066 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
5067 vbslq_u64 (uint64x2_t a
, uint64x2_t b
, uint64x2_t c
)
5070 __asm__ ("bsl %0.16b, %2.16b, %3.16b"
5072 : "0"(a
), "w"(b
), "w"(c
)
5073 : /* No clobbers */);
5077 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
5078 vcls_s8 (int8x8_t a
)
5081 __asm__ ("cls %0.8b,%1.8b"
5084 : /* No clobbers */);
5088 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
5089 vcls_s16 (int16x4_t a
)
5092 __asm__ ("cls %0.4h,%1.4h"
5095 : /* No clobbers */);
5099 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
5100 vcls_s32 (int32x2_t a
)
5103 __asm__ ("cls %0.2s,%1.2s"
5106 : /* No clobbers */);
5110 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
5111 vclsq_s8 (int8x16_t a
)
5114 __asm__ ("cls %0.16b,%1.16b"
5117 : /* No clobbers */);
5121 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
5122 vclsq_s16 (int16x8_t a
)
5125 __asm__ ("cls %0.8h,%1.8h"
5128 : /* No clobbers */);
5132 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
5133 vclsq_s32 (int32x4_t a
)
5136 __asm__ ("cls %0.4s,%1.4s"
5139 : /* No clobbers */);
5143 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
5144 vclz_s8 (int8x8_t a
)
5147 __asm__ ("clz %0.8b,%1.8b"
5150 : /* No clobbers */);
5154 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
5155 vclz_s16 (int16x4_t a
)
5158 __asm__ ("clz %0.4h,%1.4h"
5161 : /* No clobbers */);
5165 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
5166 vclz_s32 (int32x2_t a
)
5169 __asm__ ("clz %0.2s,%1.2s"
5172 : /* No clobbers */);
5176 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
5177 vclz_u8 (uint8x8_t a
)
5180 __asm__ ("clz %0.8b,%1.8b"
5183 : /* No clobbers */);
5187 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
5188 vclz_u16 (uint16x4_t a
)
5191 __asm__ ("clz %0.4h,%1.4h"
5194 : /* No clobbers */);
5198 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
5199 vclz_u32 (uint32x2_t a
)
5202 __asm__ ("clz %0.2s,%1.2s"
5205 : /* No clobbers */);
5209 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
5210 vclzq_s8 (int8x16_t a
)
5213 __asm__ ("clz %0.16b,%1.16b"
5216 : /* No clobbers */);
5220 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
5221 vclzq_s16 (int16x8_t a
)
5224 __asm__ ("clz %0.8h,%1.8h"
5227 : /* No clobbers */);
5231 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
5232 vclzq_s32 (int32x4_t a
)
5235 __asm__ ("clz %0.4s,%1.4s"
5238 : /* No clobbers */);
5242 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
5243 vclzq_u8 (uint8x16_t a
)
5246 __asm__ ("clz %0.16b,%1.16b"
5249 : /* No clobbers */);
5253 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
5254 vclzq_u16 (uint16x8_t a
)
5257 __asm__ ("clz %0.8h,%1.8h"
5260 : /* No clobbers */);
5264 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
5265 vclzq_u32 (uint32x4_t a
)
5268 __asm__ ("clz %0.4s,%1.4s"
5271 : /* No clobbers */);
5275 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
5276 vcnt_p8 (poly8x8_t a
)
5279 __asm__ ("cnt %0.8b,%1.8b"
5282 : /* No clobbers */);
5286 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
5287 vcnt_s8 (int8x8_t a
)
5290 __asm__ ("cnt %0.8b,%1.8b"
5293 : /* No clobbers */);
5297 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
5298 vcnt_u8 (uint8x8_t a
)
5301 __asm__ ("cnt %0.8b,%1.8b"
5304 : /* No clobbers */);
5308 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
5309 vcntq_p8 (poly8x16_t a
)
5312 __asm__ ("cnt %0.16b,%1.16b"
5315 : /* No clobbers */);
5319 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
5320 vcntq_s8 (int8x16_t a
)
5323 __asm__ ("cnt %0.16b,%1.16b"
5326 : /* No clobbers */);
5330 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
5331 vcntq_u8 (uint8x16_t a
)
5334 __asm__ ("cnt %0.16b,%1.16b"
5337 : /* No clobbers */);
5341 #define vcopyq_lane_f32(a, b, c, d) \
5344 float32x4_t c_ = (c); \
5345 float32x4_t a_ = (a); \
5346 float32x4_t result; \
5347 __asm__ ("ins %0.s[%2], %3.s[%4]" \
5349 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5350 : /* No clobbers */); \
5354 #define vcopyq_lane_f64(a, b, c, d) \
5357 float64x2_t c_ = (c); \
5358 float64x2_t a_ = (a); \
5359 float64x2_t result; \
5360 __asm__ ("ins %0.d[%2], %3.d[%4]" \
5362 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5363 : /* No clobbers */); \
5367 #define vcopyq_lane_p8(a, b, c, d) \
5370 poly8x16_t c_ = (c); \
5371 poly8x16_t a_ = (a); \
5372 poly8x16_t result; \
5373 __asm__ ("ins %0.b[%2], %3.b[%4]" \
5375 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5376 : /* No clobbers */); \
5380 #define vcopyq_lane_p16(a, b, c, d) \
5383 poly16x8_t c_ = (c); \
5384 poly16x8_t a_ = (a); \
5385 poly16x8_t result; \
5386 __asm__ ("ins %0.h[%2], %3.h[%4]" \
5388 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5389 : /* No clobbers */); \
5393 #define vcopyq_lane_s8(a, b, c, d) \
5396 int8x16_t c_ = (c); \
5397 int8x16_t a_ = (a); \
5399 __asm__ ("ins %0.b[%2], %3.b[%4]" \
5401 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5402 : /* No clobbers */); \
5406 #define vcopyq_lane_s16(a, b, c, d) \
5409 int16x8_t c_ = (c); \
5410 int16x8_t a_ = (a); \
5412 __asm__ ("ins %0.h[%2], %3.h[%4]" \
5414 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5415 : /* No clobbers */); \
5419 #define vcopyq_lane_s32(a, b, c, d) \
5422 int32x4_t c_ = (c); \
5423 int32x4_t a_ = (a); \
5425 __asm__ ("ins %0.s[%2], %3.s[%4]" \
5427 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5428 : /* No clobbers */); \
5432 #define vcopyq_lane_s64(a, b, c, d) \
5435 int64x2_t c_ = (c); \
5436 int64x2_t a_ = (a); \
5438 __asm__ ("ins %0.d[%2], %3.d[%4]" \
5440 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5441 : /* No clobbers */); \
5445 #define vcopyq_lane_u8(a, b, c, d) \
5448 uint8x16_t c_ = (c); \
5449 uint8x16_t a_ = (a); \
5450 uint8x16_t result; \
5451 __asm__ ("ins %0.b[%2], %3.b[%4]" \
5453 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5454 : /* No clobbers */); \
5458 #define vcopyq_lane_u16(a, b, c, d) \
5461 uint16x8_t c_ = (c); \
5462 uint16x8_t a_ = (a); \
5463 uint16x8_t result; \
5464 __asm__ ("ins %0.h[%2], %3.h[%4]" \
5466 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5467 : /* No clobbers */); \
5471 #define vcopyq_lane_u32(a, b, c, d) \
5474 uint32x4_t c_ = (c); \
5475 uint32x4_t a_ = (a); \
5476 uint32x4_t result; \
5477 __asm__ ("ins %0.s[%2], %3.s[%4]" \
5479 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5480 : /* No clobbers */); \
5484 #define vcopyq_lane_u64(a, b, c, d) \
5487 uint64x2_t c_ = (c); \
5488 uint64x2_t a_ = (a); \
5489 uint64x2_t result; \
5490 __asm__ ("ins %0.d[%2], %3.d[%4]" \
5492 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5493 : /* No clobbers */); \
5497 /* vcvt_f16_f32 not supported */
5499 /* vcvt_f32_f16 not supported */
5501 /* vcvt_high_f16_f32 not supported */
5503 /* vcvt_high_f32_f16 not supported */
5505 static float32x2_t
vdup_n_f32 (float32_t
);
5507 #define vcvt_n_f32_s32(a, b) \
5510 int32x2_t a_ = (a); \
5511 float32x2_t result; \
5512 __asm__ ("scvtf %0.2s, %1.2s, #%2" \
5515 : /* No clobbers */); \
5519 #define vcvt_n_f32_u32(a, b) \
5522 uint32x2_t a_ = (a); \
5523 float32x2_t result; \
5524 __asm__ ("ucvtf %0.2s, %1.2s, #%2" \
5527 : /* No clobbers */); \
5531 #define vcvt_n_s32_f32(a, b) \
5534 float32x2_t a_ = (a); \
5536 __asm__ ("fcvtzs %0.2s, %1.2s, #%2" \
5539 : /* No clobbers */); \
5543 #define vcvt_n_u32_f32(a, b) \
5546 float32x2_t a_ = (a); \
5547 uint32x2_t result; \
5548 __asm__ ("fcvtzu %0.2s, %1.2s, #%2" \
5551 : /* No clobbers */); \
5555 #define vcvtd_n_f64_s64(a, b) \
5560 __asm__ ("scvtf %d0,%d1,%2" \
5563 : /* No clobbers */); \
5567 #define vcvtd_n_f64_u64(a, b) \
5570 uint64_t a_ = (a); \
5572 __asm__ ("ucvtf %d0,%d1,%2" \
5575 : /* No clobbers */); \
5579 #define vcvtd_n_s64_f64(a, b) \
5582 float64_t a_ = (a); \
5584 __asm__ ("fcvtzs %d0,%d1,%2" \
5587 : /* No clobbers */); \
5591 #define vcvtd_n_u64_f64(a, b) \
5594 float64_t a_ = (a); \
5596 __asm__ ("fcvtzu %d0,%d1,%2" \
5599 : /* No clobbers */); \
5603 #define vcvtq_n_f32_s32(a, b) \
5606 int32x4_t a_ = (a); \
5607 float32x4_t result; \
5608 __asm__ ("scvtf %0.4s, %1.4s, #%2" \
5611 : /* No clobbers */); \
5615 #define vcvtq_n_f32_u32(a, b) \
5618 uint32x4_t a_ = (a); \
5619 float32x4_t result; \
5620 __asm__ ("ucvtf %0.4s, %1.4s, #%2" \
5623 : /* No clobbers */); \
5627 #define vcvtq_n_f64_s64(a, b) \
5630 int64x2_t a_ = (a); \
5631 float64x2_t result; \
5632 __asm__ ("scvtf %0.2d, %1.2d, #%2" \
5635 : /* No clobbers */); \
5639 #define vcvtq_n_f64_u64(a, b) \
5642 uint64x2_t a_ = (a); \
5643 float64x2_t result; \
5644 __asm__ ("ucvtf %0.2d, %1.2d, #%2" \
5647 : /* No clobbers */); \
5651 #define vcvtq_n_s32_f32(a, b) \
5654 float32x4_t a_ = (a); \
5656 __asm__ ("fcvtzs %0.4s, %1.4s, #%2" \
5659 : /* No clobbers */); \
5663 #define vcvtq_n_s64_f64(a, b) \
5666 float64x2_t a_ = (a); \
5668 __asm__ ("fcvtzs %0.2d, %1.2d, #%2" \
5671 : /* No clobbers */); \
5675 #define vcvtq_n_u32_f32(a, b) \
5678 float32x4_t a_ = (a); \
5679 uint32x4_t result; \
5680 __asm__ ("fcvtzu %0.4s, %1.4s, #%2" \
5683 : /* No clobbers */); \
5687 #define vcvtq_n_u64_f64(a, b) \
5690 float64x2_t a_ = (a); \
5691 uint64x2_t result; \
5692 __asm__ ("fcvtzu %0.2d, %1.2d, #%2" \
5695 : /* No clobbers */); \
5699 #define vcvts_n_f32_s32(a, b) \
5704 __asm__ ("scvtf %s0,%s1,%2" \
5707 : /* No clobbers */); \
5711 #define vcvts_n_f32_u32(a, b) \
5714 uint32_t a_ = (a); \
5716 __asm__ ("ucvtf %s0,%s1,%2" \
5719 : /* No clobbers */); \
5723 #define vcvts_n_s32_f32(a, b) \
5726 float32_t a_ = (a); \
5728 __asm__ ("fcvtzs %s0,%s1,%2" \
5731 : /* No clobbers */); \
5735 #define vcvts_n_u32_f32(a, b) \
5738 float32_t a_ = (a); \
5740 __asm__ ("fcvtzu %s0,%s1,%2" \
5743 : /* No clobbers */); \
5747 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
5748 vcvtx_f32_f64 (float64x2_t a
)
5751 __asm__ ("fcvtxn %0.2s,%1.2d"
5754 : /* No clobbers */);
5758 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
5759 vcvtx_high_f32_f64 (float32x2_t a
, float64x2_t b
)
5762 __asm__ ("fcvtxn2 %0.4s,%1.2d"
5765 : /* No clobbers */);
5769 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
5770 vcvtxd_f32_f64 (float64_t a
)
5773 __asm__ ("fcvtxn %s0,%d1"
5776 : /* No clobbers */);
5780 #define vext_f32(a, b, c) \
5783 float32x2_t b_ = (b); \
5784 float32x2_t a_ = (a); \
5785 float32x2_t result; \
5786 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*4" \
5788 : "w"(a_), "w"(b_), "i"(c) \
5789 : /* No clobbers */); \
5793 #define vext_f64(a, b, c) \
5796 float64x1_t b_ = (b); \
5797 float64x1_t a_ = (a); \
5798 float64x1_t result; \
5799 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*8" \
5801 : "w"(a_), "w"(b_), "i"(c) \
5802 : /* No clobbers */); \
5806 #define vext_p8(a, b, c) \
5809 poly8x8_t b_ = (b); \
5810 poly8x8_t a_ = (a); \
5812 __asm__ ("ext %0.8b,%1.8b,%2.8b,%3" \
5814 : "w"(a_), "w"(b_), "i"(c) \
5815 : /* No clobbers */); \
5819 #define vext_p16(a, b, c) \
5822 poly16x4_t b_ = (b); \
5823 poly16x4_t a_ = (a); \
5824 poly16x4_t result; \
5825 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*2" \
5827 : "w"(a_), "w"(b_), "i"(c) \
5828 : /* No clobbers */); \
5832 #define vext_s8(a, b, c) \
5835 int8x8_t b_ = (b); \
5836 int8x8_t a_ = (a); \
5838 __asm__ ("ext %0.8b,%1.8b,%2.8b,%3" \
5840 : "w"(a_), "w"(b_), "i"(c) \
5841 : /* No clobbers */); \
5845 #define vext_s16(a, b, c) \
5848 int16x4_t b_ = (b); \
5849 int16x4_t a_ = (a); \
5851 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*2" \
5853 : "w"(a_), "w"(b_), "i"(c) \
5854 : /* No clobbers */); \
5858 #define vext_s32(a, b, c) \
5861 int32x2_t b_ = (b); \
5862 int32x2_t a_ = (a); \
5864 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*4" \
5866 : "w"(a_), "w"(b_), "i"(c) \
5867 : /* No clobbers */); \
5871 #define vext_s64(a, b, c) \
5874 int64x1_t b_ = (b); \
5875 int64x1_t a_ = (a); \
5877 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*8" \
5879 : "w"(a_), "w"(b_), "i"(c) \
5880 : /* No clobbers */); \
5884 #define vext_u8(a, b, c) \
5887 uint8x8_t b_ = (b); \
5888 uint8x8_t a_ = (a); \
5890 __asm__ ("ext %0.8b,%1.8b,%2.8b,%3" \
5892 : "w"(a_), "w"(b_), "i"(c) \
5893 : /* No clobbers */); \
5897 #define vext_u16(a, b, c) \
5900 uint16x4_t b_ = (b); \
5901 uint16x4_t a_ = (a); \
5902 uint16x4_t result; \
5903 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*2" \
5905 : "w"(a_), "w"(b_), "i"(c) \
5906 : /* No clobbers */); \
5910 #define vext_u32(a, b, c) \
5913 uint32x2_t b_ = (b); \
5914 uint32x2_t a_ = (a); \
5915 uint32x2_t result; \
5916 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*4" \
5918 : "w"(a_), "w"(b_), "i"(c) \
5919 : /* No clobbers */); \
5923 #define vext_u64(a, b, c) \
5926 uint64x1_t b_ = (b); \
5927 uint64x1_t a_ = (a); \
5928 uint64x1_t result; \
5929 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*8" \
5931 : "w"(a_), "w"(b_), "i"(c) \
5932 : /* No clobbers */); \
5936 #define vextq_f32(a, b, c) \
5939 float32x4_t b_ = (b); \
5940 float32x4_t a_ = (a); \
5941 float32x4_t result; \
5942 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*4" \
5944 : "w"(a_), "w"(b_), "i"(c) \
5945 : /* No clobbers */); \
5949 #define vextq_f64(a, b, c) \
5952 float64x2_t b_ = (b); \
5953 float64x2_t a_ = (a); \
5954 float64x2_t result; \
5955 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*8" \
5957 : "w"(a_), "w"(b_), "i"(c) \
5958 : /* No clobbers */); \
5962 #define vextq_p8(a, b, c) \
5965 poly8x16_t b_ = (b); \
5966 poly8x16_t a_ = (a); \
5967 poly8x16_t result; \
5968 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3" \
5970 : "w"(a_), "w"(b_), "i"(c) \
5971 : /* No clobbers */); \
5975 #define vextq_p16(a, b, c) \
5978 poly16x8_t b_ = (b); \
5979 poly16x8_t a_ = (a); \
5980 poly16x8_t result; \
5981 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*2" \
5983 : "w"(a_), "w"(b_), "i"(c) \
5984 : /* No clobbers */); \
5988 #define vextq_s8(a, b, c) \
5991 int8x16_t b_ = (b); \
5992 int8x16_t a_ = (a); \
5994 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3" \
5996 : "w"(a_), "w"(b_), "i"(c) \
5997 : /* No clobbers */); \
6001 #define vextq_s16(a, b, c) \
6004 int16x8_t b_ = (b); \
6005 int16x8_t a_ = (a); \
6007 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*2" \
6009 : "w"(a_), "w"(b_), "i"(c) \
6010 : /* No clobbers */); \
6014 #define vextq_s32(a, b, c) \
6017 int32x4_t b_ = (b); \
6018 int32x4_t a_ = (a); \
6020 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*4" \
6022 : "w"(a_), "w"(b_), "i"(c) \
6023 : /* No clobbers */); \
6027 #define vextq_s64(a, b, c) \
6030 int64x2_t b_ = (b); \
6031 int64x2_t a_ = (a); \
6033 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*8" \
6035 : "w"(a_), "w"(b_), "i"(c) \
6036 : /* No clobbers */); \
6040 #define vextq_u8(a, b, c) \
6043 uint8x16_t b_ = (b); \
6044 uint8x16_t a_ = (a); \
6045 uint8x16_t result; \
6046 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3" \
6048 : "w"(a_), "w"(b_), "i"(c) \
6049 : /* No clobbers */); \
6053 #define vextq_u16(a, b, c) \
6056 uint16x8_t b_ = (b); \
6057 uint16x8_t a_ = (a); \
6058 uint16x8_t result; \
6059 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*2" \
6061 : "w"(a_), "w"(b_), "i"(c) \
6062 : /* No clobbers */); \
6066 #define vextq_u32(a, b, c) \
6069 uint32x4_t b_ = (b); \
6070 uint32x4_t a_ = (a); \
6071 uint32x4_t result; \
6072 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*4" \
6074 : "w"(a_), "w"(b_), "i"(c) \
6075 : /* No clobbers */); \
6079 #define vextq_u64(a, b, c) \
6082 uint64x2_t b_ = (b); \
6083 uint64x2_t a_ = (a); \
6084 uint64x2_t result; \
6085 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*8" \
6087 : "w"(a_), "w"(b_), "i"(c) \
6088 : /* No clobbers */); \
6092 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
6093 vfma_f32 (float32x2_t a
, float32x2_t b
, float32x2_t c
)
6096 __asm__ ("fmla %0.2s,%2.2s,%3.2s"
6098 : "0"(a
), "w"(b
), "w"(c
)
6099 : /* No clobbers */);
6103 #define vfma_lane_f32(a, b, c, d) \
6106 float32x2_t c_ = (c); \
6107 float32x2_t b_ = (b); \
6108 float32x2_t a_ = (a); \
6109 float32x2_t result; \
6110 __asm__ ("fmla %0.2s,%2.2s,%3.s[%4]" \
6112 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
6113 : /* No clobbers */); \
6117 #define vfmad_lane_f64(a, b, c) \
6120 float64x2_t b_ = (b); \
6121 float64_t a_ = (a); \
6123 __asm__ ("fmla %d0,%d1,%2.d[%3]" \
6125 : "w"(a_), "w"(b_), "i"(c) \
6126 : /* No clobbers */); \
6130 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
6131 vfmaq_f32 (float32x4_t a
, float32x4_t b
, float32x4_t c
)
6134 __asm__ ("fmla %0.4s,%2.4s,%3.4s"
6136 : "0"(a
), "w"(b
), "w"(c
)
6137 : /* No clobbers */);
6141 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
6142 vfmaq_f64 (float64x2_t a
, float64x2_t b
, float64x2_t c
)
6145 __asm__ ("fmla %0.2d,%2.2d,%3.2d"
6147 : "0"(a
), "w"(b
), "w"(c
)
6148 : /* No clobbers */);
6152 #define vfmaq_lane_f32(a, b, c, d) \
6155 float32x4_t c_ = (c); \
6156 float32x4_t b_ = (b); \
6157 float32x4_t a_ = (a); \
6158 float32x4_t result; \
6159 __asm__ ("fmla %0.4s,%2.4s,%3.s[%4]" \
6161 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
6162 : /* No clobbers */); \
6166 #define vfmaq_lane_f64(a, b, c, d) \
6169 float64x2_t c_ = (c); \
6170 float64x2_t b_ = (b); \
6171 float64x2_t a_ = (a); \
6172 float64x2_t result; \
6173 __asm__ ("fmla %0.2d,%2.2d,%3.d[%4]" \
6175 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
6176 : /* No clobbers */); \
6180 #define vfmas_lane_f32(a, b, c) \
6183 float32x4_t b_ = (b); \
6184 float32_t a_ = (a); \
6186 __asm__ ("fmla %s0,%s1,%2.s[%3]" \
6188 : "w"(a_), "w"(b_), "i"(c) \
6189 : /* No clobbers */); \
6193 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
6194 vfma_n_f32 (float32x2_t a
, float32x2_t b
, float32_t c
)
6197 __asm__ ("fmla %0.2s, %2.2s, %3.s[0]"
6199 : "0"(a
), "w"(b
), "w"(c
)
6200 : /* No clobbers */);
6204 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
6205 vfmaq_n_f32 (float32x4_t a
, float32x4_t b
, float32_t c
)
6208 __asm__ ("fmla %0.4s, %2.4s, %3.s[0]"
6210 : "0"(a
), "w"(b
), "w"(c
)
6211 : /* No clobbers */);
6215 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
6216 vfmaq_n_f64 (float64x2_t a
, float64x2_t b
, float64_t c
)
6219 __asm__ ("fmla %0.2d, %2.2d, %3.d[0]"
6221 : "0"(a
), "w"(b
), "w"(c
)
6222 : /* No clobbers */);
6226 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
6227 vfms_f32 (float32x2_t a
, float32x2_t b
, float32x2_t c
)
6230 __asm__ ("fmls %0.2s,%2.2s,%3.2s"
6232 : "0"(a
), "w"(b
), "w"(c
)
6233 : /* No clobbers */);
6237 #define vfmsd_lane_f64(a, b, c) \
6240 float64x2_t b_ = (b); \
6241 float64_t a_ = (a); \
6243 __asm__ ("fmls %d0,%d1,%2.d[%3]" \
6245 : "w"(a_), "w"(b_), "i"(c) \
6246 : /* No clobbers */); \
6250 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
6251 vfmsq_f32 (float32x4_t a
, float32x4_t b
, float32x4_t c
)
6254 __asm__ ("fmls %0.4s,%2.4s,%3.4s"
6256 : "0"(a
), "w"(b
), "w"(c
)
6257 : /* No clobbers */);
6261 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
6262 vfmsq_f64 (float64x2_t a
, float64x2_t b
, float64x2_t c
)
6265 __asm__ ("fmls %0.2d,%2.2d,%3.2d"
6267 : "0"(a
), "w"(b
), "w"(c
)
6268 : /* No clobbers */);
6272 #define vfmss_lane_f32(a, b, c) \
6275 float32x4_t b_ = (b); \
6276 float32_t a_ = (a); \
6278 __asm__ ("fmls %s0,%s1,%2.s[%3]" \
6280 : "w"(a_), "w"(b_), "i"(c) \
6281 : /* No clobbers */); \
6285 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
6286 vget_high_f32 (float32x4_t a
)
6289 __asm__ ("ins %0.d[0], %1.d[1]"
6292 : /* No clobbers */);
6296 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
6297 vget_high_f64 (float64x2_t a
)
6300 __asm__ ("ins %0.d[0], %1.d[1]"
6303 : /* No clobbers */);
6307 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
6308 vget_high_p8 (poly8x16_t a
)
6311 __asm__ ("ins %0.d[0], %1.d[1]"
6314 : /* No clobbers */);
6318 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
6319 vget_high_p16 (poly16x8_t a
)
6322 __asm__ ("ins %0.d[0], %1.d[1]"
6325 : /* No clobbers */);
6329 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
6330 vget_high_s8 (int8x16_t a
)
6333 __asm__ ("ins %0.d[0], %1.d[1]"
6336 : /* No clobbers */);
6340 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
6341 vget_high_s16 (int16x8_t a
)
6344 __asm__ ("ins %0.d[0], %1.d[1]"
6347 : /* No clobbers */);
6351 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
6352 vget_high_s32 (int32x4_t a
)
6355 __asm__ ("ins %0.d[0], %1.d[1]"
6358 : /* No clobbers */);
6362 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
6363 vget_high_s64 (int64x2_t a
)
6366 __asm__ ("ins %0.d[0], %1.d[1]"
6369 : /* No clobbers */);
6373 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
6374 vget_high_u8 (uint8x16_t a
)
6377 __asm__ ("ins %0.d[0], %1.d[1]"
6380 : /* No clobbers */);
6384 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
6385 vget_high_u16 (uint16x8_t a
)
6388 __asm__ ("ins %0.d[0], %1.d[1]"
6391 : /* No clobbers */);
6395 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
6396 vget_high_u32 (uint32x4_t a
)
6399 __asm__ ("ins %0.d[0], %1.d[1]"
6402 : /* No clobbers */);
6406 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
6407 vget_high_u64 (uint64x2_t a
)
6410 __asm__ ("ins %0.d[0], %1.d[1]"
6413 : /* No clobbers */);
6417 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
6418 vhsub_s8 (int8x8_t a
, int8x8_t b
)
6421 __asm__ ("shsub %0.8b, %1.8b, %2.8b"
6424 : /* No clobbers */);
6428 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
6429 vhsub_s16 (int16x4_t a
, int16x4_t b
)
6432 __asm__ ("shsub %0.4h, %1.4h, %2.4h"
6435 : /* No clobbers */);
6439 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
6440 vhsub_s32 (int32x2_t a
, int32x2_t b
)
6443 __asm__ ("shsub %0.2s, %1.2s, %2.2s"
6446 : /* No clobbers */);
6450 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
6451 vhsub_u8 (uint8x8_t a
, uint8x8_t b
)
6454 __asm__ ("uhsub %0.8b, %1.8b, %2.8b"
6457 : /* No clobbers */);
6461 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
6462 vhsub_u16 (uint16x4_t a
, uint16x4_t b
)
6465 __asm__ ("uhsub %0.4h, %1.4h, %2.4h"
6468 : /* No clobbers */);
6472 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
6473 vhsub_u32 (uint32x2_t a
, uint32x2_t b
)
6476 __asm__ ("uhsub %0.2s, %1.2s, %2.2s"
6479 : /* No clobbers */);
6483 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
6484 vhsubq_s8 (int8x16_t a
, int8x16_t b
)
6487 __asm__ ("shsub %0.16b, %1.16b, %2.16b"
6490 : /* No clobbers */);
6494 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
6495 vhsubq_s16 (int16x8_t a
, int16x8_t b
)
6498 __asm__ ("shsub %0.8h, %1.8h, %2.8h"
6501 : /* No clobbers */);
6505 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
6506 vhsubq_s32 (int32x4_t a
, int32x4_t b
)
6509 __asm__ ("shsub %0.4s, %1.4s, %2.4s"
6512 : /* No clobbers */);
6516 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
6517 vhsubq_u8 (uint8x16_t a
, uint8x16_t b
)
6520 __asm__ ("uhsub %0.16b, %1.16b, %2.16b"
6523 : /* No clobbers */);
6527 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
6528 vhsubq_u16 (uint16x8_t a
, uint16x8_t b
)
6531 __asm__ ("uhsub %0.8h, %1.8h, %2.8h"
6534 : /* No clobbers */);
6538 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
6539 vhsubq_u32 (uint32x4_t a
, uint32x4_t b
)
6542 __asm__ ("uhsub %0.4s, %1.4s, %2.4s"
6545 : /* No clobbers */);
6549 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
6550 vld1_dup_f32 (const float32_t
* a
)
6553 __asm__ ("ld1r {%0.2s}, %1"
6556 : /* No clobbers */);
6560 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
6561 vld1_dup_f64 (const float64_t
* a
)
6564 __asm__ ("ld1r {%0.1d}, %1"
6567 : /* No clobbers */);
6571 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
6572 vld1_dup_p8 (const poly8_t
* a
)
6575 __asm__ ("ld1r {%0.8b}, %1"
6578 : /* No clobbers */);
6582 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
6583 vld1_dup_p16 (const poly16_t
* a
)
6586 __asm__ ("ld1r {%0.4h}, %1"
6589 : /* No clobbers */);
6593 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
6594 vld1_dup_s8 (const int8_t * a
)
6597 __asm__ ("ld1r {%0.8b}, %1"
6600 : /* No clobbers */);
6604 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
6605 vld1_dup_s16 (const int16_t * a
)
6608 __asm__ ("ld1r {%0.4h}, %1"
6611 : /* No clobbers */);
6615 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
6616 vld1_dup_s32 (const int32_t * a
)
6619 __asm__ ("ld1r {%0.2s}, %1"
6622 : /* No clobbers */);
6626 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
6627 vld1_dup_s64 (const int64_t * a
)
6630 __asm__ ("ld1r {%0.1d}, %1"
6633 : /* No clobbers */);
6637 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
6638 vld1_dup_u8 (const uint8_t * a
)
6641 __asm__ ("ld1r {%0.8b}, %1"
6644 : /* No clobbers */);
6648 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
6649 vld1_dup_u16 (const uint16_t * a
)
6652 __asm__ ("ld1r {%0.4h}, %1"
6655 : /* No clobbers */);
6659 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
6660 vld1_dup_u32 (const uint32_t * a
)
6663 __asm__ ("ld1r {%0.2s}, %1"
6666 : /* No clobbers */);
6670 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
6671 vld1_dup_u64 (const uint64_t * a
)
6674 __asm__ ("ld1r {%0.1d}, %1"
6677 : /* No clobbers */);
6681 #define vld1_lane_f32(a, b, c) \
6684 float32x2_t b_ = (b); \
6685 const float32_t * a_ = (a); \
6686 float32x2_t result; \
6687 __asm__ ("ld1 {%0.s}[%1], %2" \
6689 : "i" (c), "Utv"(*a_), "0"(b_) \
6690 : /* No clobbers */); \
6694 #define vld1_lane_f64(a, b, c) \
6697 float64x1_t b_ = (b); \
6698 const float64_t * a_ = (a); \
6699 float64x1_t result; \
6700 __asm__ ("ld1 {%0.d}[%1], %2" \
6702 : "i" (c), "Utv"(*a_), "0"(b_) \
6703 : /* No clobbers */); \
6707 #define vld1_lane_p8(a, b, c) \
6710 poly8x8_t b_ = (b); \
6711 const poly8_t * a_ = (a); \
6713 __asm__ ("ld1 {%0.b}[%1], %2" \
6715 : "i" (c), "Utv"(*a_), "0"(b_) \
6716 : /* No clobbers */); \
6720 #define vld1_lane_p16(a, b, c) \
6723 poly16x4_t b_ = (b); \
6724 const poly16_t * a_ = (a); \
6725 poly16x4_t result; \
6726 __asm__ ("ld1 {%0.h}[%1], %2" \
6728 : "i" (c), "Utv"(*a_), "0"(b_) \
6729 : /* No clobbers */); \
6733 #define vld1_lane_s8(a, b, c) \
6736 int8x8_t b_ = (b); \
6737 const int8_t * a_ = (a); \
6739 __asm__ ("ld1 {%0.b}[%1], %2" \
6741 : "i" (c), "Utv"(*a_), "0"(b_) \
6742 : /* No clobbers */); \
6746 #define vld1_lane_s16(a, b, c) \
6749 int16x4_t b_ = (b); \
6750 const int16_t * a_ = (a); \
6752 __asm__ ("ld1 {%0.h}[%1], %2" \
6754 : "i" (c), "Utv"(*a_), "0"(b_) \
6755 : /* No clobbers */); \
6759 #define vld1_lane_s32(a, b, c) \
6762 int32x2_t b_ = (b); \
6763 const int32_t * a_ = (a); \
6765 __asm__ ("ld1 {%0.s}[%1], %2" \
6767 : "i" (c), "Utv"(*a_), "0"(b_) \
6768 : /* No clobbers */); \
6772 #define vld1_lane_s64(a, b, c) \
6775 int64x1_t b_ = (b); \
6776 const int64_t * a_ = (a); \
6778 __asm__ ("ld1 {%0.d}[%1], %2" \
6780 : "i" (c), "Utv"(*a_), "0"(b_) \
6781 : /* No clobbers */); \
6785 #define vld1_lane_u8(a, b, c) \
6788 uint8x8_t b_ = (b); \
6789 const uint8_t * a_ = (a); \
6791 __asm__ ("ld1 {%0.b}[%1], %2" \
6793 : "i" (c), "Utv"(*a_), "0"(b_) \
6794 : /* No clobbers */); \
6798 #define vld1_lane_u16(a, b, c) \
6801 uint16x4_t b_ = (b); \
6802 const uint16_t * a_ = (a); \
6803 uint16x4_t result; \
6804 __asm__ ("ld1 {%0.h}[%1], %2" \
6806 : "i" (c), "Utv"(*a_), "0"(b_) \
6807 : /* No clobbers */); \
6811 #define vld1_lane_u32(a, b, c) \
6814 uint32x2_t b_ = (b); \
6815 const uint32_t * a_ = (a); \
6816 uint32x2_t result; \
6817 __asm__ ("ld1 {%0.s}[%1], %2" \
6819 : "i" (c), "Utv"(*a_), "0"(b_) \
6820 : /* No clobbers */); \
6824 #define vld1_lane_u64(a, b, c) \
6827 uint64x1_t b_ = (b); \
6828 const uint64_t * a_ = (a); \
6829 uint64x1_t result; \
6830 __asm__ ("ld1 {%0.d}[%1], %2" \
6832 : "i" (c), "Utv"(*a_), "0"(b_) \
6833 : /* No clobbers */); \
6837 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
6838 vld1q_dup_f32 (const float32_t
* a
)
6841 __asm__ ("ld1r {%0.4s}, %1"
6844 : /* No clobbers */);
6848 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
6849 vld1q_dup_f64 (const float64_t
* a
)
6852 __asm__ ("ld1r {%0.2d}, %1"
6855 : /* No clobbers */);
6859 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
6860 vld1q_dup_p8 (const poly8_t
* a
)
6863 __asm__ ("ld1r {%0.16b}, %1"
6866 : /* No clobbers */);
6870 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
6871 vld1q_dup_p16 (const poly16_t
* a
)
6874 __asm__ ("ld1r {%0.8h}, %1"
6877 : /* No clobbers */);
6881 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
6882 vld1q_dup_s8 (const int8_t * a
)
6885 __asm__ ("ld1r {%0.16b}, %1"
6888 : /* No clobbers */);
6892 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
6893 vld1q_dup_s16 (const int16_t * a
)
6896 __asm__ ("ld1r {%0.8h}, %1"
6899 : /* No clobbers */);
6903 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
6904 vld1q_dup_s32 (const int32_t * a
)
6907 __asm__ ("ld1r {%0.4s}, %1"
6910 : /* No clobbers */);
6914 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
6915 vld1q_dup_s64 (const int64_t * a
)
6918 __asm__ ("ld1r {%0.2d}, %1"
6921 : /* No clobbers */);
6925 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
6926 vld1q_dup_u8 (const uint8_t * a
)
6929 __asm__ ("ld1r {%0.16b}, %1"
6932 : /* No clobbers */);
6936 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
6937 vld1q_dup_u16 (const uint16_t * a
)
6940 __asm__ ("ld1r {%0.8h}, %1"
6943 : /* No clobbers */);
6947 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
6948 vld1q_dup_u32 (const uint32_t * a
)
6951 __asm__ ("ld1r {%0.4s}, %1"
6954 : /* No clobbers */);
6958 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
6959 vld1q_dup_u64 (const uint64_t * a
)
6962 __asm__ ("ld1r {%0.2d}, %1"
6965 : /* No clobbers */);
6969 #define vld1q_lane_f32(a, b, c) \
6972 float32x4_t b_ = (b); \
6973 const float32_t * a_ = (a); \
6974 float32x4_t result; \
6975 __asm__ ("ld1 {%0.s}[%1], %2" \
6977 : "i"(c), "Utv"(*a_), "0"(b_) \
6978 : /* No clobbers */); \
6982 #define vld1q_lane_f64(a, b, c) \
6985 float64x2_t b_ = (b); \
6986 const float64_t * a_ = (a); \
6987 float64x2_t result; \
6988 __asm__ ("ld1 {%0.d}[%1], %2" \
6990 : "i"(c), "Utv"(*a_), "0"(b_) \
6991 : /* No clobbers */); \
6995 #define vld1q_lane_p8(a, b, c) \
6998 poly8x16_t b_ = (b); \
6999 const poly8_t * a_ = (a); \
7000 poly8x16_t result; \
7001 __asm__ ("ld1 {%0.b}[%1], %2" \
7003 : "i"(c), "Utv"(*a_), "0"(b_) \
7004 : /* No clobbers */); \
7008 #define vld1q_lane_p16(a, b, c) \
7011 poly16x8_t b_ = (b); \
7012 const poly16_t * a_ = (a); \
7013 poly16x8_t result; \
7014 __asm__ ("ld1 {%0.h}[%1], %2" \
7016 : "i"(c), "Utv"(*a_), "0"(b_) \
7017 : /* No clobbers */); \
7021 #define vld1q_lane_s8(a, b, c) \
7024 int8x16_t b_ = (b); \
7025 const int8_t * a_ = (a); \
7027 __asm__ ("ld1 {%0.b}[%1], %2" \
7029 : "i"(c), "Utv"(*a_), "0"(b_) \
7030 : /* No clobbers */); \
7034 #define vld1q_lane_s16(a, b, c) \
7037 int16x8_t b_ = (b); \
7038 const int16_t * a_ = (a); \
7040 __asm__ ("ld1 {%0.h}[%1], %2" \
7042 : "i"(c), "Utv"(*a_), "0"(b_) \
7043 : /* No clobbers */); \
7047 #define vld1q_lane_s32(a, b, c) \
7050 int32x4_t b_ = (b); \
7051 const int32_t * a_ = (a); \
7053 __asm__ ("ld1 {%0.s}[%1], %2" \
7055 : "i"(c), "Utv"(*a_), "0"(b_) \
7056 : /* No clobbers */); \
7060 #define vld1q_lane_s64(a, b, c) \
7063 int64x2_t b_ = (b); \
7064 const int64_t * a_ = (a); \
7066 __asm__ ("ld1 {%0.d}[%1], %2" \
7068 : "i"(c), "Utv"(*a_), "0"(b_) \
7069 : /* No clobbers */); \
7073 #define vld1q_lane_u8(a, b, c) \
7076 uint8x16_t b_ = (b); \
7077 const uint8_t * a_ = (a); \
7078 uint8x16_t result; \
7079 __asm__ ("ld1 {%0.b}[%1], %2" \
7081 : "i"(c), "Utv"(*a_), "0"(b_) \
7082 : /* No clobbers */); \
7086 #define vld1q_lane_u16(a, b, c) \
7089 uint16x8_t b_ = (b); \
7090 const uint16_t * a_ = (a); \
7091 uint16x8_t result; \
7092 __asm__ ("ld1 {%0.h}[%1], %2" \
7094 : "i"(c), "Utv"(*a_), "0"(b_) \
7095 : /* No clobbers */); \
7099 #define vld1q_lane_u32(a, b, c) \
7102 uint32x4_t b_ = (b); \
7103 const uint32_t * a_ = (a); \
7104 uint32x4_t result; \
7105 __asm__ ("ld1 {%0.s}[%1], %2" \
7107 : "i"(c), "Utv"(*a_), "0"(b_) \
7108 : /* No clobbers */); \
7112 #define vld1q_lane_u64(a, b, c) \
7115 uint64x2_t b_ = (b); \
7116 const uint64_t * a_ = (a); \
7117 uint64x2_t result; \
7118 __asm__ ("ld1 {%0.d}[%1], %2" \
7120 : "i"(c), "Utv"(*a_), "0"(b_) \
7121 : /* No clobbers */); \
7125 #define vmla_lane_f32(a, b, c, d) \
7128 float32x2_t c_ = (c); \
7129 float32x2_t b_ = (b); \
7130 float32x2_t a_ = (a); \
7131 float32x2_t result; \
7133 __asm__ ("fmul %1.2s, %3.2s, %4.s[%5]; fadd %0.2s, %0.2s, %1.2s" \
7134 : "=w"(result), "=w"(t1) \
7135 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7136 : /* No clobbers */); \
7140 #define vmla_lane_s16(a, b, c, d) \
7143 int16x4_t c_ = (c); \
7144 int16x4_t b_ = (b); \
7145 int16x4_t a_ = (a); \
7147 __asm__ ("mla %0.4h, %2.4h, %3.h[%4]" \
7149 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7150 : /* No clobbers */); \
7154 #define vmla_lane_s32(a, b, c, d) \
7157 int32x2_t c_ = (c); \
7158 int32x2_t b_ = (b); \
7159 int32x2_t a_ = (a); \
7161 __asm__ ("mla %0.2s, %2.2s, %3.s[%4]" \
7163 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7164 : /* No clobbers */); \
7168 #define vmla_lane_u16(a, b, c, d) \
7171 uint16x4_t c_ = (c); \
7172 uint16x4_t b_ = (b); \
7173 uint16x4_t a_ = (a); \
7174 uint16x4_t result; \
7175 __asm__ ("mla %0.4h, %2.4h, %3.h[%4]" \
7177 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7178 : /* No clobbers */); \
7182 #define vmla_lane_u32(a, b, c, d) \
7185 uint32x2_t c_ = (c); \
7186 uint32x2_t b_ = (b); \
7187 uint32x2_t a_ = (a); \
7188 uint32x2_t result; \
7189 __asm__ ("mla %0.2s, %2.2s, %3.s[%4]" \
7191 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7192 : /* No clobbers */); \
7196 #define vmla_laneq_s16(a, b, c, d) \
7199 int16x8_t c_ = (c); \
7200 int16x4_t b_ = (b); \
7201 int16x4_t a_ = (a); \
7203 __asm__ ("mla %0.4h, %2.4h, %3.h[%4]" \
7205 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7206 : /* No clobbers */); \
7210 #define vmla_laneq_s32(a, b, c, d) \
7213 int32x4_t c_ = (c); \
7214 int32x2_t b_ = (b); \
7215 int32x2_t a_ = (a); \
7217 __asm__ ("mla %0.2s, %2.2s, %3.s[%4]" \
7219 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7220 : /* No clobbers */); \
7224 #define vmla_laneq_u16(a, b, c, d) \
7227 uint16x8_t c_ = (c); \
7228 uint16x4_t b_ = (b); \
7229 uint16x4_t a_ = (a); \
7230 uint16x4_t result; \
7231 __asm__ ("mla %0.4h, %2.4h, %3.h[%4]" \
7233 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7234 : /* No clobbers */); \
7238 #define vmla_laneq_u32(a, b, c, d) \
7241 uint32x4_t c_ = (c); \
7242 uint32x2_t b_ = (b); \
7243 uint32x2_t a_ = (a); \
7244 uint32x2_t result; \
7245 __asm__ ("mla %0.2s, %2.2s, %3.s[%4]" \
7247 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7248 : /* No clobbers */); \
7252 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
7253 vmla_n_f32 (float32x2_t a
, float32x2_t b
, float32_t c
)
7257 __asm__ ("fmul %1.2s, %3.2s, %4.s[0]; fadd %0.2s, %0.2s, %1.2s"
7258 : "=w"(result
), "=w"(t1
)
7259 : "0"(a
), "w"(b
), "w"(c
)
7260 : /* No clobbers */);
7264 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
7265 vmla_n_s16 (int16x4_t a
, int16x4_t b
, int16_t c
)
7268 __asm__ ("mla %0.4h,%2.4h,%3.h[0]"
7270 : "0"(a
), "w"(b
), "x"(c
)
7271 : /* No clobbers */);
7275 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
7276 vmla_n_s32 (int32x2_t a
, int32x2_t b
, int32_t c
)
7279 __asm__ ("mla %0.2s,%2.2s,%3.s[0]"
7281 : "0"(a
), "w"(b
), "w"(c
)
7282 : /* No clobbers */);
7286 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
7287 vmla_n_u16 (uint16x4_t a
, uint16x4_t b
, uint16_t c
)
7290 __asm__ ("mla %0.4h,%2.4h,%3.h[0]"
7292 : "0"(a
), "w"(b
), "x"(c
)
7293 : /* No clobbers */);
7297 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
7298 vmla_n_u32 (uint32x2_t a
, uint32x2_t b
, uint32_t c
)
7301 __asm__ ("mla %0.2s,%2.2s,%3.s[0]"
7303 : "0"(a
), "w"(b
), "w"(c
)
7304 : /* No clobbers */);
7308 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
7309 vmla_s8 (int8x8_t a
, int8x8_t b
, int8x8_t c
)
7312 __asm__ ("mla %0.8b, %2.8b, %3.8b"
7314 : "0"(a
), "w"(b
), "w"(c
)
7315 : /* No clobbers */);
7319 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
7320 vmla_s16 (int16x4_t a
, int16x4_t b
, int16x4_t c
)
7323 __asm__ ("mla %0.4h, %2.4h, %3.4h"
7325 : "0"(a
), "w"(b
), "w"(c
)
7326 : /* No clobbers */);
7330 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
7331 vmla_s32 (int32x2_t a
, int32x2_t b
, int32x2_t c
)
7334 __asm__ ("mla %0.2s, %2.2s, %3.2s"
7336 : "0"(a
), "w"(b
), "w"(c
)
7337 : /* No clobbers */);
7341 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
7342 vmla_u8 (uint8x8_t a
, uint8x8_t b
, uint8x8_t c
)
7345 __asm__ ("mla %0.8b, %2.8b, %3.8b"
7347 : "0"(a
), "w"(b
), "w"(c
)
7348 : /* No clobbers */);
7352 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
7353 vmla_u16 (uint16x4_t a
, uint16x4_t b
, uint16x4_t c
)
7356 __asm__ ("mla %0.4h, %2.4h, %3.4h"
7358 : "0"(a
), "w"(b
), "w"(c
)
7359 : /* No clobbers */);
7363 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
7364 vmla_u32 (uint32x2_t a
, uint32x2_t b
, uint32x2_t c
)
7367 __asm__ ("mla %0.2s, %2.2s, %3.2s"
7369 : "0"(a
), "w"(b
), "w"(c
)
7370 : /* No clobbers */);
7374 #define vmlal_high_lane_s16(a, b, c, d) \
7377 int16x8_t c_ = (c); \
7378 int16x8_t b_ = (b); \
7379 int32x4_t a_ = (a); \
7381 __asm__ ("smlal2 %0.4s, %2.8h, %3.h[%4]" \
7383 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7384 : /* No clobbers */); \
7388 #define vmlal_high_lane_s32(a, b, c, d) \
7391 int32x4_t c_ = (c); \
7392 int32x4_t b_ = (b); \
7393 int64x2_t a_ = (a); \
7395 __asm__ ("smlal2 %0.2d, %2.4s, %3.s[%4]" \
7397 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7398 : /* No clobbers */); \
7402 #define vmlal_high_lane_u16(a, b, c, d) \
7405 uint16x8_t c_ = (c); \
7406 uint16x8_t b_ = (b); \
7407 uint32x4_t a_ = (a); \
7408 uint32x4_t result; \
7409 __asm__ ("umlal2 %0.4s, %2.8h, %3.h[%4]" \
7411 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7412 : /* No clobbers */); \
7416 #define vmlal_high_lane_u32(a, b, c, d) \
7419 uint32x4_t c_ = (c); \
7420 uint32x4_t b_ = (b); \
7421 uint64x2_t a_ = (a); \
7422 uint64x2_t result; \
7423 __asm__ ("umlal2 %0.2d, %2.4s, %3.s[%4]" \
7425 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7426 : /* No clobbers */); \
7430 #define vmlal_high_laneq_s16(a, b, c, d) \
7433 int16x8_t c_ = (c); \
7434 int16x8_t b_ = (b); \
7435 int32x4_t a_ = (a); \
7437 __asm__ ("smlal2 %0.4s, %2.8h, %3.h[%4]" \
7439 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7440 : /* No clobbers */); \
7444 #define vmlal_high_laneq_s32(a, b, c, d) \
7447 int32x4_t c_ = (c); \
7448 int32x4_t b_ = (b); \
7449 int64x2_t a_ = (a); \
7451 __asm__ ("smlal2 %0.2d, %2.4s, %3.s[%4]" \
7453 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7454 : /* No clobbers */); \
7458 #define vmlal_high_laneq_u16(a, b, c, d) \
7461 uint16x8_t c_ = (c); \
7462 uint16x8_t b_ = (b); \
7463 uint32x4_t a_ = (a); \
7464 uint32x4_t result; \
7465 __asm__ ("umlal2 %0.4s, %2.8h, %3.h[%4]" \
7467 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7468 : /* No clobbers */); \
7472 #define vmlal_high_laneq_u32(a, b, c, d) \
7475 uint32x4_t c_ = (c); \
7476 uint32x4_t b_ = (b); \
7477 uint64x2_t a_ = (a); \
7478 uint64x2_t result; \
7479 __asm__ ("umlal2 %0.2d, %2.4s, %3.s[%4]" \
7481 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7482 : /* No clobbers */); \
7486 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
7487 vmlal_high_n_s16 (int32x4_t a
, int16x8_t b
, int16_t c
)
7490 __asm__ ("smlal2 %0.4s,%2.8h,%3.h[0]"
7492 : "0"(a
), "w"(b
), "x"(c
)
7493 : /* No clobbers */);
7497 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
7498 vmlal_high_n_s32 (int64x2_t a
, int32x4_t b
, int32_t c
)
7501 __asm__ ("smlal2 %0.2d,%2.4s,%3.s[0]"
7503 : "0"(a
), "w"(b
), "w"(c
)
7504 : /* No clobbers */);
7508 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
7509 vmlal_high_n_u16 (uint32x4_t a
, uint16x8_t b
, uint16_t c
)
7512 __asm__ ("umlal2 %0.4s,%2.8h,%3.h[0]"
7514 : "0"(a
), "w"(b
), "x"(c
)
7515 : /* No clobbers */);
7519 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
7520 vmlal_high_n_u32 (uint64x2_t a
, uint32x4_t b
, uint32_t c
)
7523 __asm__ ("umlal2 %0.2d,%2.4s,%3.s[0]"
7525 : "0"(a
), "w"(b
), "w"(c
)
7526 : /* No clobbers */);
7530 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
7531 vmlal_high_s8 (int16x8_t a
, int8x16_t b
, int8x16_t c
)
7534 __asm__ ("smlal2 %0.8h,%2.16b,%3.16b"
7536 : "0"(a
), "w"(b
), "w"(c
)
7537 : /* No clobbers */);
7541 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
7542 vmlal_high_s16 (int32x4_t a
, int16x8_t b
, int16x8_t c
)
7545 __asm__ ("smlal2 %0.4s,%2.8h,%3.8h"
7547 : "0"(a
), "w"(b
), "w"(c
)
7548 : /* No clobbers */);
7552 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
7553 vmlal_high_s32 (int64x2_t a
, int32x4_t b
, int32x4_t c
)
7556 __asm__ ("smlal2 %0.2d,%2.4s,%3.4s"
7558 : "0"(a
), "w"(b
), "w"(c
)
7559 : /* No clobbers */);
7563 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
7564 vmlal_high_u8 (uint16x8_t a
, uint8x16_t b
, uint8x16_t c
)
7567 __asm__ ("umlal2 %0.8h,%2.16b,%3.16b"
7569 : "0"(a
), "w"(b
), "w"(c
)
7570 : /* No clobbers */);
7574 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
7575 vmlal_high_u16 (uint32x4_t a
, uint16x8_t b
, uint16x8_t c
)
7578 __asm__ ("umlal2 %0.4s,%2.8h,%3.8h"
7580 : "0"(a
), "w"(b
), "w"(c
)
7581 : /* No clobbers */);
7585 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
7586 vmlal_high_u32 (uint64x2_t a
, uint32x4_t b
, uint32x4_t c
)
7589 __asm__ ("umlal2 %0.2d,%2.4s,%3.4s"
7591 : "0"(a
), "w"(b
), "w"(c
)
7592 : /* No clobbers */);
7596 #define vmlal_lane_s16(a, b, c, d) \
7599 int16x4_t c_ = (c); \
7600 int16x4_t b_ = (b); \
7601 int32x4_t a_ = (a); \
7603 __asm__ ("smlal %0.4s,%2.4h,%3.h[%4]" \
7605 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7606 : /* No clobbers */); \
7610 #define vmlal_lane_s32(a, b, c, d) \
7613 int32x2_t c_ = (c); \
7614 int32x2_t b_ = (b); \
7615 int64x2_t a_ = (a); \
7617 __asm__ ("smlal %0.2d,%2.2s,%3.s[%4]" \
7619 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7620 : /* No clobbers */); \
7624 #define vmlal_lane_u16(a, b, c, d) \
7627 uint16x4_t c_ = (c); \
7628 uint16x4_t b_ = (b); \
7629 uint32x4_t a_ = (a); \
7630 uint32x4_t result; \
7631 __asm__ ("umlal %0.4s,%2.4h,%3.h[%4]" \
7633 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7634 : /* No clobbers */); \
7638 #define vmlal_lane_u32(a, b, c, d) \
7641 uint32x2_t c_ = (c); \
7642 uint32x2_t b_ = (b); \
7643 uint64x2_t a_ = (a); \
7644 uint64x2_t result; \
7645 __asm__ ("umlal %0.2d, %2.2s, %3.s[%4]" \
7647 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7648 : /* No clobbers */); \
7652 #define vmlal_laneq_s16(a, b, c, d) \
7655 int16x8_t c_ = (c); \
7656 int16x4_t b_ = (b); \
7657 int32x4_t a_ = (a); \
7659 __asm__ ("smlal %0.4s, %2.4h, %3.h[%4]" \
7661 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7662 : /* No clobbers */); \
7666 #define vmlal_laneq_s32(a, b, c, d) \
7669 int32x4_t c_ = (c); \
7670 int32x2_t b_ = (b); \
7671 int64x2_t a_ = (a); \
7673 __asm__ ("smlal %0.2d, %2.2s, %3.s[%4]" \
7675 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7676 : /* No clobbers */); \
7680 #define vmlal_laneq_u16(a, b, c, d) \
7683 uint16x8_t c_ = (c); \
7684 uint16x4_t b_ = (b); \
7685 uint32x4_t a_ = (a); \
7686 uint32x4_t result; \
7687 __asm__ ("umlal %0.4s, %2.4h, %3.h[%4]" \
7689 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7690 : /* No clobbers */); \
7694 #define vmlal_laneq_u32(a, b, c, d) \
7697 uint32x4_t c_ = (c); \
7698 uint32x2_t b_ = (b); \
7699 uint64x2_t a_ = (a); \
7700 uint64x2_t result; \
7701 __asm__ ("umlal %0.2d, %2.2s, %3.s[%4]" \
7703 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7704 : /* No clobbers */); \
7708 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
7709 vmlal_n_s16 (int32x4_t a
, int16x4_t b
, int16_t c
)
7712 __asm__ ("smlal %0.4s,%2.4h,%3.h[0]"
7714 : "0"(a
), "w"(b
), "x"(c
)
7715 : /* No clobbers */);
7719 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
7720 vmlal_n_s32 (int64x2_t a
, int32x2_t b
, int32_t c
)
7723 __asm__ ("smlal %0.2d,%2.2s,%3.s[0]"
7725 : "0"(a
), "w"(b
), "w"(c
)
7726 : /* No clobbers */);
7730 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
7731 vmlal_n_u16 (uint32x4_t a
, uint16x4_t b
, uint16_t c
)
7734 __asm__ ("umlal %0.4s,%2.4h,%3.h[0]"
7736 : "0"(a
), "w"(b
), "x"(c
)
7737 : /* No clobbers */);
7741 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
7742 vmlal_n_u32 (uint64x2_t a
, uint32x2_t b
, uint32_t c
)
7745 __asm__ ("umlal %0.2d,%2.2s,%3.s[0]"
7747 : "0"(a
), "w"(b
), "w"(c
)
7748 : /* No clobbers */);
7752 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
7753 vmlal_s8 (int16x8_t a
, int8x8_t b
, int8x8_t c
)
7756 __asm__ ("smlal %0.8h,%2.8b,%3.8b"
7758 : "0"(a
), "w"(b
), "w"(c
)
7759 : /* No clobbers */);
7763 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
7764 vmlal_s16 (int32x4_t a
, int16x4_t b
, int16x4_t c
)
7767 __asm__ ("smlal %0.4s,%2.4h,%3.4h"
7769 : "0"(a
), "w"(b
), "w"(c
)
7770 : /* No clobbers */);
7774 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
7775 vmlal_s32 (int64x2_t a
, int32x2_t b
, int32x2_t c
)
7778 __asm__ ("smlal %0.2d,%2.2s,%3.2s"
7780 : "0"(a
), "w"(b
), "w"(c
)
7781 : /* No clobbers */);
7785 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
7786 vmlal_u8 (uint16x8_t a
, uint8x8_t b
, uint8x8_t c
)
7789 __asm__ ("umlal %0.8h,%2.8b,%3.8b"
7791 : "0"(a
), "w"(b
), "w"(c
)
7792 : /* No clobbers */);
7796 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
7797 vmlal_u16 (uint32x4_t a
, uint16x4_t b
, uint16x4_t c
)
7800 __asm__ ("umlal %0.4s,%2.4h,%3.4h"
7802 : "0"(a
), "w"(b
), "w"(c
)
7803 : /* No clobbers */);
7807 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
7808 vmlal_u32 (uint64x2_t a
, uint32x2_t b
, uint32x2_t c
)
7811 __asm__ ("umlal %0.2d,%2.2s,%3.2s"
7813 : "0"(a
), "w"(b
), "w"(c
)
7814 : /* No clobbers */);
7818 #define vmlaq_lane_f32(a, b, c, d) \
7821 float32x4_t c_ = (c); \
7822 float32x4_t b_ = (b); \
7823 float32x4_t a_ = (a); \
7824 float32x4_t result; \
7826 __asm__ ("fmul %1.4s, %3.4s, %4.s[%5]; fadd %0.4s, %0.4s, %1.4s" \
7827 : "=w"(result), "=w"(t1) \
7828 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7829 : /* No clobbers */); \
7833 #define vmlaq_lane_s16(a, b, c, d) \
7836 int16x8_t c_ = (c); \
7837 int16x8_t b_ = (b); \
7838 int16x8_t a_ = (a); \
7840 __asm__ ("mla %0.8h, %2.8h, %3.h[%4]" \
7842 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7843 : /* No clobbers */); \
7847 #define vmlaq_lane_s32(a, b, c, d) \
7850 int32x4_t c_ = (c); \
7851 int32x4_t b_ = (b); \
7852 int32x4_t a_ = (a); \
7854 __asm__ ("mla %0.4s, %2.4s, %3.s[%4]" \
7856 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7857 : /* No clobbers */); \
7861 #define vmlaq_lane_u16(a, b, c, d) \
7864 uint16x8_t c_ = (c); \
7865 uint16x8_t b_ = (b); \
7866 uint16x8_t a_ = (a); \
7867 uint16x8_t result; \
7868 __asm__ ("mla %0.8h, %2.8h, %3.h[%4]" \
7870 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7871 : /* No clobbers */); \
7875 #define vmlaq_lane_u32(a, b, c, d) \
7878 uint32x4_t c_ = (c); \
7879 uint32x4_t b_ = (b); \
7880 uint32x4_t a_ = (a); \
7881 uint32x4_t result; \
7882 __asm__ ("mla %0.4s, %2.4s, %3.s[%4]" \
7884 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7885 : /* No clobbers */); \
7889 #define vmlaq_laneq_s16(a, b, c, d) \
7892 int16x8_t c_ = (c); \
7893 int16x8_t b_ = (b); \
7894 int16x8_t a_ = (a); \
7896 __asm__ ("mla %0.8h, %2.8h, %3.h[%4]" \
7898 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7899 : /* No clobbers */); \
7903 #define vmlaq_laneq_s32(a, b, c, d) \
7906 int32x4_t c_ = (c); \
7907 int32x4_t b_ = (b); \
7908 int32x4_t a_ = (a); \
7910 __asm__ ("mla %0.4s, %2.4s, %3.s[%4]" \
7912 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7913 : /* No clobbers */); \
7917 #define vmlaq_laneq_u16(a, b, c, d) \
7920 uint16x8_t c_ = (c); \
7921 uint16x8_t b_ = (b); \
7922 uint16x8_t a_ = (a); \
7923 uint16x8_t result; \
7924 __asm__ ("mla %0.8h, %2.8h, %3.h[%4]" \
7926 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7927 : /* No clobbers */); \
7931 #define vmlaq_laneq_u32(a, b, c, d) \
7934 uint32x4_t c_ = (c); \
7935 uint32x4_t b_ = (b); \
7936 uint32x4_t a_ = (a); \
7937 uint32x4_t result; \
7938 __asm__ ("mla %0.4s, %2.4s, %3.s[%4]" \
7940 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7941 : /* No clobbers */); \
7945 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
7946 vmlaq_n_f32 (float32x4_t a
, float32x4_t b
, float32_t c
)
7950 __asm__ ("fmul %1.4s, %3.4s, %4.s[0]; fadd %0.4s, %0.4s, %1.4s"
7951 : "=w"(result
), "=w"(t1
)
7952 : "0"(a
), "w"(b
), "w"(c
)
7953 : /* No clobbers */);
7957 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
7958 vmlaq_n_f64 (float64x2_t a
, float64x2_t b
, float64_t c
)
7962 __asm__ ("fmul %1.2d, %3.2d, %4.d[0]; fadd %0.2d, %0.2d, %1.2d"
7963 : "=w"(result
), "=w"(t1
)
7964 : "0"(a
), "w"(b
), "w"(c
)
7965 : /* No clobbers */);
7969 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
7970 vmlaq_n_s16 (int16x8_t a
, int16x8_t b
, int16_t c
)
7973 __asm__ ("mla %0.8h,%2.8h,%3.h[0]"
7975 : "0"(a
), "w"(b
), "x"(c
)
7976 : /* No clobbers */);
7980 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
7981 vmlaq_n_s32 (int32x4_t a
, int32x4_t b
, int32_t c
)
7984 __asm__ ("mla %0.4s,%2.4s,%3.s[0]"
7986 : "0"(a
), "w"(b
), "w"(c
)
7987 : /* No clobbers */);
7991 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
7992 vmlaq_n_u16 (uint16x8_t a
, uint16x8_t b
, uint16_t c
)
7995 __asm__ ("mla %0.8h,%2.8h,%3.h[0]"
7997 : "0"(a
), "w"(b
), "x"(c
)
7998 : /* No clobbers */);
8002 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8003 vmlaq_n_u32 (uint32x4_t a
, uint32x4_t b
, uint32_t c
)
8006 __asm__ ("mla %0.4s,%2.4s,%3.s[0]"
8008 : "0"(a
), "w"(b
), "w"(c
)
8009 : /* No clobbers */);
8013 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
8014 vmlaq_s8 (int8x16_t a
, int8x16_t b
, int8x16_t c
)
8017 __asm__ ("mla %0.16b, %2.16b, %3.16b"
8019 : "0"(a
), "w"(b
), "w"(c
)
8020 : /* No clobbers */);
8024 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
8025 vmlaq_s16 (int16x8_t a
, int16x8_t b
, int16x8_t c
)
8028 __asm__ ("mla %0.8h, %2.8h, %3.8h"
8030 : "0"(a
), "w"(b
), "w"(c
)
8031 : /* No clobbers */);
8035 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8036 vmlaq_s32 (int32x4_t a
, int32x4_t b
, int32x4_t c
)
8039 __asm__ ("mla %0.4s, %2.4s, %3.4s"
8041 : "0"(a
), "w"(b
), "w"(c
)
8042 : /* No clobbers */);
8046 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
8047 vmlaq_u8 (uint8x16_t a
, uint8x16_t b
, uint8x16_t c
)
8050 __asm__ ("mla %0.16b, %2.16b, %3.16b"
8052 : "0"(a
), "w"(b
), "w"(c
)
8053 : /* No clobbers */);
8057 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
8058 vmlaq_u16 (uint16x8_t a
, uint16x8_t b
, uint16x8_t c
)
8061 __asm__ ("mla %0.8h, %2.8h, %3.8h"
8063 : "0"(a
), "w"(b
), "w"(c
)
8064 : /* No clobbers */);
8068 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8069 vmlaq_u32 (uint32x4_t a
, uint32x4_t b
, uint32x4_t c
)
8072 __asm__ ("mla %0.4s, %2.4s, %3.4s"
8074 : "0"(a
), "w"(b
), "w"(c
)
8075 : /* No clobbers */);
8079 #define vmls_lane_f32(a, b, c, d) \
8082 float32x2_t c_ = (c); \
8083 float32x2_t b_ = (b); \
8084 float32x2_t a_ = (a); \
8085 float32x2_t result; \
8087 __asm__ ("fmul %1.2s, %3.2s, %4.s[%5]; fsub %0.2s, %0.2s, %1.2s" \
8088 : "=w"(result), "=w"(t1) \
8089 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8090 : /* No clobbers */); \
8094 #define vmls_lane_s16(a, b, c, d) \
8097 int16x4_t c_ = (c); \
8098 int16x4_t b_ = (b); \
8099 int16x4_t a_ = (a); \
8101 __asm__ ("mls %0.4h,%2.4h,%3.h[%4]" \
8103 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
8104 : /* No clobbers */); \
8108 #define vmls_lane_s32(a, b, c, d) \
8111 int32x2_t c_ = (c); \
8112 int32x2_t b_ = (b); \
8113 int32x2_t a_ = (a); \
8115 __asm__ ("mls %0.2s,%2.2s,%3.s[%4]" \
8117 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8118 : /* No clobbers */); \
8122 #define vmls_lane_u16(a, b, c, d) \
8125 uint16x4_t c_ = (c); \
8126 uint16x4_t b_ = (b); \
8127 uint16x4_t a_ = (a); \
8128 uint16x4_t result; \
8129 __asm__ ("mls %0.4h,%2.4h,%3.h[%4]" \
8131 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
8132 : /* No clobbers */); \
8136 #define vmls_lane_u32(a, b, c, d) \
8139 uint32x2_t c_ = (c); \
8140 uint32x2_t b_ = (b); \
8141 uint32x2_t a_ = (a); \
8142 uint32x2_t result; \
8143 __asm__ ("mls %0.2s,%2.2s,%3.s[%4]" \
8145 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8146 : /* No clobbers */); \
8150 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
8151 vmls_n_f32 (float32x2_t a
, float32x2_t b
, float32_t c
)
8155 __asm__ ("fmul %1.2s, %3.2s, %4.s[0]; fsub %0.2s, %0.2s, %1.2s"
8156 : "=w"(result
), "=w"(t1
)
8157 : "0"(a
), "w"(b
), "w"(c
)
8158 : /* No clobbers */);
8162 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
8163 vmls_n_s16 (int16x4_t a
, int16x4_t b
, int16_t c
)
8166 __asm__ ("mls %0.4h, %2.4h, %3.h[0]"
8168 : "0"(a
), "w"(b
), "x"(c
)
8169 : /* No clobbers */);
8173 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
8174 vmls_n_s32 (int32x2_t a
, int32x2_t b
, int32_t c
)
8177 __asm__ ("mls %0.2s, %2.2s, %3.s[0]"
8179 : "0"(a
), "w"(b
), "w"(c
)
8180 : /* No clobbers */);
8184 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
8185 vmls_n_u16 (uint16x4_t a
, uint16x4_t b
, uint16_t c
)
8188 __asm__ ("mls %0.4h, %2.4h, %3.h[0]"
8190 : "0"(a
), "w"(b
), "x"(c
)
8191 : /* No clobbers */);
8195 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
8196 vmls_n_u32 (uint32x2_t a
, uint32x2_t b
, uint32_t c
)
8199 __asm__ ("mls %0.2s, %2.2s, %3.s[0]"
8201 : "0"(a
), "w"(b
), "w"(c
)
8202 : /* No clobbers */);
8206 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
8207 vmls_s8 (int8x8_t a
, int8x8_t b
, int8x8_t c
)
8210 __asm__ ("mls %0.8b,%2.8b,%3.8b"
8212 : "0"(a
), "w"(b
), "w"(c
)
8213 : /* No clobbers */);
8217 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
8218 vmls_s16 (int16x4_t a
, int16x4_t b
, int16x4_t c
)
8221 __asm__ ("mls %0.4h,%2.4h,%3.4h"
8223 : "0"(a
), "w"(b
), "w"(c
)
8224 : /* No clobbers */);
8228 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
8229 vmls_s32 (int32x2_t a
, int32x2_t b
, int32x2_t c
)
8232 __asm__ ("mls %0.2s,%2.2s,%3.2s"
8234 : "0"(a
), "w"(b
), "w"(c
)
8235 : /* No clobbers */);
8239 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
8240 vmls_u8 (uint8x8_t a
, uint8x8_t b
, uint8x8_t c
)
8243 __asm__ ("mls %0.8b,%2.8b,%3.8b"
8245 : "0"(a
), "w"(b
), "w"(c
)
8246 : /* No clobbers */);
8250 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
8251 vmls_u16 (uint16x4_t a
, uint16x4_t b
, uint16x4_t c
)
8254 __asm__ ("mls %0.4h,%2.4h,%3.4h"
8256 : "0"(a
), "w"(b
), "w"(c
)
8257 : /* No clobbers */);
8261 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
8262 vmls_u32 (uint32x2_t a
, uint32x2_t b
, uint32x2_t c
)
8265 __asm__ ("mls %0.2s,%2.2s,%3.2s"
8267 : "0"(a
), "w"(b
), "w"(c
)
8268 : /* No clobbers */);
8272 #define vmlsl_high_lane_s16(a, b, c, d) \
8275 int16x8_t c_ = (c); \
8276 int16x8_t b_ = (b); \
8277 int32x4_t a_ = (a); \
8279 __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[%4]" \
8281 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
8282 : /* No clobbers */); \
8286 #define vmlsl_high_lane_s32(a, b, c, d) \
8289 int32x4_t c_ = (c); \
8290 int32x4_t b_ = (b); \
8291 int64x2_t a_ = (a); \
8293 __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[%4]" \
8295 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8296 : /* No clobbers */); \
8300 #define vmlsl_high_lane_u16(a, b, c, d) \
8303 uint16x8_t c_ = (c); \
8304 uint16x8_t b_ = (b); \
8305 uint32x4_t a_ = (a); \
8306 uint32x4_t result; \
8307 __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[%4]" \
8309 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
8310 : /* No clobbers */); \
8314 #define vmlsl_high_lane_u32(a, b, c, d) \
8317 uint32x4_t c_ = (c); \
8318 uint32x4_t b_ = (b); \
8319 uint64x2_t a_ = (a); \
8320 uint64x2_t result; \
8321 __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[%4]" \
8323 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8324 : /* No clobbers */); \
8328 #define vmlsl_high_laneq_s16(a, b, c, d) \
8331 int16x8_t c_ = (c); \
8332 int16x8_t b_ = (b); \
8333 int32x4_t a_ = (a); \
8335 __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[%4]" \
8337 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
8338 : /* No clobbers */); \
8342 #define vmlsl_high_laneq_s32(a, b, c, d) \
8345 int32x4_t c_ = (c); \
8346 int32x4_t b_ = (b); \
8347 int64x2_t a_ = (a); \
8349 __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[%4]" \
8351 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8352 : /* No clobbers */); \
8356 #define vmlsl_high_laneq_u16(a, b, c, d) \
8359 uint16x8_t c_ = (c); \
8360 uint16x8_t b_ = (b); \
8361 uint32x4_t a_ = (a); \
8362 uint32x4_t result; \
8363 __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[%4]" \
8365 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
8366 : /* No clobbers */); \
8370 #define vmlsl_high_laneq_u32(a, b, c, d) \
8373 uint32x4_t c_ = (c); \
8374 uint32x4_t b_ = (b); \
8375 uint64x2_t a_ = (a); \
8376 uint64x2_t result; \
8377 __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[%4]" \
8379 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8380 : /* No clobbers */); \
8384 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8385 vmlsl_high_n_s16 (int32x4_t a
, int16x8_t b
, int16_t c
)
8388 __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[0]"
8390 : "0"(a
), "w"(b
), "x"(c
)
8391 : /* No clobbers */);
8395 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
8396 vmlsl_high_n_s32 (int64x2_t a
, int32x4_t b
, int32_t c
)
8399 __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[0]"
8401 : "0"(a
), "w"(b
), "w"(c
)
8402 : /* No clobbers */);
8406 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8407 vmlsl_high_n_u16 (uint32x4_t a
, uint16x8_t b
, uint16_t c
)
8410 __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[0]"
8412 : "0"(a
), "w"(b
), "x"(c
)
8413 : /* No clobbers */);
8417 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
8418 vmlsl_high_n_u32 (uint64x2_t a
, uint32x4_t b
, uint32_t c
)
8421 __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[0]"
8423 : "0"(a
), "w"(b
), "w"(c
)
8424 : /* No clobbers */);
8428 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
8429 vmlsl_high_s8 (int16x8_t a
, int8x16_t b
, int8x16_t c
)
8432 __asm__ ("smlsl2 %0.8h,%2.16b,%3.16b"
8434 : "0"(a
), "w"(b
), "w"(c
)
8435 : /* No clobbers */);
8439 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8440 vmlsl_high_s16 (int32x4_t a
, int16x8_t b
, int16x8_t c
)
8443 __asm__ ("smlsl2 %0.4s,%2.8h,%3.8h"
8445 : "0"(a
), "w"(b
), "w"(c
)
8446 : /* No clobbers */);
8450 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
8451 vmlsl_high_s32 (int64x2_t a
, int32x4_t b
, int32x4_t c
)
8454 __asm__ ("smlsl2 %0.2d,%2.4s,%3.4s"
8456 : "0"(a
), "w"(b
), "w"(c
)
8457 : /* No clobbers */);
8461 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
8462 vmlsl_high_u8 (uint16x8_t a
, uint8x16_t b
, uint8x16_t c
)
8465 __asm__ ("umlsl2 %0.8h,%2.16b,%3.16b"
8467 : "0"(a
), "w"(b
), "w"(c
)
8468 : /* No clobbers */);
8472 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8473 vmlsl_high_u16 (uint32x4_t a
, uint16x8_t b
, uint16x8_t c
)
8476 __asm__ ("umlsl2 %0.4s,%2.8h,%3.8h"
8478 : "0"(a
), "w"(b
), "w"(c
)
8479 : /* No clobbers */);
8483 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
8484 vmlsl_high_u32 (uint64x2_t a
, uint32x4_t b
, uint32x4_t c
)
8487 __asm__ ("umlsl2 %0.2d,%2.4s,%3.4s"
8489 : "0"(a
), "w"(b
), "w"(c
)
8490 : /* No clobbers */);
8494 #define vmlsl_lane_s16(a, b, c, d) \
8497 int16x4_t c_ = (c); \
8498 int16x4_t b_ = (b); \
8499 int32x4_t a_ = (a); \
8501 __asm__ ("smlsl %0.4s, %2.4h, %3.h[%4]" \
8503 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
8504 : /* No clobbers */); \
8508 #define vmlsl_lane_s32(a, b, c, d) \
8511 int32x2_t c_ = (c); \
8512 int32x2_t b_ = (b); \
8513 int64x2_t a_ = (a); \
8515 __asm__ ("smlsl %0.2d, %2.2s, %3.s[%4]" \
8517 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8518 : /* No clobbers */); \
8522 #define vmlsl_lane_u16(a, b, c, d) \
8525 uint16x4_t c_ = (c); \
8526 uint16x4_t b_ = (b); \
8527 uint32x4_t a_ = (a); \
8528 uint32x4_t result; \
8529 __asm__ ("umlsl %0.4s, %2.4h, %3.h[%4]" \
8531 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
8532 : /* No clobbers */); \
8536 #define vmlsl_lane_u32(a, b, c, d) \
8539 uint32x2_t c_ = (c); \
8540 uint32x2_t b_ = (b); \
8541 uint64x2_t a_ = (a); \
8542 uint64x2_t result; \
8543 __asm__ ("umlsl %0.2d, %2.2s, %3.s[%4]" \
8545 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8546 : /* No clobbers */); \
8550 #define vmlsl_laneq_s16(a, b, c, d) \
8553 int16x8_t c_ = (c); \
8554 int16x4_t b_ = (b); \
8555 int32x4_t a_ = (a); \
8557 __asm__ ("smlsl %0.4s, %2.4h, %3.h[%4]" \
8559 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
8560 : /* No clobbers */); \
8564 #define vmlsl_laneq_s32(a, b, c, d) \
8567 int32x4_t c_ = (c); \
8568 int32x2_t b_ = (b); \
8569 int64x2_t a_ = (a); \
8571 __asm__ ("smlsl %0.2d, %2.2s, %3.s[%4]" \
8573 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8574 : /* No clobbers */); \
8578 #define vmlsl_laneq_u16(a, b, c, d) \
8581 uint16x8_t c_ = (c); \
8582 uint16x4_t b_ = (b); \
8583 uint32x4_t a_ = (a); \
8584 uint32x4_t result; \
8585 __asm__ ("umlsl %0.4s, %2.4h, %3.h[%4]" \
8587 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
8588 : /* No clobbers */); \
8592 #define vmlsl_laneq_u32(a, b, c, d) \
8595 uint32x4_t c_ = (c); \
8596 uint32x2_t b_ = (b); \
8597 uint64x2_t a_ = (a); \
8598 uint64x2_t result; \
8599 __asm__ ("umlsl %0.2d, %2.2s, %3.s[%4]" \
8601 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8602 : /* No clobbers */); \
8606 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8607 vmlsl_n_s16 (int32x4_t a
, int16x4_t b
, int16_t c
)
8610 __asm__ ("smlsl %0.4s, %2.4h, %3.h[0]"
8612 : "0"(a
), "w"(b
), "x"(c
)
8613 : /* No clobbers */);
8617 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
8618 vmlsl_n_s32 (int64x2_t a
, int32x2_t b
, int32_t c
)
8621 __asm__ ("smlsl %0.2d, %2.2s, %3.s[0]"
8623 : "0"(a
), "w"(b
), "w"(c
)
8624 : /* No clobbers */);
8628 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8629 vmlsl_n_u16 (uint32x4_t a
, uint16x4_t b
, uint16_t c
)
8632 __asm__ ("umlsl %0.4s, %2.4h, %3.h[0]"
8634 : "0"(a
), "w"(b
), "x"(c
)
8635 : /* No clobbers */);
8639 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
8640 vmlsl_n_u32 (uint64x2_t a
, uint32x2_t b
, uint32_t c
)
8643 __asm__ ("umlsl %0.2d, %2.2s, %3.s[0]"
8645 : "0"(a
), "w"(b
), "w"(c
)
8646 : /* No clobbers */);
8650 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
8651 vmlsl_s8 (int16x8_t a
, int8x8_t b
, int8x8_t c
)
8654 __asm__ ("smlsl %0.8h, %2.8b, %3.8b"
8656 : "0"(a
), "w"(b
), "w"(c
)
8657 : /* No clobbers */);
8661 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8662 vmlsl_s16 (int32x4_t a
, int16x4_t b
, int16x4_t c
)
8665 __asm__ ("smlsl %0.4s, %2.4h, %3.4h"
8667 : "0"(a
), "w"(b
), "w"(c
)
8668 : /* No clobbers */);
8672 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
8673 vmlsl_s32 (int64x2_t a
, int32x2_t b
, int32x2_t c
)
8676 __asm__ ("smlsl %0.2d, %2.2s, %3.2s"
8678 : "0"(a
), "w"(b
), "w"(c
)
8679 : /* No clobbers */);
8683 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
8684 vmlsl_u8 (uint16x8_t a
, uint8x8_t b
, uint8x8_t c
)
8687 __asm__ ("umlsl %0.8h, %2.8b, %3.8b"
8689 : "0"(a
), "w"(b
), "w"(c
)
8690 : /* No clobbers */);
8694 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8695 vmlsl_u16 (uint32x4_t a
, uint16x4_t b
, uint16x4_t c
)
8698 __asm__ ("umlsl %0.4s, %2.4h, %3.4h"
8700 : "0"(a
), "w"(b
), "w"(c
)
8701 : /* No clobbers */);
8705 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
8706 vmlsl_u32 (uint64x2_t a
, uint32x2_t b
, uint32x2_t c
)
8709 __asm__ ("umlsl %0.2d, %2.2s, %3.2s"
8711 : "0"(a
), "w"(b
), "w"(c
)
8712 : /* No clobbers */);
8716 #define vmlsq_lane_f32(a, b, c, d) \
8719 float32x4_t c_ = (c); \
8720 float32x4_t b_ = (b); \
8721 float32x4_t a_ = (a); \
8722 float32x4_t result; \
8724 __asm__ ("fmul %1.4s, %3.4s, %4.s[%5]; fsub %0.4s, %0.4s, %1.4s" \
8725 : "=w"(result), "=w"(t1) \
8726 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8727 : /* No clobbers */); \
8731 #define vmlsq_lane_s16(a, b, c, d) \
8734 int16x8_t c_ = (c); \
8735 int16x8_t b_ = (b); \
8736 int16x8_t a_ = (a); \
8738 __asm__ ("mls %0.8h,%2.8h,%3.h[%4]" \
8740 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
8741 : /* No clobbers */); \
8745 #define vmlsq_lane_s32(a, b, c, d) \
8748 int32x4_t c_ = (c); \
8749 int32x4_t b_ = (b); \
8750 int32x4_t a_ = (a); \
8752 __asm__ ("mls %0.4s,%2.4s,%3.s[%4]" \
8754 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8755 : /* No clobbers */); \
8759 #define vmlsq_lane_u16(a, b, c, d) \
8762 uint16x8_t c_ = (c); \
8763 uint16x8_t b_ = (b); \
8764 uint16x8_t a_ = (a); \
8765 uint16x8_t result; \
8766 __asm__ ("mls %0.8h,%2.8h,%3.h[%4]" \
8768 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
8769 : /* No clobbers */); \
8773 #define vmlsq_lane_u32(a, b, c, d) \
8776 uint32x4_t c_ = (c); \
8777 uint32x4_t b_ = (b); \
8778 uint32x4_t a_ = (a); \
8779 uint32x4_t result; \
8780 __asm__ ("mls %0.4s,%2.4s,%3.s[%4]" \
8782 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
8783 : /* No clobbers */); \
8787 #define vmlsq_laneq_f32(__a, __b, __c, __d) \
8790 float32x4_t __c_ = (__c); \
8791 float32x4_t __b_ = (__b); \
8792 float32x4_t __a_ = (__a); \
8793 float32x4_t __result; \
8795 __asm__ ("fmul %1.4s, %3.4s, %4.s[%5]; fsub %0.4s, %0.4s, %1.4s" \
8796 : "=w"(__result), "=w"(__t1) \
8797 : "0"(__a_), "w"(__b_), "w"(__c_), "i"(__d) \
8798 : /* No clobbers */); \
8802 #define vmlsq_laneq_s16(__a, __b, __c, __d) \
8805 int16x8_t __c_ = (__c); \
8806 int16x8_t __b_ = (__b); \
8807 int16x8_t __a_ = (__a); \
8808 int16x8_t __result; \
8809 __asm__ ("mls %0.8h, %2.8h, %3.h[%4]" \
8811 : "0"(__a_), "w"(__b_), "x"(__c_), "i"(__d) \
8812 : /* No clobbers */); \
8816 #define vmlsq_laneq_s32(__a, __b, __c, __d) \
8819 int32x4_t __c_ = (__c); \
8820 int32x4_t __b_ = (__b); \
8821 int32x4_t __a_ = (__a); \
8822 int32x4_t __result; \
8823 __asm__ ("mls %0.4s, %2.4s, %3.s[%4]" \
8825 : "0"(__a_), "w"(__b_), "w"(__c_), "i"(__d) \
8826 : /* No clobbers */); \
8830 #define vmlsq_laneq_u16(__a, __b, __c, __d) \
8833 uint16x8_t __c_ = (__c); \
8834 uint16x8_t __b_ = (__b); \
8835 uint16x8_t __a_ = (__a); \
8836 uint16x8_t __result; \
8837 __asm__ ("mls %0.8h, %2.8h, %3.h[%4]" \
8839 : "0"(__a_), "w"(__b_), "x"(__c_), "i"(__d) \
8840 : /* No clobbers */); \
8844 #define vmlsq_laneq_u32(__a, __b, __c, __d) \
8847 uint32x4_t __c_ = (__c); \
8848 uint32x4_t __b_ = (__b); \
8849 uint32x4_t __a_ = (__a); \
8850 uint32x4_t __result; \
8851 __asm__ ("mls %0.4s, %2.4s, %3.s[%4]" \
8853 : "0"(__a_), "w"(__b_), "w"(__c_), "i"(__d) \
8854 : /* No clobbers */); \
8858 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
8859 vmlsq_n_f32 (float32x4_t a
, float32x4_t b
, float32_t c
)
8863 __asm__ ("fmul %1.4s, %3.4s, %4.s[0]; fsub %0.4s, %0.4s, %1.4s"
8864 : "=w"(result
), "=w"(t1
)
8865 : "0"(a
), "w"(b
), "w"(c
)
8866 : /* No clobbers */);
8870 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
8871 vmlsq_n_f64 (float64x2_t a
, float64x2_t b
, float64_t c
)
8875 __asm__ ("fmul %1.2d, %3.2d, %4.d[0]; fsub %0.2d, %0.2d, %1.2d"
8876 : "=w"(result
), "=w"(t1
)
8877 : "0"(a
), "w"(b
), "x"(c
)
8878 : /* No clobbers */);
8882 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
8883 vmlsq_n_s16 (int16x8_t a
, int16x8_t b
, int16_t c
)
8886 __asm__ ("mls %0.8h, %2.8h, %3.h[0]"
8888 : "0"(a
), "w"(b
), "x"(c
)
8889 : /* No clobbers */);
8893 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8894 vmlsq_n_s32 (int32x4_t a
, int32x4_t b
, int32_t c
)
8897 __asm__ ("mls %0.4s, %2.4s, %3.s[0]"
8899 : "0"(a
), "w"(b
), "w"(c
)
8900 : /* No clobbers */);
8904 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
8905 vmlsq_n_u16 (uint16x8_t a
, uint16x8_t b
, uint16_t c
)
8908 __asm__ ("mls %0.8h, %2.8h, %3.h[0]"
8910 : "0"(a
), "w"(b
), "x"(c
)
8911 : /* No clobbers */);
8915 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8916 vmlsq_n_u32 (uint32x4_t a
, uint32x4_t b
, uint32_t c
)
8919 __asm__ ("mls %0.4s, %2.4s, %3.s[0]"
8921 : "0"(a
), "w"(b
), "w"(c
)
8922 : /* No clobbers */);
8926 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
8927 vmlsq_s8 (int8x16_t a
, int8x16_t b
, int8x16_t c
)
8930 __asm__ ("mls %0.16b,%2.16b,%3.16b"
8932 : "0"(a
), "w"(b
), "w"(c
)
8933 : /* No clobbers */);
8937 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
8938 vmlsq_s16 (int16x8_t a
, int16x8_t b
, int16x8_t c
)
8941 __asm__ ("mls %0.8h,%2.8h,%3.8h"
8943 : "0"(a
), "w"(b
), "w"(c
)
8944 : /* No clobbers */);
8948 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8949 vmlsq_s32 (int32x4_t a
, int32x4_t b
, int32x4_t c
)
8952 __asm__ ("mls %0.4s,%2.4s,%3.4s"
8954 : "0"(a
), "w"(b
), "w"(c
)
8955 : /* No clobbers */);
8959 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
8960 vmlsq_u8 (uint8x16_t a
, uint8x16_t b
, uint8x16_t c
)
8963 __asm__ ("mls %0.16b,%2.16b,%3.16b"
8965 : "0"(a
), "w"(b
), "w"(c
)
8966 : /* No clobbers */);
8970 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
8971 vmlsq_u16 (uint16x8_t a
, uint16x8_t b
, uint16x8_t c
)
8974 __asm__ ("mls %0.8h,%2.8h,%3.8h"
8976 : "0"(a
), "w"(b
), "w"(c
)
8977 : /* No clobbers */);
8981 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8982 vmlsq_u32 (uint32x4_t a
, uint32x4_t b
, uint32x4_t c
)
8985 __asm__ ("mls %0.4s,%2.4s,%3.4s"
8987 : "0"(a
), "w"(b
), "w"(c
)
8988 : /* No clobbers */);
8992 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
8993 vmov_n_f32 (float32_t a
)
8996 __asm__ ("dup %0.2s, %w1"
8999 : /* No clobbers */);
9003 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
9004 vmov_n_p8 (uint32_t a
)
9007 __asm__ ("dup %0.8b,%w1"
9010 : /* No clobbers */);
9014 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
9015 vmov_n_p16 (uint32_t a
)
9018 __asm__ ("dup %0.4h,%w1"
9021 : /* No clobbers */);
9025 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
9026 vmov_n_s8 (int32_t a
)
9029 __asm__ ("dup %0.8b,%w1"
9032 : /* No clobbers */);
9036 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
9037 vmov_n_s16 (int32_t a
)
9040 __asm__ ("dup %0.4h,%w1"
9043 : /* No clobbers */);
9047 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
9048 vmov_n_s32 (int32_t a
)
9051 __asm__ ("dup %0.2s,%w1"
9054 : /* No clobbers */);
9058 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
9059 vmov_n_s64 (int64_t a
)
9062 __asm__ ("ins %0.d[0],%x1"
9065 : /* No clobbers */);
9069 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
9070 vmov_n_u8 (uint32_t a
)
9073 __asm__ ("dup %0.8b,%w1"
9076 : /* No clobbers */);
9080 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
9081 vmov_n_u16 (uint32_t a
)
9084 __asm__ ("dup %0.4h,%w1"
9087 : /* No clobbers */);
9091 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
9092 vmov_n_u32 (uint32_t a
)
9095 __asm__ ("dup %0.2s,%w1"
9098 : /* No clobbers */);
9102 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
9103 vmov_n_u64 (uint64_t a
)
9106 __asm__ ("ins %0.d[0],%x1"
9109 : /* No clobbers */);
9113 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
9114 vmovl_high_s8 (int8x16_t a
)
9117 __asm__ ("sshll2 %0.8h,%1.16b,#0"
9120 : /* No clobbers */);
9124 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
9125 vmovl_high_s16 (int16x8_t a
)
9128 __asm__ ("sshll2 %0.4s,%1.8h,#0"
9131 : /* No clobbers */);
9135 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
9136 vmovl_high_s32 (int32x4_t a
)
9139 __asm__ ("sshll2 %0.2d,%1.4s,#0"
9142 : /* No clobbers */);
9146 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
9147 vmovl_high_u8 (uint8x16_t a
)
9150 __asm__ ("ushll2 %0.8h,%1.16b,#0"
9153 : /* No clobbers */);
9157 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
9158 vmovl_high_u16 (uint16x8_t a
)
9161 __asm__ ("ushll2 %0.4s,%1.8h,#0"
9164 : /* No clobbers */);
9168 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
9169 vmovl_high_u32 (uint32x4_t a
)
9172 __asm__ ("ushll2 %0.2d,%1.4s,#0"
9175 : /* No clobbers */);
9179 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
9180 vmovl_s8 (int8x8_t a
)
9183 __asm__ ("sshll %0.8h,%1.8b,#0"
9186 : /* No clobbers */);
9190 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
9191 vmovl_s16 (int16x4_t a
)
9194 __asm__ ("sshll %0.4s,%1.4h,#0"
9197 : /* No clobbers */);
9201 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
9202 vmovl_s32 (int32x2_t a
)
9205 __asm__ ("sshll %0.2d,%1.2s,#0"
9208 : /* No clobbers */);
9212 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
9213 vmovl_u8 (uint8x8_t a
)
9216 __asm__ ("ushll %0.8h,%1.8b,#0"
9219 : /* No clobbers */);
9223 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
9224 vmovl_u16 (uint16x4_t a
)
9227 __asm__ ("ushll %0.4s,%1.4h,#0"
9230 : /* No clobbers */);
9234 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
9235 vmovl_u32 (uint32x2_t a
)
9238 __asm__ ("ushll %0.2d,%1.2s,#0"
9241 : /* No clobbers */);
9245 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
9246 vmovn_high_s16 (int8x8_t a
, int16x8_t b
)
9248 int8x16_t result
= vcombine_s8 (a
, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
9249 __asm__ ("xtn2 %0.16b,%1.8h"
9252 : /* No clobbers */);
9256 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
9257 vmovn_high_s32 (int16x4_t a
, int32x4_t b
)
9259 int16x8_t result
= vcombine_s16 (a
, vcreate_s16 (__AARCH64_UINT64_C (0x0)));
9260 __asm__ ("xtn2 %0.8h,%1.4s"
9263 : /* No clobbers */);
9267 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
9268 vmovn_high_s64 (int32x2_t a
, int64x2_t b
)
9270 int32x4_t result
= vcombine_s32 (a
, vcreate_s32 (__AARCH64_UINT64_C (0x0)));
9271 __asm__ ("xtn2 %0.4s,%1.2d"
9274 : /* No clobbers */);
9278 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
9279 vmovn_high_u16 (uint8x8_t a
, uint16x8_t b
)
9281 uint8x16_t result
= vcombine_u8 (a
, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
9282 __asm__ ("xtn2 %0.16b,%1.8h"
9285 : /* No clobbers */);
9289 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
9290 vmovn_high_u32 (uint16x4_t a
, uint32x4_t b
)
9292 uint16x8_t result
= vcombine_u16 (a
, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
9293 __asm__ ("xtn2 %0.8h,%1.4s"
9296 : /* No clobbers */);
9300 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
9301 vmovn_high_u64 (uint32x2_t a
, uint64x2_t b
)
9303 uint32x4_t result
= vcombine_u32 (a
, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
9304 __asm__ ("xtn2 %0.4s,%1.2d"
9307 : /* No clobbers */);
9311 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
9312 vmovn_s16 (int16x8_t a
)
9315 __asm__ ("xtn %0.8b,%1.8h"
9318 : /* No clobbers */);
9322 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
9323 vmovn_s32 (int32x4_t a
)
9326 __asm__ ("xtn %0.4h,%1.4s"
9329 : /* No clobbers */);
9333 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
9334 vmovn_s64 (int64x2_t a
)
9337 __asm__ ("xtn %0.2s,%1.2d"
9340 : /* No clobbers */);
9344 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
9345 vmovn_u16 (uint16x8_t a
)
9348 __asm__ ("xtn %0.8b,%1.8h"
9351 : /* No clobbers */);
9355 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
9356 vmovn_u32 (uint32x4_t a
)
9359 __asm__ ("xtn %0.4h,%1.4s"
9362 : /* No clobbers */);
9366 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
9367 vmovn_u64 (uint64x2_t a
)
9370 __asm__ ("xtn %0.2s,%1.2d"
9373 : /* No clobbers */);
9377 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
9378 vmovq_n_f32 (float32_t a
)
9381 __asm__ ("dup %0.4s, %w1"
9384 : /* No clobbers */);
9388 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
9389 vmovq_n_f64 (float64_t a
)
9391 return (float64x2_t
) {a
, a
};
9394 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
9395 vmovq_n_p8 (uint32_t a
)
9398 __asm__ ("dup %0.16b,%w1"
9401 : /* No clobbers */);
9405 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
9406 vmovq_n_p16 (uint32_t a
)
9409 __asm__ ("dup %0.8h,%w1"
9412 : /* No clobbers */);
9416 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
9417 vmovq_n_s8 (int32_t a
)
9420 __asm__ ("dup %0.16b,%w1"
9423 : /* No clobbers */);
9427 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
9428 vmovq_n_s16 (int32_t a
)
9431 __asm__ ("dup %0.8h,%w1"
9434 : /* No clobbers */);
9438 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
9439 vmovq_n_s32 (int32_t a
)
9442 __asm__ ("dup %0.4s,%w1"
9445 : /* No clobbers */);
9449 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
9450 vmovq_n_s64 (int64_t a
)
9453 __asm__ ("dup %0.2d,%x1"
9456 : /* No clobbers */);
9460 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
9461 vmovq_n_u8 (uint32_t a
)
9464 __asm__ ("dup %0.16b,%w1"
9467 : /* No clobbers */);
9471 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
9472 vmovq_n_u16 (uint32_t a
)
9475 __asm__ ("dup %0.8h,%w1"
9478 : /* No clobbers */);
9482 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
9483 vmovq_n_u32 (uint32_t a
)
9486 __asm__ ("dup %0.4s,%w1"
9489 : /* No clobbers */);
9493 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
9494 vmovq_n_u64 (uint64_t a
)
9497 __asm__ ("dup %0.2d,%x1"
9500 : /* No clobbers */);
9504 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
9505 vmul_n_f32 (float32x2_t a
, float32_t b
)
9508 __asm__ ("fmul %0.2s,%1.2s,%2.s[0]"
9511 : /* No clobbers */);
9515 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
9516 vmul_n_s16 (int16x4_t a
, int16_t b
)
9519 __asm__ ("mul %0.4h,%1.4h,%2.h[0]"
9522 : /* No clobbers */);
9526 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
9527 vmul_n_s32 (int32x2_t a
, int32_t b
)
9530 __asm__ ("mul %0.2s,%1.2s,%2.s[0]"
9533 : /* No clobbers */);
9537 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
9538 vmul_n_u16 (uint16x4_t a
, uint16_t b
)
9541 __asm__ ("mul %0.4h,%1.4h,%2.h[0]"
9544 : /* No clobbers */);
9548 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
9549 vmul_n_u32 (uint32x2_t a
, uint32_t b
)
9552 __asm__ ("mul %0.2s,%1.2s,%2.s[0]"
9555 : /* No clobbers */);
9559 #define vmuld_lane_f64(a, b, c) \
9562 float64x2_t b_ = (b); \
9563 float64_t a_ = (a); \
9565 __asm__ ("fmul %d0,%d1,%2.d[%3]" \
9567 : "w"(a_), "w"(b_), "i"(c) \
9568 : /* No clobbers */); \
9572 #define vmull_high_lane_s16(a, b, c) \
9575 int16x8_t b_ = (b); \
9576 int16x8_t a_ = (a); \
9578 __asm__ ("smull2 %0.4s, %1.8h, %2.h[%3]" \
9580 : "w"(a_), "x"(b_), "i"(c) \
9581 : /* No clobbers */); \
9585 #define vmull_high_lane_s32(a, b, c) \
9588 int32x4_t b_ = (b); \
9589 int32x4_t a_ = (a); \
9591 __asm__ ("smull2 %0.2d, %1.4s, %2.s[%3]" \
9593 : "w"(a_), "w"(b_), "i"(c) \
9594 : /* No clobbers */); \
9598 #define vmull_high_lane_u16(a, b, c) \
9601 uint16x8_t b_ = (b); \
9602 uint16x8_t a_ = (a); \
9603 uint32x4_t result; \
9604 __asm__ ("umull2 %0.4s, %1.8h, %2.h[%3]" \
9606 : "w"(a_), "x"(b_), "i"(c) \
9607 : /* No clobbers */); \
9611 #define vmull_high_lane_u32(a, b, c) \
9614 uint32x4_t b_ = (b); \
9615 uint32x4_t a_ = (a); \
9616 uint64x2_t result; \
9617 __asm__ ("umull2 %0.2d, %1.4s, %2.s[%3]" \
9619 : "w"(a_), "w"(b_), "i"(c) \
9620 : /* No clobbers */); \
9624 #define vmull_high_laneq_s16(a, b, c) \
9627 int16x8_t b_ = (b); \
9628 int16x8_t a_ = (a); \
9630 __asm__ ("smull2 %0.4s, %1.8h, %2.h[%3]" \
9632 : "w"(a_), "x"(b_), "i"(c) \
9633 : /* No clobbers */); \
9637 #define vmull_high_laneq_s32(a, b, c) \
9640 int32x4_t b_ = (b); \
9641 int32x4_t a_ = (a); \
9643 __asm__ ("smull2 %0.2d, %1.4s, %2.s[%3]" \
9645 : "w"(a_), "w"(b_), "i"(c) \
9646 : /* No clobbers */); \
9650 #define vmull_high_laneq_u16(a, b, c) \
9653 uint16x8_t b_ = (b); \
9654 uint16x8_t a_ = (a); \
9655 uint32x4_t result; \
9656 __asm__ ("umull2 %0.4s, %1.8h, %2.h[%3]" \
9658 : "w"(a_), "x"(b_), "i"(c) \
9659 : /* No clobbers */); \
9663 #define vmull_high_laneq_u32(a, b, c) \
9666 uint32x4_t b_ = (b); \
9667 uint32x4_t a_ = (a); \
9668 uint64x2_t result; \
9669 __asm__ ("umull2 %0.2d, %1.4s, %2.s[%3]" \
9671 : "w"(a_), "w"(b_), "i"(c) \
9672 : /* No clobbers */); \
9676 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
9677 vmull_high_n_s16 (int16x8_t a
, int16_t b
)
9680 __asm__ ("smull2 %0.4s,%1.8h,%2.h[0]"
9683 : /* No clobbers */);
9687 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
9688 vmull_high_n_s32 (int32x4_t a
, int32_t b
)
9691 __asm__ ("smull2 %0.2d,%1.4s,%2.s[0]"
9694 : /* No clobbers */);
9698 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
9699 vmull_high_n_u16 (uint16x8_t a
, uint16_t b
)
9702 __asm__ ("umull2 %0.4s,%1.8h,%2.h[0]"
9705 : /* No clobbers */);
9709 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
9710 vmull_high_n_u32 (uint32x4_t a
, uint32_t b
)
9713 __asm__ ("umull2 %0.2d,%1.4s,%2.s[0]"
9716 : /* No clobbers */);
9720 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
9721 vmull_high_p8 (poly8x16_t a
, poly8x16_t b
)
9724 __asm__ ("pmull2 %0.8h,%1.16b,%2.16b"
9727 : /* No clobbers */);
9731 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
9732 vmull_high_s8 (int8x16_t a
, int8x16_t b
)
9735 __asm__ ("smull2 %0.8h,%1.16b,%2.16b"
9738 : /* No clobbers */);
9742 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
9743 vmull_high_s16 (int16x8_t a
, int16x8_t b
)
9746 __asm__ ("smull2 %0.4s,%1.8h,%2.8h"
9749 : /* No clobbers */);
9753 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
9754 vmull_high_s32 (int32x4_t a
, int32x4_t b
)
9757 __asm__ ("smull2 %0.2d,%1.4s,%2.4s"
9760 : /* No clobbers */);
9764 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
9765 vmull_high_u8 (uint8x16_t a
, uint8x16_t b
)
9768 __asm__ ("umull2 %0.8h,%1.16b,%2.16b"
9771 : /* No clobbers */);
9775 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
9776 vmull_high_u16 (uint16x8_t a
, uint16x8_t b
)
9779 __asm__ ("umull2 %0.4s,%1.8h,%2.8h"
9782 : /* No clobbers */);
9786 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
9787 vmull_high_u32 (uint32x4_t a
, uint32x4_t b
)
9790 __asm__ ("umull2 %0.2d,%1.4s,%2.4s"
9793 : /* No clobbers */);
9797 #define vmull_lane_s16(a, b, c) \
9800 int16x4_t b_ = (b); \
9801 int16x4_t a_ = (a); \
9803 __asm__ ("smull %0.4s,%1.4h,%2.h[%3]" \
9805 : "w"(a_), "x"(b_), "i"(c) \
9806 : /* No clobbers */); \
9810 #define vmull_lane_s32(a, b, c) \
9813 int32x2_t b_ = (b); \
9814 int32x2_t a_ = (a); \
9816 __asm__ ("smull %0.2d,%1.2s,%2.s[%3]" \
9818 : "w"(a_), "w"(b_), "i"(c) \
9819 : /* No clobbers */); \
9823 #define vmull_lane_u16(a, b, c) \
9826 uint16x4_t b_ = (b); \
9827 uint16x4_t a_ = (a); \
9828 uint32x4_t result; \
9829 __asm__ ("umull %0.4s,%1.4h,%2.h[%3]" \
9831 : "w"(a_), "x"(b_), "i"(c) \
9832 : /* No clobbers */); \
9836 #define vmull_lane_u32(a, b, c) \
9839 uint32x2_t b_ = (b); \
9840 uint32x2_t a_ = (a); \
9841 uint64x2_t result; \
9842 __asm__ ("umull %0.2d, %1.2s, %2.s[%3]" \
9844 : "w"(a_), "w"(b_), "i"(c) \
9845 : /* No clobbers */); \
9849 #define vmull_laneq_s16(a, b, c) \
9852 int16x8_t b_ = (b); \
9853 int16x4_t a_ = (a); \
9855 __asm__ ("smull %0.4s, %1.4h, %2.h[%3]" \
9857 : "w"(a_), "x"(b_), "i"(c) \
9858 : /* No clobbers */); \
9862 #define vmull_laneq_s32(a, b, c) \
9865 int32x4_t b_ = (b); \
9866 int32x2_t a_ = (a); \
9868 __asm__ ("smull %0.2d, %1.2s, %2.s[%3]" \
9870 : "w"(a_), "w"(b_), "i"(c) \
9871 : /* No clobbers */); \
9875 #define vmull_laneq_u16(a, b, c) \
9878 uint16x8_t b_ = (b); \
9879 uint16x4_t a_ = (a); \
9880 uint32x4_t result; \
9881 __asm__ ("umull %0.4s, %1.4h, %2.h[%3]" \
9883 : "w"(a_), "x"(b_), "i"(c) \
9884 : /* No clobbers */); \
9888 #define vmull_laneq_u32(a, b, c) \
9891 uint32x4_t b_ = (b); \
9892 uint32x2_t a_ = (a); \
9893 uint64x2_t result; \
9894 __asm__ ("umull %0.2d, %1.2s, %2.s[%3]" \
9896 : "w"(a_), "w"(b_), "i"(c) \
9897 : /* No clobbers */); \
9901 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
9902 vmull_n_s16 (int16x4_t a
, int16_t b
)
9905 __asm__ ("smull %0.4s,%1.4h,%2.h[0]"
9908 : /* No clobbers */);
9912 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
9913 vmull_n_s32 (int32x2_t a
, int32_t b
)
9916 __asm__ ("smull %0.2d,%1.2s,%2.s[0]"
9919 : /* No clobbers */);
9923 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
9924 vmull_n_u16 (uint16x4_t a
, uint16_t b
)
9927 __asm__ ("umull %0.4s,%1.4h,%2.h[0]"
9930 : /* No clobbers */);
9934 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
9935 vmull_n_u32 (uint32x2_t a
, uint32_t b
)
9938 __asm__ ("umull %0.2d,%1.2s,%2.s[0]"
9941 : /* No clobbers */);
9945 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
9946 vmull_p8 (poly8x8_t a
, poly8x8_t b
)
9949 __asm__ ("pmull %0.8h, %1.8b, %2.8b"
9952 : /* No clobbers */);
9956 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
9957 vmull_s8 (int8x8_t a
, int8x8_t b
)
9960 __asm__ ("smull %0.8h, %1.8b, %2.8b"
9963 : /* No clobbers */);
9967 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
9968 vmull_s16 (int16x4_t a
, int16x4_t b
)
9971 __asm__ ("smull %0.4s, %1.4h, %2.4h"
9974 : /* No clobbers */);
9978 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
9979 vmull_s32 (int32x2_t a
, int32x2_t b
)
9982 __asm__ ("smull %0.2d, %1.2s, %2.2s"
9985 : /* No clobbers */);
9989 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
9990 vmull_u8 (uint8x8_t a
, uint8x8_t b
)
9993 __asm__ ("umull %0.8h, %1.8b, %2.8b"
9996 : /* No clobbers */);
10000 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
10001 vmull_u16 (uint16x4_t a
, uint16x4_t b
)
10004 __asm__ ("umull %0.4s, %1.4h, %2.4h"
10007 : /* No clobbers */);
10011 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
10012 vmull_u32 (uint32x2_t a
, uint32x2_t b
)
10015 __asm__ ("umull %0.2d, %1.2s, %2.2s"
10018 : /* No clobbers */);
10022 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
10023 vmulq_n_f32 (float32x4_t a
, float32_t b
)
10025 float32x4_t result
;
10026 __asm__ ("fmul %0.4s,%1.4s,%2.s[0]"
10029 : /* No clobbers */);
10033 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
10034 vmulq_n_f64 (float64x2_t a
, float64_t b
)
10036 float64x2_t result
;
10037 __asm__ ("fmul %0.2d,%1.2d,%2.d[0]"
10040 : /* No clobbers */);
10044 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
10045 vmulq_n_s16 (int16x8_t a
, int16_t b
)
10048 __asm__ ("mul %0.8h,%1.8h,%2.h[0]"
10051 : /* No clobbers */);
10055 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
10056 vmulq_n_s32 (int32x4_t a
, int32_t b
)
10059 __asm__ ("mul %0.4s,%1.4s,%2.s[0]"
10062 : /* No clobbers */);
10066 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
10067 vmulq_n_u16 (uint16x8_t a
, uint16_t b
)
10070 __asm__ ("mul %0.8h,%1.8h,%2.h[0]"
10073 : /* No clobbers */);
10077 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
10078 vmulq_n_u32 (uint32x4_t a
, uint32_t b
)
10081 __asm__ ("mul %0.4s,%1.4s,%2.s[0]"
10084 : /* No clobbers */);
10088 #define vmuls_lane_f32(a, b, c) \
10091 float32x4_t b_ = (b); \
10092 float32_t a_ = (a); \
10093 float32_t result; \
10094 __asm__ ("fmul %s0,%s1,%2.s[%3]" \
10096 : "w"(a_), "w"(b_), "i"(c) \
10097 : /* No clobbers */); \
10101 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
10102 vmulx_f32 (float32x2_t a
, float32x2_t b
)
10104 float32x2_t result
;
10105 __asm__ ("fmulx %0.2s,%1.2s,%2.2s"
10108 : /* No clobbers */);
10112 #define vmulx_lane_f32(a, b, c) \
10115 float32x4_t b_ = (b); \
10116 float32x2_t a_ = (a); \
10117 float32x2_t result; \
10118 __asm__ ("fmulx %0.2s,%1.2s,%2.s[%3]" \
10120 : "w"(a_), "w"(b_), "i"(c) \
10121 : /* No clobbers */); \
10125 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
10126 vmulxd_f64 (float64_t a
, float64_t b
)
10129 __asm__ ("fmulx %d0, %d1, %d2"
10132 : /* No clobbers */);
10136 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
10137 vmulxq_f32 (float32x4_t a
, float32x4_t b
)
10139 float32x4_t result
;
10140 __asm__ ("fmulx %0.4s,%1.4s,%2.4s"
10143 : /* No clobbers */);
10147 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
10148 vmulxq_f64 (float64x2_t a
, float64x2_t b
)
10150 float64x2_t result
;
10151 __asm__ ("fmulx %0.2d,%1.2d,%2.2d"
10154 : /* No clobbers */);
10158 #define vmulxq_lane_f32(a, b, c) \
10161 float32x4_t b_ = (b); \
10162 float32x4_t a_ = (a); \
10163 float32x4_t result; \
10164 __asm__ ("fmulx %0.4s,%1.4s,%2.s[%3]" \
10166 : "w"(a_), "w"(b_), "i"(c) \
10167 : /* No clobbers */); \
10171 #define vmulxq_lane_f64(a, b, c) \
10174 float64x2_t b_ = (b); \
10175 float64x2_t a_ = (a); \
10176 float64x2_t result; \
10177 __asm__ ("fmulx %0.2d,%1.2d,%2.d[%3]" \
10179 : "w"(a_), "w"(b_), "i"(c) \
10180 : /* No clobbers */); \
10184 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
10185 vmulxs_f32 (float32_t a
, float32_t b
)
10188 __asm__ ("fmulx %s0, %s1, %s2"
10191 : /* No clobbers */);
10195 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
10196 vmvn_p8 (poly8x8_t a
)
10199 __asm__ ("mvn %0.8b,%1.8b"
10202 : /* No clobbers */);
10206 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
10207 vmvn_s8 (int8x8_t a
)
10210 __asm__ ("mvn %0.8b,%1.8b"
10213 : /* No clobbers */);
10217 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
10218 vmvn_s16 (int16x4_t a
)
10221 __asm__ ("mvn %0.8b,%1.8b"
10224 : /* No clobbers */);
10228 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
10229 vmvn_s32 (int32x2_t a
)
10232 __asm__ ("mvn %0.8b,%1.8b"
10235 : /* No clobbers */);
10239 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
10240 vmvn_u8 (uint8x8_t a
)
10243 __asm__ ("mvn %0.8b,%1.8b"
10246 : /* No clobbers */);
10250 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
10251 vmvn_u16 (uint16x4_t a
)
10254 __asm__ ("mvn %0.8b,%1.8b"
10257 : /* No clobbers */);
10261 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
10262 vmvn_u32 (uint32x2_t a
)
10265 __asm__ ("mvn %0.8b,%1.8b"
10268 : /* No clobbers */);
10272 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
10273 vmvnq_p8 (poly8x16_t a
)
10276 __asm__ ("mvn %0.16b,%1.16b"
10279 : /* No clobbers */);
10283 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
10284 vmvnq_s8 (int8x16_t a
)
10287 __asm__ ("mvn %0.16b,%1.16b"
10290 : /* No clobbers */);
10294 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
10295 vmvnq_s16 (int16x8_t a
)
10298 __asm__ ("mvn %0.16b,%1.16b"
10301 : /* No clobbers */);
10305 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
10306 vmvnq_s32 (int32x4_t a
)
10309 __asm__ ("mvn %0.16b,%1.16b"
10312 : /* No clobbers */);
10316 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
10317 vmvnq_u8 (uint8x16_t a
)
10320 __asm__ ("mvn %0.16b,%1.16b"
10323 : /* No clobbers */);
10327 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
10328 vmvnq_u16 (uint16x8_t a
)
10331 __asm__ ("mvn %0.16b,%1.16b"
10334 : /* No clobbers */);
10338 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
10339 vmvnq_u32 (uint32x4_t a
)
10342 __asm__ ("mvn %0.16b,%1.16b"
10345 : /* No clobbers */);
10349 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
10350 vneg_f32 (float32x2_t a
)
10352 float32x2_t result
;
10353 __asm__ ("fneg %0.2s,%1.2s"
10356 : /* No clobbers */);
10360 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
10361 vneg_s8 (int8x8_t a
)
10364 __asm__ ("neg %0.8b,%1.8b"
10367 : /* No clobbers */);
10371 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
10372 vneg_s16 (int16x4_t a
)
10375 __asm__ ("neg %0.4h,%1.4h"
10378 : /* No clobbers */);
10382 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
10383 vneg_s32 (int32x2_t a
)
10386 __asm__ ("neg %0.2s,%1.2s"
10389 : /* No clobbers */);
10393 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
10394 vnegq_f32 (float32x4_t a
)
10396 float32x4_t result
;
10397 __asm__ ("fneg %0.4s,%1.4s"
10400 : /* No clobbers */);
10404 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
10405 vnegq_f64 (float64x2_t a
)
10407 float64x2_t result
;
10408 __asm__ ("fneg %0.2d,%1.2d"
10411 : /* No clobbers */);
10415 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
10416 vnegq_s8 (int8x16_t a
)
10419 __asm__ ("neg %0.16b,%1.16b"
10422 : /* No clobbers */);
10426 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
10427 vnegq_s16 (int16x8_t a
)
10430 __asm__ ("neg %0.8h,%1.8h"
10433 : /* No clobbers */);
10437 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
10438 vnegq_s32 (int32x4_t a
)
10441 __asm__ ("neg %0.4s,%1.4s"
10444 : /* No clobbers */);
10448 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
10449 vnegq_s64 (int64x2_t a
)
10452 __asm__ ("neg %0.2d,%1.2d"
10455 : /* No clobbers */);
10459 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
10460 vpadal_s8 (int16x4_t a
, int8x8_t b
)
10463 __asm__ ("sadalp %0.4h,%2.8b"
10466 : /* No clobbers */);
10470 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
10471 vpadal_s16 (int32x2_t a
, int16x4_t b
)
10474 __asm__ ("sadalp %0.2s,%2.4h"
10477 : /* No clobbers */);
10481 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
10482 vpadal_s32 (int64x1_t a
, int32x2_t b
)
10485 __asm__ ("sadalp %0.1d,%2.2s"
10488 : /* No clobbers */);
10492 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
10493 vpadal_u8 (uint16x4_t a
, uint8x8_t b
)
10496 __asm__ ("uadalp %0.4h,%2.8b"
10499 : /* No clobbers */);
10503 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
10504 vpadal_u16 (uint32x2_t a
, uint16x4_t b
)
10507 __asm__ ("uadalp %0.2s,%2.4h"
10510 : /* No clobbers */);
10514 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
10515 vpadal_u32 (uint64x1_t a
, uint32x2_t b
)
10518 __asm__ ("uadalp %0.1d,%2.2s"
10521 : /* No clobbers */);
10525 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
10526 vpadalq_s8 (int16x8_t a
, int8x16_t b
)
10529 __asm__ ("sadalp %0.8h,%2.16b"
10532 : /* No clobbers */);
10536 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
10537 vpadalq_s16 (int32x4_t a
, int16x8_t b
)
10540 __asm__ ("sadalp %0.4s,%2.8h"
10543 : /* No clobbers */);
10547 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
10548 vpadalq_s32 (int64x2_t a
, int32x4_t b
)
10551 __asm__ ("sadalp %0.2d,%2.4s"
10554 : /* No clobbers */);
10558 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
10559 vpadalq_u8 (uint16x8_t a
, uint8x16_t b
)
10562 __asm__ ("uadalp %0.8h,%2.16b"
10565 : /* No clobbers */);
10569 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
10570 vpadalq_u16 (uint32x4_t a
, uint16x8_t b
)
10573 __asm__ ("uadalp %0.4s,%2.8h"
10576 : /* No clobbers */);
10580 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
10581 vpadalq_u32 (uint64x2_t a
, uint32x4_t b
)
10584 __asm__ ("uadalp %0.2d,%2.4s"
10587 : /* No clobbers */);
10591 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
10592 vpadd_f32 (float32x2_t a
, float32x2_t b
)
10594 float32x2_t result
;
10595 __asm__ ("faddp %0.2s,%1.2s,%2.2s"
10598 : /* No clobbers */);
10602 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
10603 vpadd_s8 (int8x8_t __a
, int8x8_t __b
)
10605 return __builtin_aarch64_addpv8qi (__a
, __b
);
10608 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
10609 vpadd_s16 (int16x4_t __a
, int16x4_t __b
)
10611 return __builtin_aarch64_addpv4hi (__a
, __b
);
10614 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
10615 vpadd_s32 (int32x2_t __a
, int32x2_t __b
)
10617 return __builtin_aarch64_addpv2si (__a
, __b
);
10620 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
10621 vpadd_u8 (uint8x8_t __a
, uint8x8_t __b
)
10623 return (uint8x8_t
) __builtin_aarch64_addpv8qi ((int8x8_t
) __a
,
10627 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
10628 vpadd_u16 (uint16x4_t __a
, uint16x4_t __b
)
10630 return (uint16x4_t
) __builtin_aarch64_addpv4hi ((int16x4_t
) __a
,
10634 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
10635 vpadd_u32 (uint32x2_t __a
, uint32x2_t __b
)
10637 return (uint32x2_t
) __builtin_aarch64_addpv2si ((int32x2_t
) __a
,
10641 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
10642 vpaddd_f64 (float64x2_t a
)
10645 __asm__ ("faddp %d0,%1.2d"
10648 : /* No clobbers */);
10652 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
10653 vpaddl_s8 (int8x8_t a
)
10656 __asm__ ("saddlp %0.4h,%1.8b"
10659 : /* No clobbers */);
10663 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
10664 vpaddl_s16 (int16x4_t a
)
10667 __asm__ ("saddlp %0.2s,%1.4h"
10670 : /* No clobbers */);
10674 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
10675 vpaddl_s32 (int32x2_t a
)
10678 __asm__ ("saddlp %0.1d,%1.2s"
10681 : /* No clobbers */);
10685 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
10686 vpaddl_u8 (uint8x8_t a
)
10689 __asm__ ("uaddlp %0.4h,%1.8b"
10692 : /* No clobbers */);
10696 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
10697 vpaddl_u16 (uint16x4_t a
)
10700 __asm__ ("uaddlp %0.2s,%1.4h"
10703 : /* No clobbers */);
10707 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
10708 vpaddl_u32 (uint32x2_t a
)
10711 __asm__ ("uaddlp %0.1d,%1.2s"
10714 : /* No clobbers */);
10718 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
10719 vpaddlq_s8 (int8x16_t a
)
10722 __asm__ ("saddlp %0.8h,%1.16b"
10725 : /* No clobbers */);
10729 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
10730 vpaddlq_s16 (int16x8_t a
)
10733 __asm__ ("saddlp %0.4s,%1.8h"
10736 : /* No clobbers */);
10740 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
10741 vpaddlq_s32 (int32x4_t a
)
10744 __asm__ ("saddlp %0.2d,%1.4s"
10747 : /* No clobbers */);
10751 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
10752 vpaddlq_u8 (uint8x16_t a
)
10755 __asm__ ("uaddlp %0.8h,%1.16b"
10758 : /* No clobbers */);
10762 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
10763 vpaddlq_u16 (uint16x8_t a
)
10766 __asm__ ("uaddlp %0.4s,%1.8h"
10769 : /* No clobbers */);
10773 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
10774 vpaddlq_u32 (uint32x4_t a
)
10777 __asm__ ("uaddlp %0.2d,%1.4s"
10780 : /* No clobbers */);
10784 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
10785 vpaddq_f32 (float32x4_t a
, float32x4_t b
)
10787 float32x4_t result
;
10788 __asm__ ("faddp %0.4s,%1.4s,%2.4s"
10791 : /* No clobbers */);
10795 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
10796 vpaddq_f64 (float64x2_t a
, float64x2_t b
)
10798 float64x2_t result
;
10799 __asm__ ("faddp %0.2d,%1.2d,%2.2d"
10802 : /* No clobbers */);
10806 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
10807 vpaddq_s8 (int8x16_t a
, int8x16_t b
)
10810 __asm__ ("addp %0.16b,%1.16b,%2.16b"
10813 : /* No clobbers */);
10817 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
10818 vpaddq_s16 (int16x8_t a
, int16x8_t b
)
10821 __asm__ ("addp %0.8h,%1.8h,%2.8h"
10824 : /* No clobbers */);
10828 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
10829 vpaddq_s32 (int32x4_t a
, int32x4_t b
)
10832 __asm__ ("addp %0.4s,%1.4s,%2.4s"
10835 : /* No clobbers */);
10839 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
10840 vpaddq_s64 (int64x2_t a
, int64x2_t b
)
10843 __asm__ ("addp %0.2d,%1.2d,%2.2d"
10846 : /* No clobbers */);
10850 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
10851 vpaddq_u8 (uint8x16_t a
, uint8x16_t b
)
10854 __asm__ ("addp %0.16b,%1.16b,%2.16b"
10857 : /* No clobbers */);
10861 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
10862 vpaddq_u16 (uint16x8_t a
, uint16x8_t b
)
10865 __asm__ ("addp %0.8h,%1.8h,%2.8h"
10868 : /* No clobbers */);
10872 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
10873 vpaddq_u32 (uint32x4_t a
, uint32x4_t b
)
10876 __asm__ ("addp %0.4s,%1.4s,%2.4s"
10879 : /* No clobbers */);
10883 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
10884 vpaddq_u64 (uint64x2_t a
, uint64x2_t b
)
10887 __asm__ ("addp %0.2d,%1.2d,%2.2d"
10890 : /* No clobbers */);
10894 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
10895 vpadds_f32 (float32x2_t a
)
10898 __asm__ ("faddp %s0,%1.2s"
10901 : /* No clobbers */);
10905 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
10906 vpmax_f32 (float32x2_t a
, float32x2_t b
)
10908 float32x2_t result
;
10909 __asm__ ("fmaxp %0.2s, %1.2s, %2.2s"
10912 : /* No clobbers */);
10916 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
10917 vpmax_s8 (int8x8_t a
, int8x8_t b
)
10920 __asm__ ("smaxp %0.8b, %1.8b, %2.8b"
10923 : /* No clobbers */);
10927 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
10928 vpmax_s16 (int16x4_t a
, int16x4_t b
)
10931 __asm__ ("smaxp %0.4h, %1.4h, %2.4h"
10934 : /* No clobbers */);
10938 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
10939 vpmax_s32 (int32x2_t a
, int32x2_t b
)
10942 __asm__ ("smaxp %0.2s, %1.2s, %2.2s"
10945 : /* No clobbers */);
10949 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
10950 vpmax_u8 (uint8x8_t a
, uint8x8_t b
)
10953 __asm__ ("umaxp %0.8b, %1.8b, %2.8b"
10956 : /* No clobbers */);
10960 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
10961 vpmax_u16 (uint16x4_t a
, uint16x4_t b
)
10964 __asm__ ("umaxp %0.4h, %1.4h, %2.4h"
10967 : /* No clobbers */);
10971 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
10972 vpmax_u32 (uint32x2_t a
, uint32x2_t b
)
10975 __asm__ ("umaxp %0.2s, %1.2s, %2.2s"
10978 : /* No clobbers */);
10982 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
10983 vpmaxnm_f32 (float32x2_t a
, float32x2_t b
)
10985 float32x2_t result
;
10986 __asm__ ("fmaxnmp %0.2s,%1.2s,%2.2s"
10989 : /* No clobbers */);
10993 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
10994 vpmaxnmq_f32 (float32x4_t a
, float32x4_t b
)
10996 float32x4_t result
;
10997 __asm__ ("fmaxnmp %0.4s,%1.4s,%2.4s"
11000 : /* No clobbers */);
11004 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
11005 vpmaxnmq_f64 (float64x2_t a
, float64x2_t b
)
11007 float64x2_t result
;
11008 __asm__ ("fmaxnmp %0.2d,%1.2d,%2.2d"
11011 : /* No clobbers */);
11015 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
11016 vpmaxnmqd_f64 (float64x2_t a
)
11019 __asm__ ("fmaxnmp %d0,%1.2d"
11022 : /* No clobbers */);
11026 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
11027 vpmaxnms_f32 (float32x2_t a
)
11030 __asm__ ("fmaxnmp %s0,%1.2s"
11033 : /* No clobbers */);
11037 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
11038 vpmaxq_f32 (float32x4_t a
, float32x4_t b
)
11040 float32x4_t result
;
11041 __asm__ ("fmaxp %0.4s, %1.4s, %2.4s"
11044 : /* No clobbers */);
11048 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
11049 vpmaxq_f64 (float64x2_t a
, float64x2_t b
)
11051 float64x2_t result
;
11052 __asm__ ("fmaxp %0.2d, %1.2d, %2.2d"
11055 : /* No clobbers */);
11059 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
11060 vpmaxq_s8 (int8x16_t a
, int8x16_t b
)
11063 __asm__ ("smaxp %0.16b, %1.16b, %2.16b"
11066 : /* No clobbers */);
11070 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
11071 vpmaxq_s16 (int16x8_t a
, int16x8_t b
)
11074 __asm__ ("smaxp %0.8h, %1.8h, %2.8h"
11077 : /* No clobbers */);
11081 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
11082 vpmaxq_s32 (int32x4_t a
, int32x4_t b
)
11085 __asm__ ("smaxp %0.4s, %1.4s, %2.4s"
11088 : /* No clobbers */);
11092 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
11093 vpmaxq_u8 (uint8x16_t a
, uint8x16_t b
)
11096 __asm__ ("umaxp %0.16b, %1.16b, %2.16b"
11099 : /* No clobbers */);
11103 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
11104 vpmaxq_u16 (uint16x8_t a
, uint16x8_t b
)
11107 __asm__ ("umaxp %0.8h, %1.8h, %2.8h"
11110 : /* No clobbers */);
11114 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
11115 vpmaxq_u32 (uint32x4_t a
, uint32x4_t b
)
11118 __asm__ ("umaxp %0.4s, %1.4s, %2.4s"
11121 : /* No clobbers */);
11125 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
11126 vpmaxqd_f64 (float64x2_t a
)
11129 __asm__ ("fmaxp %d0,%1.2d"
11132 : /* No clobbers */);
11136 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
11137 vpmaxs_f32 (float32x2_t a
)
11140 __asm__ ("fmaxp %s0,%1.2s"
11143 : /* No clobbers */);
11147 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
11148 vpmin_f32 (float32x2_t a
, float32x2_t b
)
11150 float32x2_t result
;
11151 __asm__ ("fminp %0.2s, %1.2s, %2.2s"
11154 : /* No clobbers */);
11158 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
11159 vpmin_s8 (int8x8_t a
, int8x8_t b
)
11162 __asm__ ("sminp %0.8b, %1.8b, %2.8b"
11165 : /* No clobbers */);
11169 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
11170 vpmin_s16 (int16x4_t a
, int16x4_t b
)
11173 __asm__ ("sminp %0.4h, %1.4h, %2.4h"
11176 : /* No clobbers */);
11180 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
11181 vpmin_s32 (int32x2_t a
, int32x2_t b
)
11184 __asm__ ("sminp %0.2s, %1.2s, %2.2s"
11187 : /* No clobbers */);
11191 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
11192 vpmin_u8 (uint8x8_t a
, uint8x8_t b
)
11195 __asm__ ("uminp %0.8b, %1.8b, %2.8b"
11198 : /* No clobbers */);
11202 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
11203 vpmin_u16 (uint16x4_t a
, uint16x4_t b
)
11206 __asm__ ("uminp %0.4h, %1.4h, %2.4h"
11209 : /* No clobbers */);
11213 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
11214 vpmin_u32 (uint32x2_t a
, uint32x2_t b
)
11217 __asm__ ("uminp %0.2s, %1.2s, %2.2s"
11220 : /* No clobbers */);
11224 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
11225 vpminnm_f32 (float32x2_t a
, float32x2_t b
)
11227 float32x2_t result
;
11228 __asm__ ("fminnmp %0.2s,%1.2s,%2.2s"
11231 : /* No clobbers */);
11235 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
11236 vpminnmq_f32 (float32x4_t a
, float32x4_t b
)
11238 float32x4_t result
;
11239 __asm__ ("fminnmp %0.4s,%1.4s,%2.4s"
11242 : /* No clobbers */);
11246 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
11247 vpminnmq_f64 (float64x2_t a
, float64x2_t b
)
11249 float64x2_t result
;
11250 __asm__ ("fminnmp %0.2d,%1.2d,%2.2d"
11253 : /* No clobbers */);
11257 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
11258 vpminnmqd_f64 (float64x2_t a
)
11261 __asm__ ("fminnmp %d0,%1.2d"
11264 : /* No clobbers */);
11268 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
11269 vpminnms_f32 (float32x2_t a
)
11272 __asm__ ("fminnmp %s0,%1.2s"
11275 : /* No clobbers */);
11279 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
11280 vpminq_f32 (float32x4_t a
, float32x4_t b
)
11282 float32x4_t result
;
11283 __asm__ ("fminp %0.4s, %1.4s, %2.4s"
11286 : /* No clobbers */);
11290 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
11291 vpminq_f64 (float64x2_t a
, float64x2_t b
)
11293 float64x2_t result
;
11294 __asm__ ("fminp %0.2d, %1.2d, %2.2d"
11297 : /* No clobbers */);
11301 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
11302 vpminq_s8 (int8x16_t a
, int8x16_t b
)
11305 __asm__ ("sminp %0.16b, %1.16b, %2.16b"
11308 : /* No clobbers */);
11312 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
11313 vpminq_s16 (int16x8_t a
, int16x8_t b
)
11316 __asm__ ("sminp %0.8h, %1.8h, %2.8h"
11319 : /* No clobbers */);
11323 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
11324 vpminq_s32 (int32x4_t a
, int32x4_t b
)
11327 __asm__ ("sminp %0.4s, %1.4s, %2.4s"
11330 : /* No clobbers */);
11334 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
11335 vpminq_u8 (uint8x16_t a
, uint8x16_t b
)
11338 __asm__ ("uminp %0.16b, %1.16b, %2.16b"
11341 : /* No clobbers */);
11345 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
11346 vpminq_u16 (uint16x8_t a
, uint16x8_t b
)
11349 __asm__ ("uminp %0.8h, %1.8h, %2.8h"
11352 : /* No clobbers */);
11356 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
11357 vpminq_u32 (uint32x4_t a
, uint32x4_t b
)
11360 __asm__ ("uminp %0.4s, %1.4s, %2.4s"
11363 : /* No clobbers */);
11367 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
11368 vpminqd_f64 (float64x2_t a
)
11371 __asm__ ("fminp %d0,%1.2d"
11374 : /* No clobbers */);
11378 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
11379 vpmins_f32 (float32x2_t a
)
11382 __asm__ ("fminp %s0,%1.2s"
11385 : /* No clobbers */);
11389 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
11390 vqdmulh_n_s16 (int16x4_t a
, int16_t b
)
11393 __asm__ ("sqdmulh %0.4h,%1.4h,%2.h[0]"
11396 : /* No clobbers */);
11400 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
11401 vqdmulh_n_s32 (int32x2_t a
, int32_t b
)
11404 __asm__ ("sqdmulh %0.2s,%1.2s,%2.s[0]"
11407 : /* No clobbers */);
11411 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
11412 vqdmulhq_n_s16 (int16x8_t a
, int16_t b
)
11415 __asm__ ("sqdmulh %0.8h,%1.8h,%2.h[0]"
11418 : /* No clobbers */);
11422 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
11423 vqdmulhq_n_s32 (int32x4_t a
, int32_t b
)
11426 __asm__ ("sqdmulh %0.4s,%1.4s,%2.s[0]"
11429 : /* No clobbers */);
11433 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
11434 vqmovn_high_s16 (int8x8_t a
, int16x8_t b
)
11436 int8x16_t result
= vcombine_s8 (a
, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
11437 __asm__ ("sqxtn2 %0.16b, %1.8h"
11440 : /* No clobbers */);
11444 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
11445 vqmovn_high_s32 (int16x4_t a
, int32x4_t b
)
11447 int16x8_t result
= vcombine_s16 (a
, vcreate_s16 (__AARCH64_UINT64_C (0x0)));
11448 __asm__ ("sqxtn2 %0.8h, %1.4s"
11451 : /* No clobbers */);
11455 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
11456 vqmovn_high_s64 (int32x2_t a
, int64x2_t b
)
11458 int32x4_t result
= vcombine_s32 (a
, vcreate_s32 (__AARCH64_UINT64_C (0x0)));
11459 __asm__ ("sqxtn2 %0.4s, %1.2d"
11462 : /* No clobbers */);
11466 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
11467 vqmovn_high_u16 (uint8x8_t a
, uint16x8_t b
)
11469 uint8x16_t result
= vcombine_u8 (a
, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
11470 __asm__ ("uqxtn2 %0.16b, %1.8h"
11473 : /* No clobbers */);
11477 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
11478 vqmovn_high_u32 (uint16x4_t a
, uint32x4_t b
)
11480 uint16x8_t result
= vcombine_u16 (a
, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
11481 __asm__ ("uqxtn2 %0.8h, %1.4s"
11484 : /* No clobbers */);
11488 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
11489 vqmovn_high_u64 (uint32x2_t a
, uint64x2_t b
)
11491 uint32x4_t result
= vcombine_u32 (a
, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
11492 __asm__ ("uqxtn2 %0.4s, %1.2d"
11495 : /* No clobbers */);
11499 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
11500 vqmovun_high_s16 (uint8x8_t a
, int16x8_t b
)
11502 uint8x16_t result
= vcombine_u8 (a
, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
11503 __asm__ ("sqxtun2 %0.16b, %1.8h"
11506 : /* No clobbers */);
11510 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
11511 vqmovun_high_s32 (uint16x4_t a
, int32x4_t b
)
11513 uint16x8_t result
= vcombine_u16 (a
, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
11514 __asm__ ("sqxtun2 %0.8h, %1.4s"
11517 : /* No clobbers */);
11521 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
11522 vqmovun_high_s64 (uint32x2_t a
, int64x2_t b
)
11524 uint32x4_t result
= vcombine_u32 (a
, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
11525 __asm__ ("sqxtun2 %0.4s, %1.2d"
11528 : /* No clobbers */);
11532 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
11533 vqrdmulh_n_s16 (int16x4_t a
, int16_t b
)
11536 __asm__ ("sqrdmulh %0.4h,%1.4h,%2.h[0]"
11539 : /* No clobbers */);
11543 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
11544 vqrdmulh_n_s32 (int32x2_t a
, int32_t b
)
11547 __asm__ ("sqrdmulh %0.2s,%1.2s,%2.s[0]"
11550 : /* No clobbers */);
11554 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
11555 vqrdmulhq_n_s16 (int16x8_t a
, int16_t b
)
11558 __asm__ ("sqrdmulh %0.8h,%1.8h,%2.h[0]"
11561 : /* No clobbers */);
11565 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
11566 vqrdmulhq_n_s32 (int32x4_t a
, int32_t b
)
11569 __asm__ ("sqrdmulh %0.4s,%1.4s,%2.s[0]"
11572 : /* No clobbers */);
11576 #define vqrshrn_high_n_s16(a, b, c) \
11579 int16x8_t b_ = (b); \
11580 int8x8_t a_ = (a); \
11581 int8x16_t result = vcombine_s8 \
11583 (__AARCH64_UINT64_C (0x0))); \
11584 __asm__ ("sqrshrn2 %0.16b, %1.8h, #%2" \
11586 : "w"(b_), "i"(c) \
11587 : /* No clobbers */); \
11591 #define vqrshrn_high_n_s32(a, b, c) \
11594 int32x4_t b_ = (b); \
11595 int16x4_t a_ = (a); \
11596 int16x8_t result = vcombine_s16 \
11598 (__AARCH64_UINT64_C (0x0))); \
11599 __asm__ ("sqrshrn2 %0.8h, %1.4s, #%2" \
11601 : "w"(b_), "i"(c) \
11602 : /* No clobbers */); \
11606 #define vqrshrn_high_n_s64(a, b, c) \
11609 int64x2_t b_ = (b); \
11610 int32x2_t a_ = (a); \
11611 int32x4_t result = vcombine_s32 \
11613 (__AARCH64_UINT64_C (0x0))); \
11614 __asm__ ("sqrshrn2 %0.4s, %1.2d, #%2" \
11616 : "w"(b_), "i"(c) \
11617 : /* No clobbers */); \
11621 #define vqrshrn_high_n_u16(a, b, c) \
11624 uint16x8_t b_ = (b); \
11625 uint8x8_t a_ = (a); \
11626 uint8x16_t result = vcombine_u8 \
11628 (__AARCH64_UINT64_C (0x0))); \
11629 __asm__ ("uqrshrn2 %0.16b, %1.8h, #%2" \
11631 : "w"(b_), "i"(c) \
11632 : /* No clobbers */); \
11636 #define vqrshrn_high_n_u32(a, b, c) \
11639 uint32x4_t b_ = (b); \
11640 uint16x4_t a_ = (a); \
11641 uint16x8_t result = vcombine_u16 \
11643 (__AARCH64_UINT64_C (0x0))); \
11644 __asm__ ("uqrshrn2 %0.8h, %1.4s, #%2" \
11646 : "w"(b_), "i"(c) \
11647 : /* No clobbers */); \
11651 #define vqrshrn_high_n_u64(a, b, c) \
11654 uint64x2_t b_ = (b); \
11655 uint32x2_t a_ = (a); \
11656 uint32x4_t result = vcombine_u32 \
11658 (__AARCH64_UINT64_C (0x0))); \
11659 __asm__ ("uqrshrn2 %0.4s, %1.2d, #%2" \
11661 : "w"(b_), "i"(c) \
11662 : /* No clobbers */); \
11666 #define vqrshrun_high_n_s16(a, b, c) \
11669 int16x8_t b_ = (b); \
11670 uint8x8_t a_ = (a); \
11671 uint8x16_t result = vcombine_u8 \
11673 (__AARCH64_UINT64_C (0x0))); \
11674 __asm__ ("sqrshrun2 %0.16b, %1.8h, #%2" \
11676 : "w"(b_), "i"(c) \
11677 : /* No clobbers */); \
11681 #define vqrshrun_high_n_s32(a, b, c) \
11684 int32x4_t b_ = (b); \
11685 uint16x4_t a_ = (a); \
11686 uint16x8_t result = vcombine_u16 \
11688 (__AARCH64_UINT64_C (0x0))); \
11689 __asm__ ("sqrshrun2 %0.8h, %1.4s, #%2" \
11691 : "w"(b_), "i"(c) \
11692 : /* No clobbers */); \
11696 #define vqrshrun_high_n_s64(a, b, c) \
11699 int64x2_t b_ = (b); \
11700 uint32x2_t a_ = (a); \
11701 uint32x4_t result = vcombine_u32 \
11703 (__AARCH64_UINT64_C (0x0))); \
11704 __asm__ ("sqrshrun2 %0.4s, %1.2d, #%2" \
11706 : "w"(b_), "i"(c) \
11707 : /* No clobbers */); \
11711 #define vqshrn_high_n_s16(a, b, c) \
11714 int16x8_t b_ = (b); \
11715 int8x8_t a_ = (a); \
11716 int8x16_t result = vcombine_s8 \
11718 (__AARCH64_UINT64_C (0x0))); \
11719 __asm__ ("sqshrn2 %0.16b, %1.8h, #%2" \
11721 : "w"(b_), "i"(c) \
11722 : /* No clobbers */); \
11726 #define vqshrn_high_n_s32(a, b, c) \
11729 int32x4_t b_ = (b); \
11730 int16x4_t a_ = (a); \
11731 int16x8_t result = vcombine_s16 \
11733 (__AARCH64_UINT64_C (0x0))); \
11734 __asm__ ("sqshrn2 %0.8h, %1.4s, #%2" \
11736 : "w"(b_), "i"(c) \
11737 : /* No clobbers */); \
11741 #define vqshrn_high_n_s64(a, b, c) \
11744 int64x2_t b_ = (b); \
11745 int32x2_t a_ = (a); \
11746 int32x4_t result = vcombine_s32 \
11748 (__AARCH64_UINT64_C (0x0))); \
11749 __asm__ ("sqshrn2 %0.4s, %1.2d, #%2" \
11751 : "w"(b_), "i"(c) \
11752 : /* No clobbers */); \
11756 #define vqshrn_high_n_u16(a, b, c) \
11759 uint16x8_t b_ = (b); \
11760 uint8x8_t a_ = (a); \
11761 uint8x16_t result = vcombine_u8 \
11763 (__AARCH64_UINT64_C (0x0))); \
11764 __asm__ ("uqshrn2 %0.16b, %1.8h, #%2" \
11766 : "w"(b_), "i"(c) \
11767 : /* No clobbers */); \
11771 #define vqshrn_high_n_u32(a, b, c) \
11774 uint32x4_t b_ = (b); \
11775 uint16x4_t a_ = (a); \
11776 uint16x8_t result = vcombine_u16 \
11778 (__AARCH64_UINT64_C (0x0))); \
11779 __asm__ ("uqshrn2 %0.8h, %1.4s, #%2" \
11781 : "w"(b_), "i"(c) \
11782 : /* No clobbers */); \
11786 #define vqshrn_high_n_u64(a, b, c) \
11789 uint64x2_t b_ = (b); \
11790 uint32x2_t a_ = (a); \
11791 uint32x4_t result = vcombine_u32 \
11793 (__AARCH64_UINT64_C (0x0))); \
11794 __asm__ ("uqshrn2 %0.4s, %1.2d, #%2" \
11796 : "w"(b_), "i"(c) \
11797 : /* No clobbers */); \
11801 #define vqshrun_high_n_s16(a, b, c) \
11804 int16x8_t b_ = (b); \
11805 uint8x8_t a_ = (a); \
11806 uint8x16_t result = vcombine_u8 \
11808 (__AARCH64_UINT64_C (0x0))); \
11809 __asm__ ("sqshrun2 %0.16b, %1.8h, #%2" \
11811 : "w"(b_), "i"(c) \
11812 : /* No clobbers */); \
11816 #define vqshrun_high_n_s32(a, b, c) \
11819 int32x4_t b_ = (b); \
11820 uint16x4_t a_ = (a); \
11821 uint16x8_t result = vcombine_u16 \
11823 (__AARCH64_UINT64_C (0x0))); \
11824 __asm__ ("sqshrun2 %0.8h, %1.4s, #%2" \
11826 : "w"(b_), "i"(c) \
11827 : /* No clobbers */); \
11831 #define vqshrun_high_n_s64(a, b, c) \
11834 int64x2_t b_ = (b); \
11835 uint32x2_t a_ = (a); \
11836 uint32x4_t result = vcombine_u32 \
11838 (__AARCH64_UINT64_C (0x0))); \
11839 __asm__ ("sqshrun2 %0.4s, %1.2d, #%2" \
11841 : "w"(b_), "i"(c) \
11842 : /* No clobbers */); \
11846 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
11847 vrbit_s8 (int8x8_t a
)
11850 __asm__ ("rbit %0.8b,%1.8b"
11853 : /* No clobbers */);
11857 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
11858 vrbit_u8 (uint8x8_t a
)
11861 __asm__ ("rbit %0.8b,%1.8b"
11864 : /* No clobbers */);
11868 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
11869 vrbitq_s8 (int8x16_t a
)
11872 __asm__ ("rbit %0.16b,%1.16b"
11875 : /* No clobbers */);
11879 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
11880 vrbitq_u8 (uint8x16_t a
)
11883 __asm__ ("rbit %0.16b,%1.16b"
11886 : /* No clobbers */);
11890 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
11891 vrecpe_u32 (uint32x2_t a
)
11894 __asm__ ("urecpe %0.2s,%1.2s"
11897 : /* No clobbers */);
11901 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
11902 vrecpeq_u32 (uint32x4_t a
)
11905 __asm__ ("urecpe %0.4s,%1.4s"
11908 : /* No clobbers */);
11912 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
11913 vrev16_p8 (poly8x8_t a
)
11916 __asm__ ("rev16 %0.8b,%1.8b"
11919 : /* No clobbers */);
11923 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
11924 vrev16_s8 (int8x8_t a
)
11927 __asm__ ("rev16 %0.8b,%1.8b"
11930 : /* No clobbers */);
11934 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
11935 vrev16_u8 (uint8x8_t a
)
11938 __asm__ ("rev16 %0.8b,%1.8b"
11941 : /* No clobbers */);
11945 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
11946 vrev16q_p8 (poly8x16_t a
)
11949 __asm__ ("rev16 %0.16b,%1.16b"
11952 : /* No clobbers */);
11956 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
11957 vrev16q_s8 (int8x16_t a
)
11960 __asm__ ("rev16 %0.16b,%1.16b"
11963 : /* No clobbers */);
11967 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
11968 vrev16q_u8 (uint8x16_t a
)
11971 __asm__ ("rev16 %0.16b,%1.16b"
11974 : /* No clobbers */);
11978 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
11979 vrev32_p8 (poly8x8_t a
)
11982 __asm__ ("rev32 %0.8b,%1.8b"
11985 : /* No clobbers */);
11989 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
11990 vrev32_p16 (poly16x4_t a
)
11993 __asm__ ("rev32 %0.4h,%1.4h"
11996 : /* No clobbers */);
12000 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
12001 vrev32_s8 (int8x8_t a
)
12004 __asm__ ("rev32 %0.8b,%1.8b"
12007 : /* No clobbers */);
12011 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
12012 vrev32_s16 (int16x4_t a
)
12015 __asm__ ("rev32 %0.4h,%1.4h"
12018 : /* No clobbers */);
12022 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
12023 vrev32_u8 (uint8x8_t a
)
12026 __asm__ ("rev32 %0.8b,%1.8b"
12029 : /* No clobbers */);
12033 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
12034 vrev32_u16 (uint16x4_t a
)
12037 __asm__ ("rev32 %0.4h,%1.4h"
12040 : /* No clobbers */);
12044 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
12045 vrev32q_p8 (poly8x16_t a
)
12048 __asm__ ("rev32 %0.16b,%1.16b"
12051 : /* No clobbers */);
12055 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
12056 vrev32q_p16 (poly16x8_t a
)
12059 __asm__ ("rev32 %0.8h,%1.8h"
12062 : /* No clobbers */);
12066 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
12067 vrev32q_s8 (int8x16_t a
)
12070 __asm__ ("rev32 %0.16b,%1.16b"
12073 : /* No clobbers */);
12077 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
12078 vrev32q_s16 (int16x8_t a
)
12081 __asm__ ("rev32 %0.8h,%1.8h"
12084 : /* No clobbers */);
12088 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
12089 vrev32q_u8 (uint8x16_t a
)
12092 __asm__ ("rev32 %0.16b,%1.16b"
12095 : /* No clobbers */);
12099 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
12100 vrev32q_u16 (uint16x8_t a
)
12103 __asm__ ("rev32 %0.8h,%1.8h"
12106 : /* No clobbers */);
12110 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
12111 vrev64_f32 (float32x2_t a
)
12113 float32x2_t result
;
12114 __asm__ ("rev64 %0.2s,%1.2s"
12117 : /* No clobbers */);
12121 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
12122 vrev64_p8 (poly8x8_t a
)
12125 __asm__ ("rev64 %0.8b,%1.8b"
12128 : /* No clobbers */);
12132 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
12133 vrev64_p16 (poly16x4_t a
)
12136 __asm__ ("rev64 %0.4h,%1.4h"
12139 : /* No clobbers */);
12143 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
12144 vrev64_s8 (int8x8_t a
)
12147 __asm__ ("rev64 %0.8b,%1.8b"
12150 : /* No clobbers */);
12154 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
12155 vrev64_s16 (int16x4_t a
)
12158 __asm__ ("rev64 %0.4h,%1.4h"
12161 : /* No clobbers */);
12165 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
12166 vrev64_s32 (int32x2_t a
)
12169 __asm__ ("rev64 %0.2s,%1.2s"
12172 : /* No clobbers */);
12176 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
12177 vrev64_u8 (uint8x8_t a
)
12180 __asm__ ("rev64 %0.8b,%1.8b"
12183 : /* No clobbers */);
12187 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
12188 vrev64_u16 (uint16x4_t a
)
12191 __asm__ ("rev64 %0.4h,%1.4h"
12194 : /* No clobbers */);
12198 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
12199 vrev64_u32 (uint32x2_t a
)
12202 __asm__ ("rev64 %0.2s,%1.2s"
12205 : /* No clobbers */);
12209 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
12210 vrev64q_f32 (float32x4_t a
)
12212 float32x4_t result
;
12213 __asm__ ("rev64 %0.4s,%1.4s"
12216 : /* No clobbers */);
12220 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
12221 vrev64q_p8 (poly8x16_t a
)
12224 __asm__ ("rev64 %0.16b,%1.16b"
12227 : /* No clobbers */);
12231 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
12232 vrev64q_p16 (poly16x8_t a
)
12235 __asm__ ("rev64 %0.8h,%1.8h"
12238 : /* No clobbers */);
12242 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
12243 vrev64q_s8 (int8x16_t a
)
12246 __asm__ ("rev64 %0.16b,%1.16b"
12249 : /* No clobbers */);
12253 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
12254 vrev64q_s16 (int16x8_t a
)
12257 __asm__ ("rev64 %0.8h,%1.8h"
12260 : /* No clobbers */);
12264 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
12265 vrev64q_s32 (int32x4_t a
)
12268 __asm__ ("rev64 %0.4s,%1.4s"
12271 : /* No clobbers */);
12275 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
12276 vrev64q_u8 (uint8x16_t a
)
12279 __asm__ ("rev64 %0.16b,%1.16b"
12282 : /* No clobbers */);
12286 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
12287 vrev64q_u16 (uint16x8_t a
)
12290 __asm__ ("rev64 %0.8h,%1.8h"
12293 : /* No clobbers */);
12297 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
12298 vrev64q_u32 (uint32x4_t a
)
12301 __asm__ ("rev64 %0.4s,%1.4s"
12304 : /* No clobbers */);
12308 #define vrshrn_high_n_s16(a, b, c) \
12311 int16x8_t b_ = (b); \
12312 int8x8_t a_ = (a); \
12313 int8x16_t result = vcombine_s8 \
12315 (__AARCH64_UINT64_C (0x0))); \
12316 __asm__ ("rshrn2 %0.16b,%1.8h,#%2" \
12318 : "w"(b_), "i"(c) \
12319 : /* No clobbers */); \
12323 #define vrshrn_high_n_s32(a, b, c) \
12326 int32x4_t b_ = (b); \
12327 int16x4_t a_ = (a); \
12328 int16x8_t result = vcombine_s16 \
12330 (__AARCH64_UINT64_C (0x0))); \
12331 __asm__ ("rshrn2 %0.8h,%1.4s,#%2" \
12333 : "w"(b_), "i"(c) \
12334 : /* No clobbers */); \
12338 #define vrshrn_high_n_s64(a, b, c) \
12341 int64x2_t b_ = (b); \
12342 int32x2_t a_ = (a); \
12343 int32x4_t result = vcombine_s32 \
12345 (__AARCH64_UINT64_C (0x0))); \
12346 __asm__ ("rshrn2 %0.4s,%1.2d,#%2" \
12348 : "w"(b_), "i"(c) \
12349 : /* No clobbers */); \
12353 #define vrshrn_high_n_u16(a, b, c) \
12356 uint16x8_t b_ = (b); \
12357 uint8x8_t a_ = (a); \
12358 uint8x16_t result = vcombine_u8 \
12360 (__AARCH64_UINT64_C (0x0))); \
12361 __asm__ ("rshrn2 %0.16b,%1.8h,#%2" \
12363 : "w"(b_), "i"(c) \
12364 : /* No clobbers */); \
12368 #define vrshrn_high_n_u32(a, b, c) \
12371 uint32x4_t b_ = (b); \
12372 uint16x4_t a_ = (a); \
12373 uint16x8_t result = vcombine_u16 \
12375 (__AARCH64_UINT64_C (0x0))); \
12376 __asm__ ("rshrn2 %0.8h,%1.4s,#%2" \
12378 : "w"(b_), "i"(c) \
12379 : /* No clobbers */); \
12383 #define vrshrn_high_n_u64(a, b, c) \
12386 uint64x2_t b_ = (b); \
12387 uint32x2_t a_ = (a); \
12388 uint32x4_t result = vcombine_u32 \
12390 (__AARCH64_UINT64_C (0x0))); \
12391 __asm__ ("rshrn2 %0.4s,%1.2d,#%2" \
12393 : "w"(b_), "i"(c) \
12394 : /* No clobbers */); \
12398 #define vrshrn_n_s16(a, b) \
12401 int16x8_t a_ = (a); \
12403 __asm__ ("rshrn %0.8b,%1.8h,%2" \
12405 : "w"(a_), "i"(b) \
12406 : /* No clobbers */); \
12410 #define vrshrn_n_s32(a, b) \
12413 int32x4_t a_ = (a); \
12414 int16x4_t result; \
12415 __asm__ ("rshrn %0.4h,%1.4s,%2" \
12417 : "w"(a_), "i"(b) \
12418 : /* No clobbers */); \
12422 #define vrshrn_n_s64(a, b) \
12425 int64x2_t a_ = (a); \
12426 int32x2_t result; \
12427 __asm__ ("rshrn %0.2s,%1.2d,%2" \
12429 : "w"(a_), "i"(b) \
12430 : /* No clobbers */); \
12434 #define vrshrn_n_u16(a, b) \
12437 uint16x8_t a_ = (a); \
12438 uint8x8_t result; \
12439 __asm__ ("rshrn %0.8b,%1.8h,%2" \
12441 : "w"(a_), "i"(b) \
12442 : /* No clobbers */); \
12446 #define vrshrn_n_u32(a, b) \
12449 uint32x4_t a_ = (a); \
12450 uint16x4_t result; \
12451 __asm__ ("rshrn %0.4h,%1.4s,%2" \
12453 : "w"(a_), "i"(b) \
12454 : /* No clobbers */); \
12458 #define vrshrn_n_u64(a, b) \
12461 uint64x2_t a_ = (a); \
12462 uint32x2_t result; \
12463 __asm__ ("rshrn %0.2s,%1.2d,%2" \
12465 : "w"(a_), "i"(b) \
12466 : /* No clobbers */); \
12470 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
12471 vrsqrte_f32 (float32x2_t a
)
12473 float32x2_t result
;
12474 __asm__ ("frsqrte %0.2s,%1.2s"
12477 : /* No clobbers */);
12481 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
12482 vrsqrte_f64 (float64x1_t a
)
12484 float64x1_t result
;
12485 __asm__ ("frsqrte %d0,%d1"
12488 : /* No clobbers */);
12492 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
12493 vrsqrte_u32 (uint32x2_t a
)
12496 __asm__ ("ursqrte %0.2s,%1.2s"
12499 : /* No clobbers */);
12503 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
12504 vrsqrted_f64 (float64_t a
)
12507 __asm__ ("frsqrte %d0,%d1"
12510 : /* No clobbers */);
12514 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
12515 vrsqrteq_f32 (float32x4_t a
)
12517 float32x4_t result
;
12518 __asm__ ("frsqrte %0.4s,%1.4s"
12521 : /* No clobbers */);
12525 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
12526 vrsqrteq_f64 (float64x2_t a
)
12528 float64x2_t result
;
12529 __asm__ ("frsqrte %0.2d,%1.2d"
12532 : /* No clobbers */);
12536 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
12537 vrsqrteq_u32 (uint32x4_t a
)
12540 __asm__ ("ursqrte %0.4s,%1.4s"
12543 : /* No clobbers */);
12547 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
12548 vrsqrtes_f32 (float32_t a
)
12551 __asm__ ("frsqrte %s0,%s1"
12554 : /* No clobbers */);
12558 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
12559 vrsqrts_f32 (float32x2_t a
, float32x2_t b
)
12561 float32x2_t result
;
12562 __asm__ ("frsqrts %0.2s,%1.2s,%2.2s"
12565 : /* No clobbers */);
12569 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
12570 vrsqrtsd_f64 (float64_t a
, float64_t b
)
12573 __asm__ ("frsqrts %d0,%d1,%d2"
12576 : /* No clobbers */);
12580 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
12581 vrsqrtsq_f32 (float32x4_t a
, float32x4_t b
)
12583 float32x4_t result
;
12584 __asm__ ("frsqrts %0.4s,%1.4s,%2.4s"
12587 : /* No clobbers */);
12591 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
12592 vrsqrtsq_f64 (float64x2_t a
, float64x2_t b
)
12594 float64x2_t result
;
12595 __asm__ ("frsqrts %0.2d,%1.2d,%2.2d"
12598 : /* No clobbers */);
12602 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
12603 vrsqrtss_f32 (float32_t a
, float32_t b
)
12606 __asm__ ("frsqrts %s0,%s1,%s2"
12609 : /* No clobbers */);
12613 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
12614 vrsrtsq_f64 (float64x2_t a
, float64x2_t b
)
12616 float64x2_t result
;
12617 __asm__ ("frsqrts %0.2d,%1.2d,%2.2d"
12620 : /* No clobbers */);
12624 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
12625 vrsubhn_high_s16 (int8x8_t a
, int16x8_t b
, int16x8_t c
)
12627 int8x16_t result
= vcombine_s8 (a
, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
12628 __asm__ ("rsubhn2 %0.16b, %1.8h, %2.8h"
12631 : /* No clobbers */);
12635 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
12636 vrsubhn_high_s32 (int16x4_t a
, int32x4_t b
, int32x4_t c
)
12638 int16x8_t result
= vcombine_s16 (a
, vcreate_s16 (__AARCH64_UINT64_C (0x0)));
12639 __asm__ ("rsubhn2 %0.8h, %1.4s, %2.4s"
12642 : /* No clobbers */);
12646 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
12647 vrsubhn_high_s64 (int32x2_t a
, int64x2_t b
, int64x2_t c
)
12649 int32x4_t result
= vcombine_s32 (a
, vcreate_s32 (__AARCH64_UINT64_C (0x0)));
12650 __asm__ ("rsubhn2 %0.4s, %1.2d, %2.2d"
12653 : /* No clobbers */);
12657 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
12658 vrsubhn_high_u16 (uint8x8_t a
, uint16x8_t b
, uint16x8_t c
)
12660 uint8x16_t result
= vcombine_u8 (a
, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
12661 __asm__ ("rsubhn2 %0.16b, %1.8h, %2.8h"
12664 : /* No clobbers */);
12668 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
12669 vrsubhn_high_u32 (uint16x4_t a
, uint32x4_t b
, uint32x4_t c
)
12671 uint16x8_t result
= vcombine_u16 (a
, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
12672 __asm__ ("rsubhn2 %0.8h, %1.4s, %2.4s"
12675 : /* No clobbers */);
12679 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
12680 vrsubhn_high_u64 (uint32x2_t a
, uint64x2_t b
, uint64x2_t c
)
12682 uint32x4_t result
= vcombine_u32 (a
, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
12683 __asm__ ("rsubhn2 %0.4s, %1.2d, %2.2d"
12686 : /* No clobbers */);
12690 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
12691 vrsubhn_s16 (int16x8_t a
, int16x8_t b
)
12694 __asm__ ("rsubhn %0.8b, %1.8h, %2.8h"
12697 : /* No clobbers */);
12701 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
12702 vrsubhn_s32 (int32x4_t a
, int32x4_t b
)
12705 __asm__ ("rsubhn %0.4h, %1.4s, %2.4s"
12708 : /* No clobbers */);
12712 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
12713 vrsubhn_s64 (int64x2_t a
, int64x2_t b
)
12716 __asm__ ("rsubhn %0.2s, %1.2d, %2.2d"
12719 : /* No clobbers */);
12723 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
12724 vrsubhn_u16 (uint16x8_t a
, uint16x8_t b
)
12727 __asm__ ("rsubhn %0.8b, %1.8h, %2.8h"
12730 : /* No clobbers */);
12734 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
12735 vrsubhn_u32 (uint32x4_t a
, uint32x4_t b
)
12738 __asm__ ("rsubhn %0.4h, %1.4s, %2.4s"
12741 : /* No clobbers */);
12745 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
12746 vrsubhn_u64 (uint64x2_t a
, uint64x2_t b
)
12749 __asm__ ("rsubhn %0.2s, %1.2d, %2.2d"
12752 : /* No clobbers */);
12756 #define vset_lane_f32(a, b, c) \
12759 float32x2_t b_ = (b); \
12760 float32_t a_ = (a); \
12761 float32x2_t result; \
12762 __asm__ ("ins %0.s[%3], %w1" \
12764 : "r"(a_), "0"(b_), "i"(c) \
12765 : /* No clobbers */); \
12769 #define vset_lane_f64(a, b, c) \
12772 float64x1_t b_ = (b); \
12773 float64_t a_ = (a); \
12774 float64x1_t result; \
12775 __asm__ ("ins %0.d[%3], %x1" \
12777 : "r"(a_), "0"(b_), "i"(c) \
12778 : /* No clobbers */); \
12782 #define vset_lane_p8(a, b, c) \
12785 poly8x8_t b_ = (b); \
12786 poly8_t a_ = (a); \
12787 poly8x8_t result; \
12788 __asm__ ("ins %0.b[%3], %w1" \
12790 : "r"(a_), "0"(b_), "i"(c) \
12791 : /* No clobbers */); \
12795 #define vset_lane_p16(a, b, c) \
12798 poly16x4_t b_ = (b); \
12799 poly16_t a_ = (a); \
12800 poly16x4_t result; \
12801 __asm__ ("ins %0.h[%3], %w1" \
12803 : "r"(a_), "0"(b_), "i"(c) \
12804 : /* No clobbers */); \
12808 #define vset_lane_s8(a, b, c) \
12811 int8x8_t b_ = (b); \
12814 __asm__ ("ins %0.b[%3], %w1" \
12816 : "r"(a_), "0"(b_), "i"(c) \
12817 : /* No clobbers */); \
12821 #define vset_lane_s16(a, b, c) \
12824 int16x4_t b_ = (b); \
12825 int16_t a_ = (a); \
12826 int16x4_t result; \
12827 __asm__ ("ins %0.h[%3], %w1" \
12829 : "r"(a_), "0"(b_), "i"(c) \
12830 : /* No clobbers */); \
12834 #define vset_lane_s32(a, b, c) \
12837 int32x2_t b_ = (b); \
12838 int32_t a_ = (a); \
12839 int32x2_t result; \
12840 __asm__ ("ins %0.s[%3], %w1" \
12842 : "r"(a_), "0"(b_), "i"(c) \
12843 : /* No clobbers */); \
12847 #define vset_lane_s64(a, b, c) \
12850 int64x1_t b_ = (b); \
12851 int64_t a_ = (a); \
12852 int64x1_t result; \
12853 __asm__ ("ins %0.d[%3], %x1" \
12855 : "r"(a_), "0"(b_), "i"(c) \
12856 : /* No clobbers */); \
12860 #define vset_lane_u8(a, b, c) \
12863 uint8x8_t b_ = (b); \
12864 uint8_t a_ = (a); \
12865 uint8x8_t result; \
12866 __asm__ ("ins %0.b[%3], %w1" \
12868 : "r"(a_), "0"(b_), "i"(c) \
12869 : /* No clobbers */); \
12873 #define vset_lane_u16(a, b, c) \
12876 uint16x4_t b_ = (b); \
12877 uint16_t a_ = (a); \
12878 uint16x4_t result; \
12879 __asm__ ("ins %0.h[%3], %w1" \
12881 : "r"(a_), "0"(b_), "i"(c) \
12882 : /* No clobbers */); \
12886 #define vset_lane_u32(a, b, c) \
12889 uint32x2_t b_ = (b); \
12890 uint32_t a_ = (a); \
12891 uint32x2_t result; \
12892 __asm__ ("ins %0.s[%3], %w1" \
12894 : "r"(a_), "0"(b_), "i"(c) \
12895 : /* No clobbers */); \
12899 #define vset_lane_u64(a, b, c) \
12902 uint64x1_t b_ = (b); \
12903 uint64_t a_ = (a); \
12904 uint64x1_t result; \
12905 __asm__ ("ins %0.d[%3], %x1" \
12907 : "r"(a_), "0"(b_), "i"(c) \
12908 : /* No clobbers */); \
12912 #define vsetq_lane_f32(a, b, c) \
12915 float32x4_t b_ = (b); \
12916 float32_t a_ = (a); \
12917 float32x4_t result; \
12918 __asm__ ("ins %0.s[%3], %w1" \
12920 : "r"(a_), "0"(b_), "i"(c) \
12921 : /* No clobbers */); \
12925 #define vsetq_lane_f64(a, b, c) \
12928 float64x2_t b_ = (b); \
12929 float64_t a_ = (a); \
12930 float64x2_t result; \
12931 __asm__ ("ins %0.d[%3], %x1" \
12933 : "r"(a_), "0"(b_), "i"(c) \
12934 : /* No clobbers */); \
12938 #define vsetq_lane_p8(a, b, c) \
12941 poly8x16_t b_ = (b); \
12942 poly8_t a_ = (a); \
12943 poly8x16_t result; \
12944 __asm__ ("ins %0.b[%3], %w1" \
12946 : "r"(a_), "0"(b_), "i"(c) \
12947 : /* No clobbers */); \
12951 #define vsetq_lane_p16(a, b, c) \
12954 poly16x8_t b_ = (b); \
12955 poly16_t a_ = (a); \
12956 poly16x8_t result; \
12957 __asm__ ("ins %0.h[%3], %w1" \
12959 : "r"(a_), "0"(b_), "i"(c) \
12960 : /* No clobbers */); \
12964 #define vsetq_lane_s8(a, b, c) \
12967 int8x16_t b_ = (b); \
12969 int8x16_t result; \
12970 __asm__ ("ins %0.b[%3], %w1" \
12972 : "r"(a_), "0"(b_), "i"(c) \
12973 : /* No clobbers */); \
12977 #define vsetq_lane_s16(a, b, c) \
12980 int16x8_t b_ = (b); \
12981 int16_t a_ = (a); \
12982 int16x8_t result; \
12983 __asm__ ("ins %0.h[%3], %w1" \
12985 : "r"(a_), "0"(b_), "i"(c) \
12986 : /* No clobbers */); \
12990 #define vsetq_lane_s32(a, b, c) \
12993 int32x4_t b_ = (b); \
12994 int32_t a_ = (a); \
12995 int32x4_t result; \
12996 __asm__ ("ins %0.s[%3], %w1" \
12998 : "r"(a_), "0"(b_), "i"(c) \
12999 : /* No clobbers */); \
13003 #define vsetq_lane_s64(a, b, c) \
13006 int64x2_t b_ = (b); \
13007 int64_t a_ = (a); \
13008 int64x2_t result; \
13009 __asm__ ("ins %0.d[%3], %x1" \
13011 : "r"(a_), "0"(b_), "i"(c) \
13012 : /* No clobbers */); \
13016 #define vsetq_lane_u8(a, b, c) \
13019 uint8x16_t b_ = (b); \
13020 uint8_t a_ = (a); \
13021 uint8x16_t result; \
13022 __asm__ ("ins %0.b[%3], %w1" \
13024 : "r"(a_), "0"(b_), "i"(c) \
13025 : /* No clobbers */); \
13029 #define vsetq_lane_u16(a, b, c) \
13032 uint16x8_t b_ = (b); \
13033 uint16_t a_ = (a); \
13034 uint16x8_t result; \
13035 __asm__ ("ins %0.h[%3], %w1" \
13037 : "r"(a_), "0"(b_), "i"(c) \
13038 : /* No clobbers */); \
13042 #define vsetq_lane_u32(a, b, c) \
13045 uint32x4_t b_ = (b); \
13046 uint32_t a_ = (a); \
13047 uint32x4_t result; \
13048 __asm__ ("ins %0.s[%3], %w1" \
13050 : "r"(a_), "0"(b_), "i"(c) \
13051 : /* No clobbers */); \
13055 #define vsetq_lane_u64(a, b, c) \
13058 uint64x2_t b_ = (b); \
13059 uint64_t a_ = (a); \
13060 uint64x2_t result; \
13061 __asm__ ("ins %0.d[%3], %x1" \
13063 : "r"(a_), "0"(b_), "i"(c) \
13064 : /* No clobbers */); \
13068 #define vshrn_high_n_s16(a, b, c) \
13071 int16x8_t b_ = (b); \
13072 int8x8_t a_ = (a); \
13073 int8x16_t result = vcombine_s8 \
13075 (__AARCH64_UINT64_C (0x0))); \
13076 __asm__ ("shrn2 %0.16b,%1.8h,#%2" \
13078 : "w"(b_), "i"(c) \
13079 : /* No clobbers */); \
13083 #define vshrn_high_n_s32(a, b, c) \
13086 int32x4_t b_ = (b); \
13087 int16x4_t a_ = (a); \
13088 int16x8_t result = vcombine_s16 \
13090 (__AARCH64_UINT64_C (0x0))); \
13091 __asm__ ("shrn2 %0.8h,%1.4s,#%2" \
13093 : "w"(b_), "i"(c) \
13094 : /* No clobbers */); \
13098 #define vshrn_high_n_s64(a, b, c) \
13101 int64x2_t b_ = (b); \
13102 int32x2_t a_ = (a); \
13103 int32x4_t result = vcombine_s32 \
13105 (__AARCH64_UINT64_C (0x0))); \
13106 __asm__ ("shrn2 %0.4s,%1.2d,#%2" \
13108 : "w"(b_), "i"(c) \
13109 : /* No clobbers */); \
13113 #define vshrn_high_n_u16(a, b, c) \
13116 uint16x8_t b_ = (b); \
13117 uint8x8_t a_ = (a); \
13118 uint8x16_t result = vcombine_u8 \
13120 (__AARCH64_UINT64_C (0x0))); \
13121 __asm__ ("shrn2 %0.16b,%1.8h,#%2" \
13123 : "w"(b_), "i"(c) \
13124 : /* No clobbers */); \
13128 #define vshrn_high_n_u32(a, b, c) \
13131 uint32x4_t b_ = (b); \
13132 uint16x4_t a_ = (a); \
13133 uint16x8_t result = vcombine_u16 \
13135 (__AARCH64_UINT64_C (0x0))); \
13136 __asm__ ("shrn2 %0.8h,%1.4s,#%2" \
13138 : "w"(b_), "i"(c) \
13139 : /* No clobbers */); \
13143 #define vshrn_high_n_u64(a, b, c) \
13146 uint64x2_t b_ = (b); \
13147 uint32x2_t a_ = (a); \
13148 uint32x4_t result = vcombine_u32 \
13150 (__AARCH64_UINT64_C (0x0))); \
13151 __asm__ ("shrn2 %0.4s,%1.2d,#%2" \
13153 : "w"(b_), "i"(c) \
13154 : /* No clobbers */); \
13158 #define vshrn_n_s16(a, b) \
13161 int16x8_t a_ = (a); \
13163 __asm__ ("shrn %0.8b,%1.8h,%2" \
13165 : "w"(a_), "i"(b) \
13166 : /* No clobbers */); \
13170 #define vshrn_n_s32(a, b) \
13173 int32x4_t a_ = (a); \
13174 int16x4_t result; \
13175 __asm__ ("shrn %0.4h,%1.4s,%2" \
13177 : "w"(a_), "i"(b) \
13178 : /* No clobbers */); \
13182 #define vshrn_n_s64(a, b) \
13185 int64x2_t a_ = (a); \
13186 int32x2_t result; \
13187 __asm__ ("shrn %0.2s,%1.2d,%2" \
13189 : "w"(a_), "i"(b) \
13190 : /* No clobbers */); \
13194 #define vshrn_n_u16(a, b) \
13197 uint16x8_t a_ = (a); \
13198 uint8x8_t result; \
13199 __asm__ ("shrn %0.8b,%1.8h,%2" \
13201 : "w"(a_), "i"(b) \
13202 : /* No clobbers */); \
13206 #define vshrn_n_u32(a, b) \
13209 uint32x4_t a_ = (a); \
13210 uint16x4_t result; \
13211 __asm__ ("shrn %0.4h,%1.4s,%2" \
13213 : "w"(a_), "i"(b) \
13214 : /* No clobbers */); \
13218 #define vshrn_n_u64(a, b) \
13221 uint64x2_t a_ = (a); \
13222 uint32x2_t result; \
13223 __asm__ ("shrn %0.2s,%1.2d,%2" \
13225 : "w"(a_), "i"(b) \
13226 : /* No clobbers */); \
13230 #define vsli_n_p8(a, b, c) \
13233 poly8x8_t b_ = (b); \
13234 poly8x8_t a_ = (a); \
13235 poly8x8_t result; \
13236 __asm__ ("sli %0.8b,%2.8b,%3" \
13238 : "0"(a_), "w"(b_), "i"(c) \
13239 : /* No clobbers */); \
13243 #define vsli_n_p16(a, b, c) \
13246 poly16x4_t b_ = (b); \
13247 poly16x4_t a_ = (a); \
13248 poly16x4_t result; \
13249 __asm__ ("sli %0.4h,%2.4h,%3" \
13251 : "0"(a_), "w"(b_), "i"(c) \
13252 : /* No clobbers */); \
13256 #define vsliq_n_p8(a, b, c) \
13259 poly8x16_t b_ = (b); \
13260 poly8x16_t a_ = (a); \
13261 poly8x16_t result; \
13262 __asm__ ("sli %0.16b,%2.16b,%3" \
13264 : "0"(a_), "w"(b_), "i"(c) \
13265 : /* No clobbers */); \
13269 #define vsliq_n_p16(a, b, c) \
13272 poly16x8_t b_ = (b); \
13273 poly16x8_t a_ = (a); \
13274 poly16x8_t result; \
13275 __asm__ ("sli %0.8h,%2.8h,%3" \
13277 : "0"(a_), "w"(b_), "i"(c) \
13278 : /* No clobbers */); \
13282 #define vsri_n_p8(a, b, c) \
13285 poly8x8_t b_ = (b); \
13286 poly8x8_t a_ = (a); \
13287 poly8x8_t result; \
13288 __asm__ ("sri %0.8b,%2.8b,%3" \
13290 : "0"(a_), "w"(b_), "i"(c) \
13291 : /* No clobbers */); \
13295 #define vsri_n_p16(a, b, c) \
13298 poly16x4_t b_ = (b); \
13299 poly16x4_t a_ = (a); \
13300 poly16x4_t result; \
13301 __asm__ ("sri %0.4h,%2.4h,%3" \
13303 : "0"(a_), "w"(b_), "i"(c) \
13304 : /* No clobbers */); \
13308 #define vsriq_n_p8(a, b, c) \
13311 poly8x16_t b_ = (b); \
13312 poly8x16_t a_ = (a); \
13313 poly8x16_t result; \
13314 __asm__ ("sri %0.16b,%2.16b,%3" \
13316 : "0"(a_), "w"(b_), "i"(c) \
13317 : /* No clobbers */); \
13321 #define vsriq_n_p16(a, b, c) \
13324 poly16x8_t b_ = (b); \
13325 poly16x8_t a_ = (a); \
13326 poly16x8_t result; \
13327 __asm__ ("sri %0.8h,%2.8h,%3" \
13329 : "0"(a_), "w"(b_), "i"(c) \
13330 : /* No clobbers */); \
13334 #define vst1_lane_f32(a, b, c) \
13337 float32x2_t b_ = (b); \
13338 float32_t * a_ = (a); \
13339 __asm__ ("st1 {%1.s}[%2],[%0]" \
13341 : "r"(a_), "w"(b_), "i"(c) \
13345 #define vst1_lane_f64(a, b, c) \
13348 float64x1_t b_ = (b); \
13349 float64_t * a_ = (a); \
13350 __asm__ ("st1 {%1.d}[%2],[%0]" \
13352 : "r"(a_), "w"(b_), "i"(c) \
13356 #define vst1_lane_p8(a, b, c) \
13359 poly8x8_t b_ = (b); \
13360 poly8_t * a_ = (a); \
13361 __asm__ ("st1 {%1.b}[%2],[%0]" \
13363 : "r"(a_), "w"(b_), "i"(c) \
13367 #define vst1_lane_p16(a, b, c) \
13370 poly16x4_t b_ = (b); \
13371 poly16_t * a_ = (a); \
13372 __asm__ ("st1 {%1.h}[%2],[%0]" \
13374 : "r"(a_), "w"(b_), "i"(c) \
13378 #define vst1_lane_s8(a, b, c) \
13381 int8x8_t b_ = (b); \
13382 int8_t * a_ = (a); \
13383 __asm__ ("st1 {%1.b}[%2],[%0]" \
13385 : "r"(a_), "w"(b_), "i"(c) \
13389 #define vst1_lane_s16(a, b, c) \
13392 int16x4_t b_ = (b); \
13393 int16_t * a_ = (a); \
13394 __asm__ ("st1 {%1.h}[%2],[%0]" \
13396 : "r"(a_), "w"(b_), "i"(c) \
13400 #define vst1_lane_s32(a, b, c) \
13403 int32x2_t b_ = (b); \
13404 int32_t * a_ = (a); \
13405 __asm__ ("st1 {%1.s}[%2],[%0]" \
13407 : "r"(a_), "w"(b_), "i"(c) \
13411 #define vst1_lane_s64(a, b, c) \
13414 int64x1_t b_ = (b); \
13415 int64_t * a_ = (a); \
13416 __asm__ ("st1 {%1.d}[%2],[%0]" \
13418 : "r"(a_), "w"(b_), "i"(c) \
13422 #define vst1_lane_u8(a, b, c) \
13425 uint8x8_t b_ = (b); \
13426 uint8_t * a_ = (a); \
13427 __asm__ ("st1 {%1.b}[%2],[%0]" \
13429 : "r"(a_), "w"(b_), "i"(c) \
13433 #define vst1_lane_u16(a, b, c) \
13436 uint16x4_t b_ = (b); \
13437 uint16_t * a_ = (a); \
13438 __asm__ ("st1 {%1.h}[%2],[%0]" \
13440 : "r"(a_), "w"(b_), "i"(c) \
13444 #define vst1_lane_u32(a, b, c) \
13447 uint32x2_t b_ = (b); \
13448 uint32_t * a_ = (a); \
13449 __asm__ ("st1 {%1.s}[%2],[%0]" \
13451 : "r"(a_), "w"(b_), "i"(c) \
13455 #define vst1_lane_u64(a, b, c) \
13458 uint64x1_t b_ = (b); \
13459 uint64_t * a_ = (a); \
13460 __asm__ ("st1 {%1.d}[%2],[%0]" \
13462 : "r"(a_), "w"(b_), "i"(c) \
13467 #define vst1q_lane_f32(a, b, c) \
13470 float32x4_t b_ = (b); \
13471 float32_t * a_ = (a); \
13472 __asm__ ("st1 {%1.s}[%2],[%0]" \
13474 : "r"(a_), "w"(b_), "i"(c) \
13478 #define vst1q_lane_f64(a, b, c) \
13481 float64x2_t b_ = (b); \
13482 float64_t * a_ = (a); \
13483 __asm__ ("st1 {%1.d}[%2],[%0]" \
13485 : "r"(a_), "w"(b_), "i"(c) \
13489 #define vst1q_lane_p8(a, b, c) \
13492 poly8x16_t b_ = (b); \
13493 poly8_t * a_ = (a); \
13494 __asm__ ("st1 {%1.b}[%2],[%0]" \
13496 : "r"(a_), "w"(b_), "i"(c) \
13500 #define vst1q_lane_p16(a, b, c) \
13503 poly16x8_t b_ = (b); \
13504 poly16_t * a_ = (a); \
13505 __asm__ ("st1 {%1.h}[%2],[%0]" \
13507 : "r"(a_), "w"(b_), "i"(c) \
13511 #define vst1q_lane_s8(a, b, c) \
13514 int8x16_t b_ = (b); \
13515 int8_t * a_ = (a); \
13516 __asm__ ("st1 {%1.b}[%2],[%0]" \
13518 : "r"(a_), "w"(b_), "i"(c) \
13522 #define vst1q_lane_s16(a, b, c) \
13525 int16x8_t b_ = (b); \
13526 int16_t * a_ = (a); \
13527 __asm__ ("st1 {%1.h}[%2],[%0]" \
13529 : "r"(a_), "w"(b_), "i"(c) \
13533 #define vst1q_lane_s32(a, b, c) \
13536 int32x4_t b_ = (b); \
13537 int32_t * a_ = (a); \
13538 __asm__ ("st1 {%1.s}[%2],[%0]" \
13540 : "r"(a_), "w"(b_), "i"(c) \
13544 #define vst1q_lane_s64(a, b, c) \
13547 int64x2_t b_ = (b); \
13548 int64_t * a_ = (a); \
13549 __asm__ ("st1 {%1.d}[%2],[%0]" \
13551 : "r"(a_), "w"(b_), "i"(c) \
13555 #define vst1q_lane_u8(a, b, c) \
13558 uint8x16_t b_ = (b); \
13559 uint8_t * a_ = (a); \
13560 __asm__ ("st1 {%1.b}[%2],[%0]" \
13562 : "r"(a_), "w"(b_), "i"(c) \
13566 #define vst1q_lane_u16(a, b, c) \
13569 uint16x8_t b_ = (b); \
13570 uint16_t * a_ = (a); \
13571 __asm__ ("st1 {%1.h}[%2],[%0]" \
13573 : "r"(a_), "w"(b_), "i"(c) \
13577 #define vst1q_lane_u32(a, b, c) \
13580 uint32x4_t b_ = (b); \
13581 uint32_t * a_ = (a); \
13582 __asm__ ("st1 {%1.s}[%2],[%0]" \
13584 : "r"(a_), "w"(b_), "i"(c) \
13588 #define vst1q_lane_u64(a, b, c) \
13591 uint64x2_t b_ = (b); \
13592 uint64_t * a_ = (a); \
13593 __asm__ ("st1 {%1.d}[%2],[%0]" \
13595 : "r"(a_), "w"(b_), "i"(c) \
13599 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
13600 vsubhn_high_s16 (int8x8_t a
, int16x8_t b
, int16x8_t c
)
13602 int8x16_t result
= vcombine_s8 (a
, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
13603 __asm__ ("subhn2 %0.16b, %1.8h, %2.8h"
13606 : /* No clobbers */);
13610 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
13611 vsubhn_high_s32 (int16x4_t a
, int32x4_t b
, int32x4_t c
)
13613 int16x8_t result
= vcombine_s16 (a
, vcreate_s16 (__AARCH64_UINT64_C (0x0)));
13614 __asm__ ("subhn2 %0.8h, %1.4s, %2.4s"
13617 : /* No clobbers */);
13621 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
13622 vsubhn_high_s64 (int32x2_t a
, int64x2_t b
, int64x2_t c
)
13624 int32x4_t result
= vcombine_s32 (a
, vcreate_s32 (__AARCH64_UINT64_C (0x0)));
13625 __asm__ ("subhn2 %0.4s, %1.2d, %2.2d"
13628 : /* No clobbers */);
13632 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
13633 vsubhn_high_u16 (uint8x8_t a
, uint16x8_t b
, uint16x8_t c
)
13635 uint8x16_t result
= vcombine_u8 (a
, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
13636 __asm__ ("subhn2 %0.16b, %1.8h, %2.8h"
13639 : /* No clobbers */);
13643 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
13644 vsubhn_high_u32 (uint16x4_t a
, uint32x4_t b
, uint32x4_t c
)
13646 uint16x8_t result
= vcombine_u16 (a
, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
13647 __asm__ ("subhn2 %0.8h, %1.4s, %2.4s"
13650 : /* No clobbers */);
13654 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
13655 vsubhn_high_u64 (uint32x2_t a
, uint64x2_t b
, uint64x2_t c
)
13657 uint32x4_t result
= vcombine_u32 (a
, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
13658 __asm__ ("subhn2 %0.4s, %1.2d, %2.2d"
13661 : /* No clobbers */);
13665 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
13666 vsubhn_s16 (int16x8_t a
, int16x8_t b
)
13669 __asm__ ("subhn %0.8b, %1.8h, %2.8h"
13672 : /* No clobbers */);
13676 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
13677 vsubhn_s32 (int32x4_t a
, int32x4_t b
)
13680 __asm__ ("subhn %0.4h, %1.4s, %2.4s"
13683 : /* No clobbers */);
13687 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
13688 vsubhn_s64 (int64x2_t a
, int64x2_t b
)
13691 __asm__ ("subhn %0.2s, %1.2d, %2.2d"
13694 : /* No clobbers */);
13698 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
13699 vsubhn_u16 (uint16x8_t a
, uint16x8_t b
)
13702 __asm__ ("subhn %0.8b, %1.8h, %2.8h"
13705 : /* No clobbers */);
13709 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
13710 vsubhn_u32 (uint32x4_t a
, uint32x4_t b
)
13713 __asm__ ("subhn %0.4h, %1.4s, %2.4s"
13716 : /* No clobbers */);
13720 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
13721 vsubhn_u64 (uint64x2_t a
, uint64x2_t b
)
13724 __asm__ ("subhn %0.2s, %1.2d, %2.2d"
13727 : /* No clobbers */);
13731 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
13732 vtrn1_f32 (float32x2_t a
, float32x2_t b
)
13734 float32x2_t result
;
13735 __asm__ ("trn1 %0.2s,%1.2s,%2.2s"
13738 : /* No clobbers */);
13742 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
13743 vtrn1_p8 (poly8x8_t a
, poly8x8_t b
)
13746 __asm__ ("trn1 %0.8b,%1.8b,%2.8b"
13749 : /* No clobbers */);
13753 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
13754 vtrn1_p16 (poly16x4_t a
, poly16x4_t b
)
13757 __asm__ ("trn1 %0.4h,%1.4h,%2.4h"
13760 : /* No clobbers */);
13764 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
13765 vtrn1_s8 (int8x8_t a
, int8x8_t b
)
13768 __asm__ ("trn1 %0.8b,%1.8b,%2.8b"
13771 : /* No clobbers */);
13775 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
13776 vtrn1_s16 (int16x4_t a
, int16x4_t b
)
13779 __asm__ ("trn1 %0.4h,%1.4h,%2.4h"
13782 : /* No clobbers */);
13786 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
13787 vtrn1_s32 (int32x2_t a
, int32x2_t b
)
13790 __asm__ ("trn1 %0.2s,%1.2s,%2.2s"
13793 : /* No clobbers */);
13797 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
13798 vtrn1_u8 (uint8x8_t a
, uint8x8_t b
)
13801 __asm__ ("trn1 %0.8b,%1.8b,%2.8b"
13804 : /* No clobbers */);
13808 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
13809 vtrn1_u16 (uint16x4_t a
, uint16x4_t b
)
13812 __asm__ ("trn1 %0.4h,%1.4h,%2.4h"
13815 : /* No clobbers */);
13819 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
13820 vtrn1_u32 (uint32x2_t a
, uint32x2_t b
)
13823 __asm__ ("trn1 %0.2s,%1.2s,%2.2s"
13826 : /* No clobbers */);
13830 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
13831 vtrn1q_f32 (float32x4_t a
, float32x4_t b
)
13833 float32x4_t result
;
13834 __asm__ ("trn1 %0.4s,%1.4s,%2.4s"
13837 : /* No clobbers */);
13841 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
13842 vtrn1q_f64 (float64x2_t a
, float64x2_t b
)
13844 float64x2_t result
;
13845 __asm__ ("trn1 %0.2d,%1.2d,%2.2d"
13848 : /* No clobbers */);
13852 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
13853 vtrn1q_p8 (poly8x16_t a
, poly8x16_t b
)
13856 __asm__ ("trn1 %0.16b,%1.16b,%2.16b"
13859 : /* No clobbers */);
13863 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
13864 vtrn1q_p16 (poly16x8_t a
, poly16x8_t b
)
13867 __asm__ ("trn1 %0.8h,%1.8h,%2.8h"
13870 : /* No clobbers */);
13874 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
13875 vtrn1q_s8 (int8x16_t a
, int8x16_t b
)
13878 __asm__ ("trn1 %0.16b,%1.16b,%2.16b"
13881 : /* No clobbers */);
13885 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
13886 vtrn1q_s16 (int16x8_t a
, int16x8_t b
)
13889 __asm__ ("trn1 %0.8h,%1.8h,%2.8h"
13892 : /* No clobbers */);
13896 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
13897 vtrn1q_s32 (int32x4_t a
, int32x4_t b
)
13900 __asm__ ("trn1 %0.4s,%1.4s,%2.4s"
13903 : /* No clobbers */);
13907 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
13908 vtrn1q_s64 (int64x2_t a
, int64x2_t b
)
13911 __asm__ ("trn1 %0.2d,%1.2d,%2.2d"
13914 : /* No clobbers */);
13918 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
13919 vtrn1q_u8 (uint8x16_t a
, uint8x16_t b
)
13922 __asm__ ("trn1 %0.16b,%1.16b,%2.16b"
13925 : /* No clobbers */);
13929 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
13930 vtrn1q_u16 (uint16x8_t a
, uint16x8_t b
)
13933 __asm__ ("trn1 %0.8h,%1.8h,%2.8h"
13936 : /* No clobbers */);
13940 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
13941 vtrn1q_u32 (uint32x4_t a
, uint32x4_t b
)
13944 __asm__ ("trn1 %0.4s,%1.4s,%2.4s"
13947 : /* No clobbers */);
13951 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
13952 vtrn1q_u64 (uint64x2_t a
, uint64x2_t b
)
13955 __asm__ ("trn1 %0.2d,%1.2d,%2.2d"
13958 : /* No clobbers */);
13962 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
13963 vtrn2_f32 (float32x2_t a
, float32x2_t b
)
13965 float32x2_t result
;
13966 __asm__ ("trn2 %0.2s,%1.2s,%2.2s"
13969 : /* No clobbers */);
13973 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
13974 vtrn2_p8 (poly8x8_t a
, poly8x8_t b
)
13977 __asm__ ("trn2 %0.8b,%1.8b,%2.8b"
13980 : /* No clobbers */);
13984 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
13985 vtrn2_p16 (poly16x4_t a
, poly16x4_t b
)
13988 __asm__ ("trn2 %0.4h,%1.4h,%2.4h"
13991 : /* No clobbers */);
13995 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
13996 vtrn2_s8 (int8x8_t a
, int8x8_t b
)
13999 __asm__ ("trn2 %0.8b,%1.8b,%2.8b"
14002 : /* No clobbers */);
14006 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
14007 vtrn2_s16 (int16x4_t a
, int16x4_t b
)
14010 __asm__ ("trn2 %0.4h,%1.4h,%2.4h"
14013 : /* No clobbers */);
14017 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
14018 vtrn2_s32 (int32x2_t a
, int32x2_t b
)
14021 __asm__ ("trn2 %0.2s,%1.2s,%2.2s"
14024 : /* No clobbers */);
14028 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14029 vtrn2_u8 (uint8x8_t a
, uint8x8_t b
)
14032 __asm__ ("trn2 %0.8b,%1.8b,%2.8b"
14035 : /* No clobbers */);
14039 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
14040 vtrn2_u16 (uint16x4_t a
, uint16x4_t b
)
14043 __asm__ ("trn2 %0.4h,%1.4h,%2.4h"
14046 : /* No clobbers */);
14050 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
14051 vtrn2_u32 (uint32x2_t a
, uint32x2_t b
)
14054 __asm__ ("trn2 %0.2s,%1.2s,%2.2s"
14057 : /* No clobbers */);
14061 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
14062 vtrn2q_f32 (float32x4_t a
, float32x4_t b
)
14064 float32x4_t result
;
14065 __asm__ ("trn2 %0.4s,%1.4s,%2.4s"
14068 : /* No clobbers */);
14072 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
14073 vtrn2q_f64 (float64x2_t a
, float64x2_t b
)
14075 float64x2_t result
;
14076 __asm__ ("trn2 %0.2d,%1.2d,%2.2d"
14079 : /* No clobbers */);
14083 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
14084 vtrn2q_p8 (poly8x16_t a
, poly8x16_t b
)
14087 __asm__ ("trn2 %0.16b,%1.16b,%2.16b"
14090 : /* No clobbers */);
14094 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
14095 vtrn2q_p16 (poly16x8_t a
, poly16x8_t b
)
14098 __asm__ ("trn2 %0.8h,%1.8h,%2.8h"
14101 : /* No clobbers */);
14105 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
14106 vtrn2q_s8 (int8x16_t a
, int8x16_t b
)
14109 __asm__ ("trn2 %0.16b,%1.16b,%2.16b"
14112 : /* No clobbers */);
14116 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
14117 vtrn2q_s16 (int16x8_t a
, int16x8_t b
)
14120 __asm__ ("trn2 %0.8h,%1.8h,%2.8h"
14123 : /* No clobbers */);
14127 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
14128 vtrn2q_s32 (int32x4_t a
, int32x4_t b
)
14131 __asm__ ("trn2 %0.4s,%1.4s,%2.4s"
14134 : /* No clobbers */);
14138 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
14139 vtrn2q_s64 (int64x2_t a
, int64x2_t b
)
14142 __asm__ ("trn2 %0.2d,%1.2d,%2.2d"
14145 : /* No clobbers */);
14149 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
14150 vtrn2q_u8 (uint8x16_t a
, uint8x16_t b
)
14153 __asm__ ("trn2 %0.16b,%1.16b,%2.16b"
14156 : /* No clobbers */);
14160 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
14161 vtrn2q_u16 (uint16x8_t a
, uint16x8_t b
)
14164 __asm__ ("trn2 %0.8h,%1.8h,%2.8h"
14167 : /* No clobbers */);
14171 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
14172 vtrn2q_u32 (uint32x4_t a
, uint32x4_t b
)
14175 __asm__ ("trn2 %0.4s,%1.4s,%2.4s"
14178 : /* No clobbers */);
14182 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
14183 vtrn2q_u64 (uint64x2_t a
, uint64x2_t b
)
14186 __asm__ ("trn2 %0.2d,%1.2d,%2.2d"
14189 : /* No clobbers */);
14193 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14194 vtst_p8 (poly8x8_t a
, poly8x8_t b
)
14197 __asm__ ("cmtst %0.8b, %1.8b, %2.8b"
14200 : /* No clobbers */);
14204 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
14205 vtst_p16 (poly16x4_t a
, poly16x4_t b
)
14208 __asm__ ("cmtst %0.4h, %1.4h, %2.4h"
14211 : /* No clobbers */);
14215 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
14216 vtstq_p8 (poly8x16_t a
, poly8x16_t b
)
14219 __asm__ ("cmtst %0.16b, %1.16b, %2.16b"
14222 : /* No clobbers */);
14226 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
14227 vtstq_p16 (poly16x8_t a
, poly16x8_t b
)
14230 __asm__ ("cmtst %0.8h, %1.8h, %2.8h"
14233 : /* No clobbers */);
14236 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
14237 vuzp1_f32 (float32x2_t a
, float32x2_t b
)
14239 float32x2_t result
;
14240 __asm__ ("uzp1 %0.2s,%1.2s,%2.2s"
14243 : /* No clobbers */);
14247 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
14248 vuzp1_p8 (poly8x8_t a
, poly8x8_t b
)
14251 __asm__ ("uzp1 %0.8b,%1.8b,%2.8b"
14254 : /* No clobbers */);
14258 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
14259 vuzp1_p16 (poly16x4_t a
, poly16x4_t b
)
14262 __asm__ ("uzp1 %0.4h,%1.4h,%2.4h"
14265 : /* No clobbers */);
14269 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
14270 vuzp1_s8 (int8x8_t a
, int8x8_t b
)
14273 __asm__ ("uzp1 %0.8b,%1.8b,%2.8b"
14276 : /* No clobbers */);
14280 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
14281 vuzp1_s16 (int16x4_t a
, int16x4_t b
)
14284 __asm__ ("uzp1 %0.4h,%1.4h,%2.4h"
14287 : /* No clobbers */);
14291 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
14292 vuzp1_s32 (int32x2_t a
, int32x2_t b
)
14295 __asm__ ("uzp1 %0.2s,%1.2s,%2.2s"
14298 : /* No clobbers */);
14302 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14303 vuzp1_u8 (uint8x8_t a
, uint8x8_t b
)
14306 __asm__ ("uzp1 %0.8b,%1.8b,%2.8b"
14309 : /* No clobbers */);
14313 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
14314 vuzp1_u16 (uint16x4_t a
, uint16x4_t b
)
14317 __asm__ ("uzp1 %0.4h,%1.4h,%2.4h"
14320 : /* No clobbers */);
14324 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
14325 vuzp1_u32 (uint32x2_t a
, uint32x2_t b
)
14328 __asm__ ("uzp1 %0.2s,%1.2s,%2.2s"
14331 : /* No clobbers */);
14335 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
14336 vuzp1q_f32 (float32x4_t a
, float32x4_t b
)
14338 float32x4_t result
;
14339 __asm__ ("uzp1 %0.4s,%1.4s,%2.4s"
14342 : /* No clobbers */);
14346 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
14347 vuzp1q_f64 (float64x2_t a
, float64x2_t b
)
14349 float64x2_t result
;
14350 __asm__ ("uzp1 %0.2d,%1.2d,%2.2d"
14353 : /* No clobbers */);
14357 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
14358 vuzp1q_p8 (poly8x16_t a
, poly8x16_t b
)
14361 __asm__ ("uzp1 %0.16b,%1.16b,%2.16b"
14364 : /* No clobbers */);
14368 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
14369 vuzp1q_p16 (poly16x8_t a
, poly16x8_t b
)
14372 __asm__ ("uzp1 %0.8h,%1.8h,%2.8h"
14375 : /* No clobbers */);
14379 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
14380 vuzp1q_s8 (int8x16_t a
, int8x16_t b
)
14383 __asm__ ("uzp1 %0.16b,%1.16b,%2.16b"
14386 : /* No clobbers */);
14390 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
14391 vuzp1q_s16 (int16x8_t a
, int16x8_t b
)
14394 __asm__ ("uzp1 %0.8h,%1.8h,%2.8h"
14397 : /* No clobbers */);
14401 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
14402 vuzp1q_s32 (int32x4_t a
, int32x4_t b
)
14405 __asm__ ("uzp1 %0.4s,%1.4s,%2.4s"
14408 : /* No clobbers */);
14412 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
14413 vuzp1q_s64 (int64x2_t a
, int64x2_t b
)
14416 __asm__ ("uzp1 %0.2d,%1.2d,%2.2d"
14419 : /* No clobbers */);
14423 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
14424 vuzp1q_u8 (uint8x16_t a
, uint8x16_t b
)
14427 __asm__ ("uzp1 %0.16b,%1.16b,%2.16b"
14430 : /* No clobbers */);
14434 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
14435 vuzp1q_u16 (uint16x8_t a
, uint16x8_t b
)
14438 __asm__ ("uzp1 %0.8h,%1.8h,%2.8h"
14441 : /* No clobbers */);
14445 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
14446 vuzp1q_u32 (uint32x4_t a
, uint32x4_t b
)
14449 __asm__ ("uzp1 %0.4s,%1.4s,%2.4s"
14452 : /* No clobbers */);
14456 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
14457 vuzp1q_u64 (uint64x2_t a
, uint64x2_t b
)
14460 __asm__ ("uzp1 %0.2d,%1.2d,%2.2d"
14463 : /* No clobbers */);
14467 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
14468 vuzp2_f32 (float32x2_t a
, float32x2_t b
)
14470 float32x2_t result
;
14471 __asm__ ("uzp2 %0.2s,%1.2s,%2.2s"
14474 : /* No clobbers */);
14478 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
14479 vuzp2_p8 (poly8x8_t a
, poly8x8_t b
)
14482 __asm__ ("uzp2 %0.8b,%1.8b,%2.8b"
14485 : /* No clobbers */);
14489 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
14490 vuzp2_p16 (poly16x4_t a
, poly16x4_t b
)
14493 __asm__ ("uzp2 %0.4h,%1.4h,%2.4h"
14496 : /* No clobbers */);
14500 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
14501 vuzp2_s8 (int8x8_t a
, int8x8_t b
)
14504 __asm__ ("uzp2 %0.8b,%1.8b,%2.8b"
14507 : /* No clobbers */);
14511 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
14512 vuzp2_s16 (int16x4_t a
, int16x4_t b
)
14515 __asm__ ("uzp2 %0.4h,%1.4h,%2.4h"
14518 : /* No clobbers */);
14522 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
14523 vuzp2_s32 (int32x2_t a
, int32x2_t b
)
14526 __asm__ ("uzp2 %0.2s,%1.2s,%2.2s"
14529 : /* No clobbers */);
14533 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14534 vuzp2_u8 (uint8x8_t a
, uint8x8_t b
)
14537 __asm__ ("uzp2 %0.8b,%1.8b,%2.8b"
14540 : /* No clobbers */);
14544 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
14545 vuzp2_u16 (uint16x4_t a
, uint16x4_t b
)
14548 __asm__ ("uzp2 %0.4h,%1.4h,%2.4h"
14551 : /* No clobbers */);
14555 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
14556 vuzp2_u32 (uint32x2_t a
, uint32x2_t b
)
14559 __asm__ ("uzp2 %0.2s,%1.2s,%2.2s"
14562 : /* No clobbers */);
14566 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
14567 vuzp2q_f32 (float32x4_t a
, float32x4_t b
)
14569 float32x4_t result
;
14570 __asm__ ("uzp2 %0.4s,%1.4s,%2.4s"
14573 : /* No clobbers */);
14577 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
14578 vuzp2q_f64 (float64x2_t a
, float64x2_t b
)
14580 float64x2_t result
;
14581 __asm__ ("uzp2 %0.2d,%1.2d,%2.2d"
14584 : /* No clobbers */);
14588 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
14589 vuzp2q_p8 (poly8x16_t a
, poly8x16_t b
)
14592 __asm__ ("uzp2 %0.16b,%1.16b,%2.16b"
14595 : /* No clobbers */);
14599 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
14600 vuzp2q_p16 (poly16x8_t a
, poly16x8_t b
)
14603 __asm__ ("uzp2 %0.8h,%1.8h,%2.8h"
14606 : /* No clobbers */);
14610 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
14611 vuzp2q_s8 (int8x16_t a
, int8x16_t b
)
14614 __asm__ ("uzp2 %0.16b,%1.16b,%2.16b"
14617 : /* No clobbers */);
14621 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
14622 vuzp2q_s16 (int16x8_t a
, int16x8_t b
)
14625 __asm__ ("uzp2 %0.8h,%1.8h,%2.8h"
14628 : /* No clobbers */);
14632 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
14633 vuzp2q_s32 (int32x4_t a
, int32x4_t b
)
14636 __asm__ ("uzp2 %0.4s,%1.4s,%2.4s"
14639 : /* No clobbers */);
14643 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
14644 vuzp2q_s64 (int64x2_t a
, int64x2_t b
)
14647 __asm__ ("uzp2 %0.2d,%1.2d,%2.2d"
14650 : /* No clobbers */);
14654 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
14655 vuzp2q_u8 (uint8x16_t a
, uint8x16_t b
)
14658 __asm__ ("uzp2 %0.16b,%1.16b,%2.16b"
14661 : /* No clobbers */);
14665 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
14666 vuzp2q_u16 (uint16x8_t a
, uint16x8_t b
)
14669 __asm__ ("uzp2 %0.8h,%1.8h,%2.8h"
14672 : /* No clobbers */);
14676 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
14677 vuzp2q_u32 (uint32x4_t a
, uint32x4_t b
)
14680 __asm__ ("uzp2 %0.4s,%1.4s,%2.4s"
14683 : /* No clobbers */);
14687 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
14688 vuzp2q_u64 (uint64x2_t a
, uint64x2_t b
)
14691 __asm__ ("uzp2 %0.2d,%1.2d,%2.2d"
14694 : /* No clobbers */);
14698 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
14699 vzip1_f32 (float32x2_t a
, float32x2_t b
)
14701 float32x2_t result
;
14702 __asm__ ("zip1 %0.2s,%1.2s,%2.2s"
14705 : /* No clobbers */);
14709 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
14710 vzip1_p8 (poly8x8_t a
, poly8x8_t b
)
14713 __asm__ ("zip1 %0.8b,%1.8b,%2.8b"
14716 : /* No clobbers */);
14720 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
14721 vzip1_p16 (poly16x4_t a
, poly16x4_t b
)
14724 __asm__ ("zip1 %0.4h,%1.4h,%2.4h"
14727 : /* No clobbers */);
14731 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
14732 vzip1_s8 (int8x8_t a
, int8x8_t b
)
14735 __asm__ ("zip1 %0.8b,%1.8b,%2.8b"
14738 : /* No clobbers */);
14742 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
14743 vzip1_s16 (int16x4_t a
, int16x4_t b
)
14746 __asm__ ("zip1 %0.4h,%1.4h,%2.4h"
14749 : /* No clobbers */);
14753 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
14754 vzip1_s32 (int32x2_t a
, int32x2_t b
)
14757 __asm__ ("zip1 %0.2s,%1.2s,%2.2s"
14760 : /* No clobbers */);
14764 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14765 vzip1_u8 (uint8x8_t a
, uint8x8_t b
)
14768 __asm__ ("zip1 %0.8b,%1.8b,%2.8b"
14771 : /* No clobbers */);
14775 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
14776 vzip1_u16 (uint16x4_t a
, uint16x4_t b
)
14779 __asm__ ("zip1 %0.4h,%1.4h,%2.4h"
14782 : /* No clobbers */);
14786 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
14787 vzip1_u32 (uint32x2_t a
, uint32x2_t b
)
14790 __asm__ ("zip1 %0.2s,%1.2s,%2.2s"
14793 : /* No clobbers */);
14797 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
14798 vzip1q_f32 (float32x4_t a
, float32x4_t b
)
14800 float32x4_t result
;
14801 __asm__ ("zip1 %0.4s,%1.4s,%2.4s"
14804 : /* No clobbers */);
14808 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
14809 vzip1q_f64 (float64x2_t a
, float64x2_t b
)
14811 float64x2_t result
;
14812 __asm__ ("zip1 %0.2d,%1.2d,%2.2d"
14815 : /* No clobbers */);
14819 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
14820 vzip1q_p8 (poly8x16_t a
, poly8x16_t b
)
14823 __asm__ ("zip1 %0.16b,%1.16b,%2.16b"
14826 : /* No clobbers */);
14830 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
14831 vzip1q_p16 (poly16x8_t a
, poly16x8_t b
)
14834 __asm__ ("zip1 %0.8h,%1.8h,%2.8h"
14837 : /* No clobbers */);
14841 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
14842 vzip1q_s8 (int8x16_t a
, int8x16_t b
)
14845 __asm__ ("zip1 %0.16b,%1.16b,%2.16b"
14848 : /* No clobbers */);
14852 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
14853 vzip1q_s16 (int16x8_t a
, int16x8_t b
)
14856 __asm__ ("zip1 %0.8h,%1.8h,%2.8h"
14859 : /* No clobbers */);
14863 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
14864 vzip1q_s32 (int32x4_t a
, int32x4_t b
)
14867 __asm__ ("zip1 %0.4s,%1.4s,%2.4s"
14870 : /* No clobbers */);
14874 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
14875 vzip1q_s64 (int64x2_t a
, int64x2_t b
)
14878 __asm__ ("zip1 %0.2d,%1.2d,%2.2d"
14881 : /* No clobbers */);
14885 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
14886 vzip1q_u8 (uint8x16_t a
, uint8x16_t b
)
14889 __asm__ ("zip1 %0.16b,%1.16b,%2.16b"
14892 : /* No clobbers */);
14896 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
14897 vzip1q_u16 (uint16x8_t a
, uint16x8_t b
)
14900 __asm__ ("zip1 %0.8h,%1.8h,%2.8h"
14903 : /* No clobbers */);
14907 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
14908 vzip1q_u32 (uint32x4_t a
, uint32x4_t b
)
14911 __asm__ ("zip1 %0.4s,%1.4s,%2.4s"
14914 : /* No clobbers */);
14918 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
14919 vzip1q_u64 (uint64x2_t a
, uint64x2_t b
)
14922 __asm__ ("zip1 %0.2d,%1.2d,%2.2d"
14925 : /* No clobbers */);
14929 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
14930 vzip2_f32 (float32x2_t a
, float32x2_t b
)
14932 float32x2_t result
;
14933 __asm__ ("zip2 %0.2s,%1.2s,%2.2s"
14936 : /* No clobbers */);
14940 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
14941 vzip2_p8 (poly8x8_t a
, poly8x8_t b
)
14944 __asm__ ("zip2 %0.8b,%1.8b,%2.8b"
14947 : /* No clobbers */);
14951 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
14952 vzip2_p16 (poly16x4_t a
, poly16x4_t b
)
14955 __asm__ ("zip2 %0.4h,%1.4h,%2.4h"
14958 : /* No clobbers */);
14962 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
14963 vzip2_s8 (int8x8_t a
, int8x8_t b
)
14966 __asm__ ("zip2 %0.8b,%1.8b,%2.8b"
14969 : /* No clobbers */);
14973 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
14974 vzip2_s16 (int16x4_t a
, int16x4_t b
)
14977 __asm__ ("zip2 %0.4h,%1.4h,%2.4h"
14980 : /* No clobbers */);
14984 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
14985 vzip2_s32 (int32x2_t a
, int32x2_t b
)
14988 __asm__ ("zip2 %0.2s,%1.2s,%2.2s"
14991 : /* No clobbers */);
14995 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14996 vzip2_u8 (uint8x8_t a
, uint8x8_t b
)
14999 __asm__ ("zip2 %0.8b,%1.8b,%2.8b"
15002 : /* No clobbers */);
15006 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
15007 vzip2_u16 (uint16x4_t a
, uint16x4_t b
)
15010 __asm__ ("zip2 %0.4h,%1.4h,%2.4h"
15013 : /* No clobbers */);
15017 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
15018 vzip2_u32 (uint32x2_t a
, uint32x2_t b
)
15021 __asm__ ("zip2 %0.2s,%1.2s,%2.2s"
15024 : /* No clobbers */);
15028 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
15029 vzip2q_f32 (float32x4_t a
, float32x4_t b
)
15031 float32x4_t result
;
15032 __asm__ ("zip2 %0.4s,%1.4s,%2.4s"
15035 : /* No clobbers */);
15039 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
15040 vzip2q_f64 (float64x2_t a
, float64x2_t b
)
15042 float64x2_t result
;
15043 __asm__ ("zip2 %0.2d,%1.2d,%2.2d"
15046 : /* No clobbers */);
15050 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
15051 vzip2q_p8 (poly8x16_t a
, poly8x16_t b
)
15054 __asm__ ("zip2 %0.16b,%1.16b,%2.16b"
15057 : /* No clobbers */);
15061 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
15062 vzip2q_p16 (poly16x8_t a
, poly16x8_t b
)
15065 __asm__ ("zip2 %0.8h,%1.8h,%2.8h"
15068 : /* No clobbers */);
15072 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
15073 vzip2q_s8 (int8x16_t a
, int8x16_t b
)
15076 __asm__ ("zip2 %0.16b,%1.16b,%2.16b"
15079 : /* No clobbers */);
15083 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
15084 vzip2q_s16 (int16x8_t a
, int16x8_t b
)
15087 __asm__ ("zip2 %0.8h,%1.8h,%2.8h"
15090 : /* No clobbers */);
15094 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
15095 vzip2q_s32 (int32x4_t a
, int32x4_t b
)
15098 __asm__ ("zip2 %0.4s,%1.4s,%2.4s"
15101 : /* No clobbers */);
15105 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
15106 vzip2q_s64 (int64x2_t a
, int64x2_t b
)
15109 __asm__ ("zip2 %0.2d,%1.2d,%2.2d"
15112 : /* No clobbers */);
15116 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
15117 vzip2q_u8 (uint8x16_t a
, uint8x16_t b
)
15120 __asm__ ("zip2 %0.16b,%1.16b,%2.16b"
15123 : /* No clobbers */);
15127 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
15128 vzip2q_u16 (uint16x8_t a
, uint16x8_t b
)
15131 __asm__ ("zip2 %0.8h,%1.8h,%2.8h"
15134 : /* No clobbers */);
15138 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
15139 vzip2q_u32 (uint32x4_t a
, uint32x4_t b
)
15142 __asm__ ("zip2 %0.4s,%1.4s,%2.4s"
15145 : /* No clobbers */);
15149 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
15150 vzip2q_u64 (uint64x2_t a
, uint64x2_t b
)
15153 __asm__ ("zip2 %0.2d,%1.2d,%2.2d"
15156 : /* No clobbers */);
15160 /* End of temporary inline asm implementations. */
15162 /* Start of temporary inline asm for vldn, vstn and friends. */
15164 /* Create struct element types for duplicating loads.
15166 Create 2 element structures of:
15168 +------+----+----+----+----+
15169 | | 8 | 16 | 32 | 64 |
15170 +------+----+----+----+----+
15171 |int | Y | Y | N | N |
15172 +------+----+----+----+----+
15173 |uint | Y | Y | N | N |
15174 +------+----+----+----+----+
15175 |float | - | - | N | N |
15176 +------+----+----+----+----+
15177 |poly | Y | Y | - | - |
15178 +------+----+----+----+----+
15180 Create 3 element structures of:
15182 +------+----+----+----+----+
15183 | | 8 | 16 | 32 | 64 |
15184 +------+----+----+----+----+
15185 |int | Y | Y | Y | Y |
15186 +------+----+----+----+----+
15187 |uint | Y | Y | Y | Y |
15188 +------+----+----+----+----+
15189 |float | - | - | Y | Y |
15190 +------+----+----+----+----+
15191 |poly | Y | Y | - | - |
15192 +------+----+----+----+----+
15194 Create 4 element structures of:
15196 +------+----+----+----+----+
15197 | | 8 | 16 | 32 | 64 |
15198 +------+----+----+----+----+
15199 |int | Y | N | N | Y |
15200 +------+----+----+----+----+
15201 |uint | Y | N | N | Y |
15202 +------+----+----+----+----+
15203 |float | - | - | N | Y |
15204 +------+----+----+----+----+
15205 |poly | Y | N | - | - |
15206 +------+----+----+----+----+
15208 This is required for casting memory reference. */
15209 #define __STRUCTN(t, sz, nelem) \
15210 typedef struct t ## sz ## x ## nelem ## _t { \
15211 t ## sz ## _t val[nelem]; \
15212 } t ## sz ## x ## nelem ## _t;
15214 /* 2-element structs. */
15215 __STRUCTN (int, 8, 2)
15216 __STRUCTN (int, 16, 2)
15217 __STRUCTN (uint
, 8, 2)
15218 __STRUCTN (uint
, 16, 2)
15219 __STRUCTN (poly
, 8, 2)
15220 __STRUCTN (poly
, 16, 2)
15221 /* 3-element structs. */
15222 __STRUCTN (int, 8, 3)
15223 __STRUCTN (int, 16, 3)
15224 __STRUCTN (int, 32, 3)
15225 __STRUCTN (int, 64, 3)
15226 __STRUCTN (uint
, 8, 3)
15227 __STRUCTN (uint
, 16, 3)
15228 __STRUCTN (uint
, 32, 3)
15229 __STRUCTN (uint
, 64, 3)
15230 __STRUCTN (float, 32, 3)
15231 __STRUCTN (float, 64, 3)
15232 __STRUCTN (poly
, 8, 3)
15233 __STRUCTN (poly
, 16, 3)
15234 /* 4-element structs. */
15235 __STRUCTN (int, 8, 4)
15236 __STRUCTN (int, 64, 4)
15237 __STRUCTN (uint
, 8, 4)
15238 __STRUCTN (uint
, 64, 4)
15239 __STRUCTN (poly
, 8, 4)
15240 __STRUCTN (float, 64, 4)
15243 #define __LD2R_FUNC(rettype, structtype, ptrtype, \
15244 regsuffix, funcsuffix, Q) \
15245 __extension__ static __inline rettype \
15246 __attribute__ ((__always_inline__)) \
15247 vld2 ## Q ## _dup_ ## funcsuffix (const ptrtype *ptr) \
15250 __asm__ ("ld2r {v16." #regsuffix ", v17." #regsuffix "}, %1\n\t" \
15251 "st1 {v16." #regsuffix ", v17." #regsuffix "}, %0\n\t" \
15253 : "Q"(*(const structtype *)ptr) \
15254 : "memory", "v16", "v17"); \
15258 __LD2R_FUNC (float32x2x2_t
, float32x2_t
, float32_t
, 2s
, f32
,)
15259 __LD2R_FUNC (float64x1x2_t
, float64x2_t
, float64_t
, 1d
, f64
,)
15260 __LD2R_FUNC (poly8x8x2_t
, poly8x2_t
, poly8_t
, 8b
, p8
,)
15261 __LD2R_FUNC (poly16x4x2_t
, poly16x2_t
, poly16_t
, 4h
, p16
,)
15262 __LD2R_FUNC (int8x8x2_t
, int8x2_t
, int8_t, 8b
, s8
,)
15263 __LD2R_FUNC (int16x4x2_t
, int16x2_t
, int16_t, 4h
, s16
,)
15264 __LD2R_FUNC (int32x2x2_t
, int32x2_t
, int32_t, 2s
, s32
,)
15265 __LD2R_FUNC (int64x1x2_t
, int64x2_t
, int64_t, 1d
, s64
,)
15266 __LD2R_FUNC (uint8x8x2_t
, uint8x2_t
, uint8_t, 8b
, u8
,)
15267 __LD2R_FUNC (uint16x4x2_t
, uint16x2_t
, uint16_t, 4h
, u16
,)
15268 __LD2R_FUNC (uint32x2x2_t
, uint32x2_t
, uint32_t, 2s
, u32
,)
15269 __LD2R_FUNC (uint64x1x2_t
, uint64x2_t
, uint64_t, 1d
, u64
,)
15270 __LD2R_FUNC (float32x4x2_t
, float32x2_t
, float32_t
, 4s
, f32
, q
)
15271 __LD2R_FUNC (float64x2x2_t
, float64x2_t
, float64_t
, 2d
, f64
, q
)
15272 __LD2R_FUNC (poly8x16x2_t
, poly8x2_t
, poly8_t
, 16b
, p8
, q
)
15273 __LD2R_FUNC (poly16x8x2_t
, poly16x2_t
, poly16_t
, 8h
, p16
, q
)
15274 __LD2R_FUNC (int8x16x2_t
, int8x2_t
, int8_t, 16b
, s8
, q
)
15275 __LD2R_FUNC (int16x8x2_t
, int16x2_t
, int16_t, 8h
, s16
, q
)
15276 __LD2R_FUNC (int32x4x2_t
, int32x2_t
, int32_t, 4s
, s32
, q
)
15277 __LD2R_FUNC (int64x2x2_t
, int64x2_t
, int64_t, 2d
, s64
, q
)
15278 __LD2R_FUNC (uint8x16x2_t
, uint8x2_t
, uint8_t, 16b
, u8
, q
)
15279 __LD2R_FUNC (uint16x8x2_t
, uint16x2_t
, uint16_t, 8h
, u16
, q
)
15280 __LD2R_FUNC (uint32x4x2_t
, uint32x2_t
, uint32_t, 4s
, u32
, q
)
15281 __LD2R_FUNC (uint64x2x2_t
, uint64x2_t
, uint64_t, 2d
, u64
, q
)
15283 #define __LD2_LANE_FUNC(rettype, ptrtype, regsuffix, \
15284 lnsuffix, funcsuffix, Q) \
15285 __extension__ static __inline rettype \
15286 __attribute__ ((__always_inline__)) \
15287 vld2 ## Q ## _lane_ ## funcsuffix (const ptrtype *ptr, \
15288 rettype b, const int c) \
15291 __asm__ ("ld1 {v16." #regsuffix ", v17." #regsuffix "}, %1\n\t" \
15292 "ld2 {v16." #lnsuffix ", v17." #lnsuffix "}[%3], %2\n\t" \
15293 "st1 {v16." #regsuffix ", v17." #regsuffix "}, %0\n\t" \
15295 : "Q"(b), "Q"(*(const rettype *)ptr), "i"(c) \
15296 : "memory", "v16", "v17"); \
15300 __LD2_LANE_FUNC (int8x8x2_t
, uint8_t, 8b
, b
, s8
,)
15301 __LD2_LANE_FUNC (float32x2x2_t
, float32_t
, 2s
, s
, f32
,)
15302 __LD2_LANE_FUNC (float64x1x2_t
, float64_t
, 1d
, d
, f64
,)
15303 __LD2_LANE_FUNC (poly8x8x2_t
, poly8_t
, 8b
, b
, p8
,)
15304 __LD2_LANE_FUNC (poly16x4x2_t
, poly16_t
, 4h
, h
, p16
,)
15305 __LD2_LANE_FUNC (int16x4x2_t
, int16_t, 4h
, h
, s16
,)
15306 __LD2_LANE_FUNC (int32x2x2_t
, int32_t, 2s
, s
, s32
,)
15307 __LD2_LANE_FUNC (int64x1x2_t
, int64_t, 1d
, d
, s64
,)
15308 __LD2_LANE_FUNC (uint8x8x2_t
, uint8_t, 8b
, b
, u8
,)
15309 __LD2_LANE_FUNC (uint16x4x2_t
, uint16_t, 4h
, h
, u16
,)
15310 __LD2_LANE_FUNC (uint32x2x2_t
, uint32_t, 2s
, s
, u32
,)
15311 __LD2_LANE_FUNC (uint64x1x2_t
, uint64_t, 1d
, d
, u64
,)
15312 __LD2_LANE_FUNC (float32x4x2_t
, float32_t
, 4s
, s
, f32
, q
)
15313 __LD2_LANE_FUNC (float64x2x2_t
, float64_t
, 2d
, d
, f64
, q
)
15314 __LD2_LANE_FUNC (poly8x16x2_t
, poly8_t
, 16b
, b
, p8
, q
)
15315 __LD2_LANE_FUNC (poly16x8x2_t
, poly16_t
, 8h
, h
, p16
, q
)
15316 __LD2_LANE_FUNC (int8x16x2_t
, int8_t, 16b
, b
, s8
, q
)
15317 __LD2_LANE_FUNC (int16x8x2_t
, int16_t, 8h
, h
, s16
, q
)
15318 __LD2_LANE_FUNC (int32x4x2_t
, int32_t, 4s
, s
, s32
, q
)
15319 __LD2_LANE_FUNC (int64x2x2_t
, int64_t, 2d
, d
, s64
, q
)
15320 __LD2_LANE_FUNC (uint8x16x2_t
, uint8_t, 16b
, b
, u8
, q
)
15321 __LD2_LANE_FUNC (uint16x8x2_t
, uint16_t, 8h
, h
, u16
, q
)
15322 __LD2_LANE_FUNC (uint32x4x2_t
, uint32_t, 4s
, s
, u32
, q
)
15323 __LD2_LANE_FUNC (uint64x2x2_t
, uint64_t, 2d
, d
, u64
, q
)
15325 #define __LD3R_FUNC(rettype, structtype, ptrtype, \
15326 regsuffix, funcsuffix, Q) \
15327 __extension__ static __inline rettype \
15328 __attribute__ ((__always_inline__)) \
15329 vld3 ## Q ## _dup_ ## funcsuffix (const ptrtype *ptr) \
15332 __asm__ ("ld3r {v16." #regsuffix " - v18." #regsuffix "}, %1\n\t" \
15333 "st1 {v16." #regsuffix " - v18." #regsuffix "}, %0\n\t" \
15335 : "Q"(*(const structtype *)ptr) \
15336 : "memory", "v16", "v17", "v18"); \
15340 __LD3R_FUNC (float32x2x3_t
, float32x3_t
, float32_t
, 2s
, f32
,)
15341 __LD3R_FUNC (float64x1x3_t
, float64x3_t
, float64_t
, 1d
, f64
,)
15342 __LD3R_FUNC (poly8x8x3_t
, poly8x3_t
, poly8_t
, 8b
, p8
,)
15343 __LD3R_FUNC (poly16x4x3_t
, poly16x3_t
, poly16_t
, 4h
, p16
,)
15344 __LD3R_FUNC (int8x8x3_t
, int8x3_t
, int8_t, 8b
, s8
,)
15345 __LD3R_FUNC (int16x4x3_t
, int16x3_t
, int16_t, 4h
, s16
,)
15346 __LD3R_FUNC (int32x2x3_t
, int32x3_t
, int32_t, 2s
, s32
,)
15347 __LD3R_FUNC (int64x1x3_t
, int64x3_t
, int64_t, 1d
, s64
,)
15348 __LD3R_FUNC (uint8x8x3_t
, uint8x3_t
, uint8_t, 8b
, u8
,)
15349 __LD3R_FUNC (uint16x4x3_t
, uint16x3_t
, uint16_t, 4h
, u16
,)
15350 __LD3R_FUNC (uint32x2x3_t
, uint32x3_t
, uint32_t, 2s
, u32
,)
15351 __LD3R_FUNC (uint64x1x3_t
, uint64x3_t
, uint64_t, 1d
, u64
,)
15352 __LD3R_FUNC (float32x4x3_t
, float32x3_t
, float32_t
, 4s
, f32
, q
)
15353 __LD3R_FUNC (float64x2x3_t
, float64x3_t
, float64_t
, 2d
, f64
, q
)
15354 __LD3R_FUNC (poly8x16x3_t
, poly8x3_t
, poly8_t
, 16b
, p8
, q
)
15355 __LD3R_FUNC (poly16x8x3_t
, poly16x3_t
, poly16_t
, 8h
, p16
, q
)
15356 __LD3R_FUNC (int8x16x3_t
, int8x3_t
, int8_t, 16b
, s8
, q
)
15357 __LD3R_FUNC (int16x8x3_t
, int16x3_t
, int16_t, 8h
, s16
, q
)
15358 __LD3R_FUNC (int32x4x3_t
, int32x3_t
, int32_t, 4s
, s32
, q
)
15359 __LD3R_FUNC (int64x2x3_t
, int64x3_t
, int64_t, 2d
, s64
, q
)
15360 __LD3R_FUNC (uint8x16x3_t
, uint8x3_t
, uint8_t, 16b
, u8
, q
)
15361 __LD3R_FUNC (uint16x8x3_t
, uint16x3_t
, uint16_t, 8h
, u16
, q
)
15362 __LD3R_FUNC (uint32x4x3_t
, uint32x3_t
, uint32_t, 4s
, u32
, q
)
15363 __LD3R_FUNC (uint64x2x3_t
, uint64x3_t
, uint64_t, 2d
, u64
, q
)
15365 #define __LD3_LANE_FUNC(rettype, ptrtype, regsuffix, \
15366 lnsuffix, funcsuffix, Q) \
15367 __extension__ static __inline rettype \
15368 __attribute__ ((__always_inline__)) \
15369 vld3 ## Q ## _lane_ ## funcsuffix (const ptrtype *ptr, \
15370 rettype b, const int c) \
15373 __asm__ ("ld1 {v16." #regsuffix " - v18." #regsuffix "}, %1\n\t" \
15374 "ld3 {v16." #lnsuffix " - v18." #lnsuffix "}[%3], %2\n\t" \
15375 "st1 {v16." #regsuffix " - v18." #regsuffix "}, %0\n\t" \
15377 : "Q"(b), "Q"(*(const rettype *)ptr), "i"(c) \
15378 : "memory", "v16", "v17", "v18"); \
15382 __LD3_LANE_FUNC (int8x8x3_t
, uint8_t, 8b
, b
, s8
,)
15383 __LD3_LANE_FUNC (float32x2x3_t
, float32_t
, 2s
, s
, f32
,)
15384 __LD3_LANE_FUNC (float64x1x3_t
, float64_t
, 1d
, d
, f64
,)
15385 __LD3_LANE_FUNC (poly8x8x3_t
, poly8_t
, 8b
, b
, p8
,)
15386 __LD3_LANE_FUNC (poly16x4x3_t
, poly16_t
, 4h
, h
, p16
,)
15387 __LD3_LANE_FUNC (int16x4x3_t
, int16_t, 4h
, h
, s16
,)
15388 __LD3_LANE_FUNC (int32x2x3_t
, int32_t, 2s
, s
, s32
,)
15389 __LD3_LANE_FUNC (int64x1x3_t
, int64_t, 1d
, d
, s64
,)
15390 __LD3_LANE_FUNC (uint8x8x3_t
, uint8_t, 8b
, b
, u8
,)
15391 __LD3_LANE_FUNC (uint16x4x3_t
, uint16_t, 4h
, h
, u16
,)
15392 __LD3_LANE_FUNC (uint32x2x3_t
, uint32_t, 2s
, s
, u32
,)
15393 __LD3_LANE_FUNC (uint64x1x3_t
, uint64_t, 1d
, d
, u64
,)
15394 __LD3_LANE_FUNC (float32x4x3_t
, float32_t
, 4s
, s
, f32
, q
)
15395 __LD3_LANE_FUNC (float64x2x3_t
, float64_t
, 2d
, d
, f64
, q
)
15396 __LD3_LANE_FUNC (poly8x16x3_t
, poly8_t
, 16b
, b
, p8
, q
)
15397 __LD3_LANE_FUNC (poly16x8x3_t
, poly16_t
, 8h
, h
, p16
, q
)
15398 __LD3_LANE_FUNC (int8x16x3_t
, int8_t, 16b
, b
, s8
, q
)
15399 __LD3_LANE_FUNC (int16x8x3_t
, int16_t, 8h
, h
, s16
, q
)
15400 __LD3_LANE_FUNC (int32x4x3_t
, int32_t, 4s
, s
, s32
, q
)
15401 __LD3_LANE_FUNC (int64x2x3_t
, int64_t, 2d
, d
, s64
, q
)
15402 __LD3_LANE_FUNC (uint8x16x3_t
, uint8_t, 16b
, b
, u8
, q
)
15403 __LD3_LANE_FUNC (uint16x8x3_t
, uint16_t, 8h
, h
, u16
, q
)
15404 __LD3_LANE_FUNC (uint32x4x3_t
, uint32_t, 4s
, s
, u32
, q
)
15405 __LD3_LANE_FUNC (uint64x2x3_t
, uint64_t, 2d
, d
, u64
, q
)
15407 #define __LD4R_FUNC(rettype, structtype, ptrtype, \
15408 regsuffix, funcsuffix, Q) \
15409 __extension__ static __inline rettype \
15410 __attribute__ ((__always_inline__)) \
15411 vld4 ## Q ## _dup_ ## funcsuffix (const ptrtype *ptr) \
15414 __asm__ ("ld4r {v16." #regsuffix " - v19." #regsuffix "}, %1\n\t" \
15415 "st1 {v16." #regsuffix " - v19." #regsuffix "}, %0\n\t" \
15417 : "Q"(*(const structtype *)ptr) \
15418 : "memory", "v16", "v17", "v18", "v19"); \
15422 __LD4R_FUNC (float32x2x4_t
, float32x4_t
, float32_t
, 2s
, f32
,)
15423 __LD4R_FUNC (float64x1x4_t
, float64x4_t
, float64_t
, 1d
, f64
,)
15424 __LD4R_FUNC (poly8x8x4_t
, poly8x4_t
, poly8_t
, 8b
, p8
,)
15425 __LD4R_FUNC (poly16x4x4_t
, poly16x4_t
, poly16_t
, 4h
, p16
,)
15426 __LD4R_FUNC (int8x8x4_t
, int8x4_t
, int8_t, 8b
, s8
,)
15427 __LD4R_FUNC (int16x4x4_t
, int16x4_t
, int16_t, 4h
, s16
,)
15428 __LD4R_FUNC (int32x2x4_t
, int32x4_t
, int32_t, 2s
, s32
,)
15429 __LD4R_FUNC (int64x1x4_t
, int64x4_t
, int64_t, 1d
, s64
,)
15430 __LD4R_FUNC (uint8x8x4_t
, uint8x4_t
, uint8_t, 8b
, u8
,)
15431 __LD4R_FUNC (uint16x4x4_t
, uint16x4_t
, uint16_t, 4h
, u16
,)
15432 __LD4R_FUNC (uint32x2x4_t
, uint32x4_t
, uint32_t, 2s
, u32
,)
15433 __LD4R_FUNC (uint64x1x4_t
, uint64x4_t
, uint64_t, 1d
, u64
,)
15434 __LD4R_FUNC (float32x4x4_t
, float32x4_t
, float32_t
, 4s
, f32
, q
)
15435 __LD4R_FUNC (float64x2x4_t
, float64x4_t
, float64_t
, 2d
, f64
, q
)
15436 __LD4R_FUNC (poly8x16x4_t
, poly8x4_t
, poly8_t
, 16b
, p8
, q
)
15437 __LD4R_FUNC (poly16x8x4_t
, poly16x4_t
, poly16_t
, 8h
, p16
, q
)
15438 __LD4R_FUNC (int8x16x4_t
, int8x4_t
, int8_t, 16b
, s8
, q
)
15439 __LD4R_FUNC (int16x8x4_t
, int16x4_t
, int16_t, 8h
, s16
, q
)
15440 __LD4R_FUNC (int32x4x4_t
, int32x4_t
, int32_t, 4s
, s32
, q
)
15441 __LD4R_FUNC (int64x2x4_t
, int64x4_t
, int64_t, 2d
, s64
, q
)
15442 __LD4R_FUNC (uint8x16x4_t
, uint8x4_t
, uint8_t, 16b
, u8
, q
)
15443 __LD4R_FUNC (uint16x8x4_t
, uint16x4_t
, uint16_t, 8h
, u16
, q
)
15444 __LD4R_FUNC (uint32x4x4_t
, uint32x4_t
, uint32_t, 4s
, u32
, q
)
15445 __LD4R_FUNC (uint64x2x4_t
, uint64x4_t
, uint64_t, 2d
, u64
, q
)
15447 #define __LD4_LANE_FUNC(rettype, ptrtype, regsuffix, \
15448 lnsuffix, funcsuffix, Q) \
15449 __extension__ static __inline rettype \
15450 __attribute__ ((__always_inline__)) \
15451 vld4 ## Q ## _lane_ ## funcsuffix (const ptrtype *ptr, \
15452 rettype b, const int c) \
15455 __asm__ ("ld1 {v16." #regsuffix " - v19." #regsuffix "}, %1\n\t" \
15456 "ld4 {v16." #lnsuffix " - v19." #lnsuffix "}[%3], %2\n\t" \
15457 "st1 {v16." #regsuffix " - v19." #regsuffix "}, %0\n\t" \
15459 : "Q"(b), "Q"(*(const rettype *)ptr), "i"(c) \
15460 : "memory", "v16", "v17", "v18", "v19"); \
15464 __LD4_LANE_FUNC (int8x8x4_t
, uint8_t, 8b
, b
, s8
,)
15465 __LD4_LANE_FUNC (float32x2x4_t
, float32_t
, 2s
, s
, f32
,)
15466 __LD4_LANE_FUNC (float64x1x4_t
, float64_t
, 1d
, d
, f64
,)
15467 __LD4_LANE_FUNC (poly8x8x4_t
, poly8_t
, 8b
, b
, p8
,)
15468 __LD4_LANE_FUNC (poly16x4x4_t
, poly16_t
, 4h
, h
, p16
,)
15469 __LD4_LANE_FUNC (int16x4x4_t
, int16_t, 4h
, h
, s16
,)
15470 __LD4_LANE_FUNC (int32x2x4_t
, int32_t, 2s
, s
, s32
,)
15471 __LD4_LANE_FUNC (int64x1x4_t
, int64_t, 1d
, d
, s64
,)
15472 __LD4_LANE_FUNC (uint8x8x4_t
, uint8_t, 8b
, b
, u8
,)
15473 __LD4_LANE_FUNC (uint16x4x4_t
, uint16_t, 4h
, h
, u16
,)
15474 __LD4_LANE_FUNC (uint32x2x4_t
, uint32_t, 2s
, s
, u32
,)
15475 __LD4_LANE_FUNC (uint64x1x4_t
, uint64_t, 1d
, d
, u64
,)
15476 __LD4_LANE_FUNC (float32x4x4_t
, float32_t
, 4s
, s
, f32
, q
)
15477 __LD4_LANE_FUNC (float64x2x4_t
, float64_t
, 2d
, d
, f64
, q
)
15478 __LD4_LANE_FUNC (poly8x16x4_t
, poly8_t
, 16b
, b
, p8
, q
)
15479 __LD4_LANE_FUNC (poly16x8x4_t
, poly16_t
, 8h
, h
, p16
, q
)
15480 __LD4_LANE_FUNC (int8x16x4_t
, int8_t, 16b
, b
, s8
, q
)
15481 __LD4_LANE_FUNC (int16x8x4_t
, int16_t, 8h
, h
, s16
, q
)
15482 __LD4_LANE_FUNC (int32x4x4_t
, int32_t, 4s
, s
, s32
, q
)
15483 __LD4_LANE_FUNC (int64x2x4_t
, int64_t, 2d
, d
, s64
, q
)
15484 __LD4_LANE_FUNC (uint8x16x4_t
, uint8_t, 16b
, b
, u8
, q
)
15485 __LD4_LANE_FUNC (uint16x8x4_t
, uint16_t, 8h
, h
, u16
, q
)
15486 __LD4_LANE_FUNC (uint32x4x4_t
, uint32_t, 4s
, s
, u32
, q
)
15487 __LD4_LANE_FUNC (uint64x2x4_t
, uint64_t, 2d
, d
, u64
, q
)
15489 #define __ST2_LANE_FUNC(intype, ptrtype, regsuffix, \
15490 lnsuffix, funcsuffix, Q) \
15491 __extension__ static __inline void \
15492 __attribute__ ((__always_inline__)) \
15493 vst2 ## Q ## _lane_ ## funcsuffix (const ptrtype *ptr, \
15494 intype b, const int c) \
15496 __asm__ ("ld1 {v16." #regsuffix ", v17." #regsuffix "}, %1\n\t" \
15497 "st2 {v16." #lnsuffix ", v17." #lnsuffix "}[%2], %0\n\t" \
15498 : "=Q"(*(intype *) ptr) \
15500 : "memory", "v16", "v17"); \
15503 __ST2_LANE_FUNC (int8x8x2_t
, int8_t, 8b
, b
, s8
,)
15504 __ST2_LANE_FUNC (float32x2x2_t
, float32_t
, 2s
, s
, f32
,)
15505 __ST2_LANE_FUNC (float64x1x2_t
, float64_t
, 1d
, d
, f64
,)
15506 __ST2_LANE_FUNC (poly8x8x2_t
, poly8_t
, 8b
, b
, p8
,)
15507 __ST2_LANE_FUNC (poly16x4x2_t
, poly16_t
, 4h
, h
, p16
,)
15508 __ST2_LANE_FUNC (int16x4x2_t
, int16_t, 4h
, h
, s16
,)
15509 __ST2_LANE_FUNC (int32x2x2_t
, int32_t, 2s
, s
, s32
,)
15510 __ST2_LANE_FUNC (int64x1x2_t
, int64_t, 1d
, d
, s64
,)
15511 __ST2_LANE_FUNC (uint8x8x2_t
, uint8_t, 8b
, b
, u8
,)
15512 __ST2_LANE_FUNC (uint16x4x2_t
, uint16_t, 4h
, h
, u16
,)
15513 __ST2_LANE_FUNC (uint32x2x2_t
, uint32_t, 2s
, s
, u32
,)
15514 __ST2_LANE_FUNC (uint64x1x2_t
, uint64_t, 1d
, d
, u64
,)
15515 __ST2_LANE_FUNC (float32x4x2_t
, float32_t
, 4s
, s
, f32
, q
)
15516 __ST2_LANE_FUNC (float64x2x2_t
, float64_t
, 2d
, d
, f64
, q
)
15517 __ST2_LANE_FUNC (poly8x16x2_t
, poly8_t
, 16b
, b
, p8
, q
)
15518 __ST2_LANE_FUNC (poly16x8x2_t
, poly16_t
, 8h
, h
, p16
, q
)
15519 __ST2_LANE_FUNC (int8x16x2_t
, int8_t, 16b
, b
, s8
, q
)
15520 __ST2_LANE_FUNC (int16x8x2_t
, int16_t, 8h
, h
, s16
, q
)
15521 __ST2_LANE_FUNC (int32x4x2_t
, int32_t, 4s
, s
, s32
, q
)
15522 __ST2_LANE_FUNC (int64x2x2_t
, int64_t, 2d
, d
, s64
, q
)
15523 __ST2_LANE_FUNC (uint8x16x2_t
, uint8_t, 16b
, b
, u8
, q
)
15524 __ST2_LANE_FUNC (uint16x8x2_t
, uint16_t, 8h
, h
, u16
, q
)
15525 __ST2_LANE_FUNC (uint32x4x2_t
, uint32_t, 4s
, s
, u32
, q
)
15526 __ST2_LANE_FUNC (uint64x2x2_t
, uint64_t, 2d
, d
, u64
, q
)
15528 #define __ST3_LANE_FUNC(intype, ptrtype, regsuffix, \
15529 lnsuffix, funcsuffix, Q) \
15530 __extension__ static __inline void \
15531 __attribute__ ((__always_inline__)) \
15532 vst3 ## Q ## _lane_ ## funcsuffix (const ptrtype *ptr, \
15533 intype b, const int c) \
15535 __asm__ ("ld1 {v16." #regsuffix " - v18." #regsuffix "}, %1\n\t" \
15536 "st3 {v16." #lnsuffix " - v18." #lnsuffix "}[%2], %0\n\t" \
15537 : "=Q"(*(intype *) ptr) \
15539 : "memory", "v16", "v17", "v18"); \
15542 __ST3_LANE_FUNC (int8x8x3_t
, int8_t, 8b
, b
, s8
,)
15543 __ST3_LANE_FUNC (float32x2x3_t
, float32_t
, 2s
, s
, f32
,)
15544 __ST3_LANE_FUNC (float64x1x3_t
, float64_t
, 1d
, d
, f64
,)
15545 __ST3_LANE_FUNC (poly8x8x3_t
, poly8_t
, 8b
, b
, p8
,)
15546 __ST3_LANE_FUNC (poly16x4x3_t
, poly16_t
, 4h
, h
, p16
,)
15547 __ST3_LANE_FUNC (int16x4x3_t
, int16_t, 4h
, h
, s16
,)
15548 __ST3_LANE_FUNC (int32x2x3_t
, int32_t, 2s
, s
, s32
,)
15549 __ST3_LANE_FUNC (int64x1x3_t
, int64_t, 1d
, d
, s64
,)
15550 __ST3_LANE_FUNC (uint8x8x3_t
, uint8_t, 8b
, b
, u8
,)
15551 __ST3_LANE_FUNC (uint16x4x3_t
, uint16_t, 4h
, h
, u16
,)
15552 __ST3_LANE_FUNC (uint32x2x3_t
, uint32_t, 2s
, s
, u32
,)
15553 __ST3_LANE_FUNC (uint64x1x3_t
, uint64_t, 1d
, d
, u64
,)
15554 __ST3_LANE_FUNC (float32x4x3_t
, float32_t
, 4s
, s
, f32
, q
)
15555 __ST3_LANE_FUNC (float64x2x3_t
, float64_t
, 2d
, d
, f64
, q
)
15556 __ST3_LANE_FUNC (poly8x16x3_t
, poly8_t
, 16b
, b
, p8
, q
)
15557 __ST3_LANE_FUNC (poly16x8x3_t
, poly16_t
, 8h
, h
, p16
, q
)
15558 __ST3_LANE_FUNC (int8x16x3_t
, int8_t, 16b
, b
, s8
, q
)
15559 __ST3_LANE_FUNC (int16x8x3_t
, int16_t, 8h
, h
, s16
, q
)
15560 __ST3_LANE_FUNC (int32x4x3_t
, int32_t, 4s
, s
, s32
, q
)
15561 __ST3_LANE_FUNC (int64x2x3_t
, int64_t, 2d
, d
, s64
, q
)
15562 __ST3_LANE_FUNC (uint8x16x3_t
, uint8_t, 16b
, b
, u8
, q
)
15563 __ST3_LANE_FUNC (uint16x8x3_t
, uint16_t, 8h
, h
, u16
, q
)
15564 __ST3_LANE_FUNC (uint32x4x3_t
, uint32_t, 4s
, s
, u32
, q
)
15565 __ST3_LANE_FUNC (uint64x2x3_t
, uint64_t, 2d
, d
, u64
, q
)
15567 #define __ST4_LANE_FUNC(intype, ptrtype, regsuffix, \
15568 lnsuffix, funcsuffix, Q) \
15569 __extension__ static __inline void \
15570 __attribute__ ((__always_inline__)) \
15571 vst4 ## Q ## _lane_ ## funcsuffix (const ptrtype *ptr, \
15572 intype b, const int c) \
15574 __asm__ ("ld1 {v16." #regsuffix " - v19." #regsuffix "}, %1\n\t" \
15575 "st4 {v16." #lnsuffix " - v19." #lnsuffix "}[%2], %0\n\t" \
15576 : "=Q"(*(intype *) ptr) \
15578 : "memory", "v16", "v17", "v18", "v19"); \
15581 __ST4_LANE_FUNC (int8x8x4_t
, int8_t, 8b
, b
, s8
,)
15582 __ST4_LANE_FUNC (float32x2x4_t
, float32_t
, 2s
, s
, f32
,)
15583 __ST4_LANE_FUNC (float64x1x4_t
, float64_t
, 1d
, d
, f64
,)
15584 __ST4_LANE_FUNC (poly8x8x4_t
, poly8_t
, 8b
, b
, p8
,)
15585 __ST4_LANE_FUNC (poly16x4x4_t
, poly16_t
, 4h
, h
, p16
,)
15586 __ST4_LANE_FUNC (int16x4x4_t
, int16_t, 4h
, h
, s16
,)
15587 __ST4_LANE_FUNC (int32x2x4_t
, int32_t, 2s
, s
, s32
,)
15588 __ST4_LANE_FUNC (int64x1x4_t
, int64_t, 1d
, d
, s64
,)
15589 __ST4_LANE_FUNC (uint8x8x4_t
, uint8_t, 8b
, b
, u8
,)
15590 __ST4_LANE_FUNC (uint16x4x4_t
, uint16_t, 4h
, h
, u16
,)
15591 __ST4_LANE_FUNC (uint32x2x4_t
, uint32_t, 2s
, s
, u32
,)
15592 __ST4_LANE_FUNC (uint64x1x4_t
, uint64_t, 1d
, d
, u64
,)
15593 __ST4_LANE_FUNC (float32x4x4_t
, float32_t
, 4s
, s
, f32
, q
)
15594 __ST4_LANE_FUNC (float64x2x4_t
, float64_t
, 2d
, d
, f64
, q
)
15595 __ST4_LANE_FUNC (poly8x16x4_t
, poly8_t
, 16b
, b
, p8
, q
)
15596 __ST4_LANE_FUNC (poly16x8x4_t
, poly16_t
, 8h
, h
, p16
, q
)
15597 __ST4_LANE_FUNC (int8x16x4_t
, int8_t, 16b
, b
, s8
, q
)
15598 __ST4_LANE_FUNC (int16x8x4_t
, int16_t, 8h
, h
, s16
, q
)
15599 __ST4_LANE_FUNC (int32x4x4_t
, int32_t, 4s
, s
, s32
, q
)
15600 __ST4_LANE_FUNC (int64x2x4_t
, int64_t, 2d
, d
, s64
, q
)
15601 __ST4_LANE_FUNC (uint8x16x4_t
, uint8_t, 16b
, b
, u8
, q
)
15602 __ST4_LANE_FUNC (uint16x8x4_t
, uint16_t, 8h
, h
, u16
, q
)
15603 __ST4_LANE_FUNC (uint32x4x4_t
, uint32_t, 4s
, s
, u32
, q
)
15604 __ST4_LANE_FUNC (uint64x2x4_t
, uint64_t, 2d
, d
, u64
, q
)
15606 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
15607 vaddlv_s32 (int32x2_t a
)
15610 __asm__ ("saddlp %0.1d, %1.2s" : "=w"(result
) : "w"(a
) : );
15614 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
15615 vaddlv_u32 (uint32x2_t a
)
15618 __asm__ ("uaddlp %0.1d, %1.2s" : "=w"(result
) : "w"(a
) : );
15622 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
15623 vpaddd_s64 (int64x2_t __a
)
15625 return __builtin_aarch64_addpdi (__a
);
15628 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
15629 vqdmulh_laneq_s16 (int16x4_t __a
, int16x8_t __b
, const int __c
)
15631 return __builtin_aarch64_sqdmulh_laneqv4hi (__a
, __b
, __c
);
15634 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
15635 vqdmulh_laneq_s32 (int32x2_t __a
, int32x4_t __b
, const int __c
)
15637 return __builtin_aarch64_sqdmulh_laneqv2si (__a
, __b
, __c
);
15640 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
15641 vqdmulhq_laneq_s16 (int16x8_t __a
, int16x8_t __b
, const int __c
)
15643 return __builtin_aarch64_sqdmulh_laneqv8hi (__a
, __b
, __c
);
15646 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
15647 vqdmulhq_laneq_s32 (int32x4_t __a
, int32x4_t __b
, const int __c
)
15649 return __builtin_aarch64_sqdmulh_laneqv4si (__a
, __b
, __c
);
15652 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
15653 vqrdmulh_laneq_s16 (int16x4_t __a
, int16x8_t __b
, const int __c
)
15655 return __builtin_aarch64_sqrdmulh_laneqv4hi (__a
, __b
, __c
);
15658 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
15659 vqrdmulh_laneq_s32 (int32x2_t __a
, int32x4_t __b
, const int __c
)
15661 return __builtin_aarch64_sqrdmulh_laneqv2si (__a
, __b
, __c
);
15664 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
15665 vqrdmulhq_laneq_s16 (int16x8_t __a
, int16x8_t __b
, const int __c
)
15667 return __builtin_aarch64_sqrdmulh_laneqv8hi (__a
, __b
, __c
);
15670 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
15671 vqrdmulhq_laneq_s32 (int32x4_t __a
, int32x4_t __b
, const int __c
)
15673 return __builtin_aarch64_sqrdmulh_laneqv4si (__a
, __b
, __c
);
15676 /* Table intrinsics. */
15678 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
15679 vqtbl1_p8 (poly8x16_t a
, uint8x8_t b
)
15682 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
15685 : /* No clobbers */);
15689 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
15690 vqtbl1_s8 (int8x16_t a
, uint8x8_t b
)
15693 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
15696 : /* No clobbers */);
15700 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15701 vqtbl1_u8 (uint8x16_t a
, uint8x8_t b
)
15704 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
15707 : /* No clobbers */);
15711 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
15712 vqtbl1q_p8 (poly8x16_t a
, uint8x16_t b
)
15715 __asm__ ("tbl %0.16b, {%1.16b}, %2.16b"
15718 : /* No clobbers */);
15722 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
15723 vqtbl1q_s8 (int8x16_t a
, uint8x16_t b
)
15726 __asm__ ("tbl %0.16b, {%1.16b}, %2.16b"
15729 : /* No clobbers */);
15733 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
15734 vqtbl1q_u8 (uint8x16_t a
, uint8x16_t b
)
15737 __asm__ ("tbl %0.16b, {%1.16b}, %2.16b"
15740 : /* No clobbers */);
15744 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
15745 vqtbl2_s8 (int8x16x2_t tab
, uint8x8_t idx
)
15748 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
15749 "tbl %0.8b, {v16.16b, v17.16b}, %2.8b\n\t"
15752 :"memory", "v16", "v17");
15756 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15757 vqtbl2_u8 (uint8x16x2_t tab
, uint8x8_t idx
)
15760 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
15761 "tbl %0.8b, {v16.16b, v17.16b}, %2.8b\n\t"
15764 :"memory", "v16", "v17");
15768 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
15769 vqtbl2_p8 (poly8x16x2_t tab
, uint8x8_t idx
)
15772 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
15773 "tbl %0.8b, {v16.16b, v17.16b}, %2.8b\n\t"
15776 :"memory", "v16", "v17");
15780 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
15781 vqtbl2q_s8 (int8x16x2_t tab
, uint8x16_t idx
)
15784 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
15785 "tbl %0.16b, {v16.16b, v17.16b}, %2.16b\n\t"
15788 :"memory", "v16", "v17");
15792 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
15793 vqtbl2q_u8 (uint8x16x2_t tab
, uint8x16_t idx
)
15796 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
15797 "tbl %0.16b, {v16.16b, v17.16b}, %2.16b\n\t"
15800 :"memory", "v16", "v17");
15804 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
15805 vqtbl2q_p8 (poly8x16x2_t tab
, uint8x16_t idx
)
15808 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
15809 "tbl %0.16b, {v16.16b, v17.16b}, %2.16b\n\t"
15812 :"memory", "v16", "v17");
15816 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
15817 vqtbl3_s8 (int8x16x3_t tab
, uint8x8_t idx
)
15820 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
15821 "tbl %0.8b, {v16.16b - v18.16b}, %2.8b\n\t"
15824 :"memory", "v16", "v17", "v18");
15828 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15829 vqtbl3_u8 (uint8x16x3_t tab
, uint8x8_t idx
)
15832 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
15833 "tbl %0.8b, {v16.16b - v18.16b}, %2.8b\n\t"
15836 :"memory", "v16", "v17", "v18");
15840 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
15841 vqtbl3_p8 (poly8x16x3_t tab
, uint8x8_t idx
)
15844 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
15845 "tbl %0.8b, {v16.16b - v18.16b}, %2.8b\n\t"
15848 :"memory", "v16", "v17", "v18");
15852 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
15853 vqtbl3q_s8 (int8x16x3_t tab
, uint8x16_t idx
)
15856 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
15857 "tbl %0.16b, {v16.16b - v18.16b}, %2.16b\n\t"
15860 :"memory", "v16", "v17", "v18");
15864 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
15865 vqtbl3q_u8 (uint8x16x3_t tab
, uint8x16_t idx
)
15868 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
15869 "tbl %0.16b, {v16.16b - v18.16b}, %2.16b\n\t"
15872 :"memory", "v16", "v17", "v18");
15876 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
15877 vqtbl3q_p8 (poly8x16x3_t tab
, uint8x16_t idx
)
15880 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
15881 "tbl %0.16b, {v16.16b - v18.16b}, %2.16b\n\t"
15884 :"memory", "v16", "v17", "v18");
15888 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
15889 vqtbl4_s8 (int8x16x4_t tab
, uint8x8_t idx
)
15892 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
15893 "tbl %0.8b, {v16.16b - v19.16b}, %2.8b\n\t"
15896 :"memory", "v16", "v17", "v18", "v19");
15900 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15901 vqtbl4_u8 (uint8x16x4_t tab
, uint8x8_t idx
)
15904 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
15905 "tbl %0.8b, {v16.16b - v19.16b}, %2.8b\n\t"
15908 :"memory", "v16", "v17", "v18", "v19");
15912 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
15913 vqtbl4_p8 (poly8x16x4_t tab
, uint8x8_t idx
)
15916 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
15917 "tbl %0.8b, {v16.16b - v19.16b}, %2.8b\n\t"
15920 :"memory", "v16", "v17", "v18", "v19");
15925 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
15926 vqtbl4q_s8 (int8x16x4_t tab
, uint8x16_t idx
)
15929 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
15930 "tbl %0.16b, {v16.16b - v19.16b}, %2.16b\n\t"
15933 :"memory", "v16", "v17", "v18", "v19");
15937 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
15938 vqtbl4q_u8 (uint8x16x4_t tab
, uint8x16_t idx
)
15941 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
15942 "tbl %0.16b, {v16.16b - v19.16b}, %2.16b\n\t"
15945 :"memory", "v16", "v17", "v18", "v19");
15949 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
15950 vqtbl4q_p8 (poly8x16x4_t tab
, uint8x16_t idx
)
15953 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
15954 "tbl %0.16b, {v16.16b - v19.16b}, %2.16b\n\t"
15957 :"memory", "v16", "v17", "v18", "v19");
15962 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
15963 vqtbx1_s8 (int8x8_t r
, int8x16_t tab
, uint8x8_t idx
)
15965 int8x8_t result
= r
;
15966 __asm__ ("tbx %0.8b,{%1.16b},%2.8b"
15968 : "w"(tab
), "w"(idx
)
15969 : /* No clobbers */);
15973 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15974 vqtbx1_u8 (uint8x8_t r
, uint8x16_t tab
, uint8x8_t idx
)
15976 uint8x8_t result
= r
;
15977 __asm__ ("tbx %0.8b,{%1.16b},%2.8b"
15979 : "w"(tab
), "w"(idx
)
15980 : /* No clobbers */);
15984 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
15985 vqtbx1_p8 (poly8x8_t r
, poly8x16_t tab
, uint8x8_t idx
)
15987 poly8x8_t result
= r
;
15988 __asm__ ("tbx %0.8b,{%1.16b},%2.8b"
15990 : "w"(tab
), "w"(idx
)
15991 : /* No clobbers */);
15995 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
15996 vqtbx1q_s8 (int8x16_t r
, int8x16_t tab
, uint8x16_t idx
)
15998 int8x16_t result
= r
;
15999 __asm__ ("tbx %0.16b,{%1.16b},%2.16b"
16001 : "w"(tab
), "w"(idx
)
16002 : /* No clobbers */);
16006 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16007 vqtbx1q_u8 (uint8x16_t r
, uint8x16_t tab
, uint8x16_t idx
)
16009 uint8x16_t result
= r
;
16010 __asm__ ("tbx %0.16b,{%1.16b},%2.16b"
16012 : "w"(tab
), "w"(idx
)
16013 : /* No clobbers */);
16017 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
16018 vqtbx1q_p8 (poly8x16_t r
, poly8x16_t tab
, uint8x16_t idx
)
16020 poly8x16_t result
= r
;
16021 __asm__ ("tbx %0.16b,{%1.16b},%2.16b"
16023 : "w"(tab
), "w"(idx
)
16024 : /* No clobbers */);
16028 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
16029 vqtbx2_s8 (int8x8_t r
, int8x16x2_t tab
, uint8x8_t idx
)
16031 int8x8_t result
= r
;
16032 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
16033 "tbx %0.8b, {v16.16b, v17.16b}, %2.8b\n\t"
16036 :"memory", "v16", "v17");
16040 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16041 vqtbx2_u8 (uint8x8_t r
, uint8x16x2_t tab
, uint8x8_t idx
)
16043 uint8x8_t result
= r
;
16044 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
16045 "tbx %0.8b, {v16.16b, v17.16b}, %2.8b\n\t"
16048 :"memory", "v16", "v17");
16052 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
16053 vqtbx2_p8 (poly8x8_t r
, poly8x16x2_t tab
, uint8x8_t idx
)
16055 poly8x8_t result
= r
;
16056 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
16057 "tbx %0.8b, {v16.16b, v17.16b}, %2.8b\n\t"
16060 :"memory", "v16", "v17");
16065 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
16066 vqtbx2q_s8 (int8x16_t r
, int8x16x2_t tab
, uint8x16_t idx
)
16068 int8x16_t result
= r
;
16069 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
16070 "tbx %0.16b, {v16.16b, v17.16b}, %2.16b\n\t"
16073 :"memory", "v16", "v17");
16077 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16078 vqtbx2q_u8 (uint8x16_t r
, uint8x16x2_t tab
, uint8x16_t idx
)
16080 uint8x16_t result
= r
;
16081 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
16082 "tbx %0.16b, {v16.16b, v17.16b}, %2.16b\n\t"
16085 :"memory", "v16", "v17");
16089 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
16090 vqtbx2q_p8 (poly8x16_t r
, poly8x16x2_t tab
, uint8x16_t idx
)
16092 poly8x16_t result
= r
;
16093 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
16094 "tbx %0.16b, {v16.16b, v17.16b}, %2.16b\n\t"
16097 :"memory", "v16", "v17");
16102 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
16103 vqtbx3_s8 (int8x8_t r
, int8x16x3_t tab
, uint8x8_t idx
)
16105 int8x8_t result
= r
;
16106 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
16107 "tbx %0.8b, {v16.16b - v18.16b}, %2.8b\n\t"
16110 :"memory", "v16", "v17", "v18");
16114 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16115 vqtbx3_u8 (uint8x8_t r
, uint8x16x3_t tab
, uint8x8_t idx
)
16117 uint8x8_t result
= r
;
16118 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
16119 "tbx %0.8b, {v16.16b - v18.16b}, %2.8b\n\t"
16122 :"memory", "v16", "v17", "v18");
16126 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
16127 vqtbx3_p8 (poly8x8_t r
, poly8x16x3_t tab
, uint8x8_t idx
)
16129 poly8x8_t result
= r
;
16130 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
16131 "tbx %0.8b, {v16.16b - v18.16b}, %2.8b\n\t"
16134 :"memory", "v16", "v17", "v18");
16139 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
16140 vqtbx3q_s8 (int8x16_t r
, int8x16x3_t tab
, uint8x16_t idx
)
16142 int8x16_t result
= r
;
16143 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
16144 "tbx %0.16b, {v16.16b - v18.16b}, %2.16b\n\t"
16147 :"memory", "v16", "v17", "v18");
16151 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16152 vqtbx3q_u8 (uint8x16_t r
, uint8x16x3_t tab
, uint8x16_t idx
)
16154 uint8x16_t result
= r
;
16155 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
16156 "tbx %0.16b, {v16.16b - v18.16b}, %2.16b\n\t"
16159 :"memory", "v16", "v17", "v18");
16163 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
16164 vqtbx3q_p8 (poly8x16_t r
, poly8x16x3_t tab
, uint8x16_t idx
)
16166 poly8x16_t result
= r
;
16167 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
16168 "tbx %0.16b, {v16.16b - v18.16b}, %2.16b\n\t"
16171 :"memory", "v16", "v17", "v18");
16176 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
16177 vqtbx4_s8 (int8x8_t r
, int8x16x4_t tab
, uint8x8_t idx
)
16179 int8x8_t result
= r
;
16180 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
16181 "tbx %0.8b, {v16.16b - v19.16b}, %2.8b\n\t"
16184 :"memory", "v16", "v17", "v18", "v19");
16188 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16189 vqtbx4_u8 (uint8x8_t r
, uint8x16x4_t tab
, uint8x8_t idx
)
16191 uint8x8_t result
= r
;
16192 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
16193 "tbx %0.8b, {v16.16b - v19.16b}, %2.8b\n\t"
16196 :"memory", "v16", "v17", "v18", "v19");
16200 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
16201 vqtbx4_p8 (poly8x8_t r
, poly8x16x4_t tab
, uint8x8_t idx
)
16203 poly8x8_t result
= r
;
16204 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
16205 "tbx %0.8b, {v16.16b - v19.16b}, %2.8b\n\t"
16208 :"memory", "v16", "v17", "v18", "v19");
16213 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
16214 vqtbx4q_s8 (int8x16_t r
, int8x16x4_t tab
, uint8x16_t idx
)
16216 int8x16_t result
= r
;
16217 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
16218 "tbx %0.16b, {v16.16b - v19.16b}, %2.16b\n\t"
16221 :"memory", "v16", "v17", "v18", "v19");
16225 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16226 vqtbx4q_u8 (uint8x16_t r
, uint8x16x4_t tab
, uint8x16_t idx
)
16228 uint8x16_t result
= r
;
16229 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
16230 "tbx %0.16b, {v16.16b - v19.16b}, %2.16b\n\t"
16233 :"memory", "v16", "v17", "v18", "v19");
16237 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
16238 vqtbx4q_p8 (poly8x16_t r
, poly8x16x4_t tab
, uint8x16_t idx
)
16240 poly8x16_t result
= r
;
16241 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
16242 "tbx %0.16b, {v16.16b - v19.16b}, %2.16b\n\t"
16245 :"memory", "v16", "v17", "v18", "v19");
16249 /* V7 legacy table intrinsics. */
16251 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
16252 vtbl1_s8 (int8x8_t tab
, int8x8_t idx
)
16255 int8x16_t temp
= vcombine_s8 (tab
, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
16256 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
16258 : "w"(temp
), "w"(idx
)
16259 : /* No clobbers */);
16263 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16264 vtbl1_u8 (uint8x8_t tab
, uint8x8_t idx
)
16267 uint8x16_t temp
= vcombine_u8 (tab
, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
16268 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
16270 : "w"(temp
), "w"(idx
)
16271 : /* No clobbers */);
16275 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
16276 vtbl1_p8 (poly8x8_t tab
, uint8x8_t idx
)
16279 poly8x16_t temp
= vcombine_p8 (tab
, vcreate_p8 (__AARCH64_UINT64_C (0x0)));
16280 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
16282 : "w"(temp
), "w"(idx
)
16283 : /* No clobbers */);
16287 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
16288 vtbl2_s8 (int8x8x2_t tab
, int8x8_t idx
)
16291 int8x16_t temp
= vcombine_s8 (tab
.val
[0], tab
.val
[1]);
16292 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
16294 : "w"(temp
), "w"(idx
)
16295 : /* No clobbers */);
16299 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16300 vtbl2_u8 (uint8x8x2_t tab
, uint8x8_t idx
)
16303 uint8x16_t temp
= vcombine_u8 (tab
.val
[0], tab
.val
[1]);
16304 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
16306 : "w"(temp
), "w"(idx
)
16307 : /* No clobbers */);
16311 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
16312 vtbl2_p8 (poly8x8x2_t tab
, uint8x8_t idx
)
16315 poly8x16_t temp
= vcombine_p8 (tab
.val
[0], tab
.val
[1]);
16316 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
16318 : "w"(temp
), "w"(idx
)
16319 : /* No clobbers */);
16323 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
16324 vtbl3_s8 (int8x8x3_t tab
, int8x8_t idx
)
16328 temp
.val
[0] = vcombine_s8 (tab
.val
[0], tab
.val
[1]);
16329 temp
.val
[1] = vcombine_s8 (tab
.val
[2], vcreate_s8 (__AARCH64_UINT64_C (0x0)));
16330 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
16331 "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
16333 : "Q"(temp
), "w"(idx
)
16334 : "v16", "v17", "memory");
16338 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16339 vtbl3_u8 (uint8x8x3_t tab
, uint8x8_t idx
)
16343 temp
.val
[0] = vcombine_u8 (tab
.val
[0], tab
.val
[1]);
16344 temp
.val
[1] = vcombine_u8 (tab
.val
[2], vcreate_u8 (__AARCH64_UINT64_C (0x0)));
16345 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
16346 "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
16348 : "Q"(temp
), "w"(idx
)
16349 : "v16", "v17", "memory");
16353 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
16354 vtbl3_p8 (poly8x8x3_t tab
, uint8x8_t idx
)
16358 temp
.val
[0] = vcombine_p8 (tab
.val
[0], tab
.val
[1]);
16359 temp
.val
[1] = vcombine_p8 (tab
.val
[2], vcreate_p8 (__AARCH64_UINT64_C (0x0)));
16360 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
16361 "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
16363 : "Q"(temp
), "w"(idx
)
16364 : "v16", "v17", "memory");
16368 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
16369 vtbl4_s8 (int8x8x4_t tab
, int8x8_t idx
)
16373 temp
.val
[0] = vcombine_s8 (tab
.val
[0], tab
.val
[1]);
16374 temp
.val
[1] = vcombine_s8 (tab
.val
[2], tab
.val
[3]);
16375 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
16376 "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
16378 : "Q"(temp
), "w"(idx
)
16379 : "v16", "v17", "memory");
16383 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16384 vtbl4_u8 (uint8x8x4_t tab
, uint8x8_t idx
)
16388 temp
.val
[0] = vcombine_u8 (tab
.val
[0], tab
.val
[1]);
16389 temp
.val
[1] = vcombine_u8 (tab
.val
[2], tab
.val
[3]);
16390 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
16391 "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
16393 : "Q"(temp
), "w"(idx
)
16394 : "v16", "v17", "memory");
16398 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
16399 vtbl4_p8 (poly8x8x4_t tab
, uint8x8_t idx
)
16403 temp
.val
[0] = vcombine_p8 (tab
.val
[0], tab
.val
[1]);
16404 temp
.val
[1] = vcombine_p8 (tab
.val
[2], tab
.val
[3]);
16405 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
16406 "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
16408 : "Q"(temp
), "w"(idx
)
16409 : "v16", "v17", "memory");
16413 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
16414 vtbx1_s8 (int8x8_t r
, int8x8_t tab
, int8x8_t idx
)
16418 int8x16_t temp
= vcombine_s8 (tab
, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
16419 __asm__ ("movi %0.8b, 8\n\t"
16420 "cmhs %0.8b, %3.8b, %0.8b\n\t"
16421 "tbl %1.8b, {%2.16b}, %3.8b\n\t"
16422 "bsl %0.8b, %4.8b, %1.8b\n\t"
16423 : "+w"(result
), "=w"(tmp1
)
16424 : "w"(temp
), "w"(idx
), "w"(r
)
16425 : /* No clobbers */);
16429 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16430 vtbx1_u8 (uint8x8_t r
, uint8x8_t tab
, uint8x8_t idx
)
16434 uint8x16_t temp
= vcombine_u8 (tab
, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
16435 __asm__ ("movi %0.8b, 8\n\t"
16436 "cmhs %0.8b, %3.8b, %0.8b\n\t"
16437 "tbl %1.8b, {%2.16b}, %3.8b\n\t"
16438 "bsl %0.8b, %4.8b, %1.8b\n\t"
16439 : "+w"(result
), "=w"(tmp1
)
16440 : "w"(temp
), "w"(idx
), "w"(r
)
16441 : /* No clobbers */);
16445 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
16446 vtbx1_p8 (poly8x8_t r
, poly8x8_t tab
, uint8x8_t idx
)
16450 poly8x16_t temp
= vcombine_p8 (tab
, vcreate_p8 (__AARCH64_UINT64_C (0x0)));
16451 __asm__ ("movi %0.8b, 8\n\t"
16452 "cmhs %0.8b, %3.8b, %0.8b\n\t"
16453 "tbl %1.8b, {%2.16b}, %3.8b\n\t"
16454 "bsl %0.8b, %4.8b, %1.8b\n\t"
16455 : "+w"(result
), "=w"(tmp1
)
16456 : "w"(temp
), "w"(idx
), "w"(r
)
16457 : /* No clobbers */);
16461 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
16462 vtbx2_s8 (int8x8_t r
, int8x8x2_t tab
, int8x8_t idx
)
16464 int8x8_t result
= r
;
16465 int8x16_t temp
= vcombine_s8 (tab
.val
[0], tab
.val
[1]);
16466 __asm__ ("tbx %0.8b, {%1.16b}, %2.8b"
16468 : "w"(temp
), "w"(idx
)
16469 : /* No clobbers */);
16473 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16474 vtbx2_u8 (uint8x8_t r
, uint8x8x2_t tab
, uint8x8_t idx
)
16476 uint8x8_t result
= r
;
16477 uint8x16_t temp
= vcombine_u8 (tab
.val
[0], tab
.val
[1]);
16478 __asm__ ("tbx %0.8b, {%1.16b}, %2.8b"
16480 : "w"(temp
), "w"(idx
)
16481 : /* No clobbers */);
16485 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
16486 vtbx2_p8 (poly8x8_t r
, poly8x8x2_t tab
, uint8x8_t idx
)
16488 poly8x8_t result
= r
;
16489 poly8x16_t temp
= vcombine_p8 (tab
.val
[0], tab
.val
[1]);
16490 __asm__ ("tbx %0.8b, {%1.16b}, %2.8b"
16492 : "w"(temp
), "w"(idx
)
16493 : /* No clobbers */);
16497 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
16498 vtbx3_s8 (int8x8_t r
, int8x8x3_t tab
, int8x8_t idx
)
16503 temp
.val
[0] = vcombine_s8 (tab
.val
[0], tab
.val
[1]);
16504 temp
.val
[1] = vcombine_s8 (tab
.val
[2], vcreate_s8 (__AARCH64_UINT64_C (0x0)));
16505 __asm__ ("ld1 {v16.16b - v17.16b}, %2\n\t"
16506 "movi %0.8b, 24\n\t"
16507 "cmhs %0.8b, %3.8b, %0.8b\n\t"
16508 "tbl %1.8b, {v16.16b - v17.16b}, %3.8b\n\t"
16509 "bsl %0.8b, %4.8b, %1.8b\n\t"
16510 : "+w"(result
), "=w"(tmp1
)
16511 : "Q"(temp
), "w"(idx
), "w"(r
)
16512 : "v16", "v17", "memory");
16516 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16517 vtbx3_u8 (uint8x8_t r
, uint8x8x3_t tab
, uint8x8_t idx
)
16522 temp
.val
[0] = vcombine_u8 (tab
.val
[0], tab
.val
[1]);
16523 temp
.val
[1] = vcombine_u8 (tab
.val
[2], vcreate_u8 (__AARCH64_UINT64_C (0x0)));
16524 __asm__ ("ld1 {v16.16b - v17.16b}, %2\n\t"
16525 "movi %0.8b, 24\n\t"
16526 "cmhs %0.8b, %3.8b, %0.8b\n\t"
16527 "tbl %1.8b, {v16.16b - v17.16b}, %3.8b\n\t"
16528 "bsl %0.8b, %4.8b, %1.8b\n\t"
16529 : "+w"(result
), "=w"(tmp1
)
16530 : "Q"(temp
), "w"(idx
), "w"(r
)
16531 : "v16", "v17", "memory");
16535 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
16536 vtbx3_p8 (poly8x8_t r
, poly8x8x3_t tab
, uint8x8_t idx
)
16541 temp
.val
[0] = vcombine_p8 (tab
.val
[0], tab
.val
[1]);
16542 temp
.val
[1] = vcombine_p8 (tab
.val
[2], vcreate_p8 (__AARCH64_UINT64_C (0x0)));
16543 __asm__ ("ld1 {v16.16b - v17.16b}, %2\n\t"
16544 "movi %0.8b, 24\n\t"
16545 "cmhs %0.8b, %3.8b, %0.8b\n\t"
16546 "tbl %1.8b, {v16.16b - v17.16b}, %3.8b\n\t"
16547 "bsl %0.8b, %4.8b, %1.8b\n\t"
16548 : "+w"(result
), "=w"(tmp1
)
16549 : "Q"(temp
), "w"(idx
), "w"(r
)
16550 : "v16", "v17", "memory");
16554 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
16555 vtbx4_s8 (int8x8_t r
, int8x8x4_t tab
, int8x8_t idx
)
16557 int8x8_t result
= r
;
16559 temp
.val
[0] = vcombine_s8 (tab
.val
[0], tab
.val
[1]);
16560 temp
.val
[1] = vcombine_s8 (tab
.val
[2], tab
.val
[3]);
16561 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
16562 "tbx %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
16564 : "Q"(temp
), "w"(idx
)
16565 : "v16", "v17", "memory");
16569 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16570 vtbx4_u8 (uint8x8_t r
, uint8x8x4_t tab
, uint8x8_t idx
)
16572 uint8x8_t result
= r
;
16574 temp
.val
[0] = vcombine_u8 (tab
.val
[0], tab
.val
[1]);
16575 temp
.val
[1] = vcombine_u8 (tab
.val
[2], tab
.val
[3]);
16576 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
16577 "tbx %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
16579 : "Q"(temp
), "w"(idx
)
16580 : "v16", "v17", "memory");
16584 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
16585 vtbx4_p8 (poly8x8_t r
, poly8x8x4_t tab
, uint8x8_t idx
)
16587 poly8x8_t result
= r
;
16589 temp
.val
[0] = vcombine_p8 (tab
.val
[0], tab
.val
[1]);
16590 temp
.val
[1] = vcombine_p8 (tab
.val
[2], tab
.val
[3]);
16591 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
16592 "tbx %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
16594 : "Q"(temp
), "w"(idx
)
16595 : "v16", "v17", "memory");
16599 /* End of temporary inline asm. */
16601 /* Start of optimal implementations in approved order. */
16605 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
16606 vabs_f32 (float32x2_t __a
)
16608 return __builtin_aarch64_absv2sf (__a
);
16611 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
16612 vabs_f64 (float64x1_t __a
)
16614 return __builtin_fabs (__a
);
16617 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
16618 vabs_s8 (int8x8_t __a
)
16620 return __builtin_aarch64_absv8qi (__a
);
16623 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
16624 vabs_s16 (int16x4_t __a
)
16626 return __builtin_aarch64_absv4hi (__a
);
16629 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
16630 vabs_s32 (int32x2_t __a
)
16632 return __builtin_aarch64_absv2si (__a
);
16635 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
16636 vabs_s64 (int64x1_t __a
)
16638 return __builtin_llabs (__a
);
16641 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
16642 vabsq_f32 (float32x4_t __a
)
16644 return __builtin_aarch64_absv4sf (__a
);
16647 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
16648 vabsq_f64 (float64x2_t __a
)
16650 return __builtin_aarch64_absv2df (__a
);
16653 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
16654 vabsq_s8 (int8x16_t __a
)
16656 return __builtin_aarch64_absv16qi (__a
);
16659 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
16660 vabsq_s16 (int16x8_t __a
)
16662 return __builtin_aarch64_absv8hi (__a
);
16665 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
16666 vabsq_s32 (int32x4_t __a
)
16668 return __builtin_aarch64_absv4si (__a
);
16671 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
16672 vabsq_s64 (int64x2_t __a
)
16674 return __builtin_aarch64_absv2di (__a
);
16679 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
16680 vaddd_s64 (int64x1_t __a
, int64x1_t __b
)
16685 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16686 vaddd_u64 (uint64x1_t __a
, uint64x1_t __b
)
16693 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
16694 vaddv_s8 (int8x8_t __a
)
16696 return vget_lane_s8 (__builtin_aarch64_reduc_splus_v8qi (__a
), 0);
16699 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
16700 vaddv_s16 (int16x4_t __a
)
16702 return vget_lane_s16 (__builtin_aarch64_reduc_splus_v4hi (__a
), 0);
16705 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
16706 vaddv_s32 (int32x2_t __a
)
16708 return vget_lane_s32 (__builtin_aarch64_reduc_splus_v2si (__a
), 0);
16711 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
16712 vaddv_u8 (uint8x8_t __a
)
16714 return vget_lane_u8 ((uint8x8_t
)
16715 __builtin_aarch64_reduc_uplus_v8qi ((int8x8_t
) __a
), 0);
16718 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
16719 vaddv_u16 (uint16x4_t __a
)
16721 return vget_lane_u16 ((uint16x4_t
)
16722 __builtin_aarch64_reduc_uplus_v4hi ((int16x4_t
) __a
), 0);
16725 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
16726 vaddv_u32 (uint32x2_t __a
)
16728 return vget_lane_u32 ((uint32x2_t
)
16729 __builtin_aarch64_reduc_uplus_v2si ((int32x2_t
) __a
), 0);
16732 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
16733 vaddvq_s8 (int8x16_t __a
)
16735 return vgetq_lane_s8 (__builtin_aarch64_reduc_splus_v16qi (__a
), 0);
16738 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
16739 vaddvq_s16 (int16x8_t __a
)
16741 return vgetq_lane_s16 (__builtin_aarch64_reduc_splus_v8hi (__a
), 0);
16744 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
16745 vaddvq_s32 (int32x4_t __a
)
16747 return vgetq_lane_s32 (__builtin_aarch64_reduc_splus_v4si (__a
), 0);
16750 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
16751 vaddvq_s64 (int64x2_t __a
)
16753 return vgetq_lane_s64 (__builtin_aarch64_reduc_splus_v2di (__a
), 0);
16756 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
16757 vaddvq_u8 (uint8x16_t __a
)
16759 return vgetq_lane_u8 ((uint8x16_t
)
16760 __builtin_aarch64_reduc_uplus_v16qi ((int8x16_t
) __a
), 0);
16763 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
16764 vaddvq_u16 (uint16x8_t __a
)
16766 return vgetq_lane_u16 ((uint16x8_t
)
16767 __builtin_aarch64_reduc_uplus_v8hi ((int16x8_t
) __a
), 0);
16770 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
16771 vaddvq_u32 (uint32x4_t __a
)
16773 return vgetq_lane_u32 ((uint32x4_t
)
16774 __builtin_aarch64_reduc_uplus_v4si ((int32x4_t
) __a
), 0);
16777 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
16778 vaddvq_u64 (uint64x2_t __a
)
16780 return vgetq_lane_u64 ((uint64x2_t
)
16781 __builtin_aarch64_reduc_uplus_v2di ((int64x2_t
) __a
), 0);
16784 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
16785 vaddv_f32 (float32x2_t __a
)
16787 float32x2_t t
= __builtin_aarch64_reduc_splus_v2sf (__a
);
16788 return vget_lane_f32 (t
, 0);
16791 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
16792 vaddvq_f32 (float32x4_t __a
)
16794 float32x4_t t
= __builtin_aarch64_reduc_splus_v4sf (__a
);
16795 return vgetq_lane_f32 (t
, 0);
16798 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
16799 vaddvq_f64 (float64x2_t __a
)
16801 float64x2_t t
= __builtin_aarch64_reduc_splus_v2df (__a
);
16802 return vgetq_lane_f64 (t
, 0);
16807 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
16808 vcages_f32 (float32_t __a
, float32_t __b
)
16810 return __builtin_fabsf (__a
) >= __builtin_fabsf (__b
) ? -1 : 0;
16813 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16814 vcage_f32 (float32x2_t __a
, float32x2_t __b
)
16816 return vabs_f32 (__a
) >= vabs_f32 (__b
);
16819 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16820 vcageq_f32 (float32x4_t __a
, float32x4_t __b
)
16822 return vabsq_f32 (__a
) >= vabsq_f32 (__b
);
16825 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
16826 vcaged_f64 (float64_t __a
, float64_t __b
)
16828 return __builtin_fabs (__a
) >= __builtin_fabs (__b
) ? -1 : 0;
16831 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16832 vcageq_f64 (float64x2_t __a
, float64x2_t __b
)
16834 return vabsq_f64 (__a
) >= vabsq_f64 (__b
);
16839 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
16840 vcagts_f32 (float32_t __a
, float32_t __b
)
16842 return __builtin_fabsf (__a
) > __builtin_fabsf (__b
) ? -1 : 0;
16845 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16846 vcagt_f32 (float32x2_t __a
, float32x2_t __b
)
16848 return vabs_f32 (__a
) > vabs_f32 (__b
);
16851 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16852 vcagtq_f32 (float32x4_t __a
, float32x4_t __b
)
16854 return vabsq_f32 (__a
) > vabsq_f32 (__b
);
16857 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
16858 vcagtd_f64 (float64_t __a
, float64_t __b
)
16860 return __builtin_fabs (__a
) > __builtin_fabs (__b
) ? -1 : 0;
16863 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16864 vcagtq_f64 (float64x2_t __a
, float64x2_t __b
)
16866 return vabsq_f64 (__a
) > vabsq_f64 (__b
);
16871 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16872 vcale_f32 (float32x2_t __a
, float32x2_t __b
)
16874 return vabs_f32 (__a
) <= vabs_f32 (__b
);
16877 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16878 vcaleq_f32 (float32x4_t __a
, float32x4_t __b
)
16880 return vabsq_f32 (__a
) <= vabsq_f32 (__b
);
16883 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16884 vcaleq_f64 (float64x2_t __a
, float64x2_t __b
)
16886 return vabsq_f64 (__a
) <= vabsq_f64 (__b
);
16891 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16892 vcalt_f32 (float32x2_t __a
, float32x2_t __b
)
16894 return vabs_f32 (__a
) < vabs_f32 (__b
);
16897 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16898 vcaltq_f32 (float32x4_t __a
, float32x4_t __b
)
16900 return vabsq_f32 (__a
) < vabsq_f32 (__b
);
16903 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16904 vcaltq_f64 (float64x2_t __a
, float64x2_t __b
)
16906 return vabsq_f64 (__a
) < vabsq_f64 (__b
);
16909 /* vceq - vector. */
16911 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16912 vceq_f32 (float32x2_t __a
, float32x2_t __b
)
16914 return (uint32x2_t
) __builtin_aarch64_cmeqv2sf (__a
, __b
);
16917 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16918 vceq_f64 (float64x1_t __a
, float64x1_t __b
)
16920 return __a
== __b
? -1ll : 0ll;
16923 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16924 vceq_p8 (poly8x8_t __a
, poly8x8_t __b
)
16926 return (uint8x8_t
) __builtin_aarch64_cmeqv8qi ((int8x8_t
) __a
,
16930 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16931 vceq_s8 (int8x8_t __a
, int8x8_t __b
)
16933 return (uint8x8_t
) __builtin_aarch64_cmeqv8qi (__a
, __b
);
16936 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
16937 vceq_s16 (int16x4_t __a
, int16x4_t __b
)
16939 return (uint16x4_t
) __builtin_aarch64_cmeqv4hi (__a
, __b
);
16942 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16943 vceq_s32 (int32x2_t __a
, int32x2_t __b
)
16945 return (uint32x2_t
) __builtin_aarch64_cmeqv2si (__a
, __b
);
16948 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16949 vceq_s64 (int64x1_t __a
, int64x1_t __b
)
16951 return __a
== __b
? -1ll : 0ll;
16954 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16955 vceq_u8 (uint8x8_t __a
, uint8x8_t __b
)
16957 return (uint8x8_t
) __builtin_aarch64_cmeqv8qi ((int8x8_t
) __a
,
16961 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
16962 vceq_u16 (uint16x4_t __a
, uint16x4_t __b
)
16964 return (uint16x4_t
) __builtin_aarch64_cmeqv4hi ((int16x4_t
) __a
,
16968 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16969 vceq_u32 (uint32x2_t __a
, uint32x2_t __b
)
16971 return (uint32x2_t
) __builtin_aarch64_cmeqv2si ((int32x2_t
) __a
,
16975 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16976 vceq_u64 (uint64x1_t __a
, uint64x1_t __b
)
16978 return __a
== __b
? -1ll : 0ll;
16981 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16982 vceqq_f32 (float32x4_t __a
, float32x4_t __b
)
16984 return (uint32x4_t
) __builtin_aarch64_cmeqv4sf (__a
, __b
);
16987 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16988 vceqq_f64 (float64x2_t __a
, float64x2_t __b
)
16990 return (uint64x2_t
) __builtin_aarch64_cmeqv2df (__a
, __b
);
16993 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16994 vceqq_p8 (poly8x16_t __a
, poly8x16_t __b
)
16996 return (uint8x16_t
) __builtin_aarch64_cmeqv16qi ((int8x16_t
) __a
,
17000 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17001 vceqq_s8 (int8x16_t __a
, int8x16_t __b
)
17003 return (uint8x16_t
) __builtin_aarch64_cmeqv16qi (__a
, __b
);
17006 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17007 vceqq_s16 (int16x8_t __a
, int16x8_t __b
)
17009 return (uint16x8_t
) __builtin_aarch64_cmeqv8hi (__a
, __b
);
17012 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17013 vceqq_s32 (int32x4_t __a
, int32x4_t __b
)
17015 return (uint32x4_t
) __builtin_aarch64_cmeqv4si (__a
, __b
);
17018 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17019 vceqq_s64 (int64x2_t __a
, int64x2_t __b
)
17021 return (uint64x2_t
) __builtin_aarch64_cmeqv2di (__a
, __b
);
17024 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17025 vceqq_u8 (uint8x16_t __a
, uint8x16_t __b
)
17027 return (uint8x16_t
) __builtin_aarch64_cmeqv16qi ((int8x16_t
) __a
,
17031 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17032 vceqq_u16 (uint16x8_t __a
, uint16x8_t __b
)
17034 return (uint16x8_t
) __builtin_aarch64_cmeqv8hi ((int16x8_t
) __a
,
17038 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17039 vceqq_u32 (uint32x4_t __a
, uint32x4_t __b
)
17041 return (uint32x4_t
) __builtin_aarch64_cmeqv4si ((int32x4_t
) __a
,
17045 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17046 vceqq_u64 (uint64x2_t __a
, uint64x2_t __b
)
17048 return (uint64x2_t
) __builtin_aarch64_cmeqv2di ((int64x2_t
) __a
,
17052 /* vceq - scalar. */
17054 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
17055 vceqs_f32 (float32_t __a
, float32_t __b
)
17057 return __a
== __b
? -1 : 0;
17060 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17061 vceqd_s64 (int64x1_t __a
, int64x1_t __b
)
17063 return __a
== __b
? -1ll : 0ll;
17066 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17067 vceqd_u64 (uint64x1_t __a
, uint64x1_t __b
)
17069 return __a
== __b
? -1ll : 0ll;
17072 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
17073 vceqd_f64 (float64_t __a
, float64_t __b
)
17075 return __a
== __b
? -1ll : 0ll;
17078 /* vceqz - vector. */
17080 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17081 vceqz_f32 (float32x2_t __a
)
17083 float32x2_t __b
= {0.0f
, 0.0f
};
17084 return (uint32x2_t
) __builtin_aarch64_cmeqv2sf (__a
, __b
);
17087 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17088 vceqz_f64 (float64x1_t __a
)
17090 return __a
== 0.0 ? -1ll : 0ll;
17093 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17094 vceqz_p8 (poly8x8_t __a
)
17096 poly8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17097 return (uint8x8_t
) __builtin_aarch64_cmeqv8qi ((int8x8_t
) __a
,
17101 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17102 vceqz_s8 (int8x8_t __a
)
17104 int8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17105 return (uint8x8_t
) __builtin_aarch64_cmeqv8qi (__a
, __b
);
17108 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17109 vceqz_s16 (int16x4_t __a
)
17111 int16x4_t __b
= {0, 0, 0, 0};
17112 return (uint16x4_t
) __builtin_aarch64_cmeqv4hi (__a
, __b
);
17115 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17116 vceqz_s32 (int32x2_t __a
)
17118 int32x2_t __b
= {0, 0};
17119 return (uint32x2_t
) __builtin_aarch64_cmeqv2si (__a
, __b
);
17122 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17123 vceqz_s64 (int64x1_t __a
)
17125 return __a
== 0ll ? -1ll : 0ll;
17128 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17129 vceqz_u8 (uint8x8_t __a
)
17131 uint8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17132 return (uint8x8_t
) __builtin_aarch64_cmeqv8qi ((int8x8_t
) __a
,
17136 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17137 vceqz_u16 (uint16x4_t __a
)
17139 uint16x4_t __b
= {0, 0, 0, 0};
17140 return (uint16x4_t
) __builtin_aarch64_cmeqv4hi ((int16x4_t
) __a
,
17144 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17145 vceqz_u32 (uint32x2_t __a
)
17147 uint32x2_t __b
= {0, 0};
17148 return (uint32x2_t
) __builtin_aarch64_cmeqv2si ((int32x2_t
) __a
,
17152 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17153 vceqz_u64 (uint64x1_t __a
)
17155 return __a
== 0ll ? -1ll : 0ll;
17158 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17159 vceqzq_f32 (float32x4_t __a
)
17161 float32x4_t __b
= {0.0f
, 0.0f
, 0.0f
, 0.0f
};
17162 return (uint32x4_t
) __builtin_aarch64_cmeqv4sf (__a
, __b
);
17165 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17166 vceqzq_f64 (float64x2_t __a
)
17168 float64x2_t __b
= {0.0, 0.0};
17169 return (uint64x2_t
) __builtin_aarch64_cmeqv2df (__a
, __b
);
17172 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17173 vceqzq_p8 (poly8x16_t __a
)
17175 poly8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
17176 0, 0, 0, 0, 0, 0, 0, 0};
17177 return (uint8x16_t
) __builtin_aarch64_cmeqv16qi ((int8x16_t
) __a
,
17181 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17182 vceqzq_s8 (int8x16_t __a
)
17184 int8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
17185 0, 0, 0, 0, 0, 0, 0, 0};
17186 return (uint8x16_t
) __builtin_aarch64_cmeqv16qi (__a
, __b
);
17189 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17190 vceqzq_s16 (int16x8_t __a
)
17192 int16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17193 return (uint16x8_t
) __builtin_aarch64_cmeqv8hi (__a
, __b
);
17196 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17197 vceqzq_s32 (int32x4_t __a
)
17199 int32x4_t __b
= {0, 0, 0, 0};
17200 return (uint32x4_t
) __builtin_aarch64_cmeqv4si (__a
, __b
);
17203 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17204 vceqzq_s64 (int64x2_t __a
)
17206 int64x2_t __b
= {0, 0};
17207 return (uint64x2_t
) __builtin_aarch64_cmeqv2di (__a
, __b
);
17210 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17211 vceqzq_u8 (uint8x16_t __a
)
17213 uint8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
17214 0, 0, 0, 0, 0, 0, 0, 0};
17215 return (uint8x16_t
) __builtin_aarch64_cmeqv16qi ((int8x16_t
) __a
,
17219 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17220 vceqzq_u16 (uint16x8_t __a
)
17222 uint16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17223 return (uint16x8_t
) __builtin_aarch64_cmeqv8hi ((int16x8_t
) __a
,
17227 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17228 vceqzq_u32 (uint32x4_t __a
)
17230 uint32x4_t __b
= {0, 0, 0, 0};
17231 return (uint32x4_t
) __builtin_aarch64_cmeqv4si ((int32x4_t
) __a
,
17235 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17236 vceqzq_u64 (uint64x2_t __a
)
17238 uint64x2_t __b
= {0, 0};
17239 return (uint64x2_t
) __builtin_aarch64_cmeqv2di ((int64x2_t
) __a
,
17243 /* vceqz - scalar. */
17245 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
17246 vceqzs_f32 (float32_t __a
)
17248 return __a
== 0.0f
? -1 : 0;
17251 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17252 vceqzd_s64 (int64x1_t __a
)
17254 return __a
== 0 ? -1ll : 0ll;
17257 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17258 vceqzd_u64 (int64x1_t __a
)
17260 return __a
== 0 ? -1ll : 0ll;
17263 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
17264 vceqzd_f64 (float64_t __a
)
17266 return __a
== 0.0 ? -1ll : 0ll;
17269 /* vcge - vector. */
17271 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17272 vcge_f32 (float32x2_t __a
, float32x2_t __b
)
17274 return (uint32x2_t
) __builtin_aarch64_cmgev2sf (__a
, __b
);
17277 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17278 vcge_f64 (float64x1_t __a
, float64x1_t __b
)
17280 return __a
>= __b
? -1ll : 0ll;
17283 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17284 vcge_p8 (poly8x8_t __a
, poly8x8_t __b
)
17286 return (uint8x8_t
) __builtin_aarch64_cmgev8qi ((int8x8_t
) __a
,
17290 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17291 vcge_s8 (int8x8_t __a
, int8x8_t __b
)
17293 return (uint8x8_t
) __builtin_aarch64_cmgev8qi (__a
, __b
);
17296 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17297 vcge_s16 (int16x4_t __a
, int16x4_t __b
)
17299 return (uint16x4_t
) __builtin_aarch64_cmgev4hi (__a
, __b
);
17302 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17303 vcge_s32 (int32x2_t __a
, int32x2_t __b
)
17305 return (uint32x2_t
) __builtin_aarch64_cmgev2si (__a
, __b
);
17308 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17309 vcge_s64 (int64x1_t __a
, int64x1_t __b
)
17311 return __a
>= __b
? -1ll : 0ll;
17314 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17315 vcge_u8 (uint8x8_t __a
, uint8x8_t __b
)
17317 return (uint8x8_t
) __builtin_aarch64_cmgeuv8qi ((int8x8_t
) __a
,
17321 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17322 vcge_u16 (uint16x4_t __a
, uint16x4_t __b
)
17324 return (uint16x4_t
) __builtin_aarch64_cmgeuv4hi ((int16x4_t
) __a
,
17328 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17329 vcge_u32 (uint32x2_t __a
, uint32x2_t __b
)
17331 return (uint32x2_t
) __builtin_aarch64_cmgeuv2si ((int32x2_t
) __a
,
17335 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17336 vcge_u64 (uint64x1_t __a
, uint64x1_t __b
)
17338 return __a
>= __b
? -1ll : 0ll;
17341 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17342 vcgeq_f32 (float32x4_t __a
, float32x4_t __b
)
17344 return (uint32x4_t
) __builtin_aarch64_cmgev4sf (__a
, __b
);
17347 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17348 vcgeq_f64 (float64x2_t __a
, float64x2_t __b
)
17350 return (uint64x2_t
) __builtin_aarch64_cmgev2df (__a
, __b
);
17353 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17354 vcgeq_p8 (poly8x16_t __a
, poly8x16_t __b
)
17356 return (uint8x16_t
) __builtin_aarch64_cmgev16qi ((int8x16_t
) __a
,
17360 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17361 vcgeq_s8 (int8x16_t __a
, int8x16_t __b
)
17363 return (uint8x16_t
) __builtin_aarch64_cmgev16qi (__a
, __b
);
17366 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17367 vcgeq_s16 (int16x8_t __a
, int16x8_t __b
)
17369 return (uint16x8_t
) __builtin_aarch64_cmgev8hi (__a
, __b
);
17372 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17373 vcgeq_s32 (int32x4_t __a
, int32x4_t __b
)
17375 return (uint32x4_t
) __builtin_aarch64_cmgev4si (__a
, __b
);
17378 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17379 vcgeq_s64 (int64x2_t __a
, int64x2_t __b
)
17381 return (uint64x2_t
) __builtin_aarch64_cmgev2di (__a
, __b
);
17384 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17385 vcgeq_u8 (uint8x16_t __a
, uint8x16_t __b
)
17387 return (uint8x16_t
) __builtin_aarch64_cmgeuv16qi ((int8x16_t
) __a
,
17391 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17392 vcgeq_u16 (uint16x8_t __a
, uint16x8_t __b
)
17394 return (uint16x8_t
) __builtin_aarch64_cmgeuv8hi ((int16x8_t
) __a
,
17398 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17399 vcgeq_u32 (uint32x4_t __a
, uint32x4_t __b
)
17401 return (uint32x4_t
) __builtin_aarch64_cmgeuv4si ((int32x4_t
) __a
,
17405 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17406 vcgeq_u64 (uint64x2_t __a
, uint64x2_t __b
)
17408 return (uint64x2_t
) __builtin_aarch64_cmgeuv2di ((int64x2_t
) __a
,
17412 /* vcge - scalar. */
17414 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
17415 vcges_f32 (float32_t __a
, float32_t __b
)
17417 return __a
>= __b
? -1 : 0;
17420 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17421 vcged_s64 (int64x1_t __a
, int64x1_t __b
)
17423 return __a
>= __b
? -1ll : 0ll;
17426 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17427 vcged_u64 (uint64x1_t __a
, uint64x1_t __b
)
17429 return __a
>= __b
? -1ll : 0ll;
17432 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
17433 vcged_f64 (float64_t __a
, float64_t __b
)
17435 return __a
>= __b
? -1ll : 0ll;
17438 /* vcgez - vector. */
17440 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17441 vcgez_f32 (float32x2_t __a
)
17443 float32x2_t __b
= {0.0f
, 0.0f
};
17444 return (uint32x2_t
) __builtin_aarch64_cmgev2sf (__a
, __b
);
17447 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17448 vcgez_f64 (float64x1_t __a
)
17450 return __a
>= 0.0 ? -1ll : 0ll;
17453 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17454 vcgez_p8 (poly8x8_t __a
)
17456 poly8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17457 return (uint8x8_t
) __builtin_aarch64_cmgev8qi ((int8x8_t
) __a
,
17461 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17462 vcgez_s8 (int8x8_t __a
)
17464 int8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17465 return (uint8x8_t
) __builtin_aarch64_cmgev8qi (__a
, __b
);
17468 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17469 vcgez_s16 (int16x4_t __a
)
17471 int16x4_t __b
= {0, 0, 0, 0};
17472 return (uint16x4_t
) __builtin_aarch64_cmgev4hi (__a
, __b
);
17475 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17476 vcgez_s32 (int32x2_t __a
)
17478 int32x2_t __b
= {0, 0};
17479 return (uint32x2_t
) __builtin_aarch64_cmgev2si (__a
, __b
);
17482 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17483 vcgez_s64 (int64x1_t __a
)
17485 return __a
>= 0ll ? -1ll : 0ll;
17488 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17489 vcgez_u8 (uint8x8_t __a
)
17491 uint8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17492 return (uint8x8_t
) __builtin_aarch64_cmgeuv8qi ((int8x8_t
) __a
,
17496 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17497 vcgez_u16 (uint16x4_t __a
)
17499 uint16x4_t __b
= {0, 0, 0, 0};
17500 return (uint16x4_t
) __builtin_aarch64_cmgeuv4hi ((int16x4_t
) __a
,
17504 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17505 vcgez_u32 (uint32x2_t __a
)
17507 uint32x2_t __b
= {0, 0};
17508 return (uint32x2_t
) __builtin_aarch64_cmgeuv2si ((int32x2_t
) __a
,
17512 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17513 vcgez_u64 (uint64x1_t __a
)
17515 return __a
>= 0ll ? -1ll : 0ll;
17518 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17519 vcgezq_f32 (float32x4_t __a
)
17521 float32x4_t __b
= {0.0f
, 0.0f
, 0.0f
, 0.0f
};
17522 return (uint32x4_t
) __builtin_aarch64_cmgev4sf (__a
, __b
);
17525 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17526 vcgezq_f64 (float64x2_t __a
)
17528 float64x2_t __b
= {0.0, 0.0};
17529 return (uint64x2_t
) __builtin_aarch64_cmgev2df (__a
, __b
);
17532 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17533 vcgezq_p8 (poly8x16_t __a
)
17535 poly8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
17536 0, 0, 0, 0, 0, 0, 0, 0};
17537 return (uint8x16_t
) __builtin_aarch64_cmgev16qi ((int8x16_t
) __a
,
17541 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17542 vcgezq_s8 (int8x16_t __a
)
17544 int8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
17545 0, 0, 0, 0, 0, 0, 0, 0};
17546 return (uint8x16_t
) __builtin_aarch64_cmgev16qi (__a
, __b
);
17549 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17550 vcgezq_s16 (int16x8_t __a
)
17552 int16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17553 return (uint16x8_t
) __builtin_aarch64_cmgev8hi (__a
, __b
);
17556 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17557 vcgezq_s32 (int32x4_t __a
)
17559 int32x4_t __b
= {0, 0, 0, 0};
17560 return (uint32x4_t
) __builtin_aarch64_cmgev4si (__a
, __b
);
17563 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17564 vcgezq_s64 (int64x2_t __a
)
17566 int64x2_t __b
= {0, 0};
17567 return (uint64x2_t
) __builtin_aarch64_cmgev2di (__a
, __b
);
17570 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17571 vcgezq_u8 (uint8x16_t __a
)
17573 uint8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
17574 0, 0, 0, 0, 0, 0, 0, 0};
17575 return (uint8x16_t
) __builtin_aarch64_cmgeuv16qi ((int8x16_t
) __a
,
17579 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17580 vcgezq_u16 (uint16x8_t __a
)
17582 uint16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17583 return (uint16x8_t
) __builtin_aarch64_cmgeuv8hi ((int16x8_t
) __a
,
17587 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17588 vcgezq_u32 (uint32x4_t __a
)
17590 uint32x4_t __b
= {0, 0, 0, 0};
17591 return (uint32x4_t
) __builtin_aarch64_cmgeuv4si ((int32x4_t
) __a
,
17595 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17596 vcgezq_u64 (uint64x2_t __a
)
17598 uint64x2_t __b
= {0, 0};
17599 return (uint64x2_t
) __builtin_aarch64_cmgeuv2di ((int64x2_t
) __a
,
17603 /* vcgez - scalar. */
17605 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
17606 vcgezs_f32 (float32_t __a
)
17608 return __a
>= 0.0f
? -1 : 0;
17611 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17612 vcgezd_s64 (int64x1_t __a
)
17614 return __a
>= 0 ? -1ll : 0ll;
17617 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17618 vcgezd_u64 (int64x1_t __a
)
17620 return __a
>= 0 ? -1ll : 0ll;
17623 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
17624 vcgezd_f64 (float64_t __a
)
17626 return __a
>= 0.0 ? -1ll : 0ll;
17629 /* vcgt - vector. */
17631 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17632 vcgt_f32 (float32x2_t __a
, float32x2_t __b
)
17634 return (uint32x2_t
) __builtin_aarch64_cmgtv2sf (__a
, __b
);
17637 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17638 vcgt_f64 (float64x1_t __a
, float64x1_t __b
)
17640 return __a
> __b
? -1ll : 0ll;
17643 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17644 vcgt_p8 (poly8x8_t __a
, poly8x8_t __b
)
17646 return (uint8x8_t
) __builtin_aarch64_cmgtv8qi ((int8x8_t
) __a
,
17650 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17651 vcgt_s8 (int8x8_t __a
, int8x8_t __b
)
17653 return (uint8x8_t
) __builtin_aarch64_cmgtv8qi (__a
, __b
);
17656 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17657 vcgt_s16 (int16x4_t __a
, int16x4_t __b
)
17659 return (uint16x4_t
) __builtin_aarch64_cmgtv4hi (__a
, __b
);
17662 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17663 vcgt_s32 (int32x2_t __a
, int32x2_t __b
)
17665 return (uint32x2_t
) __builtin_aarch64_cmgtv2si (__a
, __b
);
17668 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17669 vcgt_s64 (int64x1_t __a
, int64x1_t __b
)
17671 return __a
> __b
? -1ll : 0ll;
17674 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17675 vcgt_u8 (uint8x8_t __a
, uint8x8_t __b
)
17677 return (uint8x8_t
) __builtin_aarch64_cmgtuv8qi ((int8x8_t
) __a
,
17681 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17682 vcgt_u16 (uint16x4_t __a
, uint16x4_t __b
)
17684 return (uint16x4_t
) __builtin_aarch64_cmgtuv4hi ((int16x4_t
) __a
,
17688 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17689 vcgt_u32 (uint32x2_t __a
, uint32x2_t __b
)
17691 return (uint32x2_t
) __builtin_aarch64_cmgtuv2si ((int32x2_t
) __a
,
17695 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17696 vcgt_u64 (uint64x1_t __a
, uint64x1_t __b
)
17698 return __a
> __b
? -1ll : 0ll;
17701 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17702 vcgtq_f32 (float32x4_t __a
, float32x4_t __b
)
17704 return (uint32x4_t
) __builtin_aarch64_cmgtv4sf (__a
, __b
);
17707 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17708 vcgtq_f64 (float64x2_t __a
, float64x2_t __b
)
17710 return (uint64x2_t
) __builtin_aarch64_cmgtv2df (__a
, __b
);
17713 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17714 vcgtq_p8 (poly8x16_t __a
, poly8x16_t __b
)
17716 return (uint8x16_t
) __builtin_aarch64_cmgtv16qi ((int8x16_t
) __a
,
17720 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17721 vcgtq_s8 (int8x16_t __a
, int8x16_t __b
)
17723 return (uint8x16_t
) __builtin_aarch64_cmgtv16qi (__a
, __b
);
17726 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17727 vcgtq_s16 (int16x8_t __a
, int16x8_t __b
)
17729 return (uint16x8_t
) __builtin_aarch64_cmgtv8hi (__a
, __b
);
17732 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17733 vcgtq_s32 (int32x4_t __a
, int32x4_t __b
)
17735 return (uint32x4_t
) __builtin_aarch64_cmgtv4si (__a
, __b
);
17738 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17739 vcgtq_s64 (int64x2_t __a
, int64x2_t __b
)
17741 return (uint64x2_t
) __builtin_aarch64_cmgtv2di (__a
, __b
);
17744 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17745 vcgtq_u8 (uint8x16_t __a
, uint8x16_t __b
)
17747 return (uint8x16_t
) __builtin_aarch64_cmgtuv16qi ((int8x16_t
) __a
,
17751 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17752 vcgtq_u16 (uint16x8_t __a
, uint16x8_t __b
)
17754 return (uint16x8_t
) __builtin_aarch64_cmgtuv8hi ((int16x8_t
) __a
,
17758 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17759 vcgtq_u32 (uint32x4_t __a
, uint32x4_t __b
)
17761 return (uint32x4_t
) __builtin_aarch64_cmgtuv4si ((int32x4_t
) __a
,
17765 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17766 vcgtq_u64 (uint64x2_t __a
, uint64x2_t __b
)
17768 return (uint64x2_t
) __builtin_aarch64_cmgtuv2di ((int64x2_t
) __a
,
17772 /* vcgt - scalar. */
17774 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
17775 vcgts_f32 (float32_t __a
, float32_t __b
)
17777 return __a
> __b
? -1 : 0;
17780 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17781 vcgtd_s64 (int64x1_t __a
, int64x1_t __b
)
17783 return __a
> __b
? -1ll : 0ll;
17786 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17787 vcgtd_u64 (uint64x1_t __a
, uint64x1_t __b
)
17789 return __a
> __b
? -1ll : 0ll;
17792 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
17793 vcgtd_f64 (float64_t __a
, float64_t __b
)
17795 return __a
> __b
? -1ll : 0ll;
17798 /* vcgtz - vector. */
17800 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17801 vcgtz_f32 (float32x2_t __a
)
17803 float32x2_t __b
= {0.0f
, 0.0f
};
17804 return (uint32x2_t
) __builtin_aarch64_cmgtv2sf (__a
, __b
);
17807 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17808 vcgtz_f64 (float64x1_t __a
)
17810 return __a
> 0.0 ? -1ll : 0ll;
17813 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17814 vcgtz_p8 (poly8x8_t __a
)
17816 poly8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17817 return (uint8x8_t
) __builtin_aarch64_cmgtv8qi ((int8x8_t
) __a
,
17821 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17822 vcgtz_s8 (int8x8_t __a
)
17824 int8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17825 return (uint8x8_t
) __builtin_aarch64_cmgtv8qi (__a
, __b
);
17828 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17829 vcgtz_s16 (int16x4_t __a
)
17831 int16x4_t __b
= {0, 0, 0, 0};
17832 return (uint16x4_t
) __builtin_aarch64_cmgtv4hi (__a
, __b
);
17835 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17836 vcgtz_s32 (int32x2_t __a
)
17838 int32x2_t __b
= {0, 0};
17839 return (uint32x2_t
) __builtin_aarch64_cmgtv2si (__a
, __b
);
17842 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17843 vcgtz_s64 (int64x1_t __a
)
17845 return __a
> 0ll ? -1ll : 0ll;
17848 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17849 vcgtz_u8 (uint8x8_t __a
)
17851 uint8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17852 return (uint8x8_t
) __builtin_aarch64_cmgtuv8qi ((int8x8_t
) __a
,
17856 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17857 vcgtz_u16 (uint16x4_t __a
)
17859 uint16x4_t __b
= {0, 0, 0, 0};
17860 return (uint16x4_t
) __builtin_aarch64_cmgtuv4hi ((int16x4_t
) __a
,
17864 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17865 vcgtz_u32 (uint32x2_t __a
)
17867 uint32x2_t __b
= {0, 0};
17868 return (uint32x2_t
) __builtin_aarch64_cmgtuv2si ((int32x2_t
) __a
,
17872 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17873 vcgtz_u64 (uint64x1_t __a
)
17875 return __a
> 0ll ? -1ll : 0ll;
17878 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17879 vcgtzq_f32 (float32x4_t __a
)
17881 float32x4_t __b
= {0.0f
, 0.0f
, 0.0f
, 0.0f
};
17882 return (uint32x4_t
) __builtin_aarch64_cmgtv4sf (__a
, __b
);
17885 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17886 vcgtzq_f64 (float64x2_t __a
)
17888 float64x2_t __b
= {0.0, 0.0};
17889 return (uint64x2_t
) __builtin_aarch64_cmgtv2df (__a
, __b
);
17892 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17893 vcgtzq_p8 (poly8x16_t __a
)
17895 poly8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
17896 0, 0, 0, 0, 0, 0, 0, 0};
17897 return (uint8x16_t
) __builtin_aarch64_cmgtv16qi ((int8x16_t
) __a
,
17901 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17902 vcgtzq_s8 (int8x16_t __a
)
17904 int8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
17905 0, 0, 0, 0, 0, 0, 0, 0};
17906 return (uint8x16_t
) __builtin_aarch64_cmgtv16qi (__a
, __b
);
17909 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17910 vcgtzq_s16 (int16x8_t __a
)
17912 int16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17913 return (uint16x8_t
) __builtin_aarch64_cmgtv8hi (__a
, __b
);
17916 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17917 vcgtzq_s32 (int32x4_t __a
)
17919 int32x4_t __b
= {0, 0, 0, 0};
17920 return (uint32x4_t
) __builtin_aarch64_cmgtv4si (__a
, __b
);
17923 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17924 vcgtzq_s64 (int64x2_t __a
)
17926 int64x2_t __b
= {0, 0};
17927 return (uint64x2_t
) __builtin_aarch64_cmgtv2di (__a
, __b
);
17930 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17931 vcgtzq_u8 (uint8x16_t __a
)
17933 uint8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
17934 0, 0, 0, 0, 0, 0, 0, 0};
17935 return (uint8x16_t
) __builtin_aarch64_cmgtuv16qi ((int8x16_t
) __a
,
17939 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17940 vcgtzq_u16 (uint16x8_t __a
)
17942 uint16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17943 return (uint16x8_t
) __builtin_aarch64_cmgtuv8hi ((int16x8_t
) __a
,
17947 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17948 vcgtzq_u32 (uint32x4_t __a
)
17950 uint32x4_t __b
= {0, 0, 0, 0};
17951 return (uint32x4_t
) __builtin_aarch64_cmgtuv4si ((int32x4_t
) __a
,
17955 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17956 vcgtzq_u64 (uint64x2_t __a
)
17958 uint64x2_t __b
= {0, 0};
17959 return (uint64x2_t
) __builtin_aarch64_cmgtuv2di ((int64x2_t
) __a
,
17963 /* vcgtz - scalar. */
17965 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
17966 vcgtzs_f32 (float32_t __a
)
17968 return __a
> 0.0f
? -1 : 0;
17971 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17972 vcgtzd_s64 (int64x1_t __a
)
17974 return __a
> 0 ? -1ll : 0ll;
17977 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17978 vcgtzd_u64 (int64x1_t __a
)
17980 return __a
> 0 ? -1ll : 0ll;
17983 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
17984 vcgtzd_f64 (float64_t __a
)
17986 return __a
> 0.0 ? -1ll : 0ll;
17989 /* vcle - vector. */
17991 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17992 vcle_f32 (float32x2_t __a
, float32x2_t __b
)
17994 return (uint32x2_t
) __builtin_aarch64_cmgev2sf (__b
, __a
);
17997 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17998 vcle_f64 (float64x1_t __a
, float64x1_t __b
)
18000 return __a
<= __b
? -1ll : 0ll;
18003 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
18004 vcle_p8 (poly8x8_t __a
, poly8x8_t __b
)
18006 return (uint8x8_t
) __builtin_aarch64_cmgev8qi ((int8x8_t
) __b
,
18010 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
18011 vcle_s8 (int8x8_t __a
, int8x8_t __b
)
18013 return (uint8x8_t
) __builtin_aarch64_cmgev8qi (__b
, __a
);
18016 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
18017 vcle_s16 (int16x4_t __a
, int16x4_t __b
)
18019 return (uint16x4_t
) __builtin_aarch64_cmgev4hi (__b
, __a
);
18022 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18023 vcle_s32 (int32x2_t __a
, int32x2_t __b
)
18025 return (uint32x2_t
) __builtin_aarch64_cmgev2si (__b
, __a
);
18028 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18029 vcle_s64 (int64x1_t __a
, int64x1_t __b
)
18031 return __a
<= __b
? -1ll : 0ll;
18034 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
18035 vcle_u8 (uint8x8_t __a
, uint8x8_t __b
)
18037 return (uint8x8_t
) __builtin_aarch64_cmgeuv8qi ((int8x8_t
) __b
,
18041 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
18042 vcle_u16 (uint16x4_t __a
, uint16x4_t __b
)
18044 return (uint16x4_t
) __builtin_aarch64_cmgeuv4hi ((int16x4_t
) __b
,
18048 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18049 vcle_u32 (uint32x2_t __a
, uint32x2_t __b
)
18051 return (uint32x2_t
) __builtin_aarch64_cmgeuv2si ((int32x2_t
) __b
,
18055 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18056 vcle_u64 (uint64x1_t __a
, uint64x1_t __b
)
18058 return __a
<= __b
? -1ll : 0ll;
18061 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18062 vcleq_f32 (float32x4_t __a
, float32x4_t __b
)
18064 return (uint32x4_t
) __builtin_aarch64_cmgev4sf (__b
, __a
);
18067 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18068 vcleq_f64 (float64x2_t __a
, float64x2_t __b
)
18070 return (uint64x2_t
) __builtin_aarch64_cmgev2df (__b
, __a
);
18073 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
18074 vcleq_p8 (poly8x16_t __a
, poly8x16_t __b
)
18076 return (uint8x16_t
) __builtin_aarch64_cmgev16qi ((int8x16_t
) __b
,
18080 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
18081 vcleq_s8 (int8x16_t __a
, int8x16_t __b
)
18083 return (uint8x16_t
) __builtin_aarch64_cmgev16qi (__b
, __a
);
18086 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
18087 vcleq_s16 (int16x8_t __a
, int16x8_t __b
)
18089 return (uint16x8_t
) __builtin_aarch64_cmgev8hi (__b
, __a
);
18092 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18093 vcleq_s32 (int32x4_t __a
, int32x4_t __b
)
18095 return (uint32x4_t
) __builtin_aarch64_cmgev4si (__b
, __a
);
18098 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18099 vcleq_s64 (int64x2_t __a
, int64x2_t __b
)
18101 return (uint64x2_t
) __builtin_aarch64_cmgev2di (__b
, __a
);
18104 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
18105 vcleq_u8 (uint8x16_t __a
, uint8x16_t __b
)
18107 return (uint8x16_t
) __builtin_aarch64_cmgeuv16qi ((int8x16_t
) __b
,
18111 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
18112 vcleq_u16 (uint16x8_t __a
, uint16x8_t __b
)
18114 return (uint16x8_t
) __builtin_aarch64_cmgeuv8hi ((int16x8_t
) __b
,
18118 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18119 vcleq_u32 (uint32x4_t __a
, uint32x4_t __b
)
18121 return (uint32x4_t
) __builtin_aarch64_cmgeuv4si ((int32x4_t
) __b
,
18125 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18126 vcleq_u64 (uint64x2_t __a
, uint64x2_t __b
)
18128 return (uint64x2_t
) __builtin_aarch64_cmgeuv2di ((int64x2_t
) __b
,
18132 /* vcle - scalar. */
18134 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
18135 vcles_f32 (float32_t __a
, float32_t __b
)
18137 return __a
<= __b
? -1 : 0;
18140 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18141 vcled_s64 (int64x1_t __a
, int64x1_t __b
)
18143 return __a
<= __b
? -1ll : 0ll;
18146 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18147 vcled_u64 (uint64x1_t __a
, uint64x1_t __b
)
18149 return __a
<= __b
? -1ll : 0ll;
18152 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
18153 vcled_f64 (float64_t __a
, float64_t __b
)
18155 return __a
<= __b
? -1ll : 0ll;
18158 /* vclez - vector. */
18160 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18161 vclez_f32 (float32x2_t __a
)
18163 float32x2_t __b
= {0.0f
, 0.0f
};
18164 return (uint32x2_t
) __builtin_aarch64_cmlev2sf (__a
, __b
);
18167 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18168 vclez_f64 (float64x1_t __a
)
18170 return __a
<= 0.0 ? -1ll : 0ll;
18173 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
18174 vclez_p8 (poly8x8_t __a
)
18176 poly8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
18177 return (uint8x8_t
) __builtin_aarch64_cmlev8qi ((int8x8_t
) __a
,
18181 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
18182 vclez_s8 (int8x8_t __a
)
18184 int8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
18185 return (uint8x8_t
) __builtin_aarch64_cmlev8qi (__a
, __b
);
18188 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
18189 vclez_s16 (int16x4_t __a
)
18191 int16x4_t __b
= {0, 0, 0, 0};
18192 return (uint16x4_t
) __builtin_aarch64_cmlev4hi (__a
, __b
);
18195 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18196 vclez_s32 (int32x2_t __a
)
18198 int32x2_t __b
= {0, 0};
18199 return (uint32x2_t
) __builtin_aarch64_cmlev2si (__a
, __b
);
18202 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18203 vclez_s64 (int64x1_t __a
)
18205 return __a
<= 0ll ? -1ll : 0ll;
18208 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18209 vclez_u64 (uint64x1_t __a
)
18211 return __a
<= 0ll ? -1ll : 0ll;
18214 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18215 vclezq_f32 (float32x4_t __a
)
18217 float32x4_t __b
= {0.0f
, 0.0f
, 0.0f
, 0.0f
};
18218 return (uint32x4_t
) __builtin_aarch64_cmlev4sf (__a
, __b
);
18221 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18222 vclezq_f64 (float64x2_t __a
)
18224 float64x2_t __b
= {0.0, 0.0};
18225 return (uint64x2_t
) __builtin_aarch64_cmlev2df (__a
, __b
);
18228 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
18229 vclezq_p8 (poly8x16_t __a
)
18231 poly8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
18232 0, 0, 0, 0, 0, 0, 0, 0};
18233 return (uint8x16_t
) __builtin_aarch64_cmlev16qi ((int8x16_t
) __a
,
18237 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
18238 vclezq_s8 (int8x16_t __a
)
18240 int8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
18241 0, 0, 0, 0, 0, 0, 0, 0};
18242 return (uint8x16_t
) __builtin_aarch64_cmlev16qi (__a
, __b
);
18245 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
18246 vclezq_s16 (int16x8_t __a
)
18248 int16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
18249 return (uint16x8_t
) __builtin_aarch64_cmlev8hi (__a
, __b
);
18252 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18253 vclezq_s32 (int32x4_t __a
)
18255 int32x4_t __b
= {0, 0, 0, 0};
18256 return (uint32x4_t
) __builtin_aarch64_cmlev4si (__a
, __b
);
18259 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18260 vclezq_s64 (int64x2_t __a
)
18262 int64x2_t __b
= {0, 0};
18263 return (uint64x2_t
) __builtin_aarch64_cmlev2di (__a
, __b
);
18266 /* vclez - scalar. */
18268 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
18269 vclezs_f32 (float32_t __a
)
18271 return __a
<= 0.0f
? -1 : 0;
18274 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18275 vclezd_s64 (int64x1_t __a
)
18277 return __a
<= 0 ? -1ll : 0ll;
18280 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18281 vclezd_u64 (int64x1_t __a
)
18283 return __a
<= 0 ? -1ll : 0ll;
18286 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
18287 vclezd_f64 (float64_t __a
)
18289 return __a
<= 0.0 ? -1ll : 0ll;
18292 /* vclt - vector. */
18294 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18295 vclt_f32 (float32x2_t __a
, float32x2_t __b
)
18297 return (uint32x2_t
) __builtin_aarch64_cmgtv2sf (__b
, __a
);
18300 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18301 vclt_f64 (float64x1_t __a
, float64x1_t __b
)
18303 return __a
< __b
? -1ll : 0ll;
18306 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
18307 vclt_p8 (poly8x8_t __a
, poly8x8_t __b
)
18309 return (uint8x8_t
) __builtin_aarch64_cmgtv8qi ((int8x8_t
) __b
,
18313 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
18314 vclt_s8 (int8x8_t __a
, int8x8_t __b
)
18316 return (uint8x8_t
) __builtin_aarch64_cmgtv8qi (__b
, __a
);
18319 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
18320 vclt_s16 (int16x4_t __a
, int16x4_t __b
)
18322 return (uint16x4_t
) __builtin_aarch64_cmgtv4hi (__b
, __a
);
18325 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18326 vclt_s32 (int32x2_t __a
, int32x2_t __b
)
18328 return (uint32x2_t
) __builtin_aarch64_cmgtv2si (__b
, __a
);
18331 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18332 vclt_s64 (int64x1_t __a
, int64x1_t __b
)
18334 return __a
< __b
? -1ll : 0ll;
18337 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
18338 vclt_u8 (uint8x8_t __a
, uint8x8_t __b
)
18340 return (uint8x8_t
) __builtin_aarch64_cmgtuv8qi ((int8x8_t
) __b
,
18344 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
18345 vclt_u16 (uint16x4_t __a
, uint16x4_t __b
)
18347 return (uint16x4_t
) __builtin_aarch64_cmgtuv4hi ((int16x4_t
) __b
,
18351 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18352 vclt_u32 (uint32x2_t __a
, uint32x2_t __b
)
18354 return (uint32x2_t
) __builtin_aarch64_cmgtuv2si ((int32x2_t
) __b
,
18358 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18359 vclt_u64 (uint64x1_t __a
, uint64x1_t __b
)
18361 return __a
< __b
? -1ll : 0ll;
18364 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18365 vcltq_f32 (float32x4_t __a
, float32x4_t __b
)
18367 return (uint32x4_t
) __builtin_aarch64_cmgtv4sf (__b
, __a
);
18370 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18371 vcltq_f64 (float64x2_t __a
, float64x2_t __b
)
18373 return (uint64x2_t
) __builtin_aarch64_cmgtv2df (__b
, __a
);
18376 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
18377 vcltq_p8 (poly8x16_t __a
, poly8x16_t __b
)
18379 return (uint8x16_t
) __builtin_aarch64_cmgtv16qi ((int8x16_t
) __b
,
18383 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
18384 vcltq_s8 (int8x16_t __a
, int8x16_t __b
)
18386 return (uint8x16_t
) __builtin_aarch64_cmgtv16qi (__b
, __a
);
18389 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
18390 vcltq_s16 (int16x8_t __a
, int16x8_t __b
)
18392 return (uint16x8_t
) __builtin_aarch64_cmgtv8hi (__b
, __a
);
18395 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18396 vcltq_s32 (int32x4_t __a
, int32x4_t __b
)
18398 return (uint32x4_t
) __builtin_aarch64_cmgtv4si (__b
, __a
);
18401 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18402 vcltq_s64 (int64x2_t __a
, int64x2_t __b
)
18404 return (uint64x2_t
) __builtin_aarch64_cmgtv2di (__b
, __a
);
18407 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
18408 vcltq_u8 (uint8x16_t __a
, uint8x16_t __b
)
18410 return (uint8x16_t
) __builtin_aarch64_cmgtuv16qi ((int8x16_t
) __b
,
18414 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
18415 vcltq_u16 (uint16x8_t __a
, uint16x8_t __b
)
18417 return (uint16x8_t
) __builtin_aarch64_cmgtuv8hi ((int16x8_t
) __b
,
18421 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18422 vcltq_u32 (uint32x4_t __a
, uint32x4_t __b
)
18424 return (uint32x4_t
) __builtin_aarch64_cmgtuv4si ((int32x4_t
) __b
,
18428 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18429 vcltq_u64 (uint64x2_t __a
, uint64x2_t __b
)
18431 return (uint64x2_t
) __builtin_aarch64_cmgtuv2di ((int64x2_t
) __b
,
18435 /* vclt - scalar. */
18437 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
18438 vclts_f32 (float32_t __a
, float32_t __b
)
18440 return __a
< __b
? -1 : 0;
18443 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18444 vcltd_s64 (int64x1_t __a
, int64x1_t __b
)
18446 return __a
< __b
? -1ll : 0ll;
18449 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18450 vcltd_u64 (uint64x1_t __a
, uint64x1_t __b
)
18452 return __a
< __b
? -1ll : 0ll;
18455 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
18456 vcltd_f64 (float64_t __a
, float64_t __b
)
18458 return __a
< __b
? -1ll : 0ll;
18461 /* vcltz - vector. */
18463 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18464 vcltz_f32 (float32x2_t __a
)
18466 float32x2_t __b
= {0.0f
, 0.0f
};
18467 return (uint32x2_t
) __builtin_aarch64_cmltv2sf (__a
, __b
);
18470 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18471 vcltz_f64 (float64x1_t __a
)
18473 return __a
< 0.0 ? -1ll : 0ll;
18476 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
18477 vcltz_p8 (poly8x8_t __a
)
18479 poly8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
18480 return (uint8x8_t
) __builtin_aarch64_cmltv8qi ((int8x8_t
) __a
,
18484 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
18485 vcltz_s8 (int8x8_t __a
)
18487 int8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
18488 return (uint8x8_t
) __builtin_aarch64_cmltv8qi (__a
, __b
);
18491 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
18492 vcltz_s16 (int16x4_t __a
)
18494 int16x4_t __b
= {0, 0, 0, 0};
18495 return (uint16x4_t
) __builtin_aarch64_cmltv4hi (__a
, __b
);
18498 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18499 vcltz_s32 (int32x2_t __a
)
18501 int32x2_t __b
= {0, 0};
18502 return (uint32x2_t
) __builtin_aarch64_cmltv2si (__a
, __b
);
18505 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18506 vcltz_s64 (int64x1_t __a
)
18508 return __a
< 0ll ? -1ll : 0ll;
18511 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18512 vcltzq_f32 (float32x4_t __a
)
18514 float32x4_t __b
= {0.0f
, 0.0f
, 0.0f
, 0.0f
};
18515 return (uint32x4_t
) __builtin_aarch64_cmltv4sf (__a
, __b
);
18518 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18519 vcltzq_f64 (float64x2_t __a
)
18521 float64x2_t __b
= {0.0, 0.0};
18522 return (uint64x2_t
) __builtin_aarch64_cmltv2df (__a
, __b
);
18525 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
18526 vcltzq_p8 (poly8x16_t __a
)
18528 poly8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
18529 0, 0, 0, 0, 0, 0, 0, 0};
18530 return (uint8x16_t
) __builtin_aarch64_cmltv16qi ((int8x16_t
) __a
,
18534 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
18535 vcltzq_s8 (int8x16_t __a
)
18537 int8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
18538 0, 0, 0, 0, 0, 0, 0, 0};
18539 return (uint8x16_t
) __builtin_aarch64_cmltv16qi (__a
, __b
);
18542 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
18543 vcltzq_s16 (int16x8_t __a
)
18545 int16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
18546 return (uint16x8_t
) __builtin_aarch64_cmltv8hi (__a
, __b
);
18549 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18550 vcltzq_s32 (int32x4_t __a
)
18552 int32x4_t __b
= {0, 0, 0, 0};
18553 return (uint32x4_t
) __builtin_aarch64_cmltv4si (__a
, __b
);
18556 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18557 vcltzq_s64 (int64x2_t __a
)
18559 int64x2_t __b
= {0, 0};
18560 return (uint64x2_t
) __builtin_aarch64_cmltv2di (__a
, __b
);
18563 /* vcltz - scalar. */
18565 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
18566 vcltzs_f32 (float32_t __a
)
18568 return __a
< 0.0f
? -1 : 0;
18571 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18572 vcltzd_s64 (int64x1_t __a
)
18574 return __a
< 0 ? -1ll : 0ll;
18577 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18578 vcltzd_u64 (int64x1_t __a
)
18580 return __a
< 0 ? -1ll : 0ll;
18583 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
18584 vcltzd_f64 (float64_t __a
)
18586 return __a
< 0.0 ? -1ll : 0ll;
18589 /* vcvt (double -> float). */
18591 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
18592 vcvt_f32_f64 (float64x2_t __a
)
18594 return __builtin_aarch64_float_truncate_lo_v2sf (__a
);
18597 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
18598 vcvt_high_f32_f64 (float32x2_t __a
, float64x2_t __b
)
18600 return __builtin_aarch64_float_truncate_hi_v4sf (__a
, __b
);
18603 /* vcvt (float -> double). */
18605 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
18606 vcvt_f64_f32 (float32x2_t __a
)
18609 return __builtin_aarch64_float_extend_lo_v2df (__a
);
18612 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
18613 vcvt_high_f64_f32 (float32x4_t __a
)
18615 return __builtin_aarch64_vec_unpacks_hi_v4sf (__a
);
18618 /* vcvt (<u>int -> float) */
18620 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
18621 vcvtd_f64_s64 (int64_t __a
)
18623 return (float64_t
) __a
;
18626 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
18627 vcvtd_f64_u64 (uint64_t __a
)
18629 return (float64_t
) __a
;
18632 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
18633 vcvts_f32_s32 (int32_t __a
)
18635 return (float32_t
) __a
;
18638 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
18639 vcvts_f32_u32 (uint32_t __a
)
18641 return (float32_t
) __a
;
18644 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
18645 vcvt_f32_s32 (int32x2_t __a
)
18647 return __builtin_aarch64_floatv2siv2sf (__a
);
18650 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
18651 vcvt_f32_u32 (uint32x2_t __a
)
18653 return __builtin_aarch64_floatunsv2siv2sf ((int32x2_t
) __a
);
18656 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
18657 vcvtq_f32_s32 (int32x4_t __a
)
18659 return __builtin_aarch64_floatv4siv4sf (__a
);
18662 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
18663 vcvtq_f32_u32 (uint32x4_t __a
)
18665 return __builtin_aarch64_floatunsv4siv4sf ((int32x4_t
) __a
);
18668 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
18669 vcvtq_f64_s64 (int64x2_t __a
)
18671 return __builtin_aarch64_floatv2div2df (__a
);
18674 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
18675 vcvtq_f64_u64 (uint64x2_t __a
)
18677 return __builtin_aarch64_floatunsv2div2df ((int64x2_t
) __a
);
18680 /* vcvt (float -> <u>int) */
18682 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
18683 vcvtd_s64_f64 (float64_t __a
)
18685 return (int64_t) __a
;
18688 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
18689 vcvtd_u64_f64 (float64_t __a
)
18691 return (uint64_t) __a
;
18694 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
18695 vcvts_s32_f32 (float32_t __a
)
18697 return (int32_t) __a
;
18700 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
18701 vcvts_u32_f32 (float32_t __a
)
18703 return (uint32_t) __a
;
18706 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
18707 vcvt_s32_f32 (float32x2_t __a
)
18709 return __builtin_aarch64_lbtruncv2sfv2si (__a
);
18712 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18713 vcvt_u32_f32 (float32x2_t __a
)
18715 /* TODO: This cast should go away when builtins have
18716 their correct types. */
18717 return (uint32x2_t
) __builtin_aarch64_lbtruncuv2sfv2si (__a
);
18720 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
18721 vcvtq_s32_f32 (float32x4_t __a
)
18723 return __builtin_aarch64_lbtruncv4sfv4si (__a
);
18726 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18727 vcvtq_u32_f32 (float32x4_t __a
)
18729 /* TODO: This cast should go away when builtins have
18730 their correct types. */
18731 return (uint32x4_t
) __builtin_aarch64_lbtruncuv4sfv4si (__a
);
18734 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
18735 vcvtq_s64_f64 (float64x2_t __a
)
18737 return __builtin_aarch64_lbtruncv2dfv2di (__a
);
18740 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18741 vcvtq_u64_f64 (float64x2_t __a
)
18743 /* TODO: This cast should go away when builtins have
18744 their correct types. */
18745 return (uint64x2_t
) __builtin_aarch64_lbtruncuv2dfv2di (__a
);
18750 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
18751 vcvtad_s64_f64 (float64_t __a
)
18753 return __builtin_aarch64_lrounddfdi (__a
);
18756 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
18757 vcvtad_u64_f64 (float64_t __a
)
18759 return __builtin_aarch64_lroundudfdi (__a
);
18762 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
18763 vcvtas_s32_f32 (float32_t __a
)
18765 return __builtin_aarch64_lroundsfsi (__a
);
18768 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
18769 vcvtas_u32_f32 (float32_t __a
)
18771 return __builtin_aarch64_lroundusfsi (__a
);
18774 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
18775 vcvta_s32_f32 (float32x2_t __a
)
18777 return __builtin_aarch64_lroundv2sfv2si (__a
);
18780 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18781 vcvta_u32_f32 (float32x2_t __a
)
18783 /* TODO: This cast should go away when builtins have
18784 their correct types. */
18785 return (uint32x2_t
) __builtin_aarch64_lrounduv2sfv2si (__a
);
18788 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
18789 vcvtaq_s32_f32 (float32x4_t __a
)
18791 return __builtin_aarch64_lroundv4sfv4si (__a
);
18794 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18795 vcvtaq_u32_f32 (float32x4_t __a
)
18797 /* TODO: This cast should go away when builtins have
18798 their correct types. */
18799 return (uint32x4_t
) __builtin_aarch64_lrounduv4sfv4si (__a
);
18802 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
18803 vcvtaq_s64_f64 (float64x2_t __a
)
18805 return __builtin_aarch64_lroundv2dfv2di (__a
);
18808 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18809 vcvtaq_u64_f64 (float64x2_t __a
)
18811 /* TODO: This cast should go away when builtins have
18812 their correct types. */
18813 return (uint64x2_t
) __builtin_aarch64_lrounduv2dfv2di (__a
);
18818 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
18819 vcvtmd_s64_f64 (float64_t __a
)
18821 return __builtin_lfloor (__a
);
18824 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
18825 vcvtmd_u64_f64 (float64_t __a
)
18827 return __builtin_aarch64_lfloorudfdi (__a
);
18830 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
18831 vcvtms_s32_f32 (float32_t __a
)
18833 return __builtin_ifloorf (__a
);
18836 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
18837 vcvtms_u32_f32 (float32_t __a
)
18839 return __builtin_aarch64_lfloorusfsi (__a
);
18842 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
18843 vcvtm_s32_f32 (float32x2_t __a
)
18845 return __builtin_aarch64_lfloorv2sfv2si (__a
);
18848 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18849 vcvtm_u32_f32 (float32x2_t __a
)
18851 /* TODO: This cast should go away when builtins have
18852 their correct types. */
18853 return (uint32x2_t
) __builtin_aarch64_lflooruv2sfv2si (__a
);
18856 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
18857 vcvtmq_s32_f32 (float32x4_t __a
)
18859 return __builtin_aarch64_lfloorv4sfv4si (__a
);
18862 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18863 vcvtmq_u32_f32 (float32x4_t __a
)
18865 /* TODO: This cast should go away when builtins have
18866 their correct types. */
18867 return (uint32x4_t
) __builtin_aarch64_lflooruv4sfv4si (__a
);
18870 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
18871 vcvtmq_s64_f64 (float64x2_t __a
)
18873 return __builtin_aarch64_lfloorv2dfv2di (__a
);
18876 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18877 vcvtmq_u64_f64 (float64x2_t __a
)
18879 /* TODO: This cast should go away when builtins have
18880 their correct types. */
18881 return (uint64x2_t
) __builtin_aarch64_lflooruv2dfv2di (__a
);
18886 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
18887 vcvtnd_s64_f64 (float64_t __a
)
18889 return __builtin_aarch64_lfrintndfdi (__a
);
18892 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
18893 vcvtnd_u64_f64 (float64_t __a
)
18895 return __builtin_aarch64_lfrintnudfdi (__a
);
18898 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
18899 vcvtns_s32_f32 (float32_t __a
)
18901 return __builtin_aarch64_lfrintnsfsi (__a
);
18904 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
18905 vcvtns_u32_f32 (float32_t __a
)
18907 return __builtin_aarch64_lfrintnusfsi (__a
);
18910 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
18911 vcvtn_s32_f32 (float32x2_t __a
)
18913 return __builtin_aarch64_lfrintnv2sfv2si (__a
);
18916 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18917 vcvtn_u32_f32 (float32x2_t __a
)
18919 /* TODO: This cast should go away when builtins have
18920 their correct types. */
18921 return (uint32x2_t
) __builtin_aarch64_lfrintnuv2sfv2si (__a
);
18924 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
18925 vcvtnq_s32_f32 (float32x4_t __a
)
18927 return __builtin_aarch64_lfrintnv4sfv4si (__a
);
18930 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18931 vcvtnq_u32_f32 (float32x4_t __a
)
18933 /* TODO: This cast should go away when builtins have
18934 their correct types. */
18935 return (uint32x4_t
) __builtin_aarch64_lfrintnuv4sfv4si (__a
);
18938 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
18939 vcvtnq_s64_f64 (float64x2_t __a
)
18941 return __builtin_aarch64_lfrintnv2dfv2di (__a
);
18944 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18945 vcvtnq_u64_f64 (float64x2_t __a
)
18947 /* TODO: This cast should go away when builtins have
18948 their correct types. */
18949 return (uint64x2_t
) __builtin_aarch64_lfrintnuv2dfv2di (__a
);
18954 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
18955 vcvtpd_s64_f64 (float64_t __a
)
18957 return __builtin_lceil (__a
);
18960 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
18961 vcvtpd_u64_f64 (float64_t __a
)
18963 return __builtin_aarch64_lceiludfdi (__a
);
18966 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
18967 vcvtps_s32_f32 (float32_t __a
)
18969 return __builtin_iceilf (__a
);
18972 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
18973 vcvtps_u32_f32 (float32_t __a
)
18975 return __builtin_aarch64_lceilusfsi (__a
);
18978 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
18979 vcvtp_s32_f32 (float32x2_t __a
)
18981 return __builtin_aarch64_lceilv2sfv2si (__a
);
18984 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18985 vcvtp_u32_f32 (float32x2_t __a
)
18987 /* TODO: This cast should go away when builtins have
18988 their correct types. */
18989 return (uint32x2_t
) __builtin_aarch64_lceiluv2sfv2si (__a
);
18992 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
18993 vcvtpq_s32_f32 (float32x4_t __a
)
18995 return __builtin_aarch64_lceilv4sfv4si (__a
);
18998 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18999 vcvtpq_u32_f32 (float32x4_t __a
)
19001 /* TODO: This cast should go away when builtins have
19002 their correct types. */
19003 return (uint32x4_t
) __builtin_aarch64_lceiluv4sfv4si (__a
);
19006 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
19007 vcvtpq_s64_f64 (float64x2_t __a
)
19009 return __builtin_aarch64_lceilv2dfv2di (__a
);
19012 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
19013 vcvtpq_u64_f64 (float64x2_t __a
)
19015 /* TODO: This cast should go away when builtins have
19016 their correct types. */
19017 return (uint64x2_t
) __builtin_aarch64_lceiluv2dfv2di (__a
);
19022 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
19023 vdup_n_f32 (float32_t __a
)
19025 return (float32x2_t
) {__a
, __a
};
19028 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
19029 vdup_n_f64 (float64_t __a
)
19034 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
19035 vdup_n_p8 (poly8_t __a
)
19037 return (poly8x8_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
19040 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
19041 vdup_n_p16 (poly16_t __a
)
19043 return (poly16x4_t
) {__a
, __a
, __a
, __a
};
19046 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
19047 vdup_n_s8 (int8_t __a
)
19049 return (int8x8_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
19052 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
19053 vdup_n_s16 (int16_t __a
)
19055 return (int16x4_t
) {__a
, __a
, __a
, __a
};
19058 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
19059 vdup_n_s32 (int32_t __a
)
19061 return (int32x2_t
) {__a
, __a
};
19064 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
19065 vdup_n_s64 (int64_t __a
)
19070 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
19071 vdup_n_u8 (uint8_t __a
)
19073 return (uint8x8_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
19076 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
19077 vdup_n_u16 (uint16_t __a
)
19079 return (uint16x4_t
) {__a
, __a
, __a
, __a
};
19082 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
19083 vdup_n_u32 (uint32_t __a
)
19085 return (uint32x2_t
) {__a
, __a
};
19088 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
19089 vdup_n_u64 (uint64_t __a
)
19096 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
19097 vdupq_n_f32 (float32_t __a
)
19099 return (float32x4_t
) {__a
, __a
, __a
, __a
};
19102 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
19103 vdupq_n_f64 (float64_t __a
)
19105 return (float64x2_t
) {__a
, __a
};
19108 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
19109 vdupq_n_p8 (uint32_t __a
)
19111 return (poly8x16_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
,
19112 __a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
19115 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
19116 vdupq_n_p16 (uint32_t __a
)
19118 return (poly16x8_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
19121 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
19122 vdupq_n_s8 (int32_t __a
)
19124 return (int8x16_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
,
19125 __a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
19128 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
19129 vdupq_n_s16 (int32_t __a
)
19131 return (int16x8_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
19134 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
19135 vdupq_n_s32 (int32_t __a
)
19137 return (int32x4_t
) {__a
, __a
, __a
, __a
};
19140 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
19141 vdupq_n_s64 (int64_t __a
)
19143 return (int64x2_t
) {__a
, __a
};
19146 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
19147 vdupq_n_u8 (uint32_t __a
)
19149 return (uint8x16_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
,
19150 __a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
19153 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
19154 vdupq_n_u16 (uint32_t __a
)
19156 return (uint16x8_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
19159 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
19160 vdupq_n_u32 (uint32_t __a
)
19162 return (uint32x4_t
) {__a
, __a
, __a
, __a
};
19165 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
19166 vdupq_n_u64 (uint64_t __a
)
19168 return (uint64x2_t
) {__a
, __a
};
19173 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
19174 vdup_lane_f32 (float32x2_t __a
, const int __b
)
19176 return __aarch64_vdup_lane_f32 (__a
, __b
);
19179 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
19180 vdup_lane_f64 (float64x1_t __a
, const int __b
)
19182 return __aarch64_vdup_lane_f64 (__a
, __b
);
19185 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
19186 vdup_lane_p8 (poly8x8_t __a
, const int __b
)
19188 return __aarch64_vdup_lane_p8 (__a
, __b
);
19191 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
19192 vdup_lane_p16 (poly16x4_t __a
, const int __b
)
19194 return __aarch64_vdup_lane_p16 (__a
, __b
);
19197 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
19198 vdup_lane_s8 (int8x8_t __a
, const int __b
)
19200 return __aarch64_vdup_lane_s8 (__a
, __b
);
19203 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
19204 vdup_lane_s16 (int16x4_t __a
, const int __b
)
19206 return __aarch64_vdup_lane_s16 (__a
, __b
);
19209 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
19210 vdup_lane_s32 (int32x2_t __a
, const int __b
)
19212 return __aarch64_vdup_lane_s32 (__a
, __b
);
19215 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
19216 vdup_lane_s64 (int64x1_t __a
, const int __b
)
19218 return __aarch64_vdup_lane_s64 (__a
, __b
);
19221 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
19222 vdup_lane_u8 (uint8x8_t __a
, const int __b
)
19224 return __aarch64_vdup_lane_u8 (__a
, __b
);
19227 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
19228 vdup_lane_u16 (uint16x4_t __a
, const int __b
)
19230 return __aarch64_vdup_lane_u16 (__a
, __b
);
19233 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
19234 vdup_lane_u32 (uint32x2_t __a
, const int __b
)
19236 return __aarch64_vdup_lane_u32 (__a
, __b
);
19239 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
19240 vdup_lane_u64 (uint64x1_t __a
, const int __b
)
19242 return __aarch64_vdup_lane_u64 (__a
, __b
);
19247 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
19248 vdup_laneq_f32 (float32x4_t __a
, const int __b
)
19250 return __aarch64_vdup_laneq_f32 (__a
, __b
);
19253 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
19254 vdup_laneq_f64 (float64x2_t __a
, const int __b
)
19256 return __aarch64_vdup_laneq_f64 (__a
, __b
);
19259 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
19260 vdup_laneq_p8 (poly8x16_t __a
, const int __b
)
19262 return __aarch64_vdup_laneq_p8 (__a
, __b
);
19265 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
19266 vdup_laneq_p16 (poly16x8_t __a
, const int __b
)
19268 return __aarch64_vdup_laneq_p16 (__a
, __b
);
19271 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
19272 vdup_laneq_s8 (int8x16_t __a
, const int __b
)
19274 return __aarch64_vdup_laneq_s8 (__a
, __b
);
19277 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
19278 vdup_laneq_s16 (int16x8_t __a
, const int __b
)
19280 return __aarch64_vdup_laneq_s16 (__a
, __b
);
19283 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
19284 vdup_laneq_s32 (int32x4_t __a
, const int __b
)
19286 return __aarch64_vdup_laneq_s32 (__a
, __b
);
19289 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
19290 vdup_laneq_s64 (int64x2_t __a
, const int __b
)
19292 return __aarch64_vdup_laneq_s64 (__a
, __b
);
19295 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
19296 vdup_laneq_u8 (uint8x16_t __a
, const int __b
)
19298 return __aarch64_vdup_laneq_u8 (__a
, __b
);
19301 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
19302 vdup_laneq_u16 (uint16x8_t __a
, const int __b
)
19304 return __aarch64_vdup_laneq_u16 (__a
, __b
);
19307 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
19308 vdup_laneq_u32 (uint32x4_t __a
, const int __b
)
19310 return __aarch64_vdup_laneq_u32 (__a
, __b
);
19313 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
19314 vdup_laneq_u64 (uint64x2_t __a
, const int __b
)
19316 return __aarch64_vdup_laneq_u64 (__a
, __b
);
19320 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
19321 vdupq_lane_f32 (float32x2_t __a
, const int __b
)
19323 return __aarch64_vdupq_lane_f32 (__a
, __b
);
19326 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
19327 vdupq_lane_f64 (float64x1_t __a
, const int __b
)
19329 return __aarch64_vdupq_lane_f64 (__a
, __b
);
19332 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
19333 vdupq_lane_p8 (poly8x8_t __a
, const int __b
)
19335 return __aarch64_vdupq_lane_p8 (__a
, __b
);
19338 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
19339 vdupq_lane_p16 (poly16x4_t __a
, const int __b
)
19341 return __aarch64_vdupq_lane_p16 (__a
, __b
);
19344 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
19345 vdupq_lane_s8 (int8x8_t __a
, const int __b
)
19347 return __aarch64_vdupq_lane_s8 (__a
, __b
);
19350 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
19351 vdupq_lane_s16 (int16x4_t __a
, const int __b
)
19353 return __aarch64_vdupq_lane_s16 (__a
, __b
);
19356 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
19357 vdupq_lane_s32 (int32x2_t __a
, const int __b
)
19359 return __aarch64_vdupq_lane_s32 (__a
, __b
);
19362 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
19363 vdupq_lane_s64 (int64x1_t __a
, const int __b
)
19365 return __aarch64_vdupq_lane_s64 (__a
, __b
);
19368 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
19369 vdupq_lane_u8 (uint8x8_t __a
, const int __b
)
19371 return __aarch64_vdupq_lane_u8 (__a
, __b
);
19374 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
19375 vdupq_lane_u16 (uint16x4_t __a
, const int __b
)
19377 return __aarch64_vdupq_lane_u16 (__a
, __b
);
19380 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
19381 vdupq_lane_u32 (uint32x2_t __a
, const int __b
)
19383 return __aarch64_vdupq_lane_u32 (__a
, __b
);
19386 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
19387 vdupq_lane_u64 (uint64x1_t __a
, const int __b
)
19389 return __aarch64_vdupq_lane_u64 (__a
, __b
);
19393 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
19394 vdupq_laneq_f32 (float32x4_t __a
, const int __b
)
19396 return __aarch64_vdupq_laneq_f32 (__a
, __b
);
19399 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
19400 vdupq_laneq_f64 (float64x2_t __a
, const int __b
)
19402 return __aarch64_vdupq_laneq_f64 (__a
, __b
);
19405 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
19406 vdupq_laneq_p8 (poly8x16_t __a
, const int __b
)
19408 return __aarch64_vdupq_laneq_p8 (__a
, __b
);
19411 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
19412 vdupq_laneq_p16 (poly16x8_t __a
, const int __b
)
19414 return __aarch64_vdupq_laneq_p16 (__a
, __b
);
19417 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
19418 vdupq_laneq_s8 (int8x16_t __a
, const int __b
)
19420 return __aarch64_vdupq_laneq_s8 (__a
, __b
);
19423 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
19424 vdupq_laneq_s16 (int16x8_t __a
, const int __b
)
19426 return __aarch64_vdupq_laneq_s16 (__a
, __b
);
19429 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
19430 vdupq_laneq_s32 (int32x4_t __a
, const int __b
)
19432 return __aarch64_vdupq_laneq_s32 (__a
, __b
);
19435 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
19436 vdupq_laneq_s64 (int64x2_t __a
, const int __b
)
19438 return __aarch64_vdupq_laneq_s64 (__a
, __b
);
19441 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
19442 vdupq_laneq_u8 (uint8x16_t __a
, const int __b
)
19444 return __aarch64_vdupq_laneq_u8 (__a
, __b
);
19447 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
19448 vdupq_laneq_u16 (uint16x8_t __a
, const int __b
)
19450 return __aarch64_vdupq_laneq_u16 (__a
, __b
);
19453 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
19454 vdupq_laneq_u32 (uint32x4_t __a
, const int __b
)
19456 return __aarch64_vdupq_laneq_u32 (__a
, __b
);
19459 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
19460 vdupq_laneq_u64 (uint64x2_t __a
, const int __b
)
19462 return __aarch64_vdupq_laneq_u64 (__a
, __b
);
19466 __extension__
static __inline poly8_t
__attribute__ ((__always_inline__
))
19467 vdupb_lane_p8 (poly8x8_t __a
, const int __b
)
19469 return __aarch64_vget_lane_p8 (__a
, __b
);
19472 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
19473 vdupb_lane_s8 (int8x8_t __a
, const int __b
)
19475 return __aarch64_vget_lane_s8 (__a
, __b
);
19478 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
19479 vdupb_lane_u8 (uint8x8_t __a
, const int __b
)
19481 return __aarch64_vget_lane_u8 (__a
, __b
);
19485 __extension__
static __inline poly16_t
__attribute__ ((__always_inline__
))
19486 vduph_lane_p16 (poly16x4_t __a
, const int __b
)
19488 return __aarch64_vget_lane_p16 (__a
, __b
);
19491 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
19492 vduph_lane_s16 (int16x4_t __a
, const int __b
)
19494 return __aarch64_vget_lane_s16 (__a
, __b
);
19497 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
19498 vduph_lane_u16 (uint16x4_t __a
, const int __b
)
19500 return __aarch64_vget_lane_u16 (__a
, __b
);
19504 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
19505 vdups_lane_f32 (float32x2_t __a
, const int __b
)
19507 return __aarch64_vget_lane_f32 (__a
, __b
);
19510 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
19511 vdups_lane_s32 (int32x2_t __a
, const int __b
)
19513 return __aarch64_vget_lane_s32 (__a
, __b
);
19516 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
19517 vdups_lane_u32 (uint32x2_t __a
, const int __b
)
19519 return __aarch64_vget_lane_u32 (__a
, __b
);
19523 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
19524 vdupd_lane_f64 (float64x1_t __a
, const int __attribute__ ((unused
)) __b
)
19529 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
19530 vdupd_lane_s64 (int64x1_t __a
, const int __attribute__ ((unused
)) __b
)
19535 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
19536 vdupd_lane_u64 (uint64x1_t __a
, const int __attribute__ ((unused
)) __b
)
19542 __extension__
static __inline poly8_t
__attribute__ ((__always_inline__
))
19543 vdupb_laneq_p8 (poly8x16_t __a
, const int __b
)
19545 return __aarch64_vgetq_lane_p8 (__a
, __b
);
19548 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
19549 vdupb_laneq_s8 (int8x16_t __a
, const int __attribute__ ((unused
)) __b
)
19551 return __aarch64_vgetq_lane_s8 (__a
, __b
);
19554 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
19555 vdupb_laneq_u8 (uint8x16_t __a
, const int __b
)
19557 return __aarch64_vgetq_lane_u8 (__a
, __b
);
19561 __extension__
static __inline poly16_t
__attribute__ ((__always_inline__
))
19562 vduph_laneq_p16 (poly16x8_t __a
, const int __b
)
19564 return __aarch64_vgetq_lane_p16 (__a
, __b
);
19567 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
19568 vduph_laneq_s16 (int16x8_t __a
, const int __b
)
19570 return __aarch64_vgetq_lane_s16 (__a
, __b
);
19573 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
19574 vduph_laneq_u16 (uint16x8_t __a
, const int __b
)
19576 return __aarch64_vgetq_lane_u16 (__a
, __b
);
19580 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
19581 vdups_laneq_f32 (float32x4_t __a
, const int __b
)
19583 return __aarch64_vgetq_lane_f32 (__a
, __b
);
19586 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
19587 vdups_laneq_s32 (int32x4_t __a
, const int __b
)
19589 return __aarch64_vgetq_lane_s32 (__a
, __b
);
19592 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
19593 vdups_laneq_u32 (uint32x4_t __a
, const int __b
)
19595 return __aarch64_vgetq_lane_u32 (__a
, __b
);
19599 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
19600 vdupd_laneq_f64 (float64x2_t __a
, const int __b
)
19602 return __aarch64_vgetq_lane_f64 (__a
, __b
);
19605 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
19606 vdupd_laneq_s64 (int64x2_t __a
, const int __b
)
19608 return __aarch64_vgetq_lane_s64 (__a
, __b
);
19611 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
19612 vdupd_laneq_u64 (uint64x2_t __a
, const int __b
)
19614 return __aarch64_vgetq_lane_u64 (__a
, __b
);
19619 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
19620 vld1_f32 (const float32_t
*a
)
19622 return __builtin_aarch64_ld1v2sf ((const __builtin_aarch64_simd_sf
*) a
);
19625 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
19626 vld1_f64 (const float64_t
*a
)
19631 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
19632 vld1_p8 (const poly8_t
*a
)
19635 __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi
*) a
);
19638 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
19639 vld1_p16 (const poly16_t
*a
)
19641 return (poly16x4_t
)
19642 __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi
*) a
);
19645 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
19646 vld1_s8 (const int8_t *a
)
19648 return __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi
*) a
);
19651 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
19652 vld1_s16 (const int16_t *a
)
19654 return __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi
*) a
);
19657 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
19658 vld1_s32 (const int32_t *a
)
19660 return __builtin_aarch64_ld1v2si ((const __builtin_aarch64_simd_si
*) a
);
19663 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
19664 vld1_s64 (const int64_t *a
)
19669 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
19670 vld1_u8 (const uint8_t *a
)
19673 __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi
*) a
);
19676 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
19677 vld1_u16 (const uint16_t *a
)
19679 return (uint16x4_t
)
19680 __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi
*) a
);
19683 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
19684 vld1_u32 (const uint32_t *a
)
19686 return (uint32x2_t
)
19687 __builtin_aarch64_ld1v2si ((const __builtin_aarch64_simd_si
*) a
);
19690 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
19691 vld1_u64 (const uint64_t *a
)
19698 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
19699 vld1q_f32 (const float32_t
*a
)
19701 return __builtin_aarch64_ld1v4sf ((const __builtin_aarch64_simd_sf
*) a
);
19704 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
19705 vld1q_f64 (const float64_t
*a
)
19707 return __builtin_aarch64_ld1v2df ((const __builtin_aarch64_simd_df
*) a
);
19710 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
19711 vld1q_p8 (const poly8_t
*a
)
19713 return (poly8x16_t
)
19714 __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi
*) a
);
19717 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
19718 vld1q_p16 (const poly16_t
*a
)
19720 return (poly16x8_t
)
19721 __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi
*) a
);
19724 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
19725 vld1q_s8 (const int8_t *a
)
19727 return __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi
*) a
);
19730 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
19731 vld1q_s16 (const int16_t *a
)
19733 return __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi
*) a
);
19736 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
19737 vld1q_s32 (const int32_t *a
)
19739 return __builtin_aarch64_ld1v4si ((const __builtin_aarch64_simd_si
*) a
);
19742 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
19743 vld1q_s64 (const int64_t *a
)
19745 return __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di
*) a
);
19748 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
19749 vld1q_u8 (const uint8_t *a
)
19751 return (uint8x16_t
)
19752 __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi
*) a
);
19755 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
19756 vld1q_u16 (const uint16_t *a
)
19758 return (uint16x8_t
)
19759 __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi
*) a
);
19762 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
19763 vld1q_u32 (const uint32_t *a
)
19765 return (uint32x4_t
)
19766 __builtin_aarch64_ld1v4si ((const __builtin_aarch64_simd_si
*) a
);
19769 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
19770 vld1q_u64 (const uint64_t *a
)
19772 return (uint64x2_t
)
19773 __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di
*) a
);
19778 __extension__
static __inline int64x1x2_t
__attribute__ ((__always_inline__
))
19779 vld2_s64 (const int64_t * __a
)
19782 __builtin_aarch64_simd_oi __o
;
19783 __o
= __builtin_aarch64_ld2di ((const __builtin_aarch64_simd_di
*) __a
);
19784 ret
.val
[0] = (int64x1_t
) __builtin_aarch64_get_dregoidi (__o
, 0);
19785 ret
.val
[1] = (int64x1_t
) __builtin_aarch64_get_dregoidi (__o
, 1);
19789 __extension__
static __inline uint64x1x2_t
__attribute__ ((__always_inline__
))
19790 vld2_u64 (const uint64_t * __a
)
19793 __builtin_aarch64_simd_oi __o
;
19794 __o
= __builtin_aarch64_ld2di ((const __builtin_aarch64_simd_di
*) __a
);
19795 ret
.val
[0] = (uint64x1_t
) __builtin_aarch64_get_dregoidi (__o
, 0);
19796 ret
.val
[1] = (uint64x1_t
) __builtin_aarch64_get_dregoidi (__o
, 1);
19800 __extension__
static __inline float64x1x2_t
__attribute__ ((__always_inline__
))
19801 vld2_f64 (const float64_t
* __a
)
19804 __builtin_aarch64_simd_oi __o
;
19805 __o
= __builtin_aarch64_ld2df ((const __builtin_aarch64_simd_df
*) __a
);
19806 ret
.val
[0] = (float64x1_t
) __builtin_aarch64_get_dregoidf (__o
, 0);
19807 ret
.val
[1] = (float64x1_t
) __builtin_aarch64_get_dregoidf (__o
, 1);
19811 __extension__
static __inline int8x8x2_t
__attribute__ ((__always_inline__
))
19812 vld2_s8 (const int8_t * __a
)
19815 __builtin_aarch64_simd_oi __o
;
19816 __o
= __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
19817 ret
.val
[0] = (int8x8_t
) __builtin_aarch64_get_dregoiv8qi (__o
, 0);
19818 ret
.val
[1] = (int8x8_t
) __builtin_aarch64_get_dregoiv8qi (__o
, 1);
19822 __extension__
static __inline poly8x8x2_t
__attribute__ ((__always_inline__
))
19823 vld2_p8 (const poly8_t
* __a
)
19826 __builtin_aarch64_simd_oi __o
;
19827 __o
= __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
19828 ret
.val
[0] = (poly8x8_t
) __builtin_aarch64_get_dregoiv8qi (__o
, 0);
19829 ret
.val
[1] = (poly8x8_t
) __builtin_aarch64_get_dregoiv8qi (__o
, 1);
19833 __extension__
static __inline int16x4x2_t
__attribute__ ((__always_inline__
))
19834 vld2_s16 (const int16_t * __a
)
19837 __builtin_aarch64_simd_oi __o
;
19838 __o
= __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
19839 ret
.val
[0] = (int16x4_t
) __builtin_aarch64_get_dregoiv4hi (__o
, 0);
19840 ret
.val
[1] = (int16x4_t
) __builtin_aarch64_get_dregoiv4hi (__o
, 1);
19844 __extension__
static __inline poly16x4x2_t
__attribute__ ((__always_inline__
))
19845 vld2_p16 (const poly16_t
* __a
)
19848 __builtin_aarch64_simd_oi __o
;
19849 __o
= __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
19850 ret
.val
[0] = (poly16x4_t
) __builtin_aarch64_get_dregoiv4hi (__o
, 0);
19851 ret
.val
[1] = (poly16x4_t
) __builtin_aarch64_get_dregoiv4hi (__o
, 1);
19855 __extension__
static __inline int32x2x2_t
__attribute__ ((__always_inline__
))
19856 vld2_s32 (const int32_t * __a
)
19859 __builtin_aarch64_simd_oi __o
;
19860 __o
= __builtin_aarch64_ld2v2si ((const __builtin_aarch64_simd_si
*) __a
);
19861 ret
.val
[0] = (int32x2_t
) __builtin_aarch64_get_dregoiv2si (__o
, 0);
19862 ret
.val
[1] = (int32x2_t
) __builtin_aarch64_get_dregoiv2si (__o
, 1);
19866 __extension__
static __inline uint8x8x2_t
__attribute__ ((__always_inline__
))
19867 vld2_u8 (const uint8_t * __a
)
19870 __builtin_aarch64_simd_oi __o
;
19871 __o
= __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
19872 ret
.val
[0] = (uint8x8_t
) __builtin_aarch64_get_dregoiv8qi (__o
, 0);
19873 ret
.val
[1] = (uint8x8_t
) __builtin_aarch64_get_dregoiv8qi (__o
, 1);
19877 __extension__
static __inline uint16x4x2_t
__attribute__ ((__always_inline__
))
19878 vld2_u16 (const uint16_t * __a
)
19881 __builtin_aarch64_simd_oi __o
;
19882 __o
= __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
19883 ret
.val
[0] = (uint16x4_t
) __builtin_aarch64_get_dregoiv4hi (__o
, 0);
19884 ret
.val
[1] = (uint16x4_t
) __builtin_aarch64_get_dregoiv4hi (__o
, 1);
19888 __extension__
static __inline uint32x2x2_t
__attribute__ ((__always_inline__
))
19889 vld2_u32 (const uint32_t * __a
)
19892 __builtin_aarch64_simd_oi __o
;
19893 __o
= __builtin_aarch64_ld2v2si ((const __builtin_aarch64_simd_si
*) __a
);
19894 ret
.val
[0] = (uint32x2_t
) __builtin_aarch64_get_dregoiv2si (__o
, 0);
19895 ret
.val
[1] = (uint32x2_t
) __builtin_aarch64_get_dregoiv2si (__o
, 1);
19899 __extension__
static __inline float32x2x2_t
__attribute__ ((__always_inline__
))
19900 vld2_f32 (const float32_t
* __a
)
19903 __builtin_aarch64_simd_oi __o
;
19904 __o
= __builtin_aarch64_ld2v2sf ((const __builtin_aarch64_simd_sf
*) __a
);
19905 ret
.val
[0] = (float32x2_t
) __builtin_aarch64_get_dregoiv2sf (__o
, 0);
19906 ret
.val
[1] = (float32x2_t
) __builtin_aarch64_get_dregoiv2sf (__o
, 1);
19910 __extension__
static __inline int8x16x2_t
__attribute__ ((__always_inline__
))
19911 vld2q_s8 (const int8_t * __a
)
19914 __builtin_aarch64_simd_oi __o
;
19915 __o
= __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
19916 ret
.val
[0] = (int8x16_t
) __builtin_aarch64_get_qregoiv16qi (__o
, 0);
19917 ret
.val
[1] = (int8x16_t
) __builtin_aarch64_get_qregoiv16qi (__o
, 1);
19921 __extension__
static __inline poly8x16x2_t
__attribute__ ((__always_inline__
))
19922 vld2q_p8 (const poly8_t
* __a
)
19925 __builtin_aarch64_simd_oi __o
;
19926 __o
= __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
19927 ret
.val
[0] = (poly8x16_t
) __builtin_aarch64_get_qregoiv16qi (__o
, 0);
19928 ret
.val
[1] = (poly8x16_t
) __builtin_aarch64_get_qregoiv16qi (__o
, 1);
19932 __extension__
static __inline int16x8x2_t
__attribute__ ((__always_inline__
))
19933 vld2q_s16 (const int16_t * __a
)
19936 __builtin_aarch64_simd_oi __o
;
19937 __o
= __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
19938 ret
.val
[0] = (int16x8_t
) __builtin_aarch64_get_qregoiv8hi (__o
, 0);
19939 ret
.val
[1] = (int16x8_t
) __builtin_aarch64_get_qregoiv8hi (__o
, 1);
19943 __extension__
static __inline poly16x8x2_t
__attribute__ ((__always_inline__
))
19944 vld2q_p16 (const poly16_t
* __a
)
19947 __builtin_aarch64_simd_oi __o
;
19948 __o
= __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
19949 ret
.val
[0] = (poly16x8_t
) __builtin_aarch64_get_qregoiv8hi (__o
, 0);
19950 ret
.val
[1] = (poly16x8_t
) __builtin_aarch64_get_qregoiv8hi (__o
, 1);
19954 __extension__
static __inline int32x4x2_t
__attribute__ ((__always_inline__
))
19955 vld2q_s32 (const int32_t * __a
)
19958 __builtin_aarch64_simd_oi __o
;
19959 __o
= __builtin_aarch64_ld2v4si ((const __builtin_aarch64_simd_si
*) __a
);
19960 ret
.val
[0] = (int32x4_t
) __builtin_aarch64_get_qregoiv4si (__o
, 0);
19961 ret
.val
[1] = (int32x4_t
) __builtin_aarch64_get_qregoiv4si (__o
, 1);
19965 __extension__
static __inline int64x2x2_t
__attribute__ ((__always_inline__
))
19966 vld2q_s64 (const int64_t * __a
)
19969 __builtin_aarch64_simd_oi __o
;
19970 __o
= __builtin_aarch64_ld2v2di ((const __builtin_aarch64_simd_di
*) __a
);
19971 ret
.val
[0] = (int64x2_t
) __builtin_aarch64_get_qregoiv2di (__o
, 0);
19972 ret
.val
[1] = (int64x2_t
) __builtin_aarch64_get_qregoiv2di (__o
, 1);
19976 __extension__
static __inline uint8x16x2_t
__attribute__ ((__always_inline__
))
19977 vld2q_u8 (const uint8_t * __a
)
19980 __builtin_aarch64_simd_oi __o
;
19981 __o
= __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
19982 ret
.val
[0] = (uint8x16_t
) __builtin_aarch64_get_qregoiv16qi (__o
, 0);
19983 ret
.val
[1] = (uint8x16_t
) __builtin_aarch64_get_qregoiv16qi (__o
, 1);
19987 __extension__
static __inline uint16x8x2_t
__attribute__ ((__always_inline__
))
19988 vld2q_u16 (const uint16_t * __a
)
19991 __builtin_aarch64_simd_oi __o
;
19992 __o
= __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
19993 ret
.val
[0] = (uint16x8_t
) __builtin_aarch64_get_qregoiv8hi (__o
, 0);
19994 ret
.val
[1] = (uint16x8_t
) __builtin_aarch64_get_qregoiv8hi (__o
, 1);
19998 __extension__
static __inline uint32x4x2_t
__attribute__ ((__always_inline__
))
19999 vld2q_u32 (const uint32_t * __a
)
20002 __builtin_aarch64_simd_oi __o
;
20003 __o
= __builtin_aarch64_ld2v4si ((const __builtin_aarch64_simd_si
*) __a
);
20004 ret
.val
[0] = (uint32x4_t
) __builtin_aarch64_get_qregoiv4si (__o
, 0);
20005 ret
.val
[1] = (uint32x4_t
) __builtin_aarch64_get_qregoiv4si (__o
, 1);
20009 __extension__
static __inline uint64x2x2_t
__attribute__ ((__always_inline__
))
20010 vld2q_u64 (const uint64_t * __a
)
20013 __builtin_aarch64_simd_oi __o
;
20014 __o
= __builtin_aarch64_ld2v2di ((const __builtin_aarch64_simd_di
*) __a
);
20015 ret
.val
[0] = (uint64x2_t
) __builtin_aarch64_get_qregoiv2di (__o
, 0);
20016 ret
.val
[1] = (uint64x2_t
) __builtin_aarch64_get_qregoiv2di (__o
, 1);
20020 __extension__
static __inline float32x4x2_t
__attribute__ ((__always_inline__
))
20021 vld2q_f32 (const float32_t
* __a
)
20024 __builtin_aarch64_simd_oi __o
;
20025 __o
= __builtin_aarch64_ld2v4sf ((const __builtin_aarch64_simd_sf
*) __a
);
20026 ret
.val
[0] = (float32x4_t
) __builtin_aarch64_get_qregoiv4sf (__o
, 0);
20027 ret
.val
[1] = (float32x4_t
) __builtin_aarch64_get_qregoiv4sf (__o
, 1);
20031 __extension__
static __inline float64x2x2_t
__attribute__ ((__always_inline__
))
20032 vld2q_f64 (const float64_t
* __a
)
20035 __builtin_aarch64_simd_oi __o
;
20036 __o
= __builtin_aarch64_ld2v2df ((const __builtin_aarch64_simd_df
*) __a
);
20037 ret
.val
[0] = (float64x2_t
) __builtin_aarch64_get_qregoiv2df (__o
, 0);
20038 ret
.val
[1] = (float64x2_t
) __builtin_aarch64_get_qregoiv2df (__o
, 1);
20042 __extension__
static __inline int64x1x3_t
__attribute__ ((__always_inline__
))
20043 vld3_s64 (const int64_t * __a
)
20046 __builtin_aarch64_simd_ci __o
;
20047 __o
= __builtin_aarch64_ld3di ((const __builtin_aarch64_simd_di
*) __a
);
20048 ret
.val
[0] = (int64x1_t
) __builtin_aarch64_get_dregcidi (__o
, 0);
20049 ret
.val
[1] = (int64x1_t
) __builtin_aarch64_get_dregcidi (__o
, 1);
20050 ret
.val
[2] = (int64x1_t
) __builtin_aarch64_get_dregcidi (__o
, 2);
20054 __extension__
static __inline uint64x1x3_t
__attribute__ ((__always_inline__
))
20055 vld3_u64 (const uint64_t * __a
)
20058 __builtin_aarch64_simd_ci __o
;
20059 __o
= __builtin_aarch64_ld3di ((const __builtin_aarch64_simd_di
*) __a
);
20060 ret
.val
[0] = (uint64x1_t
) __builtin_aarch64_get_dregcidi (__o
, 0);
20061 ret
.val
[1] = (uint64x1_t
) __builtin_aarch64_get_dregcidi (__o
, 1);
20062 ret
.val
[2] = (uint64x1_t
) __builtin_aarch64_get_dregcidi (__o
, 2);
20066 __extension__
static __inline float64x1x3_t
__attribute__ ((__always_inline__
))
20067 vld3_f64 (const float64_t
* __a
)
20070 __builtin_aarch64_simd_ci __o
;
20071 __o
= __builtin_aarch64_ld3df ((const __builtin_aarch64_simd_df
*) __a
);
20072 ret
.val
[0] = (float64x1_t
) __builtin_aarch64_get_dregcidf (__o
, 0);
20073 ret
.val
[1] = (float64x1_t
) __builtin_aarch64_get_dregcidf (__o
, 1);
20074 ret
.val
[2] = (float64x1_t
) __builtin_aarch64_get_dregcidf (__o
, 2);
20078 __extension__
static __inline int8x8x3_t
__attribute__ ((__always_inline__
))
20079 vld3_s8 (const int8_t * __a
)
20082 __builtin_aarch64_simd_ci __o
;
20083 __o
= __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
20084 ret
.val
[0] = (int8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 0);
20085 ret
.val
[1] = (int8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 1);
20086 ret
.val
[2] = (int8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 2);
20090 __extension__
static __inline poly8x8x3_t
__attribute__ ((__always_inline__
))
20091 vld3_p8 (const poly8_t
* __a
)
20094 __builtin_aarch64_simd_ci __o
;
20095 __o
= __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
20096 ret
.val
[0] = (poly8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 0);
20097 ret
.val
[1] = (poly8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 1);
20098 ret
.val
[2] = (poly8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 2);
20102 __extension__
static __inline int16x4x3_t
__attribute__ ((__always_inline__
))
20103 vld3_s16 (const int16_t * __a
)
20106 __builtin_aarch64_simd_ci __o
;
20107 __o
= __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
20108 ret
.val
[0] = (int16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 0);
20109 ret
.val
[1] = (int16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 1);
20110 ret
.val
[2] = (int16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 2);
20114 __extension__
static __inline poly16x4x3_t
__attribute__ ((__always_inline__
))
20115 vld3_p16 (const poly16_t
* __a
)
20118 __builtin_aarch64_simd_ci __o
;
20119 __o
= __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
20120 ret
.val
[0] = (poly16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 0);
20121 ret
.val
[1] = (poly16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 1);
20122 ret
.val
[2] = (poly16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 2);
20126 __extension__
static __inline int32x2x3_t
__attribute__ ((__always_inline__
))
20127 vld3_s32 (const int32_t * __a
)
20130 __builtin_aarch64_simd_ci __o
;
20131 __o
= __builtin_aarch64_ld3v2si ((const __builtin_aarch64_simd_si
*) __a
);
20132 ret
.val
[0] = (int32x2_t
) __builtin_aarch64_get_dregciv2si (__o
, 0);
20133 ret
.val
[1] = (int32x2_t
) __builtin_aarch64_get_dregciv2si (__o
, 1);
20134 ret
.val
[2] = (int32x2_t
) __builtin_aarch64_get_dregciv2si (__o
, 2);
20138 __extension__
static __inline uint8x8x3_t
__attribute__ ((__always_inline__
))
20139 vld3_u8 (const uint8_t * __a
)
20142 __builtin_aarch64_simd_ci __o
;
20143 __o
= __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
20144 ret
.val
[0] = (uint8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 0);
20145 ret
.val
[1] = (uint8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 1);
20146 ret
.val
[2] = (uint8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 2);
20150 __extension__
static __inline uint16x4x3_t
__attribute__ ((__always_inline__
))
20151 vld3_u16 (const uint16_t * __a
)
20154 __builtin_aarch64_simd_ci __o
;
20155 __o
= __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
20156 ret
.val
[0] = (uint16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 0);
20157 ret
.val
[1] = (uint16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 1);
20158 ret
.val
[2] = (uint16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 2);
20162 __extension__
static __inline uint32x2x3_t
__attribute__ ((__always_inline__
))
20163 vld3_u32 (const uint32_t * __a
)
20166 __builtin_aarch64_simd_ci __o
;
20167 __o
= __builtin_aarch64_ld3v2si ((const __builtin_aarch64_simd_si
*) __a
);
20168 ret
.val
[0] = (uint32x2_t
) __builtin_aarch64_get_dregciv2si (__o
, 0);
20169 ret
.val
[1] = (uint32x2_t
) __builtin_aarch64_get_dregciv2si (__o
, 1);
20170 ret
.val
[2] = (uint32x2_t
) __builtin_aarch64_get_dregciv2si (__o
, 2);
20174 __extension__
static __inline float32x2x3_t
__attribute__ ((__always_inline__
))
20175 vld3_f32 (const float32_t
* __a
)
20178 __builtin_aarch64_simd_ci __o
;
20179 __o
= __builtin_aarch64_ld3v2sf ((const __builtin_aarch64_simd_sf
*) __a
);
20180 ret
.val
[0] = (float32x2_t
) __builtin_aarch64_get_dregciv2sf (__o
, 0);
20181 ret
.val
[1] = (float32x2_t
) __builtin_aarch64_get_dregciv2sf (__o
, 1);
20182 ret
.val
[2] = (float32x2_t
) __builtin_aarch64_get_dregciv2sf (__o
, 2);
20186 __extension__
static __inline int8x16x3_t
__attribute__ ((__always_inline__
))
20187 vld3q_s8 (const int8_t * __a
)
20190 __builtin_aarch64_simd_ci __o
;
20191 __o
= __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
20192 ret
.val
[0] = (int8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 0);
20193 ret
.val
[1] = (int8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 1);
20194 ret
.val
[2] = (int8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 2);
20198 __extension__
static __inline poly8x16x3_t
__attribute__ ((__always_inline__
))
20199 vld3q_p8 (const poly8_t
* __a
)
20202 __builtin_aarch64_simd_ci __o
;
20203 __o
= __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
20204 ret
.val
[0] = (poly8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 0);
20205 ret
.val
[1] = (poly8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 1);
20206 ret
.val
[2] = (poly8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 2);
20210 __extension__
static __inline int16x8x3_t
__attribute__ ((__always_inline__
))
20211 vld3q_s16 (const int16_t * __a
)
20214 __builtin_aarch64_simd_ci __o
;
20215 __o
= __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
20216 ret
.val
[0] = (int16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 0);
20217 ret
.val
[1] = (int16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 1);
20218 ret
.val
[2] = (int16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 2);
20222 __extension__
static __inline poly16x8x3_t
__attribute__ ((__always_inline__
))
20223 vld3q_p16 (const poly16_t
* __a
)
20226 __builtin_aarch64_simd_ci __o
;
20227 __o
= __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
20228 ret
.val
[0] = (poly16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 0);
20229 ret
.val
[1] = (poly16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 1);
20230 ret
.val
[2] = (poly16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 2);
20234 __extension__
static __inline int32x4x3_t
__attribute__ ((__always_inline__
))
20235 vld3q_s32 (const int32_t * __a
)
20238 __builtin_aarch64_simd_ci __o
;
20239 __o
= __builtin_aarch64_ld3v4si ((const __builtin_aarch64_simd_si
*) __a
);
20240 ret
.val
[0] = (int32x4_t
) __builtin_aarch64_get_qregciv4si (__o
, 0);
20241 ret
.val
[1] = (int32x4_t
) __builtin_aarch64_get_qregciv4si (__o
, 1);
20242 ret
.val
[2] = (int32x4_t
) __builtin_aarch64_get_qregciv4si (__o
, 2);
20246 __extension__
static __inline int64x2x3_t
__attribute__ ((__always_inline__
))
20247 vld3q_s64 (const int64_t * __a
)
20250 __builtin_aarch64_simd_ci __o
;
20251 __o
= __builtin_aarch64_ld3v2di ((const __builtin_aarch64_simd_di
*) __a
);
20252 ret
.val
[0] = (int64x2_t
) __builtin_aarch64_get_qregciv2di (__o
, 0);
20253 ret
.val
[1] = (int64x2_t
) __builtin_aarch64_get_qregciv2di (__o
, 1);
20254 ret
.val
[2] = (int64x2_t
) __builtin_aarch64_get_qregciv2di (__o
, 2);
20258 __extension__
static __inline uint8x16x3_t
__attribute__ ((__always_inline__
))
20259 vld3q_u8 (const uint8_t * __a
)
20262 __builtin_aarch64_simd_ci __o
;
20263 __o
= __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
20264 ret
.val
[0] = (uint8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 0);
20265 ret
.val
[1] = (uint8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 1);
20266 ret
.val
[2] = (uint8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 2);
20270 __extension__
static __inline uint16x8x3_t
__attribute__ ((__always_inline__
))
20271 vld3q_u16 (const uint16_t * __a
)
20274 __builtin_aarch64_simd_ci __o
;
20275 __o
= __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
20276 ret
.val
[0] = (uint16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 0);
20277 ret
.val
[1] = (uint16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 1);
20278 ret
.val
[2] = (uint16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 2);
20282 __extension__
static __inline uint32x4x3_t
__attribute__ ((__always_inline__
))
20283 vld3q_u32 (const uint32_t * __a
)
20286 __builtin_aarch64_simd_ci __o
;
20287 __o
= __builtin_aarch64_ld3v4si ((const __builtin_aarch64_simd_si
*) __a
);
20288 ret
.val
[0] = (uint32x4_t
) __builtin_aarch64_get_qregciv4si (__o
, 0);
20289 ret
.val
[1] = (uint32x4_t
) __builtin_aarch64_get_qregciv4si (__o
, 1);
20290 ret
.val
[2] = (uint32x4_t
) __builtin_aarch64_get_qregciv4si (__o
, 2);
20294 __extension__
static __inline uint64x2x3_t
__attribute__ ((__always_inline__
))
20295 vld3q_u64 (const uint64_t * __a
)
20298 __builtin_aarch64_simd_ci __o
;
20299 __o
= __builtin_aarch64_ld3v2di ((const __builtin_aarch64_simd_di
*) __a
);
20300 ret
.val
[0] = (uint64x2_t
) __builtin_aarch64_get_qregciv2di (__o
, 0);
20301 ret
.val
[1] = (uint64x2_t
) __builtin_aarch64_get_qregciv2di (__o
, 1);
20302 ret
.val
[2] = (uint64x2_t
) __builtin_aarch64_get_qregciv2di (__o
, 2);
20306 __extension__
static __inline float32x4x3_t
__attribute__ ((__always_inline__
))
20307 vld3q_f32 (const float32_t
* __a
)
20310 __builtin_aarch64_simd_ci __o
;
20311 __o
= __builtin_aarch64_ld3v4sf ((const __builtin_aarch64_simd_sf
*) __a
);
20312 ret
.val
[0] = (float32x4_t
) __builtin_aarch64_get_qregciv4sf (__o
, 0);
20313 ret
.val
[1] = (float32x4_t
) __builtin_aarch64_get_qregciv4sf (__o
, 1);
20314 ret
.val
[2] = (float32x4_t
) __builtin_aarch64_get_qregciv4sf (__o
, 2);
20318 __extension__
static __inline float64x2x3_t
__attribute__ ((__always_inline__
))
20319 vld3q_f64 (const float64_t
* __a
)
20322 __builtin_aarch64_simd_ci __o
;
20323 __o
= __builtin_aarch64_ld3v2df ((const __builtin_aarch64_simd_df
*) __a
);
20324 ret
.val
[0] = (float64x2_t
) __builtin_aarch64_get_qregciv2df (__o
, 0);
20325 ret
.val
[1] = (float64x2_t
) __builtin_aarch64_get_qregciv2df (__o
, 1);
20326 ret
.val
[2] = (float64x2_t
) __builtin_aarch64_get_qregciv2df (__o
, 2);
20330 __extension__
static __inline int64x1x4_t
__attribute__ ((__always_inline__
))
20331 vld4_s64 (const int64_t * __a
)
20334 __builtin_aarch64_simd_xi __o
;
20335 __o
= __builtin_aarch64_ld4di ((const __builtin_aarch64_simd_di
*) __a
);
20336 ret
.val
[0] = (int64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 0);
20337 ret
.val
[1] = (int64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 1);
20338 ret
.val
[2] = (int64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 2);
20339 ret
.val
[3] = (int64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 3);
20343 __extension__
static __inline uint64x1x4_t
__attribute__ ((__always_inline__
))
20344 vld4_u64 (const uint64_t * __a
)
20347 __builtin_aarch64_simd_xi __o
;
20348 __o
= __builtin_aarch64_ld4di ((const __builtin_aarch64_simd_di
*) __a
);
20349 ret
.val
[0] = (uint64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 0);
20350 ret
.val
[1] = (uint64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 1);
20351 ret
.val
[2] = (uint64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 2);
20352 ret
.val
[3] = (uint64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 3);
20356 __extension__
static __inline float64x1x4_t
__attribute__ ((__always_inline__
))
20357 vld4_f64 (const float64_t
* __a
)
20360 __builtin_aarch64_simd_xi __o
;
20361 __o
= __builtin_aarch64_ld4df ((const __builtin_aarch64_simd_df
*) __a
);
20362 ret
.val
[0] = (float64x1_t
) __builtin_aarch64_get_dregxidf (__o
, 0);
20363 ret
.val
[1] = (float64x1_t
) __builtin_aarch64_get_dregxidf (__o
, 1);
20364 ret
.val
[2] = (float64x1_t
) __builtin_aarch64_get_dregxidf (__o
, 2);
20365 ret
.val
[3] = (float64x1_t
) __builtin_aarch64_get_dregxidf (__o
, 3);
20369 __extension__
static __inline int8x8x4_t
__attribute__ ((__always_inline__
))
20370 vld4_s8 (const int8_t * __a
)
20373 __builtin_aarch64_simd_xi __o
;
20374 __o
= __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
20375 ret
.val
[0] = (int8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 0);
20376 ret
.val
[1] = (int8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 1);
20377 ret
.val
[2] = (int8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 2);
20378 ret
.val
[3] = (int8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 3);
20382 __extension__
static __inline poly8x8x4_t
__attribute__ ((__always_inline__
))
20383 vld4_p8 (const poly8_t
* __a
)
20386 __builtin_aarch64_simd_xi __o
;
20387 __o
= __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
20388 ret
.val
[0] = (poly8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 0);
20389 ret
.val
[1] = (poly8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 1);
20390 ret
.val
[2] = (poly8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 2);
20391 ret
.val
[3] = (poly8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 3);
20395 __extension__
static __inline int16x4x4_t
__attribute__ ((__always_inline__
))
20396 vld4_s16 (const int16_t * __a
)
20399 __builtin_aarch64_simd_xi __o
;
20400 __o
= __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
20401 ret
.val
[0] = (int16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 0);
20402 ret
.val
[1] = (int16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 1);
20403 ret
.val
[2] = (int16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 2);
20404 ret
.val
[3] = (int16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 3);
20408 __extension__
static __inline poly16x4x4_t
__attribute__ ((__always_inline__
))
20409 vld4_p16 (const poly16_t
* __a
)
20412 __builtin_aarch64_simd_xi __o
;
20413 __o
= __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
20414 ret
.val
[0] = (poly16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 0);
20415 ret
.val
[1] = (poly16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 1);
20416 ret
.val
[2] = (poly16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 2);
20417 ret
.val
[3] = (poly16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 3);
20421 __extension__
static __inline int32x2x4_t
__attribute__ ((__always_inline__
))
20422 vld4_s32 (const int32_t * __a
)
20425 __builtin_aarch64_simd_xi __o
;
20426 __o
= __builtin_aarch64_ld4v2si ((const __builtin_aarch64_simd_si
*) __a
);
20427 ret
.val
[0] = (int32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 0);
20428 ret
.val
[1] = (int32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 1);
20429 ret
.val
[2] = (int32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 2);
20430 ret
.val
[3] = (int32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 3);
20434 __extension__
static __inline uint8x8x4_t
__attribute__ ((__always_inline__
))
20435 vld4_u8 (const uint8_t * __a
)
20438 __builtin_aarch64_simd_xi __o
;
20439 __o
= __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
20440 ret
.val
[0] = (uint8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 0);
20441 ret
.val
[1] = (uint8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 1);
20442 ret
.val
[2] = (uint8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 2);
20443 ret
.val
[3] = (uint8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 3);
20447 __extension__
static __inline uint16x4x4_t
__attribute__ ((__always_inline__
))
20448 vld4_u16 (const uint16_t * __a
)
20451 __builtin_aarch64_simd_xi __o
;
20452 __o
= __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
20453 ret
.val
[0] = (uint16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 0);
20454 ret
.val
[1] = (uint16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 1);
20455 ret
.val
[2] = (uint16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 2);
20456 ret
.val
[3] = (uint16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 3);
20460 __extension__
static __inline uint32x2x4_t
__attribute__ ((__always_inline__
))
20461 vld4_u32 (const uint32_t * __a
)
20464 __builtin_aarch64_simd_xi __o
;
20465 __o
= __builtin_aarch64_ld4v2si ((const __builtin_aarch64_simd_si
*) __a
);
20466 ret
.val
[0] = (uint32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 0);
20467 ret
.val
[1] = (uint32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 1);
20468 ret
.val
[2] = (uint32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 2);
20469 ret
.val
[3] = (uint32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 3);
20473 __extension__
static __inline float32x2x4_t
__attribute__ ((__always_inline__
))
20474 vld4_f32 (const float32_t
* __a
)
20477 __builtin_aarch64_simd_xi __o
;
20478 __o
= __builtin_aarch64_ld4v2sf ((const __builtin_aarch64_simd_sf
*) __a
);
20479 ret
.val
[0] = (float32x2_t
) __builtin_aarch64_get_dregxiv2sf (__o
, 0);
20480 ret
.val
[1] = (float32x2_t
) __builtin_aarch64_get_dregxiv2sf (__o
, 1);
20481 ret
.val
[2] = (float32x2_t
) __builtin_aarch64_get_dregxiv2sf (__o
, 2);
20482 ret
.val
[3] = (float32x2_t
) __builtin_aarch64_get_dregxiv2sf (__o
, 3);
20486 __extension__
static __inline int8x16x4_t
__attribute__ ((__always_inline__
))
20487 vld4q_s8 (const int8_t * __a
)
20490 __builtin_aarch64_simd_xi __o
;
20491 __o
= __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
20492 ret
.val
[0] = (int8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 0);
20493 ret
.val
[1] = (int8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 1);
20494 ret
.val
[2] = (int8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 2);
20495 ret
.val
[3] = (int8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 3);
20499 __extension__
static __inline poly8x16x4_t
__attribute__ ((__always_inline__
))
20500 vld4q_p8 (const poly8_t
* __a
)
20503 __builtin_aarch64_simd_xi __o
;
20504 __o
= __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
20505 ret
.val
[0] = (poly8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 0);
20506 ret
.val
[1] = (poly8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 1);
20507 ret
.val
[2] = (poly8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 2);
20508 ret
.val
[3] = (poly8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 3);
20512 __extension__
static __inline int16x8x4_t
__attribute__ ((__always_inline__
))
20513 vld4q_s16 (const int16_t * __a
)
20516 __builtin_aarch64_simd_xi __o
;
20517 __o
= __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
20518 ret
.val
[0] = (int16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 0);
20519 ret
.val
[1] = (int16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 1);
20520 ret
.val
[2] = (int16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 2);
20521 ret
.val
[3] = (int16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 3);
20525 __extension__
static __inline poly16x8x4_t
__attribute__ ((__always_inline__
))
20526 vld4q_p16 (const poly16_t
* __a
)
20529 __builtin_aarch64_simd_xi __o
;
20530 __o
= __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
20531 ret
.val
[0] = (poly16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 0);
20532 ret
.val
[1] = (poly16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 1);
20533 ret
.val
[2] = (poly16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 2);
20534 ret
.val
[3] = (poly16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 3);
20538 __extension__
static __inline int32x4x4_t
__attribute__ ((__always_inline__
))
20539 vld4q_s32 (const int32_t * __a
)
20542 __builtin_aarch64_simd_xi __o
;
20543 __o
= __builtin_aarch64_ld4v4si ((const __builtin_aarch64_simd_si
*) __a
);
20544 ret
.val
[0] = (int32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 0);
20545 ret
.val
[1] = (int32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 1);
20546 ret
.val
[2] = (int32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 2);
20547 ret
.val
[3] = (int32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 3);
20551 __extension__
static __inline int64x2x4_t
__attribute__ ((__always_inline__
))
20552 vld4q_s64 (const int64_t * __a
)
20555 __builtin_aarch64_simd_xi __o
;
20556 __o
= __builtin_aarch64_ld4v2di ((const __builtin_aarch64_simd_di
*) __a
);
20557 ret
.val
[0] = (int64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 0);
20558 ret
.val
[1] = (int64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 1);
20559 ret
.val
[2] = (int64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 2);
20560 ret
.val
[3] = (int64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 3);
20564 __extension__
static __inline uint8x16x4_t
__attribute__ ((__always_inline__
))
20565 vld4q_u8 (const uint8_t * __a
)
20568 __builtin_aarch64_simd_xi __o
;
20569 __o
= __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
20570 ret
.val
[0] = (uint8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 0);
20571 ret
.val
[1] = (uint8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 1);
20572 ret
.val
[2] = (uint8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 2);
20573 ret
.val
[3] = (uint8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 3);
20577 __extension__
static __inline uint16x8x4_t
__attribute__ ((__always_inline__
))
20578 vld4q_u16 (const uint16_t * __a
)
20581 __builtin_aarch64_simd_xi __o
;
20582 __o
= __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
20583 ret
.val
[0] = (uint16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 0);
20584 ret
.val
[1] = (uint16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 1);
20585 ret
.val
[2] = (uint16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 2);
20586 ret
.val
[3] = (uint16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 3);
20590 __extension__
static __inline uint32x4x4_t
__attribute__ ((__always_inline__
))
20591 vld4q_u32 (const uint32_t * __a
)
20594 __builtin_aarch64_simd_xi __o
;
20595 __o
= __builtin_aarch64_ld4v4si ((const __builtin_aarch64_simd_si
*) __a
);
20596 ret
.val
[0] = (uint32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 0);
20597 ret
.val
[1] = (uint32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 1);
20598 ret
.val
[2] = (uint32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 2);
20599 ret
.val
[3] = (uint32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 3);
20603 __extension__
static __inline uint64x2x4_t
__attribute__ ((__always_inline__
))
20604 vld4q_u64 (const uint64_t * __a
)
20607 __builtin_aarch64_simd_xi __o
;
20608 __o
= __builtin_aarch64_ld4v2di ((const __builtin_aarch64_simd_di
*) __a
);
20609 ret
.val
[0] = (uint64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 0);
20610 ret
.val
[1] = (uint64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 1);
20611 ret
.val
[2] = (uint64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 2);
20612 ret
.val
[3] = (uint64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 3);
20616 __extension__
static __inline float32x4x4_t
__attribute__ ((__always_inline__
))
20617 vld4q_f32 (const float32_t
* __a
)
20620 __builtin_aarch64_simd_xi __o
;
20621 __o
= __builtin_aarch64_ld4v4sf ((const __builtin_aarch64_simd_sf
*) __a
);
20622 ret
.val
[0] = (float32x4_t
) __builtin_aarch64_get_qregxiv4sf (__o
, 0);
20623 ret
.val
[1] = (float32x4_t
) __builtin_aarch64_get_qregxiv4sf (__o
, 1);
20624 ret
.val
[2] = (float32x4_t
) __builtin_aarch64_get_qregxiv4sf (__o
, 2);
20625 ret
.val
[3] = (float32x4_t
) __builtin_aarch64_get_qregxiv4sf (__o
, 3);
20629 __extension__
static __inline float64x2x4_t
__attribute__ ((__always_inline__
))
20630 vld4q_f64 (const float64_t
* __a
)
20633 __builtin_aarch64_simd_xi __o
;
20634 __o
= __builtin_aarch64_ld4v2df ((const __builtin_aarch64_simd_df
*) __a
);
20635 ret
.val
[0] = (float64x2_t
) __builtin_aarch64_get_qregxiv2df (__o
, 0);
20636 ret
.val
[1] = (float64x2_t
) __builtin_aarch64_get_qregxiv2df (__o
, 1);
20637 ret
.val
[2] = (float64x2_t
) __builtin_aarch64_get_qregxiv2df (__o
, 2);
20638 ret
.val
[3] = (float64x2_t
) __builtin_aarch64_get_qregxiv2df (__o
, 3);
20644 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20645 vmax_f32 (float32x2_t __a
, float32x2_t __b
)
20647 return __builtin_aarch64_smax_nanv2sf (__a
, __b
);
20650 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
20651 vmax_s8 (int8x8_t __a
, int8x8_t __b
)
20653 return __builtin_aarch64_smaxv8qi (__a
, __b
);
20656 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
20657 vmax_s16 (int16x4_t __a
, int16x4_t __b
)
20659 return __builtin_aarch64_smaxv4hi (__a
, __b
);
20662 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
20663 vmax_s32 (int32x2_t __a
, int32x2_t __b
)
20665 return __builtin_aarch64_smaxv2si (__a
, __b
);
20668 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
20669 vmax_u8 (uint8x8_t __a
, uint8x8_t __b
)
20671 return (uint8x8_t
) __builtin_aarch64_umaxv8qi ((int8x8_t
) __a
,
20675 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
20676 vmax_u16 (uint16x4_t __a
, uint16x4_t __b
)
20678 return (uint16x4_t
) __builtin_aarch64_umaxv4hi ((int16x4_t
) __a
,
20682 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
20683 vmax_u32 (uint32x2_t __a
, uint32x2_t __b
)
20685 return (uint32x2_t
) __builtin_aarch64_umaxv2si ((int32x2_t
) __a
,
20689 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20690 vmaxq_f32 (float32x4_t __a
, float32x4_t __b
)
20692 return __builtin_aarch64_smax_nanv4sf (__a
, __b
);
20695 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
20696 vmaxq_f64 (float64x2_t __a
, float64x2_t __b
)
20698 return __builtin_aarch64_smax_nanv2df (__a
, __b
);
20701 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
20702 vmaxq_s8 (int8x16_t __a
, int8x16_t __b
)
20704 return __builtin_aarch64_smaxv16qi (__a
, __b
);
20707 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
20708 vmaxq_s16 (int16x8_t __a
, int16x8_t __b
)
20710 return __builtin_aarch64_smaxv8hi (__a
, __b
);
20713 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
20714 vmaxq_s32 (int32x4_t __a
, int32x4_t __b
)
20716 return __builtin_aarch64_smaxv4si (__a
, __b
);
20719 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
20720 vmaxq_u8 (uint8x16_t __a
, uint8x16_t __b
)
20722 return (uint8x16_t
) __builtin_aarch64_umaxv16qi ((int8x16_t
) __a
,
20726 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
20727 vmaxq_u16 (uint16x8_t __a
, uint16x8_t __b
)
20729 return (uint16x8_t
) __builtin_aarch64_umaxv8hi ((int16x8_t
) __a
,
20733 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
20734 vmaxq_u32 (uint32x4_t __a
, uint32x4_t __b
)
20736 return (uint32x4_t
) __builtin_aarch64_umaxv4si ((int32x4_t
) __a
,
20742 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20743 vmaxnm_f32 (float32x2_t __a
, float32x2_t __b
)
20745 return __builtin_aarch64_smaxv2sf (__a
, __b
);
20748 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20749 vmaxnmq_f32 (float32x4_t __a
, float32x4_t __b
)
20751 return __builtin_aarch64_smaxv4sf (__a
, __b
);
20754 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
20755 vmaxnmq_f64 (float64x2_t __a
, float64x2_t __b
)
20757 return __builtin_aarch64_smaxv2df (__a
, __b
);
20762 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
20763 vmaxv_f32 (float32x2_t __a
)
20765 return vget_lane_f32 (__builtin_aarch64_reduc_smax_nan_v2sf (__a
), 0);
20768 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
20769 vmaxv_s8 (int8x8_t __a
)
20771 return vget_lane_s8 (__builtin_aarch64_reduc_smax_v8qi (__a
), 0);
20774 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
20775 vmaxv_s16 (int16x4_t __a
)
20777 return vget_lane_s16 (__builtin_aarch64_reduc_smax_v4hi (__a
), 0);
20780 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
20781 vmaxv_s32 (int32x2_t __a
)
20783 return vget_lane_s32 (__builtin_aarch64_reduc_smax_v2si (__a
), 0);
20786 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
20787 vmaxv_u8 (uint8x8_t __a
)
20789 return vget_lane_u8 ((uint8x8_t
)
20790 __builtin_aarch64_reduc_umax_v8qi ((int8x8_t
) __a
), 0);
20793 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
20794 vmaxv_u16 (uint16x4_t __a
)
20796 return vget_lane_u16 ((uint16x4_t
)
20797 __builtin_aarch64_reduc_umax_v4hi ((int16x4_t
) __a
), 0);
20800 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
20801 vmaxv_u32 (uint32x2_t __a
)
20803 return vget_lane_u32 ((uint32x2_t
)
20804 __builtin_aarch64_reduc_umax_v2si ((int32x2_t
) __a
), 0);
20807 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
20808 vmaxvq_f32 (float32x4_t __a
)
20810 return vgetq_lane_f32 (__builtin_aarch64_reduc_smax_nan_v4sf (__a
), 0);
20813 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
20814 vmaxvq_f64 (float64x2_t __a
)
20816 return vgetq_lane_f64 (__builtin_aarch64_reduc_smax_nan_v2df (__a
), 0);
20819 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
20820 vmaxvq_s8 (int8x16_t __a
)
20822 return vgetq_lane_s8 (__builtin_aarch64_reduc_smax_v16qi (__a
), 0);
20825 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
20826 vmaxvq_s16 (int16x8_t __a
)
20828 return vgetq_lane_s16 (__builtin_aarch64_reduc_smax_v8hi (__a
), 0);
20831 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
20832 vmaxvq_s32 (int32x4_t __a
)
20834 return vgetq_lane_s32 (__builtin_aarch64_reduc_smax_v4si (__a
), 0);
20837 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
20838 vmaxvq_u8 (uint8x16_t __a
)
20840 return vgetq_lane_u8 ((uint8x16_t
)
20841 __builtin_aarch64_reduc_umax_v16qi ((int8x16_t
) __a
), 0);
20844 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
20845 vmaxvq_u16 (uint16x8_t __a
)
20847 return vgetq_lane_u16 ((uint16x8_t
)
20848 __builtin_aarch64_reduc_umax_v8hi ((int16x8_t
) __a
), 0);
20851 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
20852 vmaxvq_u32 (uint32x4_t __a
)
20854 return vgetq_lane_u32 ((uint32x4_t
)
20855 __builtin_aarch64_reduc_umax_v4si ((int32x4_t
) __a
), 0);
20860 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
20861 vmaxnmv_f32 (float32x2_t __a
)
20863 return vget_lane_f32 (__builtin_aarch64_reduc_smax_v2sf (__a
), 0);
20866 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
20867 vmaxnmvq_f32 (float32x4_t __a
)
20869 return vgetq_lane_f32 (__builtin_aarch64_reduc_smax_v4sf (__a
), 0);
20872 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
20873 vmaxnmvq_f64 (float64x2_t __a
)
20875 return vgetq_lane_f64 (__builtin_aarch64_reduc_smax_v2df (__a
), 0);
20880 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20881 vmin_f32 (float32x2_t __a
, float32x2_t __b
)
20883 return __builtin_aarch64_smin_nanv2sf (__a
, __b
);
20886 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
20887 vmin_s8 (int8x8_t __a
, int8x8_t __b
)
20889 return __builtin_aarch64_sminv8qi (__a
, __b
);
20892 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
20893 vmin_s16 (int16x4_t __a
, int16x4_t __b
)
20895 return __builtin_aarch64_sminv4hi (__a
, __b
);
20898 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
20899 vmin_s32 (int32x2_t __a
, int32x2_t __b
)
20901 return __builtin_aarch64_sminv2si (__a
, __b
);
20904 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
20905 vmin_u8 (uint8x8_t __a
, uint8x8_t __b
)
20907 return (uint8x8_t
) __builtin_aarch64_uminv8qi ((int8x8_t
) __a
,
20911 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
20912 vmin_u16 (uint16x4_t __a
, uint16x4_t __b
)
20914 return (uint16x4_t
) __builtin_aarch64_uminv4hi ((int16x4_t
) __a
,
20918 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
20919 vmin_u32 (uint32x2_t __a
, uint32x2_t __b
)
20921 return (uint32x2_t
) __builtin_aarch64_uminv2si ((int32x2_t
) __a
,
20925 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20926 vminq_f32 (float32x4_t __a
, float32x4_t __b
)
20928 return __builtin_aarch64_smin_nanv4sf (__a
, __b
);
20931 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
20932 vminq_f64 (float64x2_t __a
, float64x2_t __b
)
20934 return __builtin_aarch64_smin_nanv2df (__a
, __b
);
20937 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
20938 vminq_s8 (int8x16_t __a
, int8x16_t __b
)
20940 return __builtin_aarch64_sminv16qi (__a
, __b
);
20943 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
20944 vminq_s16 (int16x8_t __a
, int16x8_t __b
)
20946 return __builtin_aarch64_sminv8hi (__a
, __b
);
20949 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
20950 vminq_s32 (int32x4_t __a
, int32x4_t __b
)
20952 return __builtin_aarch64_sminv4si (__a
, __b
);
20955 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
20956 vminq_u8 (uint8x16_t __a
, uint8x16_t __b
)
20958 return (uint8x16_t
) __builtin_aarch64_uminv16qi ((int8x16_t
) __a
,
20962 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
20963 vminq_u16 (uint16x8_t __a
, uint16x8_t __b
)
20965 return (uint16x8_t
) __builtin_aarch64_uminv8hi ((int16x8_t
) __a
,
20969 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
20970 vminq_u32 (uint32x4_t __a
, uint32x4_t __b
)
20972 return (uint32x4_t
) __builtin_aarch64_uminv4si ((int32x4_t
) __a
,
20978 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20979 vminnm_f32 (float32x2_t __a
, float32x2_t __b
)
20981 return __builtin_aarch64_sminv2sf (__a
, __b
);
20984 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20985 vminnmq_f32 (float32x4_t __a
, float32x4_t __b
)
20987 return __builtin_aarch64_sminv4sf (__a
, __b
);
20990 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
20991 vminnmq_f64 (float64x2_t __a
, float64x2_t __b
)
20993 return __builtin_aarch64_sminv2df (__a
, __b
);
20998 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
20999 vminv_f32 (float32x2_t __a
)
21001 return vget_lane_f32 (__builtin_aarch64_reduc_smin_nan_v2sf (__a
), 0);
21004 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
21005 vminv_s8 (int8x8_t __a
)
21007 return vget_lane_s8 (__builtin_aarch64_reduc_smin_v8qi (__a
), 0);
21010 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
21011 vminv_s16 (int16x4_t __a
)
21013 return vget_lane_s16 (__builtin_aarch64_reduc_smin_v4hi (__a
), 0);
21016 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
21017 vminv_s32 (int32x2_t __a
)
21019 return vget_lane_s32 (__builtin_aarch64_reduc_smin_v2si (__a
), 0);
21022 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
21023 vminv_u8 (uint8x8_t __a
)
21025 return vget_lane_u8 ((uint8x8_t
)
21026 __builtin_aarch64_reduc_umin_v8qi ((int8x8_t
) __a
), 0);
21029 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
21030 vminv_u16 (uint16x4_t __a
)
21032 return vget_lane_u16 ((uint16x4_t
)
21033 __builtin_aarch64_reduc_umin_v4hi ((int16x4_t
) __a
), 0);
21036 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
21037 vminv_u32 (uint32x2_t __a
)
21039 return vget_lane_u32 ((uint32x2_t
)
21040 __builtin_aarch64_reduc_umin_v2si ((int32x2_t
) __a
), 0);
21043 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
21044 vminvq_f32 (float32x4_t __a
)
21046 return vgetq_lane_f32 (__builtin_aarch64_reduc_smin_nan_v4sf (__a
), 0);
21049 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
21050 vminvq_f64 (float64x2_t __a
)
21052 return vgetq_lane_f64 (__builtin_aarch64_reduc_smin_nan_v2df (__a
), 0);
21055 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
21056 vminvq_s8 (int8x16_t __a
)
21058 return vgetq_lane_s8 (__builtin_aarch64_reduc_smin_v16qi (__a
), 0);
21061 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
21062 vminvq_s16 (int16x8_t __a
)
21064 return vgetq_lane_s16 (__builtin_aarch64_reduc_smin_v8hi (__a
), 0);
21067 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
21068 vminvq_s32 (int32x4_t __a
)
21070 return vgetq_lane_s32 (__builtin_aarch64_reduc_smin_v4si (__a
), 0);
21073 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
21074 vminvq_u8 (uint8x16_t __a
)
21076 return vgetq_lane_u8 ((uint8x16_t
)
21077 __builtin_aarch64_reduc_umin_v16qi ((int8x16_t
) __a
), 0);
21080 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
21081 vminvq_u16 (uint16x8_t __a
)
21083 return vgetq_lane_u16 ((uint16x8_t
)
21084 __builtin_aarch64_reduc_umin_v8hi ((int16x8_t
) __a
), 0);
21087 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
21088 vminvq_u32 (uint32x4_t __a
)
21090 return vgetq_lane_u32 ((uint32x4_t
)
21091 __builtin_aarch64_reduc_umin_v4si ((int32x4_t
) __a
), 0);
21096 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
21097 vminnmv_f32 (float32x2_t __a
)
21099 return vget_lane_f32 (__builtin_aarch64_reduc_smin_v2sf (__a
), 0);
21102 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
21103 vminnmvq_f32 (float32x4_t __a
)
21105 return vgetq_lane_f32 (__builtin_aarch64_reduc_smin_v4sf (__a
), 0);
21108 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
21109 vminnmvq_f64 (float64x2_t __a
)
21111 return vgetq_lane_f64 (__builtin_aarch64_reduc_smin_v2df (__a
), 0);
21116 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
21117 vmla_f32 (float32x2_t a
, float32x2_t b
, float32x2_t c
)
21122 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
21123 vmlaq_f32 (float32x4_t a
, float32x4_t b
, float32x4_t c
)
21128 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
21129 vmlaq_f64 (float64x2_t a
, float64x2_t b
, float64x2_t c
)
21134 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
21135 vmls_f32 (float32x2_t a
, float32x2_t b
, float32x2_t c
)
21140 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
21141 vmlsq_f32 (float32x4_t a
, float32x4_t b
, float32x4_t c
)
21146 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
21147 vmlsq_f64 (float64x2_t a
, float64x2_t b
, float64x2_t c
)
21154 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
21155 vmul_lane_f32 (float32x2_t __a
, float32x2_t __b
, const int __lane
)
21157 return __a
* __aarch64_vget_lane_f32 (__b
, __lane
);
21160 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
21161 vmul_lane_f64 (float64x1_t __a
, float64x1_t __b
, const int __lane
)
21166 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
21167 vmul_lane_s16 (int16x4_t __a
, int16x4_t __b
, const int __lane
)
21169 return __a
* __aarch64_vget_lane_s16 (__b
, __lane
);
21172 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
21173 vmul_lane_s32 (int32x2_t __a
, int32x2_t __b
, const int __lane
)
21175 return __a
* __aarch64_vget_lane_s32 (__b
, __lane
);
21178 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
21179 vmul_lane_u16 (uint16x4_t __a
, uint16x4_t __b
, const int __lane
)
21181 return __a
* __aarch64_vget_lane_u16 (__b
, __lane
);
21184 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
21185 vmul_lane_u32 (uint32x2_t __a
, uint32x2_t __b
, const int __lane
)
21187 return __a
* __aarch64_vget_lane_u32 (__b
, __lane
);
21192 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
21193 vmul_laneq_f32 (float32x2_t __a
, float32x4_t __b
, const int __lane
)
21195 return __a
* __aarch64_vgetq_lane_f32 (__b
, __lane
);
21198 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
21199 vmul_laneq_f64 (float64x1_t __a
, float64x2_t __b
, const int __lane
)
21201 return __a
* __aarch64_vgetq_lane_f64 (__b
, __lane
);
21204 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
21205 vmul_laneq_s16 (int16x4_t __a
, int16x8_t __b
, const int __lane
)
21207 return __a
* __aarch64_vgetq_lane_s16 (__b
, __lane
);
21210 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
21211 vmul_laneq_s32 (int32x2_t __a
, int32x4_t __b
, const int __lane
)
21213 return __a
* __aarch64_vgetq_lane_s32 (__b
, __lane
);
21216 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
21217 vmul_laneq_u16 (uint16x4_t __a
, uint16x8_t __b
, const int __lane
)
21219 return __a
* __aarch64_vgetq_lane_u16 (__b
, __lane
);
21222 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
21223 vmul_laneq_u32 (uint32x2_t __a
, uint32x4_t __b
, const int __lane
)
21225 return __a
* __aarch64_vgetq_lane_u32 (__b
, __lane
);
21230 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
21231 vmulq_lane_f32 (float32x4_t __a
, float32x2_t __b
, const int __lane
)
21233 return __a
* __aarch64_vget_lane_f32 (__b
, __lane
);
21236 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
21237 vmulq_lane_f64 (float64x2_t __a
, float64x1_t __b
, const int __lane
)
21242 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
21243 vmulq_lane_s16 (int16x8_t __a
, int16x4_t __b
, const int __lane
)
21245 return __a
* __aarch64_vget_lane_s16 (__b
, __lane
);
21248 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21249 vmulq_lane_s32 (int32x4_t __a
, int32x2_t __b
, const int __lane
)
21251 return __a
* __aarch64_vget_lane_s32 (__b
, __lane
);
21254 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
21255 vmulq_lane_u16 (uint16x8_t __a
, uint16x4_t __b
, const int __lane
)
21257 return __a
* __aarch64_vget_lane_u16 (__b
, __lane
);
21260 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
21261 vmulq_lane_u32 (uint32x4_t __a
, uint32x2_t __b
, const int __lane
)
21263 return __a
* __aarch64_vget_lane_u32 (__b
, __lane
);
21268 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
21269 vmulq_laneq_f32 (float32x4_t __a
, float32x4_t __b
, const int __lane
)
21271 return __a
* __aarch64_vgetq_lane_f32 (__b
, __lane
);
21274 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
21275 vmulq_laneq_f64 (float64x2_t __a
, float64x2_t __b
, const int __lane
)
21277 return __a
* __aarch64_vgetq_lane_f64 (__b
, __lane
);
21280 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
21281 vmulq_laneq_s16 (int16x8_t __a
, int16x8_t __b
, const int __lane
)
21283 return __a
* __aarch64_vgetq_lane_s16 (__b
, __lane
);
21286 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21287 vmulq_laneq_s32 (int32x4_t __a
, int32x4_t __b
, const int __lane
)
21289 return __a
* __aarch64_vgetq_lane_s32 (__b
, __lane
);
21292 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
21293 vmulq_laneq_u16 (uint16x8_t __a
, uint16x8_t __b
, const int __lane
)
21295 return __a
* __aarch64_vgetq_lane_u16 (__b
, __lane
);
21298 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
21299 vmulq_laneq_u32 (uint32x4_t __a
, uint32x4_t __b
, const int __lane
)
21301 return __a
* __aarch64_vgetq_lane_u32 (__b
, __lane
);
21306 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21307 vqabsq_s64 (int64x2_t __a
)
21309 return (int64x2_t
) __builtin_aarch64_sqabsv2di (__a
);
21312 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
21313 vqabsb_s8 (int8x1_t __a
)
21315 return (int8x1_t
) __builtin_aarch64_sqabsqi (__a
);
21318 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21319 vqabsh_s16 (int16x1_t __a
)
21321 return (int16x1_t
) __builtin_aarch64_sqabshi (__a
);
21324 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21325 vqabss_s32 (int32x1_t __a
)
21327 return (int32x1_t
) __builtin_aarch64_sqabssi (__a
);
21332 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
21333 vqaddb_s8 (int8x1_t __a
, int8x1_t __b
)
21335 return (int8x1_t
) __builtin_aarch64_sqaddqi (__a
, __b
);
21338 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21339 vqaddh_s16 (int16x1_t __a
, int16x1_t __b
)
21341 return (int16x1_t
) __builtin_aarch64_sqaddhi (__a
, __b
);
21344 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21345 vqadds_s32 (int32x1_t __a
, int32x1_t __b
)
21347 return (int32x1_t
) __builtin_aarch64_sqaddsi (__a
, __b
);
21350 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21351 vqaddd_s64 (int64x1_t __a
, int64x1_t __b
)
21353 return (int64x1_t
) __builtin_aarch64_sqadddi (__a
, __b
);
21356 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
21357 vqaddb_u8 (uint8x1_t __a
, uint8x1_t __b
)
21359 return (uint8x1_t
) __builtin_aarch64_uqaddqi (__a
, __b
);
21362 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
21363 vqaddh_u16 (uint16x1_t __a
, uint16x1_t __b
)
21365 return (uint16x1_t
) __builtin_aarch64_uqaddhi (__a
, __b
);
21368 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
21369 vqadds_u32 (uint32x1_t __a
, uint32x1_t __b
)
21371 return (uint32x1_t
) __builtin_aarch64_uqaddsi (__a
, __b
);
21374 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
21375 vqaddd_u64 (uint64x1_t __a
, uint64x1_t __b
)
21377 return (uint64x1_t
) __builtin_aarch64_uqadddi (__a
, __b
);
21382 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21383 vqdmlal_s16 (int32x4_t __a
, int16x4_t __b
, int16x4_t __c
)
21385 return __builtin_aarch64_sqdmlalv4hi (__a
, __b
, __c
);
21388 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21389 vqdmlal_high_s16 (int32x4_t __a
, int16x8_t __b
, int16x8_t __c
)
21391 return __builtin_aarch64_sqdmlal2v8hi (__a
, __b
, __c
);
21394 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21395 vqdmlal_high_lane_s16 (int32x4_t __a
, int16x8_t __b
, int16x8_t __c
,
21398 return __builtin_aarch64_sqdmlal2_lanev8hi (__a
, __b
, __c
, __d
);
21401 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21402 vqdmlal_high_laneq_s16 (int32x4_t __a
, int16x8_t __b
, int16x8_t __c
,
21405 return __builtin_aarch64_sqdmlal2_laneqv8hi (__a
, __b
, __c
, __d
);
21408 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21409 vqdmlal_high_n_s16 (int32x4_t __a
, int16x8_t __b
, int16_t __c
)
21411 return __builtin_aarch64_sqdmlal2_nv8hi (__a
, __b
, __c
);
21414 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21415 vqdmlal_lane_s16 (int32x4_t __a
, int16x4_t __b
, int16x4_t __c
, int const __d
)
21417 int16x8_t __tmp
= vcombine_s16 (__c
, vcreate_s16 (__AARCH64_INT64_C (0)));
21418 return __builtin_aarch64_sqdmlal_lanev4hi (__a
, __b
, __tmp
, __d
);
21421 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21422 vqdmlal_laneq_s16 (int32x4_t __a
, int16x4_t __b
, int16x8_t __c
, int const __d
)
21424 return __builtin_aarch64_sqdmlal_laneqv4hi (__a
, __b
, __c
, __d
);
21427 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21428 vqdmlal_n_s16 (int32x4_t __a
, int16x4_t __b
, int16_t __c
)
21430 return __builtin_aarch64_sqdmlal_nv4hi (__a
, __b
, __c
);
21433 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21434 vqdmlal_s32 (int64x2_t __a
, int32x2_t __b
, int32x2_t __c
)
21436 return __builtin_aarch64_sqdmlalv2si (__a
, __b
, __c
);
21439 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21440 vqdmlal_high_s32 (int64x2_t __a
, int32x4_t __b
, int32x4_t __c
)
21442 return __builtin_aarch64_sqdmlal2v4si (__a
, __b
, __c
);
21445 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21446 vqdmlal_high_lane_s32 (int64x2_t __a
, int32x4_t __b
, int32x4_t __c
,
21449 return __builtin_aarch64_sqdmlal2_lanev4si (__a
, __b
, __c
, __d
);
21452 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21453 vqdmlal_high_laneq_s32 (int64x2_t __a
, int32x4_t __b
, int32x4_t __c
,
21456 return __builtin_aarch64_sqdmlal2_laneqv4si (__a
, __b
, __c
, __d
);
21459 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21460 vqdmlal_high_n_s32 (int64x2_t __a
, int32x4_t __b
, int32_t __c
)
21462 return __builtin_aarch64_sqdmlal2_nv4si (__a
, __b
, __c
);
21465 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21466 vqdmlal_lane_s32 (int64x2_t __a
, int32x2_t __b
, int32x2_t __c
, int const __d
)
21468 int32x4_t __tmp
= vcombine_s32 (__c
, vcreate_s32 (__AARCH64_INT64_C (0)));
21469 return __builtin_aarch64_sqdmlal_lanev2si (__a
, __b
, __tmp
, __d
);
21472 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21473 vqdmlal_laneq_s32 (int64x2_t __a
, int32x2_t __b
, int32x4_t __c
, int const __d
)
21475 return __builtin_aarch64_sqdmlal_laneqv2si (__a
, __b
, __c
, __d
);
21478 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21479 vqdmlal_n_s32 (int64x2_t __a
, int32x2_t __b
, int32_t __c
)
21481 return __builtin_aarch64_sqdmlal_nv2si (__a
, __b
, __c
);
21484 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21485 vqdmlalh_s16 (int32x1_t __a
, int16x1_t __b
, int16x1_t __c
)
21487 return __builtin_aarch64_sqdmlalhi (__a
, __b
, __c
);
21490 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21491 vqdmlalh_lane_s16 (int32x1_t __a
, int16x1_t __b
, int16x8_t __c
, const int __d
)
21493 return __builtin_aarch64_sqdmlal_lanehi (__a
, __b
, __c
, __d
);
21496 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21497 vqdmlals_s32 (int64x1_t __a
, int32x1_t __b
, int32x1_t __c
)
21499 return __builtin_aarch64_sqdmlalsi (__a
, __b
, __c
);
21502 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21503 vqdmlals_lane_s32 (int64x1_t __a
, int32x1_t __b
, int32x4_t __c
, const int __d
)
21505 return __builtin_aarch64_sqdmlal_lanesi (__a
, __b
, __c
, __d
);
21510 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21511 vqdmlsl_s16 (int32x4_t __a
, int16x4_t __b
, int16x4_t __c
)
21513 return __builtin_aarch64_sqdmlslv4hi (__a
, __b
, __c
);
21516 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21517 vqdmlsl_high_s16 (int32x4_t __a
, int16x8_t __b
, int16x8_t __c
)
21519 return __builtin_aarch64_sqdmlsl2v8hi (__a
, __b
, __c
);
21522 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21523 vqdmlsl_high_lane_s16 (int32x4_t __a
, int16x8_t __b
, int16x8_t __c
,
21526 return __builtin_aarch64_sqdmlsl2_lanev8hi (__a
, __b
, __c
, __d
);
21529 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21530 vqdmlsl_high_laneq_s16 (int32x4_t __a
, int16x8_t __b
, int16x8_t __c
,
21533 return __builtin_aarch64_sqdmlsl2_laneqv8hi (__a
, __b
, __c
, __d
);
21536 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21537 vqdmlsl_high_n_s16 (int32x4_t __a
, int16x8_t __b
, int16_t __c
)
21539 return __builtin_aarch64_sqdmlsl2_nv8hi (__a
, __b
, __c
);
21542 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21543 vqdmlsl_lane_s16 (int32x4_t __a
, int16x4_t __b
, int16x4_t __c
, int const __d
)
21545 int16x8_t __tmp
= vcombine_s16 (__c
, vcreate_s16 (__AARCH64_INT64_C (0)));
21546 return __builtin_aarch64_sqdmlsl_lanev4hi (__a
, __b
, __tmp
, __d
);
21549 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21550 vqdmlsl_laneq_s16 (int32x4_t __a
, int16x4_t __b
, int16x8_t __c
, int const __d
)
21552 return __builtin_aarch64_sqdmlsl_laneqv4hi (__a
, __b
, __c
, __d
);
21555 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21556 vqdmlsl_n_s16 (int32x4_t __a
, int16x4_t __b
, int16_t __c
)
21558 return __builtin_aarch64_sqdmlsl_nv4hi (__a
, __b
, __c
);
21561 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21562 vqdmlsl_s32 (int64x2_t __a
, int32x2_t __b
, int32x2_t __c
)
21564 return __builtin_aarch64_sqdmlslv2si (__a
, __b
, __c
);
21567 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21568 vqdmlsl_high_s32 (int64x2_t __a
, int32x4_t __b
, int32x4_t __c
)
21570 return __builtin_aarch64_sqdmlsl2v4si (__a
, __b
, __c
);
21573 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21574 vqdmlsl_high_lane_s32 (int64x2_t __a
, int32x4_t __b
, int32x4_t __c
,
21577 return __builtin_aarch64_sqdmlsl2_lanev4si (__a
, __b
, __c
, __d
);
21580 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21581 vqdmlsl_high_laneq_s32 (int64x2_t __a
, int32x4_t __b
, int32x4_t __c
,
21584 return __builtin_aarch64_sqdmlsl2_laneqv4si (__a
, __b
, __c
, __d
);
21587 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21588 vqdmlsl_high_n_s32 (int64x2_t __a
, int32x4_t __b
, int32_t __c
)
21590 return __builtin_aarch64_sqdmlsl2_nv4si (__a
, __b
, __c
);
21593 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21594 vqdmlsl_lane_s32 (int64x2_t __a
, int32x2_t __b
, int32x2_t __c
, int const __d
)
21596 int32x4_t __tmp
= vcombine_s32 (__c
, vcreate_s32 (__AARCH64_INT64_C (0)));
21597 return __builtin_aarch64_sqdmlsl_lanev2si (__a
, __b
, __tmp
, __d
);
21600 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21601 vqdmlsl_laneq_s32 (int64x2_t __a
, int32x2_t __b
, int32x4_t __c
, int const __d
)
21603 return __builtin_aarch64_sqdmlsl_laneqv2si (__a
, __b
, __c
, __d
);
21606 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21607 vqdmlsl_n_s32 (int64x2_t __a
, int32x2_t __b
, int32_t __c
)
21609 return __builtin_aarch64_sqdmlsl_nv2si (__a
, __b
, __c
);
21612 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21613 vqdmlslh_s16 (int32x1_t __a
, int16x1_t __b
, int16x1_t __c
)
21615 return __builtin_aarch64_sqdmlslhi (__a
, __b
, __c
);
21618 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21619 vqdmlslh_lane_s16 (int32x1_t __a
, int16x1_t __b
, int16x8_t __c
, const int __d
)
21621 return __builtin_aarch64_sqdmlsl_lanehi (__a
, __b
, __c
, __d
);
21624 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21625 vqdmlsls_s32 (int64x1_t __a
, int32x1_t __b
, int32x1_t __c
)
21627 return __builtin_aarch64_sqdmlslsi (__a
, __b
, __c
);
21630 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21631 vqdmlsls_lane_s32 (int64x1_t __a
, int32x1_t __b
, int32x4_t __c
, const int __d
)
21633 return __builtin_aarch64_sqdmlsl_lanesi (__a
, __b
, __c
, __d
);
21638 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
21639 vqdmulh_lane_s16 (int16x4_t __a
, int16x4_t __b
, const int __c
)
21641 return __builtin_aarch64_sqdmulh_lanev4hi (__a
, __b
, __c
);
21644 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
21645 vqdmulh_lane_s32 (int32x2_t __a
, int32x2_t __b
, const int __c
)
21647 return __builtin_aarch64_sqdmulh_lanev2si (__a
, __b
, __c
);
21650 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
21651 vqdmulhq_lane_s16 (int16x8_t __a
, int16x4_t __b
, const int __c
)
21653 return __builtin_aarch64_sqdmulh_lanev8hi (__a
, __b
, __c
);
21656 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21657 vqdmulhq_lane_s32 (int32x4_t __a
, int32x2_t __b
, const int __c
)
21659 return __builtin_aarch64_sqdmulh_lanev4si (__a
, __b
, __c
);
21662 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21663 vqdmulhh_s16 (int16x1_t __a
, int16x1_t __b
)
21665 return (int16x1_t
) __builtin_aarch64_sqdmulhhi (__a
, __b
);
21668 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21669 vqdmulhh_lane_s16 (int16x1_t __a
, int16x8_t __b
, const int __c
)
21671 return __builtin_aarch64_sqdmulh_lanehi (__a
, __b
, __c
);
21674 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21675 vqdmulhs_s32 (int32x1_t __a
, int32x1_t __b
)
21677 return (int32x1_t
) __builtin_aarch64_sqdmulhsi (__a
, __b
);
21680 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21681 vqdmulhs_lane_s32 (int32x1_t __a
, int32x4_t __b
, const int __c
)
21683 return __builtin_aarch64_sqdmulh_lanesi (__a
, __b
, __c
);
21688 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21689 vqdmull_s16 (int16x4_t __a
, int16x4_t __b
)
21691 return __builtin_aarch64_sqdmullv4hi (__a
, __b
);
21694 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21695 vqdmull_high_s16 (int16x8_t __a
, int16x8_t __b
)
21697 return __builtin_aarch64_sqdmull2v8hi (__a
, __b
);
21700 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21701 vqdmull_high_lane_s16 (int16x8_t __a
, int16x8_t __b
, int const __c
)
21703 return __builtin_aarch64_sqdmull2_lanev8hi (__a
, __b
,__c
);
21706 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21707 vqdmull_high_laneq_s16 (int16x8_t __a
, int16x8_t __b
, int const __c
)
21709 return __builtin_aarch64_sqdmull2_laneqv8hi (__a
, __b
,__c
);
21712 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21713 vqdmull_high_n_s16 (int16x8_t __a
, int16_t __b
)
21715 return __builtin_aarch64_sqdmull2_nv8hi (__a
, __b
);
21718 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21719 vqdmull_lane_s16 (int16x4_t __a
, int16x4_t __b
, int const __c
)
21721 int16x8_t __tmp
= vcombine_s16 (__b
, vcreate_s16 (__AARCH64_INT64_C (0)));
21722 return __builtin_aarch64_sqdmull_lanev4hi (__a
, __tmp
, __c
);
21725 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21726 vqdmull_laneq_s16 (int16x4_t __a
, int16x8_t __b
, int const __c
)
21728 return __builtin_aarch64_sqdmull_laneqv4hi (__a
, __b
, __c
);
21731 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21732 vqdmull_n_s16 (int16x4_t __a
, int16_t __b
)
21734 return __builtin_aarch64_sqdmull_nv4hi (__a
, __b
);
21737 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21738 vqdmull_s32 (int32x2_t __a
, int32x2_t __b
)
21740 return __builtin_aarch64_sqdmullv2si (__a
, __b
);
21743 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21744 vqdmull_high_s32 (int32x4_t __a
, int32x4_t __b
)
21746 return __builtin_aarch64_sqdmull2v4si (__a
, __b
);
21749 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21750 vqdmull_high_lane_s32 (int32x4_t __a
, int32x4_t __b
, int const __c
)
21752 return __builtin_aarch64_sqdmull2_lanev4si (__a
, __b
, __c
);
21755 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21756 vqdmull_high_laneq_s32 (int32x4_t __a
, int32x4_t __b
, int const __c
)
21758 return __builtin_aarch64_sqdmull2_laneqv4si (__a
, __b
, __c
);
21761 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21762 vqdmull_high_n_s32 (int32x4_t __a
, int32_t __b
)
21764 return __builtin_aarch64_sqdmull2_nv4si (__a
, __b
);
21767 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21768 vqdmull_lane_s32 (int32x2_t __a
, int32x2_t __b
, int const __c
)
21770 int32x4_t __tmp
= vcombine_s32 (__b
, vcreate_s32 (__AARCH64_INT64_C (0)));
21771 return __builtin_aarch64_sqdmull_lanev2si (__a
, __tmp
, __c
);
21774 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21775 vqdmull_laneq_s32 (int32x2_t __a
, int32x4_t __b
, int const __c
)
21777 return __builtin_aarch64_sqdmull_laneqv2si (__a
, __b
, __c
);
21780 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21781 vqdmull_n_s32 (int32x2_t __a
, int32_t __b
)
21783 return __builtin_aarch64_sqdmull_nv2si (__a
, __b
);
21786 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21787 vqdmullh_s16 (int16x1_t __a
, int16x1_t __b
)
21789 return (int32x1_t
) __builtin_aarch64_sqdmullhi (__a
, __b
);
21792 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21793 vqdmullh_lane_s16 (int16x1_t __a
, int16x8_t __b
, const int __c
)
21795 return __builtin_aarch64_sqdmull_lanehi (__a
, __b
, __c
);
21798 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21799 vqdmulls_s32 (int32x1_t __a
, int32x1_t __b
)
21801 return (int64x1_t
) __builtin_aarch64_sqdmullsi (__a
, __b
);
21804 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21805 vqdmulls_lane_s32 (int32x1_t __a
, int32x4_t __b
, const int __c
)
21807 return __builtin_aarch64_sqdmull_lanesi (__a
, __b
, __c
);
21812 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
21813 vqmovn_s16 (int16x8_t __a
)
21815 return (int8x8_t
) __builtin_aarch64_sqmovnv8hi (__a
);
21818 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
21819 vqmovn_s32 (int32x4_t __a
)
21821 return (int16x4_t
) __builtin_aarch64_sqmovnv4si (__a
);
21824 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
21825 vqmovn_s64 (int64x2_t __a
)
21827 return (int32x2_t
) __builtin_aarch64_sqmovnv2di (__a
);
21830 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
21831 vqmovn_u16 (uint16x8_t __a
)
21833 return (uint8x8_t
) __builtin_aarch64_uqmovnv8hi ((int16x8_t
) __a
);
21836 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
21837 vqmovn_u32 (uint32x4_t __a
)
21839 return (uint16x4_t
) __builtin_aarch64_uqmovnv4si ((int32x4_t
) __a
);
21842 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
21843 vqmovn_u64 (uint64x2_t __a
)
21845 return (uint32x2_t
) __builtin_aarch64_uqmovnv2di ((int64x2_t
) __a
);
21848 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
21849 vqmovnh_s16 (int16x1_t __a
)
21851 return (int8x1_t
) __builtin_aarch64_sqmovnhi (__a
);
21854 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21855 vqmovns_s32 (int32x1_t __a
)
21857 return (int16x1_t
) __builtin_aarch64_sqmovnsi (__a
);
21860 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21861 vqmovnd_s64 (int64x1_t __a
)
21863 return (int32x1_t
) __builtin_aarch64_sqmovndi (__a
);
21866 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
21867 vqmovnh_u16 (uint16x1_t __a
)
21869 return (uint8x1_t
) __builtin_aarch64_uqmovnhi (__a
);
21872 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
21873 vqmovns_u32 (uint32x1_t __a
)
21875 return (uint16x1_t
) __builtin_aarch64_uqmovnsi (__a
);
21878 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
21879 vqmovnd_u64 (uint64x1_t __a
)
21881 return (uint32x1_t
) __builtin_aarch64_uqmovndi (__a
);
21886 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
21887 vqmovun_s16 (int16x8_t __a
)
21889 return (uint8x8_t
) __builtin_aarch64_sqmovunv8hi (__a
);
21892 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
21893 vqmovun_s32 (int32x4_t __a
)
21895 return (uint16x4_t
) __builtin_aarch64_sqmovunv4si (__a
);
21898 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
21899 vqmovun_s64 (int64x2_t __a
)
21901 return (uint32x2_t
) __builtin_aarch64_sqmovunv2di (__a
);
21904 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
21905 vqmovunh_s16 (int16x1_t __a
)
21907 return (int8x1_t
) __builtin_aarch64_sqmovunhi (__a
);
21910 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21911 vqmovuns_s32 (int32x1_t __a
)
21913 return (int16x1_t
) __builtin_aarch64_sqmovunsi (__a
);
21916 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21917 vqmovund_s64 (int64x1_t __a
)
21919 return (int32x1_t
) __builtin_aarch64_sqmovundi (__a
);
21924 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21925 vqnegq_s64 (int64x2_t __a
)
21927 return (int64x2_t
) __builtin_aarch64_sqnegv2di (__a
);
21930 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
21931 vqnegb_s8 (int8x1_t __a
)
21933 return (int8x1_t
) __builtin_aarch64_sqnegqi (__a
);
21936 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21937 vqnegh_s16 (int16x1_t __a
)
21939 return (int16x1_t
) __builtin_aarch64_sqneghi (__a
);
21942 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21943 vqnegs_s32 (int32x1_t __a
)
21945 return (int32x1_t
) __builtin_aarch64_sqnegsi (__a
);
21950 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
21951 vqrdmulh_lane_s16 (int16x4_t __a
, int16x4_t __b
, const int __c
)
21953 return __builtin_aarch64_sqrdmulh_lanev4hi (__a
, __b
, __c
);
21956 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
21957 vqrdmulh_lane_s32 (int32x2_t __a
, int32x2_t __b
, const int __c
)
21959 return __builtin_aarch64_sqrdmulh_lanev2si (__a
, __b
, __c
);
21962 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
21963 vqrdmulhq_lane_s16 (int16x8_t __a
, int16x4_t __b
, const int __c
)
21965 return __builtin_aarch64_sqrdmulh_lanev8hi (__a
, __b
, __c
);
21968 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21969 vqrdmulhq_lane_s32 (int32x4_t __a
, int32x2_t __b
, const int __c
)
21971 return __builtin_aarch64_sqrdmulh_lanev4si (__a
, __b
, __c
);
21974 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21975 vqrdmulhh_s16 (int16x1_t __a
, int16x1_t __b
)
21977 return (int16x1_t
) __builtin_aarch64_sqrdmulhhi (__a
, __b
);
21980 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21981 vqrdmulhh_lane_s16 (int16x1_t __a
, int16x8_t __b
, const int __c
)
21983 return __builtin_aarch64_sqrdmulh_lanehi (__a
, __b
, __c
);
21986 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21987 vqrdmulhs_s32 (int32x1_t __a
, int32x1_t __b
)
21989 return (int32x1_t
) __builtin_aarch64_sqrdmulhsi (__a
, __b
);
21992 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21993 vqrdmulhs_lane_s32 (int32x1_t __a
, int32x4_t __b
, const int __c
)
21995 return __builtin_aarch64_sqrdmulh_lanesi (__a
, __b
, __c
);
22000 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
22001 vqrshl_s8 (int8x8_t __a
, int8x8_t __b
)
22003 return __builtin_aarch64_sqrshlv8qi (__a
, __b
);
22006 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
22007 vqrshl_s16 (int16x4_t __a
, int16x4_t __b
)
22009 return __builtin_aarch64_sqrshlv4hi (__a
, __b
);
22012 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
22013 vqrshl_s32 (int32x2_t __a
, int32x2_t __b
)
22015 return __builtin_aarch64_sqrshlv2si (__a
, __b
);
22018 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22019 vqrshl_s64 (int64x1_t __a
, int64x1_t __b
)
22021 return __builtin_aarch64_sqrshldi (__a
, __b
);
22024 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22025 vqrshl_u8 (uint8x8_t __a
, int8x8_t __b
)
22027 return (uint8x8_t
) __builtin_aarch64_uqrshlv8qi ((int8x8_t
) __a
, __b
);
22030 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22031 vqrshl_u16 (uint16x4_t __a
, int16x4_t __b
)
22033 return (uint16x4_t
) __builtin_aarch64_uqrshlv4hi ((int16x4_t
) __a
, __b
);
22036 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22037 vqrshl_u32 (uint32x2_t __a
, int32x2_t __b
)
22039 return (uint32x2_t
) __builtin_aarch64_uqrshlv2si ((int32x2_t
) __a
, __b
);
22042 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22043 vqrshl_u64 (uint64x1_t __a
, int64x1_t __b
)
22045 return (uint64x1_t
) __builtin_aarch64_uqrshldi ((int64x1_t
) __a
, __b
);
22048 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
22049 vqrshlq_s8 (int8x16_t __a
, int8x16_t __b
)
22051 return __builtin_aarch64_sqrshlv16qi (__a
, __b
);
22054 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
22055 vqrshlq_s16 (int16x8_t __a
, int16x8_t __b
)
22057 return __builtin_aarch64_sqrshlv8hi (__a
, __b
);
22060 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
22061 vqrshlq_s32 (int32x4_t __a
, int32x4_t __b
)
22063 return __builtin_aarch64_sqrshlv4si (__a
, __b
);
22066 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
22067 vqrshlq_s64 (int64x2_t __a
, int64x2_t __b
)
22069 return __builtin_aarch64_sqrshlv2di (__a
, __b
);
22072 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
22073 vqrshlq_u8 (uint8x16_t __a
, int8x16_t __b
)
22075 return (uint8x16_t
) __builtin_aarch64_uqrshlv16qi ((int8x16_t
) __a
, __b
);
22078 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
22079 vqrshlq_u16 (uint16x8_t __a
, int16x8_t __b
)
22081 return (uint16x8_t
) __builtin_aarch64_uqrshlv8hi ((int16x8_t
) __a
, __b
);
22084 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
22085 vqrshlq_u32 (uint32x4_t __a
, int32x4_t __b
)
22087 return (uint32x4_t
) __builtin_aarch64_uqrshlv4si ((int32x4_t
) __a
, __b
);
22090 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
22091 vqrshlq_u64 (uint64x2_t __a
, int64x2_t __b
)
22093 return (uint64x2_t
) __builtin_aarch64_uqrshlv2di ((int64x2_t
) __a
, __b
);
22096 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
22097 vqrshlb_s8 (int8x1_t __a
, int8x1_t __b
)
22099 return __builtin_aarch64_sqrshlqi (__a
, __b
);
22102 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
22103 vqrshlh_s16 (int16x1_t __a
, int16x1_t __b
)
22105 return __builtin_aarch64_sqrshlhi (__a
, __b
);
22108 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
22109 vqrshls_s32 (int32x1_t __a
, int32x1_t __b
)
22111 return __builtin_aarch64_sqrshlsi (__a
, __b
);
22114 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22115 vqrshld_s64 (int64x1_t __a
, int64x1_t __b
)
22117 return __builtin_aarch64_sqrshldi (__a
, __b
);
22120 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
22121 vqrshlb_u8 (uint8x1_t __a
, uint8x1_t __b
)
22123 return (uint8x1_t
) __builtin_aarch64_uqrshlqi (__a
, __b
);
22126 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
22127 vqrshlh_u16 (uint16x1_t __a
, uint16x1_t __b
)
22129 return (uint16x1_t
) __builtin_aarch64_uqrshlhi (__a
, __b
);
22132 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
22133 vqrshls_u32 (uint32x1_t __a
, uint32x1_t __b
)
22135 return (uint32x1_t
) __builtin_aarch64_uqrshlsi (__a
, __b
);
22138 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22139 vqrshld_u64 (uint64x1_t __a
, uint64x1_t __b
)
22141 return (uint64x1_t
) __builtin_aarch64_uqrshldi (__a
, __b
);
22146 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
22147 vqrshrn_n_s16 (int16x8_t __a
, const int __b
)
22149 return (int8x8_t
) __builtin_aarch64_sqrshrn_nv8hi (__a
, __b
);
22152 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
22153 vqrshrn_n_s32 (int32x4_t __a
, const int __b
)
22155 return (int16x4_t
) __builtin_aarch64_sqrshrn_nv4si (__a
, __b
);
22158 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
22159 vqrshrn_n_s64 (int64x2_t __a
, const int __b
)
22161 return (int32x2_t
) __builtin_aarch64_sqrshrn_nv2di (__a
, __b
);
22164 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22165 vqrshrn_n_u16 (uint16x8_t __a
, const int __b
)
22167 return (uint8x8_t
) __builtin_aarch64_uqrshrn_nv8hi ((int16x8_t
) __a
, __b
);
22170 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22171 vqrshrn_n_u32 (uint32x4_t __a
, const int __b
)
22173 return (uint16x4_t
) __builtin_aarch64_uqrshrn_nv4si ((int32x4_t
) __a
, __b
);
22176 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22177 vqrshrn_n_u64 (uint64x2_t __a
, const int __b
)
22179 return (uint32x2_t
) __builtin_aarch64_uqrshrn_nv2di ((int64x2_t
) __a
, __b
);
22182 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
22183 vqrshrnh_n_s16 (int16x1_t __a
, const int __b
)
22185 return (int8x1_t
) __builtin_aarch64_sqrshrn_nhi (__a
, __b
);
22188 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
22189 vqrshrns_n_s32 (int32x1_t __a
, const int __b
)
22191 return (int16x1_t
) __builtin_aarch64_sqrshrn_nsi (__a
, __b
);
22194 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
22195 vqrshrnd_n_s64 (int64x1_t __a
, const int __b
)
22197 return (int32x1_t
) __builtin_aarch64_sqrshrn_ndi (__a
, __b
);
22200 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
22201 vqrshrnh_n_u16 (uint16x1_t __a
, const int __b
)
22203 return (uint8x1_t
) __builtin_aarch64_uqrshrn_nhi (__a
, __b
);
22206 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
22207 vqrshrns_n_u32 (uint32x1_t __a
, const int __b
)
22209 return (uint16x1_t
) __builtin_aarch64_uqrshrn_nsi (__a
, __b
);
22212 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
22213 vqrshrnd_n_u64 (uint64x1_t __a
, const int __b
)
22215 return (uint32x1_t
) __builtin_aarch64_uqrshrn_ndi (__a
, __b
);
22220 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22221 vqrshrun_n_s16 (int16x8_t __a
, const int __b
)
22223 return (uint8x8_t
) __builtin_aarch64_sqrshrun_nv8hi (__a
, __b
);
22226 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22227 vqrshrun_n_s32 (int32x4_t __a
, const int __b
)
22229 return (uint16x4_t
) __builtin_aarch64_sqrshrun_nv4si (__a
, __b
);
22232 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22233 vqrshrun_n_s64 (int64x2_t __a
, const int __b
)
22235 return (uint32x2_t
) __builtin_aarch64_sqrshrun_nv2di (__a
, __b
);
22238 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
22239 vqrshrunh_n_s16 (int16x1_t __a
, const int __b
)
22241 return (int8x1_t
) __builtin_aarch64_sqrshrun_nhi (__a
, __b
);
22244 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
22245 vqrshruns_n_s32 (int32x1_t __a
, const int __b
)
22247 return (int16x1_t
) __builtin_aarch64_sqrshrun_nsi (__a
, __b
);
22250 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
22251 vqrshrund_n_s64 (int64x1_t __a
, const int __b
)
22253 return (int32x1_t
) __builtin_aarch64_sqrshrun_ndi (__a
, __b
);
22258 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
22259 vqshl_s8 (int8x8_t __a
, int8x8_t __b
)
22261 return __builtin_aarch64_sqshlv8qi (__a
, __b
);
22264 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
22265 vqshl_s16 (int16x4_t __a
, int16x4_t __b
)
22267 return __builtin_aarch64_sqshlv4hi (__a
, __b
);
22270 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
22271 vqshl_s32 (int32x2_t __a
, int32x2_t __b
)
22273 return __builtin_aarch64_sqshlv2si (__a
, __b
);
22276 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22277 vqshl_s64 (int64x1_t __a
, int64x1_t __b
)
22279 return __builtin_aarch64_sqshldi (__a
, __b
);
22282 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22283 vqshl_u8 (uint8x8_t __a
, int8x8_t __b
)
22285 return (uint8x8_t
) __builtin_aarch64_uqshlv8qi ((int8x8_t
) __a
, __b
);
22288 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22289 vqshl_u16 (uint16x4_t __a
, int16x4_t __b
)
22291 return (uint16x4_t
) __builtin_aarch64_uqshlv4hi ((int16x4_t
) __a
, __b
);
22294 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22295 vqshl_u32 (uint32x2_t __a
, int32x2_t __b
)
22297 return (uint32x2_t
) __builtin_aarch64_uqshlv2si ((int32x2_t
) __a
, __b
);
22300 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22301 vqshl_u64 (uint64x1_t __a
, int64x1_t __b
)
22303 return (uint64x1_t
) __builtin_aarch64_uqshldi ((int64x1_t
) __a
, __b
);
22306 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
22307 vqshlq_s8 (int8x16_t __a
, int8x16_t __b
)
22309 return __builtin_aarch64_sqshlv16qi (__a
, __b
);
22312 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
22313 vqshlq_s16 (int16x8_t __a
, int16x8_t __b
)
22315 return __builtin_aarch64_sqshlv8hi (__a
, __b
);
22318 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
22319 vqshlq_s32 (int32x4_t __a
, int32x4_t __b
)
22321 return __builtin_aarch64_sqshlv4si (__a
, __b
);
22324 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
22325 vqshlq_s64 (int64x2_t __a
, int64x2_t __b
)
22327 return __builtin_aarch64_sqshlv2di (__a
, __b
);
22330 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
22331 vqshlq_u8 (uint8x16_t __a
, int8x16_t __b
)
22333 return (uint8x16_t
) __builtin_aarch64_uqshlv16qi ((int8x16_t
) __a
, __b
);
22336 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
22337 vqshlq_u16 (uint16x8_t __a
, int16x8_t __b
)
22339 return (uint16x8_t
) __builtin_aarch64_uqshlv8hi ((int16x8_t
) __a
, __b
);
22342 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
22343 vqshlq_u32 (uint32x4_t __a
, int32x4_t __b
)
22345 return (uint32x4_t
) __builtin_aarch64_uqshlv4si ((int32x4_t
) __a
, __b
);
22348 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
22349 vqshlq_u64 (uint64x2_t __a
, int64x2_t __b
)
22351 return (uint64x2_t
) __builtin_aarch64_uqshlv2di ((int64x2_t
) __a
, __b
);
22354 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
22355 vqshlb_s8 (int8x1_t __a
, int8x1_t __b
)
22357 return __builtin_aarch64_sqshlqi (__a
, __b
);
22360 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
22361 vqshlh_s16 (int16x1_t __a
, int16x1_t __b
)
22363 return __builtin_aarch64_sqshlhi (__a
, __b
);
22366 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
22367 vqshls_s32 (int32x1_t __a
, int32x1_t __b
)
22369 return __builtin_aarch64_sqshlsi (__a
, __b
);
22372 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22373 vqshld_s64 (int64x1_t __a
, int64x1_t __b
)
22375 return __builtin_aarch64_sqshldi (__a
, __b
);
22378 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
22379 vqshlb_u8 (uint8x1_t __a
, uint8x1_t __b
)
22381 return (uint8x1_t
) __builtin_aarch64_uqshlqi (__a
, __b
);
22384 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
22385 vqshlh_u16 (uint16x1_t __a
, uint16x1_t __b
)
22387 return (uint16x1_t
) __builtin_aarch64_uqshlhi (__a
, __b
);
22390 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
22391 vqshls_u32 (uint32x1_t __a
, uint32x1_t __b
)
22393 return (uint32x1_t
) __builtin_aarch64_uqshlsi (__a
, __b
);
22396 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22397 vqshld_u64 (uint64x1_t __a
, uint64x1_t __b
)
22399 return (uint64x1_t
) __builtin_aarch64_uqshldi (__a
, __b
);
22402 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
22403 vqshl_n_s8 (int8x8_t __a
, const int __b
)
22405 return (int8x8_t
) __builtin_aarch64_sqshl_nv8qi (__a
, __b
);
22408 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
22409 vqshl_n_s16 (int16x4_t __a
, const int __b
)
22411 return (int16x4_t
) __builtin_aarch64_sqshl_nv4hi (__a
, __b
);
22414 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
22415 vqshl_n_s32 (int32x2_t __a
, const int __b
)
22417 return (int32x2_t
) __builtin_aarch64_sqshl_nv2si (__a
, __b
);
22420 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22421 vqshl_n_s64 (int64x1_t __a
, const int __b
)
22423 return (int64x1_t
) __builtin_aarch64_sqshl_ndi (__a
, __b
);
22426 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22427 vqshl_n_u8 (uint8x8_t __a
, const int __b
)
22429 return (uint8x8_t
) __builtin_aarch64_uqshl_nv8qi ((int8x8_t
) __a
, __b
);
22432 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22433 vqshl_n_u16 (uint16x4_t __a
, const int __b
)
22435 return (uint16x4_t
) __builtin_aarch64_uqshl_nv4hi ((int16x4_t
) __a
, __b
);
22438 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22439 vqshl_n_u32 (uint32x2_t __a
, const int __b
)
22441 return (uint32x2_t
) __builtin_aarch64_uqshl_nv2si ((int32x2_t
) __a
, __b
);
22444 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22445 vqshl_n_u64 (uint64x1_t __a
, const int __b
)
22447 return (uint64x1_t
) __builtin_aarch64_uqshl_ndi ((int64x1_t
) __a
, __b
);
22450 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
22451 vqshlq_n_s8 (int8x16_t __a
, const int __b
)
22453 return (int8x16_t
) __builtin_aarch64_sqshl_nv16qi (__a
, __b
);
22456 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
22457 vqshlq_n_s16 (int16x8_t __a
, const int __b
)
22459 return (int16x8_t
) __builtin_aarch64_sqshl_nv8hi (__a
, __b
);
22462 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
22463 vqshlq_n_s32 (int32x4_t __a
, const int __b
)
22465 return (int32x4_t
) __builtin_aarch64_sqshl_nv4si (__a
, __b
);
22468 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
22469 vqshlq_n_s64 (int64x2_t __a
, const int __b
)
22471 return (int64x2_t
) __builtin_aarch64_sqshl_nv2di (__a
, __b
);
22474 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
22475 vqshlq_n_u8 (uint8x16_t __a
, const int __b
)
22477 return (uint8x16_t
) __builtin_aarch64_uqshl_nv16qi ((int8x16_t
) __a
, __b
);
22480 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
22481 vqshlq_n_u16 (uint16x8_t __a
, const int __b
)
22483 return (uint16x8_t
) __builtin_aarch64_uqshl_nv8hi ((int16x8_t
) __a
, __b
);
22486 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
22487 vqshlq_n_u32 (uint32x4_t __a
, const int __b
)
22489 return (uint32x4_t
) __builtin_aarch64_uqshl_nv4si ((int32x4_t
) __a
, __b
);
22492 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
22493 vqshlq_n_u64 (uint64x2_t __a
, const int __b
)
22495 return (uint64x2_t
) __builtin_aarch64_uqshl_nv2di ((int64x2_t
) __a
, __b
);
22498 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
22499 vqshlb_n_s8 (int8x1_t __a
, const int __b
)
22501 return (int8x1_t
) __builtin_aarch64_sqshl_nqi (__a
, __b
);
22504 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
22505 vqshlh_n_s16 (int16x1_t __a
, const int __b
)
22507 return (int16x1_t
) __builtin_aarch64_sqshl_nhi (__a
, __b
);
22510 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
22511 vqshls_n_s32 (int32x1_t __a
, const int __b
)
22513 return (int32x1_t
) __builtin_aarch64_sqshl_nsi (__a
, __b
);
22516 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22517 vqshld_n_s64 (int64x1_t __a
, const int __b
)
22519 return (int64x1_t
) __builtin_aarch64_sqshl_ndi (__a
, __b
);
22522 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
22523 vqshlb_n_u8 (uint8x1_t __a
, const int __b
)
22525 return (uint8x1_t
) __builtin_aarch64_uqshl_nqi (__a
, __b
);
22528 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
22529 vqshlh_n_u16 (uint16x1_t __a
, const int __b
)
22531 return (uint16x1_t
) __builtin_aarch64_uqshl_nhi (__a
, __b
);
22534 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
22535 vqshls_n_u32 (uint32x1_t __a
, const int __b
)
22537 return (uint32x1_t
) __builtin_aarch64_uqshl_nsi (__a
, __b
);
22540 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22541 vqshld_n_u64 (uint64x1_t __a
, const int __b
)
22543 return (uint64x1_t
) __builtin_aarch64_uqshl_ndi (__a
, __b
);
22548 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22549 vqshlu_n_s8 (int8x8_t __a
, const int __b
)
22551 return (uint8x8_t
) __builtin_aarch64_sqshlu_nv8qi (__a
, __b
);
22554 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22555 vqshlu_n_s16 (int16x4_t __a
, const int __b
)
22557 return (uint16x4_t
) __builtin_aarch64_sqshlu_nv4hi (__a
, __b
);
22560 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22561 vqshlu_n_s32 (int32x2_t __a
, const int __b
)
22563 return (uint32x2_t
) __builtin_aarch64_sqshlu_nv2si (__a
, __b
);
22566 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22567 vqshlu_n_s64 (int64x1_t __a
, const int __b
)
22569 return (uint64x1_t
) __builtin_aarch64_sqshlu_ndi (__a
, __b
);
22572 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
22573 vqshluq_n_s8 (int8x16_t __a
, const int __b
)
22575 return (uint8x16_t
) __builtin_aarch64_sqshlu_nv16qi (__a
, __b
);
22578 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
22579 vqshluq_n_s16 (int16x8_t __a
, const int __b
)
22581 return (uint16x8_t
) __builtin_aarch64_sqshlu_nv8hi (__a
, __b
);
22584 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
22585 vqshluq_n_s32 (int32x4_t __a
, const int __b
)
22587 return (uint32x4_t
) __builtin_aarch64_sqshlu_nv4si (__a
, __b
);
22590 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
22591 vqshluq_n_s64 (int64x2_t __a
, const int __b
)
22593 return (uint64x2_t
) __builtin_aarch64_sqshlu_nv2di (__a
, __b
);
22596 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
22597 vqshlub_n_s8 (int8x1_t __a
, const int __b
)
22599 return (int8x1_t
) __builtin_aarch64_sqshlu_nqi (__a
, __b
);
22602 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
22603 vqshluh_n_s16 (int16x1_t __a
, const int __b
)
22605 return (int16x1_t
) __builtin_aarch64_sqshlu_nhi (__a
, __b
);
22608 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
22609 vqshlus_n_s32 (int32x1_t __a
, const int __b
)
22611 return (int32x1_t
) __builtin_aarch64_sqshlu_nsi (__a
, __b
);
22614 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22615 vqshlud_n_s64 (int64x1_t __a
, const int __b
)
22617 return (int64x1_t
) __builtin_aarch64_sqshlu_ndi (__a
, __b
);
22622 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
22623 vqshrn_n_s16 (int16x8_t __a
, const int __b
)
22625 return (int8x8_t
) __builtin_aarch64_sqshrn_nv8hi (__a
, __b
);
22628 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
22629 vqshrn_n_s32 (int32x4_t __a
, const int __b
)
22631 return (int16x4_t
) __builtin_aarch64_sqshrn_nv4si (__a
, __b
);
22634 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
22635 vqshrn_n_s64 (int64x2_t __a
, const int __b
)
22637 return (int32x2_t
) __builtin_aarch64_sqshrn_nv2di (__a
, __b
);
22640 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22641 vqshrn_n_u16 (uint16x8_t __a
, const int __b
)
22643 return (uint8x8_t
) __builtin_aarch64_uqshrn_nv8hi ((int16x8_t
) __a
, __b
);
22646 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22647 vqshrn_n_u32 (uint32x4_t __a
, const int __b
)
22649 return (uint16x4_t
) __builtin_aarch64_uqshrn_nv4si ((int32x4_t
) __a
, __b
);
22652 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22653 vqshrn_n_u64 (uint64x2_t __a
, const int __b
)
22655 return (uint32x2_t
) __builtin_aarch64_uqshrn_nv2di ((int64x2_t
) __a
, __b
);
22658 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
22659 vqshrnh_n_s16 (int16x1_t __a
, const int __b
)
22661 return (int8x1_t
) __builtin_aarch64_sqshrn_nhi (__a
, __b
);
22664 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
22665 vqshrns_n_s32 (int32x1_t __a
, const int __b
)
22667 return (int16x1_t
) __builtin_aarch64_sqshrn_nsi (__a
, __b
);
22670 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
22671 vqshrnd_n_s64 (int64x1_t __a
, const int __b
)
22673 return (int32x1_t
) __builtin_aarch64_sqshrn_ndi (__a
, __b
);
22676 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
22677 vqshrnh_n_u16 (uint16x1_t __a
, const int __b
)
22679 return (uint8x1_t
) __builtin_aarch64_uqshrn_nhi (__a
, __b
);
22682 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
22683 vqshrns_n_u32 (uint32x1_t __a
, const int __b
)
22685 return (uint16x1_t
) __builtin_aarch64_uqshrn_nsi (__a
, __b
);
22688 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
22689 vqshrnd_n_u64 (uint64x1_t __a
, const int __b
)
22691 return (uint32x1_t
) __builtin_aarch64_uqshrn_ndi (__a
, __b
);
22696 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22697 vqshrun_n_s16 (int16x8_t __a
, const int __b
)
22699 return (uint8x8_t
) __builtin_aarch64_sqshrun_nv8hi (__a
, __b
);
22702 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22703 vqshrun_n_s32 (int32x4_t __a
, const int __b
)
22705 return (uint16x4_t
) __builtin_aarch64_sqshrun_nv4si (__a
, __b
);
22708 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22709 vqshrun_n_s64 (int64x2_t __a
, const int __b
)
22711 return (uint32x2_t
) __builtin_aarch64_sqshrun_nv2di (__a
, __b
);
22714 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
22715 vqshrunh_n_s16 (int16x1_t __a
, const int __b
)
22717 return (int8x1_t
) __builtin_aarch64_sqshrun_nhi (__a
, __b
);
22720 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
22721 vqshruns_n_s32 (int32x1_t __a
, const int __b
)
22723 return (int16x1_t
) __builtin_aarch64_sqshrun_nsi (__a
, __b
);
22726 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
22727 vqshrund_n_s64 (int64x1_t __a
, const int __b
)
22729 return (int32x1_t
) __builtin_aarch64_sqshrun_ndi (__a
, __b
);
22734 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
22735 vqsubb_s8 (int8x1_t __a
, int8x1_t __b
)
22737 return (int8x1_t
) __builtin_aarch64_sqsubqi (__a
, __b
);
22740 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
22741 vqsubh_s16 (int16x1_t __a
, int16x1_t __b
)
22743 return (int16x1_t
) __builtin_aarch64_sqsubhi (__a
, __b
);
22746 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
22747 vqsubs_s32 (int32x1_t __a
, int32x1_t __b
)
22749 return (int32x1_t
) __builtin_aarch64_sqsubsi (__a
, __b
);
22752 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22753 vqsubd_s64 (int64x1_t __a
, int64x1_t __b
)
22755 return (int64x1_t
) __builtin_aarch64_sqsubdi (__a
, __b
);
22758 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
22759 vqsubb_u8 (uint8x1_t __a
, uint8x1_t __b
)
22761 return (uint8x1_t
) __builtin_aarch64_uqsubqi (__a
, __b
);
22764 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
22765 vqsubh_u16 (uint16x1_t __a
, uint16x1_t __b
)
22767 return (uint16x1_t
) __builtin_aarch64_uqsubhi (__a
, __b
);
22770 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
22771 vqsubs_u32 (uint32x1_t __a
, uint32x1_t __b
)
22773 return (uint32x1_t
) __builtin_aarch64_uqsubsi (__a
, __b
);
22776 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22777 vqsubd_u64 (uint64x1_t __a
, uint64x1_t __b
)
22779 return (uint64x1_t
) __builtin_aarch64_uqsubdi (__a
, __b
);
22784 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
22785 vrecpes_f32 (float32_t __a
)
22787 return __builtin_aarch64_frecpesf (__a
);
22790 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
22791 vrecped_f64 (float64_t __a
)
22793 return __builtin_aarch64_frecpedf (__a
);
22796 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22797 vrecpe_f32 (float32x2_t __a
)
22799 return __builtin_aarch64_frecpev2sf (__a
);
22802 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22803 vrecpeq_f32 (float32x4_t __a
)
22805 return __builtin_aarch64_frecpev4sf (__a
);
22808 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22809 vrecpeq_f64 (float64x2_t __a
)
22811 return __builtin_aarch64_frecpev2df (__a
);
22816 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
22817 vrecpss_f32 (float32_t __a
, float32_t __b
)
22819 return __builtin_aarch64_frecpssf (__a
, __b
);
22822 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
22823 vrecpsd_f64 (float64_t __a
, float64_t __b
)
22825 return __builtin_aarch64_frecpsdf (__a
, __b
);
22828 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22829 vrecps_f32 (float32x2_t __a
, float32x2_t __b
)
22831 return __builtin_aarch64_frecpsv2sf (__a
, __b
);
22834 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22835 vrecpsq_f32 (float32x4_t __a
, float32x4_t __b
)
22837 return __builtin_aarch64_frecpsv4sf (__a
, __b
);
22840 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22841 vrecpsq_f64 (float64x2_t __a
, float64x2_t __b
)
22843 return __builtin_aarch64_frecpsv2df (__a
, __b
);
22848 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
22849 vrecpxs_f32 (float32_t __a
)
22851 return __builtin_aarch64_frecpxsf (__a
);
22854 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
22855 vrecpxd_f64 (float64_t __a
)
22857 return __builtin_aarch64_frecpxdf (__a
);
22862 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22863 vrnd_f32 (float32x2_t __a
)
22865 return __builtin_aarch64_btruncv2sf (__a
);
22868 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22869 vrndq_f32 (float32x4_t __a
)
22871 return __builtin_aarch64_btruncv4sf (__a
);
22874 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22875 vrndq_f64 (float64x2_t __a
)
22877 return __builtin_aarch64_btruncv2df (__a
);
22882 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22883 vrnda_f32 (float32x2_t __a
)
22885 return __builtin_aarch64_roundv2sf (__a
);
22888 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22889 vrndaq_f32 (float32x4_t __a
)
22891 return __builtin_aarch64_roundv4sf (__a
);
22894 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22895 vrndaq_f64 (float64x2_t __a
)
22897 return __builtin_aarch64_roundv2df (__a
);
22902 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22903 vrndi_f32 (float32x2_t __a
)
22905 return __builtin_aarch64_nearbyintv2sf (__a
);
22908 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22909 vrndiq_f32 (float32x4_t __a
)
22911 return __builtin_aarch64_nearbyintv4sf (__a
);
22914 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22915 vrndiq_f64 (float64x2_t __a
)
22917 return __builtin_aarch64_nearbyintv2df (__a
);
22922 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22923 vrndm_f32 (float32x2_t __a
)
22925 return __builtin_aarch64_floorv2sf (__a
);
22928 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22929 vrndmq_f32 (float32x4_t __a
)
22931 return __builtin_aarch64_floorv4sf (__a
);
22934 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22935 vrndmq_f64 (float64x2_t __a
)
22937 return __builtin_aarch64_floorv2df (__a
);
22942 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22943 vrndn_f32 (float32x2_t __a
)
22945 return __builtin_aarch64_frintnv2sf (__a
);
22947 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22948 vrndnq_f32 (float32x4_t __a
)
22950 return __builtin_aarch64_frintnv4sf (__a
);
22953 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22954 vrndnq_f64 (float64x2_t __a
)
22956 return __builtin_aarch64_frintnv2df (__a
);
22961 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22962 vrndp_f32 (float32x2_t __a
)
22964 return __builtin_aarch64_ceilv2sf (__a
);
22967 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22968 vrndpq_f32 (float32x4_t __a
)
22970 return __builtin_aarch64_ceilv4sf (__a
);
22973 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22974 vrndpq_f64 (float64x2_t __a
)
22976 return __builtin_aarch64_ceilv2df (__a
);
22981 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22982 vrndx_f32 (float32x2_t __a
)
22984 return __builtin_aarch64_rintv2sf (__a
);
22987 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22988 vrndxq_f32 (float32x4_t __a
)
22990 return __builtin_aarch64_rintv4sf (__a
);
22993 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22994 vrndxq_f64 (float64x2_t __a
)
22996 return __builtin_aarch64_rintv2df (__a
);
23001 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
23002 vrshl_s8 (int8x8_t __a
, int8x8_t __b
)
23004 return (int8x8_t
) __builtin_aarch64_srshlv8qi (__a
, __b
);
23007 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
23008 vrshl_s16 (int16x4_t __a
, int16x4_t __b
)
23010 return (int16x4_t
) __builtin_aarch64_srshlv4hi (__a
, __b
);
23013 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
23014 vrshl_s32 (int32x2_t __a
, int32x2_t __b
)
23016 return (int32x2_t
) __builtin_aarch64_srshlv2si (__a
, __b
);
23019 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23020 vrshl_s64 (int64x1_t __a
, int64x1_t __b
)
23022 return (int64x1_t
) __builtin_aarch64_srshldi (__a
, __b
);
23025 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23026 vrshl_u8 (uint8x8_t __a
, int8x8_t __b
)
23028 return (uint8x8_t
) __builtin_aarch64_urshlv8qi ((int8x8_t
) __a
, __b
);
23031 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23032 vrshl_u16 (uint16x4_t __a
, int16x4_t __b
)
23034 return (uint16x4_t
) __builtin_aarch64_urshlv4hi ((int16x4_t
) __a
, __b
);
23037 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23038 vrshl_u32 (uint32x2_t __a
, int32x2_t __b
)
23040 return (uint32x2_t
) __builtin_aarch64_urshlv2si ((int32x2_t
) __a
, __b
);
23043 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23044 vrshl_u64 (uint64x1_t __a
, int64x1_t __b
)
23046 return (uint64x1_t
) __builtin_aarch64_urshldi ((int64x1_t
) __a
, __b
);
23049 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
23050 vrshlq_s8 (int8x16_t __a
, int8x16_t __b
)
23052 return (int8x16_t
) __builtin_aarch64_srshlv16qi (__a
, __b
);
23055 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23056 vrshlq_s16 (int16x8_t __a
, int16x8_t __b
)
23058 return (int16x8_t
) __builtin_aarch64_srshlv8hi (__a
, __b
);
23061 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23062 vrshlq_s32 (int32x4_t __a
, int32x4_t __b
)
23064 return (int32x4_t
) __builtin_aarch64_srshlv4si (__a
, __b
);
23067 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23068 vrshlq_s64 (int64x2_t __a
, int64x2_t __b
)
23070 return (int64x2_t
) __builtin_aarch64_srshlv2di (__a
, __b
);
23073 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23074 vrshlq_u8 (uint8x16_t __a
, int8x16_t __b
)
23076 return (uint8x16_t
) __builtin_aarch64_urshlv16qi ((int8x16_t
) __a
, __b
);
23079 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23080 vrshlq_u16 (uint16x8_t __a
, int16x8_t __b
)
23082 return (uint16x8_t
) __builtin_aarch64_urshlv8hi ((int16x8_t
) __a
, __b
);
23085 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23086 vrshlq_u32 (uint32x4_t __a
, int32x4_t __b
)
23088 return (uint32x4_t
) __builtin_aarch64_urshlv4si ((int32x4_t
) __a
, __b
);
23091 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23092 vrshlq_u64 (uint64x2_t __a
, int64x2_t __b
)
23094 return (uint64x2_t
) __builtin_aarch64_urshlv2di ((int64x2_t
) __a
, __b
);
23097 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23098 vrshld_s64 (int64x1_t __a
, int64x1_t __b
)
23100 return (int64x1_t
) __builtin_aarch64_srshldi (__a
, __b
);
23103 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23104 vrshld_u64 (uint64x1_t __a
, uint64x1_t __b
)
23106 return (uint64x1_t
) __builtin_aarch64_urshldi (__a
, __b
);
23111 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
23112 vrshr_n_s8 (int8x8_t __a
, const int __b
)
23114 return (int8x8_t
) __builtin_aarch64_srshr_nv8qi (__a
, __b
);
23117 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
23118 vrshr_n_s16 (int16x4_t __a
, const int __b
)
23120 return (int16x4_t
) __builtin_aarch64_srshr_nv4hi (__a
, __b
);
23123 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
23124 vrshr_n_s32 (int32x2_t __a
, const int __b
)
23126 return (int32x2_t
) __builtin_aarch64_srshr_nv2si (__a
, __b
);
23129 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23130 vrshr_n_s64 (int64x1_t __a
, const int __b
)
23132 return (int64x1_t
) __builtin_aarch64_srshr_ndi (__a
, __b
);
23135 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23136 vrshr_n_u8 (uint8x8_t __a
, const int __b
)
23138 return (uint8x8_t
) __builtin_aarch64_urshr_nv8qi ((int8x8_t
) __a
, __b
);
23141 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23142 vrshr_n_u16 (uint16x4_t __a
, const int __b
)
23144 return (uint16x4_t
) __builtin_aarch64_urshr_nv4hi ((int16x4_t
) __a
, __b
);
23147 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23148 vrshr_n_u32 (uint32x2_t __a
, const int __b
)
23150 return (uint32x2_t
) __builtin_aarch64_urshr_nv2si ((int32x2_t
) __a
, __b
);
23153 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23154 vrshr_n_u64 (uint64x1_t __a
, const int __b
)
23156 return (uint64x1_t
) __builtin_aarch64_urshr_ndi ((int64x1_t
) __a
, __b
);
23159 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
23160 vrshrq_n_s8 (int8x16_t __a
, const int __b
)
23162 return (int8x16_t
) __builtin_aarch64_srshr_nv16qi (__a
, __b
);
23165 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23166 vrshrq_n_s16 (int16x8_t __a
, const int __b
)
23168 return (int16x8_t
) __builtin_aarch64_srshr_nv8hi (__a
, __b
);
23171 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23172 vrshrq_n_s32 (int32x4_t __a
, const int __b
)
23174 return (int32x4_t
) __builtin_aarch64_srshr_nv4si (__a
, __b
);
23177 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23178 vrshrq_n_s64 (int64x2_t __a
, const int __b
)
23180 return (int64x2_t
) __builtin_aarch64_srshr_nv2di (__a
, __b
);
23183 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23184 vrshrq_n_u8 (uint8x16_t __a
, const int __b
)
23186 return (uint8x16_t
) __builtin_aarch64_urshr_nv16qi ((int8x16_t
) __a
, __b
);
23189 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23190 vrshrq_n_u16 (uint16x8_t __a
, const int __b
)
23192 return (uint16x8_t
) __builtin_aarch64_urshr_nv8hi ((int16x8_t
) __a
, __b
);
23195 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23196 vrshrq_n_u32 (uint32x4_t __a
, const int __b
)
23198 return (uint32x4_t
) __builtin_aarch64_urshr_nv4si ((int32x4_t
) __a
, __b
);
23201 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23202 vrshrq_n_u64 (uint64x2_t __a
, const int __b
)
23204 return (uint64x2_t
) __builtin_aarch64_urshr_nv2di ((int64x2_t
) __a
, __b
);
23207 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23208 vrshrd_n_s64 (int64x1_t __a
, const int __b
)
23210 return (int64x1_t
) __builtin_aarch64_srshr_ndi (__a
, __b
);
23213 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23214 vrshrd_n_u64 (uint64x1_t __a
, const int __b
)
23216 return (uint64x1_t
) __builtin_aarch64_urshr_ndi (__a
, __b
);
23221 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
23222 vrsra_n_s8 (int8x8_t __a
, int8x8_t __b
, const int __c
)
23224 return (int8x8_t
) __builtin_aarch64_srsra_nv8qi (__a
, __b
, __c
);
23227 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
23228 vrsra_n_s16 (int16x4_t __a
, int16x4_t __b
, const int __c
)
23230 return (int16x4_t
) __builtin_aarch64_srsra_nv4hi (__a
, __b
, __c
);
23233 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
23234 vrsra_n_s32 (int32x2_t __a
, int32x2_t __b
, const int __c
)
23236 return (int32x2_t
) __builtin_aarch64_srsra_nv2si (__a
, __b
, __c
);
23239 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23240 vrsra_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
23242 return (int64x1_t
) __builtin_aarch64_srsra_ndi (__a
, __b
, __c
);
23245 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23246 vrsra_n_u8 (uint8x8_t __a
, uint8x8_t __b
, const int __c
)
23248 return (uint8x8_t
) __builtin_aarch64_ursra_nv8qi ((int8x8_t
) __a
,
23249 (int8x8_t
) __b
, __c
);
23252 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23253 vrsra_n_u16 (uint16x4_t __a
, uint16x4_t __b
, const int __c
)
23255 return (uint16x4_t
) __builtin_aarch64_ursra_nv4hi ((int16x4_t
) __a
,
23256 (int16x4_t
) __b
, __c
);
23259 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23260 vrsra_n_u32 (uint32x2_t __a
, uint32x2_t __b
, const int __c
)
23262 return (uint32x2_t
) __builtin_aarch64_ursra_nv2si ((int32x2_t
) __a
,
23263 (int32x2_t
) __b
, __c
);
23266 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23267 vrsra_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
23269 return (uint64x1_t
) __builtin_aarch64_ursra_ndi ((int64x1_t
) __a
,
23270 (int64x1_t
) __b
, __c
);
23273 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
23274 vrsraq_n_s8 (int8x16_t __a
, int8x16_t __b
, const int __c
)
23276 return (int8x16_t
) __builtin_aarch64_srsra_nv16qi (__a
, __b
, __c
);
23279 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23280 vrsraq_n_s16 (int16x8_t __a
, int16x8_t __b
, const int __c
)
23282 return (int16x8_t
) __builtin_aarch64_srsra_nv8hi (__a
, __b
, __c
);
23285 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23286 vrsraq_n_s32 (int32x4_t __a
, int32x4_t __b
, const int __c
)
23288 return (int32x4_t
) __builtin_aarch64_srsra_nv4si (__a
, __b
, __c
);
23291 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23292 vrsraq_n_s64 (int64x2_t __a
, int64x2_t __b
, const int __c
)
23294 return (int64x2_t
) __builtin_aarch64_srsra_nv2di (__a
, __b
, __c
);
23297 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23298 vrsraq_n_u8 (uint8x16_t __a
, uint8x16_t __b
, const int __c
)
23300 return (uint8x16_t
) __builtin_aarch64_ursra_nv16qi ((int8x16_t
) __a
,
23301 (int8x16_t
) __b
, __c
);
23304 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23305 vrsraq_n_u16 (uint16x8_t __a
, uint16x8_t __b
, const int __c
)
23307 return (uint16x8_t
) __builtin_aarch64_ursra_nv8hi ((int16x8_t
) __a
,
23308 (int16x8_t
) __b
, __c
);
23311 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23312 vrsraq_n_u32 (uint32x4_t __a
, uint32x4_t __b
, const int __c
)
23314 return (uint32x4_t
) __builtin_aarch64_ursra_nv4si ((int32x4_t
) __a
,
23315 (int32x4_t
) __b
, __c
);
23318 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23319 vrsraq_n_u64 (uint64x2_t __a
, uint64x2_t __b
, const int __c
)
23321 return (uint64x2_t
) __builtin_aarch64_ursra_nv2di ((int64x2_t
) __a
,
23322 (int64x2_t
) __b
, __c
);
23325 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23326 vrsrad_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
23328 return (int64x1_t
) __builtin_aarch64_srsra_ndi (__a
, __b
, __c
);
23331 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23332 vrsrad_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
23334 return (uint64x1_t
) __builtin_aarch64_ursra_ndi (__a
, __b
, __c
);
23339 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
23340 vshl_n_s8 (int8x8_t __a
, const int __b
)
23342 return (int8x8_t
) __builtin_aarch64_ashlv8qi (__a
, __b
);
23345 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
23346 vshl_n_s16 (int16x4_t __a
, const int __b
)
23348 return (int16x4_t
) __builtin_aarch64_ashlv4hi (__a
, __b
);
23351 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
23352 vshl_n_s32 (int32x2_t __a
, const int __b
)
23354 return (int32x2_t
) __builtin_aarch64_ashlv2si (__a
, __b
);
23357 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23358 vshl_n_s64 (int64x1_t __a
, const int __b
)
23360 return (int64x1_t
) __builtin_aarch64_ashldi (__a
, __b
);
23363 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23364 vshl_n_u8 (uint8x8_t __a
, const int __b
)
23366 return (uint8x8_t
) __builtin_aarch64_ashlv8qi ((int8x8_t
) __a
, __b
);
23369 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23370 vshl_n_u16 (uint16x4_t __a
, const int __b
)
23372 return (uint16x4_t
) __builtin_aarch64_ashlv4hi ((int16x4_t
) __a
, __b
);
23375 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23376 vshl_n_u32 (uint32x2_t __a
, const int __b
)
23378 return (uint32x2_t
) __builtin_aarch64_ashlv2si ((int32x2_t
) __a
, __b
);
23381 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23382 vshl_n_u64 (uint64x1_t __a
, const int __b
)
23384 return (uint64x1_t
) __builtin_aarch64_ashldi ((int64x1_t
) __a
, __b
);
23387 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
23388 vshlq_n_s8 (int8x16_t __a
, const int __b
)
23390 return (int8x16_t
) __builtin_aarch64_ashlv16qi (__a
, __b
);
23393 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23394 vshlq_n_s16 (int16x8_t __a
, const int __b
)
23396 return (int16x8_t
) __builtin_aarch64_ashlv8hi (__a
, __b
);
23399 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23400 vshlq_n_s32 (int32x4_t __a
, const int __b
)
23402 return (int32x4_t
) __builtin_aarch64_ashlv4si (__a
, __b
);
23405 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23406 vshlq_n_s64 (int64x2_t __a
, const int __b
)
23408 return (int64x2_t
) __builtin_aarch64_ashlv2di (__a
, __b
);
23411 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23412 vshlq_n_u8 (uint8x16_t __a
, const int __b
)
23414 return (uint8x16_t
) __builtin_aarch64_ashlv16qi ((int8x16_t
) __a
, __b
);
23417 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23418 vshlq_n_u16 (uint16x8_t __a
, const int __b
)
23420 return (uint16x8_t
) __builtin_aarch64_ashlv8hi ((int16x8_t
) __a
, __b
);
23423 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23424 vshlq_n_u32 (uint32x4_t __a
, const int __b
)
23426 return (uint32x4_t
) __builtin_aarch64_ashlv4si ((int32x4_t
) __a
, __b
);
23429 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23430 vshlq_n_u64 (uint64x2_t __a
, const int __b
)
23432 return (uint64x2_t
) __builtin_aarch64_ashlv2di ((int64x2_t
) __a
, __b
);
23435 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23436 vshld_n_s64 (int64x1_t __a
, const int __b
)
23438 return (int64x1_t
) __builtin_aarch64_ashldi (__a
, __b
);
23441 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23442 vshld_n_u64 (uint64x1_t __a
, const int __b
)
23444 return (uint64x1_t
) __builtin_aarch64_ashldi (__a
, __b
);
23447 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
23448 vshl_s8 (int8x8_t __a
, int8x8_t __b
)
23450 return (int8x8_t
) __builtin_aarch64_sshlv8qi (__a
, __b
);
23453 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
23454 vshl_s16 (int16x4_t __a
, int16x4_t __b
)
23456 return (int16x4_t
) __builtin_aarch64_sshlv4hi (__a
, __b
);
23459 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
23460 vshl_s32 (int32x2_t __a
, int32x2_t __b
)
23462 return (int32x2_t
) __builtin_aarch64_sshlv2si (__a
, __b
);
23465 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23466 vshl_s64 (int64x1_t __a
, int64x1_t __b
)
23468 return (int64x1_t
) __builtin_aarch64_sshldi (__a
, __b
);
23471 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23472 vshl_u8 (uint8x8_t __a
, int8x8_t __b
)
23474 return (uint8x8_t
) __builtin_aarch64_ushlv8qi ((int8x8_t
) __a
, __b
);
23477 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23478 vshl_u16 (uint16x4_t __a
, int16x4_t __b
)
23480 return (uint16x4_t
) __builtin_aarch64_ushlv4hi ((int16x4_t
) __a
, __b
);
23483 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23484 vshl_u32 (uint32x2_t __a
, int32x2_t __b
)
23486 return (uint32x2_t
) __builtin_aarch64_ushlv2si ((int32x2_t
) __a
, __b
);
23489 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23490 vshl_u64 (uint64x1_t __a
, int64x1_t __b
)
23492 return (uint64x1_t
) __builtin_aarch64_ushldi ((int64x1_t
) __a
, __b
);
23495 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
23496 vshlq_s8 (int8x16_t __a
, int8x16_t __b
)
23498 return (int8x16_t
) __builtin_aarch64_sshlv16qi (__a
, __b
);
23501 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23502 vshlq_s16 (int16x8_t __a
, int16x8_t __b
)
23504 return (int16x8_t
) __builtin_aarch64_sshlv8hi (__a
, __b
);
23507 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23508 vshlq_s32 (int32x4_t __a
, int32x4_t __b
)
23510 return (int32x4_t
) __builtin_aarch64_sshlv4si (__a
, __b
);
23513 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23514 vshlq_s64 (int64x2_t __a
, int64x2_t __b
)
23516 return (int64x2_t
) __builtin_aarch64_sshlv2di (__a
, __b
);
23519 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23520 vshlq_u8 (uint8x16_t __a
, int8x16_t __b
)
23522 return (uint8x16_t
) __builtin_aarch64_ushlv16qi ((int8x16_t
) __a
, __b
);
23525 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23526 vshlq_u16 (uint16x8_t __a
, int16x8_t __b
)
23528 return (uint16x8_t
) __builtin_aarch64_ushlv8hi ((int16x8_t
) __a
, __b
);
23531 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23532 vshlq_u32 (uint32x4_t __a
, int32x4_t __b
)
23534 return (uint32x4_t
) __builtin_aarch64_ushlv4si ((int32x4_t
) __a
, __b
);
23537 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23538 vshlq_u64 (uint64x2_t __a
, int64x2_t __b
)
23540 return (uint64x2_t
) __builtin_aarch64_ushlv2di ((int64x2_t
) __a
, __b
);
23543 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23544 vshld_s64 (int64x1_t __a
, int64x1_t __b
)
23546 return (int64x1_t
) __builtin_aarch64_sshldi (__a
, __b
);
23549 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23550 vshld_u64 (uint64x1_t __a
, uint64x1_t __b
)
23552 return (uint64x1_t
) __builtin_aarch64_ushldi (__a
, __b
);
23555 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23556 vshll_high_n_s8 (int8x16_t __a
, const int __b
)
23558 return __builtin_aarch64_sshll2_nv16qi (__a
, __b
);
23561 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23562 vshll_high_n_s16 (int16x8_t __a
, const int __b
)
23564 return __builtin_aarch64_sshll2_nv8hi (__a
, __b
);
23567 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23568 vshll_high_n_s32 (int32x4_t __a
, const int __b
)
23570 return __builtin_aarch64_sshll2_nv4si (__a
, __b
);
23573 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23574 vshll_high_n_u8 (uint8x16_t __a
, const int __b
)
23576 return (uint16x8_t
) __builtin_aarch64_ushll2_nv16qi ((int8x16_t
) __a
, __b
);
23579 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23580 vshll_high_n_u16 (uint16x8_t __a
, const int __b
)
23582 return (uint32x4_t
) __builtin_aarch64_ushll2_nv8hi ((int16x8_t
) __a
, __b
);
23585 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23586 vshll_high_n_u32 (uint32x4_t __a
, const int __b
)
23588 return (uint64x2_t
) __builtin_aarch64_ushll2_nv4si ((int32x4_t
) __a
, __b
);
23591 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23592 vshll_n_s8 (int8x8_t __a
, const int __b
)
23594 return __builtin_aarch64_sshll_nv8qi (__a
, __b
);
23597 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23598 vshll_n_s16 (int16x4_t __a
, const int __b
)
23600 return __builtin_aarch64_sshll_nv4hi (__a
, __b
);
23603 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23604 vshll_n_s32 (int32x2_t __a
, const int __b
)
23606 return __builtin_aarch64_sshll_nv2si (__a
, __b
);
23609 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23610 vshll_n_u8 (uint8x8_t __a
, const int __b
)
23612 return (uint16x8_t
) __builtin_aarch64_ushll_nv8qi ((int8x8_t
) __a
, __b
);
23615 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23616 vshll_n_u16 (uint16x4_t __a
, const int __b
)
23618 return (uint32x4_t
) __builtin_aarch64_ushll_nv4hi ((int16x4_t
) __a
, __b
);
23621 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23622 vshll_n_u32 (uint32x2_t __a
, const int __b
)
23624 return (uint64x2_t
) __builtin_aarch64_ushll_nv2si ((int32x2_t
) __a
, __b
);
23629 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
23630 vshr_n_s8 (int8x8_t __a
, const int __b
)
23632 return (int8x8_t
) __builtin_aarch64_ashrv8qi (__a
, __b
);
23635 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
23636 vshr_n_s16 (int16x4_t __a
, const int __b
)
23638 return (int16x4_t
) __builtin_aarch64_ashrv4hi (__a
, __b
);
23641 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
23642 vshr_n_s32 (int32x2_t __a
, const int __b
)
23644 return (int32x2_t
) __builtin_aarch64_ashrv2si (__a
, __b
);
23647 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23648 vshr_n_s64 (int64x1_t __a
, const int __b
)
23650 return (int64x1_t
) __builtin_aarch64_ashrdi (__a
, __b
);
23653 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23654 vshr_n_u8 (uint8x8_t __a
, const int __b
)
23656 return (uint8x8_t
) __builtin_aarch64_lshrv8qi ((int8x8_t
) __a
, __b
);
23659 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23660 vshr_n_u16 (uint16x4_t __a
, const int __b
)
23662 return (uint16x4_t
) __builtin_aarch64_lshrv4hi ((int16x4_t
) __a
, __b
);
23665 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23666 vshr_n_u32 (uint32x2_t __a
, const int __b
)
23668 return (uint32x2_t
) __builtin_aarch64_lshrv2si ((int32x2_t
) __a
, __b
);
23671 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23672 vshr_n_u64 (uint64x1_t __a
, const int __b
)
23674 return (uint64x1_t
) __builtin_aarch64_lshrdi ((int64x1_t
) __a
, __b
);
23677 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
23678 vshrq_n_s8 (int8x16_t __a
, const int __b
)
23680 return (int8x16_t
) __builtin_aarch64_ashrv16qi (__a
, __b
);
23683 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23684 vshrq_n_s16 (int16x8_t __a
, const int __b
)
23686 return (int16x8_t
) __builtin_aarch64_ashrv8hi (__a
, __b
);
23689 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23690 vshrq_n_s32 (int32x4_t __a
, const int __b
)
23692 return (int32x4_t
) __builtin_aarch64_ashrv4si (__a
, __b
);
23695 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23696 vshrq_n_s64 (int64x2_t __a
, const int __b
)
23698 return (int64x2_t
) __builtin_aarch64_ashrv2di (__a
, __b
);
23701 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23702 vshrq_n_u8 (uint8x16_t __a
, const int __b
)
23704 return (uint8x16_t
) __builtin_aarch64_lshrv16qi ((int8x16_t
) __a
, __b
);
23707 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23708 vshrq_n_u16 (uint16x8_t __a
, const int __b
)
23710 return (uint16x8_t
) __builtin_aarch64_lshrv8hi ((int16x8_t
) __a
, __b
);
23713 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23714 vshrq_n_u32 (uint32x4_t __a
, const int __b
)
23716 return (uint32x4_t
) __builtin_aarch64_lshrv4si ((int32x4_t
) __a
, __b
);
23719 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23720 vshrq_n_u64 (uint64x2_t __a
, const int __b
)
23722 return (uint64x2_t
) __builtin_aarch64_lshrv2di ((int64x2_t
) __a
, __b
);
23725 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23726 vshrd_n_s64 (int64x1_t __a
, const int __b
)
23728 return (int64x1_t
) __builtin_aarch64_ashrdi (__a
, __b
);
23731 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23732 vshrd_n_u64 (uint64x1_t __a
, const int __b
)
23734 return (uint64x1_t
) __builtin_aarch64_lshrdi (__a
, __b
);
23739 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
23740 vsli_n_s8 (int8x8_t __a
, int8x8_t __b
, const int __c
)
23742 return (int8x8_t
) __builtin_aarch64_ssli_nv8qi (__a
, __b
, __c
);
23745 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
23746 vsli_n_s16 (int16x4_t __a
, int16x4_t __b
, const int __c
)
23748 return (int16x4_t
) __builtin_aarch64_ssli_nv4hi (__a
, __b
, __c
);
23751 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
23752 vsli_n_s32 (int32x2_t __a
, int32x2_t __b
, const int __c
)
23754 return (int32x2_t
) __builtin_aarch64_ssli_nv2si (__a
, __b
, __c
);
23757 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23758 vsli_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
23760 return (int64x1_t
) __builtin_aarch64_ssli_ndi (__a
, __b
, __c
);
23763 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23764 vsli_n_u8 (uint8x8_t __a
, uint8x8_t __b
, const int __c
)
23766 return (uint8x8_t
) __builtin_aarch64_usli_nv8qi ((int8x8_t
) __a
,
23767 (int8x8_t
) __b
, __c
);
23770 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23771 vsli_n_u16 (uint16x4_t __a
, uint16x4_t __b
, const int __c
)
23773 return (uint16x4_t
) __builtin_aarch64_usli_nv4hi ((int16x4_t
) __a
,
23774 (int16x4_t
) __b
, __c
);
23777 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23778 vsli_n_u32 (uint32x2_t __a
, uint32x2_t __b
, const int __c
)
23780 return (uint32x2_t
) __builtin_aarch64_usli_nv2si ((int32x2_t
) __a
,
23781 (int32x2_t
) __b
, __c
);
23784 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23785 vsli_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
23787 return (uint64x1_t
) __builtin_aarch64_usli_ndi ((int64x1_t
) __a
,
23788 (int64x1_t
) __b
, __c
);
23791 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
23792 vsliq_n_s8 (int8x16_t __a
, int8x16_t __b
, const int __c
)
23794 return (int8x16_t
) __builtin_aarch64_ssli_nv16qi (__a
, __b
, __c
);
23797 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23798 vsliq_n_s16 (int16x8_t __a
, int16x8_t __b
, const int __c
)
23800 return (int16x8_t
) __builtin_aarch64_ssli_nv8hi (__a
, __b
, __c
);
23803 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23804 vsliq_n_s32 (int32x4_t __a
, int32x4_t __b
, const int __c
)
23806 return (int32x4_t
) __builtin_aarch64_ssli_nv4si (__a
, __b
, __c
);
23809 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23810 vsliq_n_s64 (int64x2_t __a
, int64x2_t __b
, const int __c
)
23812 return (int64x2_t
) __builtin_aarch64_ssli_nv2di (__a
, __b
, __c
);
23815 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23816 vsliq_n_u8 (uint8x16_t __a
, uint8x16_t __b
, const int __c
)
23818 return (uint8x16_t
) __builtin_aarch64_usli_nv16qi ((int8x16_t
) __a
,
23819 (int8x16_t
) __b
, __c
);
23822 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23823 vsliq_n_u16 (uint16x8_t __a
, uint16x8_t __b
, const int __c
)
23825 return (uint16x8_t
) __builtin_aarch64_usli_nv8hi ((int16x8_t
) __a
,
23826 (int16x8_t
) __b
, __c
);
23829 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23830 vsliq_n_u32 (uint32x4_t __a
, uint32x4_t __b
, const int __c
)
23832 return (uint32x4_t
) __builtin_aarch64_usli_nv4si ((int32x4_t
) __a
,
23833 (int32x4_t
) __b
, __c
);
23836 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23837 vsliq_n_u64 (uint64x2_t __a
, uint64x2_t __b
, const int __c
)
23839 return (uint64x2_t
) __builtin_aarch64_usli_nv2di ((int64x2_t
) __a
,
23840 (int64x2_t
) __b
, __c
);
23843 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23844 vslid_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
23846 return (int64x1_t
) __builtin_aarch64_ssli_ndi (__a
, __b
, __c
);
23849 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23850 vslid_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
23852 return (uint64x1_t
) __builtin_aarch64_usli_ndi (__a
, __b
, __c
);
23857 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23858 vsqadd_u8 (uint8x8_t __a
, int8x8_t __b
)
23860 return (uint8x8_t
) __builtin_aarch64_usqaddv8qi ((int8x8_t
) __a
,
23864 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23865 vsqadd_u16 (uint16x4_t __a
, int16x4_t __b
)
23867 return (uint16x4_t
) __builtin_aarch64_usqaddv4hi ((int16x4_t
) __a
,
23871 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23872 vsqadd_u32 (uint32x2_t __a
, int32x2_t __b
)
23874 return (uint32x2_t
) __builtin_aarch64_usqaddv2si ((int32x2_t
) __a
,
23878 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23879 vsqadd_u64 (uint64x1_t __a
, int64x1_t __b
)
23881 return (uint64x1_t
) __builtin_aarch64_usqadddi ((int64x1_t
) __a
, __b
);
23884 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23885 vsqaddq_u8 (uint8x16_t __a
, int8x16_t __b
)
23887 return (uint8x16_t
) __builtin_aarch64_usqaddv16qi ((int8x16_t
) __a
,
23891 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23892 vsqaddq_u16 (uint16x8_t __a
, int16x8_t __b
)
23894 return (uint16x8_t
) __builtin_aarch64_usqaddv8hi ((int16x8_t
) __a
,
23898 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23899 vsqaddq_u32 (uint32x4_t __a
, int32x4_t __b
)
23901 return (uint32x4_t
) __builtin_aarch64_usqaddv4si ((int32x4_t
) __a
,
23905 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23906 vsqaddq_u64 (uint64x2_t __a
, int64x2_t __b
)
23908 return (uint64x2_t
) __builtin_aarch64_usqaddv2di ((int64x2_t
) __a
,
23912 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
23913 vsqaddb_u8 (uint8x1_t __a
, int8x1_t __b
)
23915 return (uint8x1_t
) __builtin_aarch64_usqaddqi ((int8x1_t
) __a
, __b
);
23918 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
23919 vsqaddh_u16 (uint16x1_t __a
, int16x1_t __b
)
23921 return (uint16x1_t
) __builtin_aarch64_usqaddhi ((int16x1_t
) __a
, __b
);
23924 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
23925 vsqadds_u32 (uint32x1_t __a
, int32x1_t __b
)
23927 return (uint32x1_t
) __builtin_aarch64_usqaddsi ((int32x1_t
) __a
, __b
);
23930 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23931 vsqaddd_u64 (uint64x1_t __a
, int64x1_t __b
)
23933 return (uint64x1_t
) __builtin_aarch64_usqadddi ((int64x1_t
) __a
, __b
);
23937 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
23938 vsqrt_f32 (float32x2_t a
)
23940 return __builtin_aarch64_sqrtv2sf (a
);
23943 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
23944 vsqrtq_f32 (float32x4_t a
)
23946 return __builtin_aarch64_sqrtv4sf (a
);
23949 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
23950 vsqrtq_f64 (float64x2_t a
)
23952 return __builtin_aarch64_sqrtv2df (a
);
23957 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
23958 vsra_n_s8 (int8x8_t __a
, int8x8_t __b
, const int __c
)
23960 return (int8x8_t
) __builtin_aarch64_ssra_nv8qi (__a
, __b
, __c
);
23963 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
23964 vsra_n_s16 (int16x4_t __a
, int16x4_t __b
, const int __c
)
23966 return (int16x4_t
) __builtin_aarch64_ssra_nv4hi (__a
, __b
, __c
);
23969 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
23970 vsra_n_s32 (int32x2_t __a
, int32x2_t __b
, const int __c
)
23972 return (int32x2_t
) __builtin_aarch64_ssra_nv2si (__a
, __b
, __c
);
23975 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23976 vsra_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
23978 return (int64x1_t
) __builtin_aarch64_ssra_ndi (__a
, __b
, __c
);
23981 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23982 vsra_n_u8 (uint8x8_t __a
, uint8x8_t __b
, const int __c
)
23984 return (uint8x8_t
) __builtin_aarch64_usra_nv8qi ((int8x8_t
) __a
,
23985 (int8x8_t
) __b
, __c
);
23988 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23989 vsra_n_u16 (uint16x4_t __a
, uint16x4_t __b
, const int __c
)
23991 return (uint16x4_t
) __builtin_aarch64_usra_nv4hi ((int16x4_t
) __a
,
23992 (int16x4_t
) __b
, __c
);
23995 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23996 vsra_n_u32 (uint32x2_t __a
, uint32x2_t __b
, const int __c
)
23998 return (uint32x2_t
) __builtin_aarch64_usra_nv2si ((int32x2_t
) __a
,
23999 (int32x2_t
) __b
, __c
);
24002 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
24003 vsra_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
24005 return (uint64x1_t
) __builtin_aarch64_usra_ndi ((int64x1_t
) __a
,
24006 (int64x1_t
) __b
, __c
);
24009 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
24010 vsraq_n_s8 (int8x16_t __a
, int8x16_t __b
, const int __c
)
24012 return (int8x16_t
) __builtin_aarch64_ssra_nv16qi (__a
, __b
, __c
);
24015 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
24016 vsraq_n_s16 (int16x8_t __a
, int16x8_t __b
, const int __c
)
24018 return (int16x8_t
) __builtin_aarch64_ssra_nv8hi (__a
, __b
, __c
);
24021 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
24022 vsraq_n_s32 (int32x4_t __a
, int32x4_t __b
, const int __c
)
24024 return (int32x4_t
) __builtin_aarch64_ssra_nv4si (__a
, __b
, __c
);
24027 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
24028 vsraq_n_s64 (int64x2_t __a
, int64x2_t __b
, const int __c
)
24030 return (int64x2_t
) __builtin_aarch64_ssra_nv2di (__a
, __b
, __c
);
24033 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
24034 vsraq_n_u8 (uint8x16_t __a
, uint8x16_t __b
, const int __c
)
24036 return (uint8x16_t
) __builtin_aarch64_usra_nv16qi ((int8x16_t
) __a
,
24037 (int8x16_t
) __b
, __c
);
24040 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
24041 vsraq_n_u16 (uint16x8_t __a
, uint16x8_t __b
, const int __c
)
24043 return (uint16x8_t
) __builtin_aarch64_usra_nv8hi ((int16x8_t
) __a
,
24044 (int16x8_t
) __b
, __c
);
24047 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
24048 vsraq_n_u32 (uint32x4_t __a
, uint32x4_t __b
, const int __c
)
24050 return (uint32x4_t
) __builtin_aarch64_usra_nv4si ((int32x4_t
) __a
,
24051 (int32x4_t
) __b
, __c
);
24054 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
24055 vsraq_n_u64 (uint64x2_t __a
, uint64x2_t __b
, const int __c
)
24057 return (uint64x2_t
) __builtin_aarch64_usra_nv2di ((int64x2_t
) __a
,
24058 (int64x2_t
) __b
, __c
);
24061 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
24062 vsrad_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
24064 return (int64x1_t
) __builtin_aarch64_ssra_ndi (__a
, __b
, __c
);
24067 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
24068 vsrad_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
24070 return (uint64x1_t
) __builtin_aarch64_usra_ndi (__a
, __b
, __c
);
24075 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
24076 vsri_n_s8 (int8x8_t __a
, int8x8_t __b
, const int __c
)
24078 return (int8x8_t
) __builtin_aarch64_ssri_nv8qi (__a
, __b
, __c
);
24081 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
24082 vsri_n_s16 (int16x4_t __a
, int16x4_t __b
, const int __c
)
24084 return (int16x4_t
) __builtin_aarch64_ssri_nv4hi (__a
, __b
, __c
);
24087 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
24088 vsri_n_s32 (int32x2_t __a
, int32x2_t __b
, const int __c
)
24090 return (int32x2_t
) __builtin_aarch64_ssri_nv2si (__a
, __b
, __c
);
24093 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
24094 vsri_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
24096 return (int64x1_t
) __builtin_aarch64_ssri_ndi (__a
, __b
, __c
);
24099 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
24100 vsri_n_u8 (uint8x8_t __a
, uint8x8_t __b
, const int __c
)
24102 return (uint8x8_t
) __builtin_aarch64_usri_nv8qi ((int8x8_t
) __a
,
24103 (int8x8_t
) __b
, __c
);
24106 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
24107 vsri_n_u16 (uint16x4_t __a
, uint16x4_t __b
, const int __c
)
24109 return (uint16x4_t
) __builtin_aarch64_usri_nv4hi ((int16x4_t
) __a
,
24110 (int16x4_t
) __b
, __c
);
24113 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
24114 vsri_n_u32 (uint32x2_t __a
, uint32x2_t __b
, const int __c
)
24116 return (uint32x2_t
) __builtin_aarch64_usri_nv2si ((int32x2_t
) __a
,
24117 (int32x2_t
) __b
, __c
);
24120 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
24121 vsri_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
24123 return (uint64x1_t
) __builtin_aarch64_usri_ndi ((int64x1_t
) __a
,
24124 (int64x1_t
) __b
, __c
);
24127 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
24128 vsriq_n_s8 (int8x16_t __a
, int8x16_t __b
, const int __c
)
24130 return (int8x16_t
) __builtin_aarch64_ssri_nv16qi (__a
, __b
, __c
);
24133 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
24134 vsriq_n_s16 (int16x8_t __a
, int16x8_t __b
, const int __c
)
24136 return (int16x8_t
) __builtin_aarch64_ssri_nv8hi (__a
, __b
, __c
);
24139 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
24140 vsriq_n_s32 (int32x4_t __a
, int32x4_t __b
, const int __c
)
24142 return (int32x4_t
) __builtin_aarch64_ssri_nv4si (__a
, __b
, __c
);
24145 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
24146 vsriq_n_s64 (int64x2_t __a
, int64x2_t __b
, const int __c
)
24148 return (int64x2_t
) __builtin_aarch64_ssri_nv2di (__a
, __b
, __c
);
24151 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
24152 vsriq_n_u8 (uint8x16_t __a
, uint8x16_t __b
, const int __c
)
24154 return (uint8x16_t
) __builtin_aarch64_usri_nv16qi ((int8x16_t
) __a
,
24155 (int8x16_t
) __b
, __c
);
24158 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
24159 vsriq_n_u16 (uint16x8_t __a
, uint16x8_t __b
, const int __c
)
24161 return (uint16x8_t
) __builtin_aarch64_usri_nv8hi ((int16x8_t
) __a
,
24162 (int16x8_t
) __b
, __c
);
24165 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
24166 vsriq_n_u32 (uint32x4_t __a
, uint32x4_t __b
, const int __c
)
24168 return (uint32x4_t
) __builtin_aarch64_usri_nv4si ((int32x4_t
) __a
,
24169 (int32x4_t
) __b
, __c
);
24172 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
24173 vsriq_n_u64 (uint64x2_t __a
, uint64x2_t __b
, const int __c
)
24175 return (uint64x2_t
) __builtin_aarch64_usri_nv2di ((int64x2_t
) __a
,
24176 (int64x2_t
) __b
, __c
);
24179 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
24180 vsrid_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
24182 return (int64x1_t
) __builtin_aarch64_ssri_ndi (__a
, __b
, __c
);
24185 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
24186 vsrid_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
24188 return (uint64x1_t
) __builtin_aarch64_usri_ndi (__a
, __b
, __c
);
24193 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24194 vst1_f32 (float32_t
*a
, float32x2_t b
)
24196 __builtin_aarch64_st1v2sf ((__builtin_aarch64_simd_sf
*) a
, b
);
24199 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24200 vst1_f64 (float64_t
*a
, float64x1_t b
)
24205 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24206 vst1_p8 (poly8_t
*a
, poly8x8_t b
)
24208 __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi
*) a
,
24212 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24213 vst1_p16 (poly16_t
*a
, poly16x4_t b
)
24215 __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi
*) a
,
24219 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24220 vst1_s8 (int8_t *a
, int8x8_t b
)
24222 __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi
*) a
, b
);
24225 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24226 vst1_s16 (int16_t *a
, int16x4_t b
)
24228 __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi
*) a
, b
);
24231 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24232 vst1_s32 (int32_t *a
, int32x2_t b
)
24234 __builtin_aarch64_st1v2si ((__builtin_aarch64_simd_si
*) a
, b
);
24237 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24238 vst1_s64 (int64_t *a
, int64x1_t b
)
24243 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24244 vst1_u8 (uint8_t *a
, uint8x8_t b
)
24246 __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi
*) a
,
24250 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24251 vst1_u16 (uint16_t *a
, uint16x4_t b
)
24253 __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi
*) a
,
24257 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24258 vst1_u32 (uint32_t *a
, uint32x2_t b
)
24260 __builtin_aarch64_st1v2si ((__builtin_aarch64_simd_si
*) a
,
24264 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24265 vst1_u64 (uint64_t *a
, uint64x1_t b
)
24270 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24271 vst1q_f32 (float32_t
*a
, float32x4_t b
)
24273 __builtin_aarch64_st1v4sf ((__builtin_aarch64_simd_sf
*) a
, b
);
24276 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24277 vst1q_f64 (float64_t
*a
, float64x2_t b
)
24279 __builtin_aarch64_st1v2df ((__builtin_aarch64_simd_df
*) a
, b
);
24284 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24285 vst1q_p8 (poly8_t
*a
, poly8x16_t b
)
24287 __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi
*) a
,
24291 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24292 vst1q_p16 (poly16_t
*a
, poly16x8_t b
)
24294 __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi
*) a
,
24298 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24299 vst1q_s8 (int8_t *a
, int8x16_t b
)
24301 __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi
*) a
, b
);
24304 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24305 vst1q_s16 (int16_t *a
, int16x8_t b
)
24307 __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi
*) a
, b
);
24310 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24311 vst1q_s32 (int32_t *a
, int32x4_t b
)
24313 __builtin_aarch64_st1v4si ((__builtin_aarch64_simd_si
*) a
, b
);
24316 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24317 vst1q_s64 (int64_t *a
, int64x2_t b
)
24319 __builtin_aarch64_st1v2di ((__builtin_aarch64_simd_di
*) a
, b
);
24322 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24323 vst1q_u8 (uint8_t *a
, uint8x16_t b
)
24325 __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi
*) a
,
24329 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24330 vst1q_u16 (uint16_t *a
, uint16x8_t b
)
24332 __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi
*) a
,
24336 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24337 vst1q_u32 (uint32_t *a
, uint32x4_t b
)
24339 __builtin_aarch64_st1v4si ((__builtin_aarch64_simd_si
*) a
,
24343 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24344 vst1q_u64 (uint64_t *a
, uint64x2_t b
)
24346 __builtin_aarch64_st1v2di ((__builtin_aarch64_simd_di
*) a
,
24352 __extension__
static __inline
void
24353 vst2_s64 (int64_t * __a
, int64x1x2_t val
)
24355 __builtin_aarch64_simd_oi __o
;
24357 temp
.val
[0] = vcombine_s64 (val
.val
[0], vcreate_s64 (__AARCH64_INT64_C (0)));
24358 temp
.val
[1] = vcombine_s64 (val
.val
[1], vcreate_s64 (__AARCH64_INT64_C (0)));
24359 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) temp
.val
[0], 0);
24360 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) temp
.val
[1], 1);
24361 __builtin_aarch64_st2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24364 __extension__
static __inline
void
24365 vst2_u64 (uint64_t * __a
, uint64x1x2_t val
)
24367 __builtin_aarch64_simd_oi __o
;
24369 temp
.val
[0] = vcombine_u64 (val
.val
[0], vcreate_u64 (__AARCH64_UINT64_C (0)));
24370 temp
.val
[1] = vcombine_u64 (val
.val
[1], vcreate_u64 (__AARCH64_UINT64_C (0)));
24371 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) temp
.val
[0], 0);
24372 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) temp
.val
[1], 1);
24373 __builtin_aarch64_st2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24376 __extension__
static __inline
void
24377 vst2_f64 (float64_t
* __a
, float64x1x2_t val
)
24379 __builtin_aarch64_simd_oi __o
;
24380 float64x2x2_t temp
;
24381 temp
.val
[0] = vcombine_f64 (val
.val
[0], vcreate_f64 (__AARCH64_UINT64_C (0)));
24382 temp
.val
[1] = vcombine_f64 (val
.val
[1], vcreate_f64 (__AARCH64_UINT64_C (0)));
24383 __o
= __builtin_aarch64_set_qregoiv2df (__o
, (float64x2_t
) temp
.val
[0], 0);
24384 __o
= __builtin_aarch64_set_qregoiv2df (__o
, (float64x2_t
) temp
.val
[1], 1);
24385 __builtin_aarch64_st2df ((__builtin_aarch64_simd_df
*) __a
, __o
);
24388 __extension__
static __inline
void
24389 vst2_s8 (int8_t * __a
, int8x8x2_t val
)
24391 __builtin_aarch64_simd_oi __o
;
24393 temp
.val
[0] = vcombine_s8 (val
.val
[0], vcreate_s8 (__AARCH64_INT64_C (0)));
24394 temp
.val
[1] = vcombine_s8 (val
.val
[1], vcreate_s8 (__AARCH64_INT64_C (0)));
24395 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24396 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24397 __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24400 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24401 vst2_p8 (poly8_t
* __a
, poly8x8x2_t val
)
24403 __builtin_aarch64_simd_oi __o
;
24405 temp
.val
[0] = vcombine_p8 (val
.val
[0], vcreate_p8 (__AARCH64_UINT64_C (0)));
24406 temp
.val
[1] = vcombine_p8 (val
.val
[1], vcreate_p8 (__AARCH64_UINT64_C (0)));
24407 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24408 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24409 __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24412 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24413 vst2_s16 (int16_t * __a
, int16x4x2_t val
)
24415 __builtin_aarch64_simd_oi __o
;
24417 temp
.val
[0] = vcombine_s16 (val
.val
[0], vcreate_s16 (__AARCH64_INT64_C (0)));
24418 temp
.val
[1] = vcombine_s16 (val
.val
[1], vcreate_s16 (__AARCH64_INT64_C (0)));
24419 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24420 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24421 __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24424 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24425 vst2_p16 (poly16_t
* __a
, poly16x4x2_t val
)
24427 __builtin_aarch64_simd_oi __o
;
24429 temp
.val
[0] = vcombine_p16 (val
.val
[0], vcreate_p16 (__AARCH64_UINT64_C (0)));
24430 temp
.val
[1] = vcombine_p16 (val
.val
[1], vcreate_p16 (__AARCH64_UINT64_C (0)));
24431 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24432 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24433 __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24436 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24437 vst2_s32 (int32_t * __a
, int32x2x2_t val
)
24439 __builtin_aarch64_simd_oi __o
;
24441 temp
.val
[0] = vcombine_s32 (val
.val
[0], vcreate_s32 (__AARCH64_INT64_C (0)));
24442 temp
.val
[1] = vcombine_s32 (val
.val
[1], vcreate_s32 (__AARCH64_INT64_C (0)));
24443 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) temp
.val
[0], 0);
24444 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) temp
.val
[1], 1);
24445 __builtin_aarch64_st2v2si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24448 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24449 vst2_u8 (uint8_t * __a
, uint8x8x2_t val
)
24451 __builtin_aarch64_simd_oi __o
;
24453 temp
.val
[0] = vcombine_u8 (val
.val
[0], vcreate_u8 (__AARCH64_UINT64_C (0)));
24454 temp
.val
[1] = vcombine_u8 (val
.val
[1], vcreate_u8 (__AARCH64_UINT64_C (0)));
24455 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24456 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24457 __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24460 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24461 vst2_u16 (uint16_t * __a
, uint16x4x2_t val
)
24463 __builtin_aarch64_simd_oi __o
;
24465 temp
.val
[0] = vcombine_u16 (val
.val
[0], vcreate_u16 (__AARCH64_UINT64_C (0)));
24466 temp
.val
[1] = vcombine_u16 (val
.val
[1], vcreate_u16 (__AARCH64_UINT64_C (0)));
24467 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24468 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24469 __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24472 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24473 vst2_u32 (uint32_t * __a
, uint32x2x2_t val
)
24475 __builtin_aarch64_simd_oi __o
;
24477 temp
.val
[0] = vcombine_u32 (val
.val
[0], vcreate_u32 (__AARCH64_UINT64_C (0)));
24478 temp
.val
[1] = vcombine_u32 (val
.val
[1], vcreate_u32 (__AARCH64_UINT64_C (0)));
24479 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) temp
.val
[0], 0);
24480 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) temp
.val
[1], 1);
24481 __builtin_aarch64_st2v2si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24484 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24485 vst2_f32 (float32_t
* __a
, float32x2x2_t val
)
24487 __builtin_aarch64_simd_oi __o
;
24488 float32x4x2_t temp
;
24489 temp
.val
[0] = vcombine_f32 (val
.val
[0], vcreate_f32 (__AARCH64_UINT64_C (0)));
24490 temp
.val
[1] = vcombine_f32 (val
.val
[1], vcreate_f32 (__AARCH64_UINT64_C (0)));
24491 __o
= __builtin_aarch64_set_qregoiv4sf (__o
, (float32x4_t
) temp
.val
[0], 0);
24492 __o
= __builtin_aarch64_set_qregoiv4sf (__o
, (float32x4_t
) temp
.val
[1], 1);
24493 __builtin_aarch64_st2v2sf ((__builtin_aarch64_simd_sf
*) __a
, __o
);
24496 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24497 vst2q_s8 (int8_t * __a
, int8x16x2_t val
)
24499 __builtin_aarch64_simd_oi __o
;
24500 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24501 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24502 __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24505 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24506 vst2q_p8 (poly8_t
* __a
, poly8x16x2_t val
)
24508 __builtin_aarch64_simd_oi __o
;
24509 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24510 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24511 __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24514 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24515 vst2q_s16 (int16_t * __a
, int16x8x2_t val
)
24517 __builtin_aarch64_simd_oi __o
;
24518 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24519 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24520 __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24523 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24524 vst2q_p16 (poly16_t
* __a
, poly16x8x2_t val
)
24526 __builtin_aarch64_simd_oi __o
;
24527 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24528 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24529 __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24532 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24533 vst2q_s32 (int32_t * __a
, int32x4x2_t val
)
24535 __builtin_aarch64_simd_oi __o
;
24536 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) val
.val
[0], 0);
24537 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) val
.val
[1], 1);
24538 __builtin_aarch64_st2v4si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24541 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24542 vst2q_s64 (int64_t * __a
, int64x2x2_t val
)
24544 __builtin_aarch64_simd_oi __o
;
24545 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) val
.val
[0], 0);
24546 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) val
.val
[1], 1);
24547 __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24550 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24551 vst2q_u8 (uint8_t * __a
, uint8x16x2_t val
)
24553 __builtin_aarch64_simd_oi __o
;
24554 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24555 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24556 __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24559 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24560 vst2q_u16 (uint16_t * __a
, uint16x8x2_t val
)
24562 __builtin_aarch64_simd_oi __o
;
24563 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24564 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24565 __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24568 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24569 vst2q_u32 (uint32_t * __a
, uint32x4x2_t val
)
24571 __builtin_aarch64_simd_oi __o
;
24572 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) val
.val
[0], 0);
24573 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) val
.val
[1], 1);
24574 __builtin_aarch64_st2v4si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24577 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24578 vst2q_u64 (uint64_t * __a
, uint64x2x2_t val
)
24580 __builtin_aarch64_simd_oi __o
;
24581 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) val
.val
[0], 0);
24582 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) val
.val
[1], 1);
24583 __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24586 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24587 vst2q_f32 (float32_t
* __a
, float32x4x2_t val
)
24589 __builtin_aarch64_simd_oi __o
;
24590 __o
= __builtin_aarch64_set_qregoiv4sf (__o
, (float32x4_t
) val
.val
[0], 0);
24591 __o
= __builtin_aarch64_set_qregoiv4sf (__o
, (float32x4_t
) val
.val
[1], 1);
24592 __builtin_aarch64_st2v4sf ((__builtin_aarch64_simd_sf
*) __a
, __o
);
24595 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24596 vst2q_f64 (float64_t
* __a
, float64x2x2_t val
)
24598 __builtin_aarch64_simd_oi __o
;
24599 __o
= __builtin_aarch64_set_qregoiv2df (__o
, (float64x2_t
) val
.val
[0], 0);
24600 __o
= __builtin_aarch64_set_qregoiv2df (__o
, (float64x2_t
) val
.val
[1], 1);
24601 __builtin_aarch64_st2v2df ((__builtin_aarch64_simd_df
*) __a
, __o
);
24604 __extension__
static __inline
void
24605 vst3_s64 (int64_t * __a
, int64x1x3_t val
)
24607 __builtin_aarch64_simd_ci __o
;
24609 temp
.val
[0] = vcombine_s64 (val
.val
[0], vcreate_s64 (__AARCH64_INT64_C (0)));
24610 temp
.val
[1] = vcombine_s64 (val
.val
[1], vcreate_s64 (__AARCH64_INT64_C (0)));
24611 temp
.val
[2] = vcombine_s64 (val
.val
[2], vcreate_s64 (__AARCH64_INT64_C (0)));
24612 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) temp
.val
[0], 0);
24613 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) temp
.val
[1], 1);
24614 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) temp
.val
[2], 2);
24615 __builtin_aarch64_st3di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24618 __extension__
static __inline
void
24619 vst3_u64 (uint64_t * __a
, uint64x1x3_t val
)
24621 __builtin_aarch64_simd_ci __o
;
24623 temp
.val
[0] = vcombine_u64 (val
.val
[0], vcreate_u64 (__AARCH64_UINT64_C (0)));
24624 temp
.val
[1] = vcombine_u64 (val
.val
[1], vcreate_u64 (__AARCH64_UINT64_C (0)));
24625 temp
.val
[2] = vcombine_u64 (val
.val
[2], vcreate_u64 (__AARCH64_UINT64_C (0)));
24626 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) temp
.val
[0], 0);
24627 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) temp
.val
[1], 1);
24628 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) temp
.val
[2], 2);
24629 __builtin_aarch64_st3di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24632 __extension__
static __inline
void
24633 vst3_f64 (float64_t
* __a
, float64x1x3_t val
)
24635 __builtin_aarch64_simd_ci __o
;
24636 float64x2x3_t temp
;
24637 temp
.val
[0] = vcombine_f64 (val
.val
[0], vcreate_f64 (__AARCH64_UINT64_C (0)));
24638 temp
.val
[1] = vcombine_f64 (val
.val
[1], vcreate_f64 (__AARCH64_UINT64_C (0)));
24639 temp
.val
[2] = vcombine_f64 (val
.val
[2], vcreate_f64 (__AARCH64_UINT64_C (0)));
24640 __o
= __builtin_aarch64_set_qregciv2df (__o
, (float64x2_t
) temp
.val
[0], 0);
24641 __o
= __builtin_aarch64_set_qregciv2df (__o
, (float64x2_t
) temp
.val
[1], 1);
24642 __o
= __builtin_aarch64_set_qregciv2df (__o
, (float64x2_t
) temp
.val
[2], 2);
24643 __builtin_aarch64_st3df ((__builtin_aarch64_simd_df
*) __a
, __o
);
24646 __extension__
static __inline
void
24647 vst3_s8 (int8_t * __a
, int8x8x3_t val
)
24649 __builtin_aarch64_simd_ci __o
;
24651 temp
.val
[0] = vcombine_s8 (val
.val
[0], vcreate_s8 (__AARCH64_INT64_C (0)));
24652 temp
.val
[1] = vcombine_s8 (val
.val
[1], vcreate_s8 (__AARCH64_INT64_C (0)));
24653 temp
.val
[2] = vcombine_s8 (val
.val
[2], vcreate_s8 (__AARCH64_INT64_C (0)));
24654 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24655 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24656 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[2], 2);
24657 __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24660 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24661 vst3_p8 (poly8_t
* __a
, poly8x8x3_t val
)
24663 __builtin_aarch64_simd_ci __o
;
24665 temp
.val
[0] = vcombine_p8 (val
.val
[0], vcreate_p8 (__AARCH64_UINT64_C (0)));
24666 temp
.val
[1] = vcombine_p8 (val
.val
[1], vcreate_p8 (__AARCH64_UINT64_C (0)));
24667 temp
.val
[2] = vcombine_p8 (val
.val
[2], vcreate_p8 (__AARCH64_UINT64_C (0)));
24668 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24669 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24670 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[2], 2);
24671 __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24674 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24675 vst3_s16 (int16_t * __a
, int16x4x3_t val
)
24677 __builtin_aarch64_simd_ci __o
;
24679 temp
.val
[0] = vcombine_s16 (val
.val
[0], vcreate_s16 (__AARCH64_INT64_C (0)));
24680 temp
.val
[1] = vcombine_s16 (val
.val
[1], vcreate_s16 (__AARCH64_INT64_C (0)));
24681 temp
.val
[2] = vcombine_s16 (val
.val
[2], vcreate_s16 (__AARCH64_INT64_C (0)));
24682 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24683 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24684 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[2], 2);
24685 __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24688 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24689 vst3_p16 (poly16_t
* __a
, poly16x4x3_t val
)
24691 __builtin_aarch64_simd_ci __o
;
24693 temp
.val
[0] = vcombine_p16 (val
.val
[0], vcreate_p16 (__AARCH64_UINT64_C (0)));
24694 temp
.val
[1] = vcombine_p16 (val
.val
[1], vcreate_p16 (__AARCH64_UINT64_C (0)));
24695 temp
.val
[2] = vcombine_p16 (val
.val
[2], vcreate_p16 (__AARCH64_UINT64_C (0)));
24696 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24697 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24698 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[2], 2);
24699 __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24702 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24703 vst3_s32 (int32_t * __a
, int32x2x3_t val
)
24705 __builtin_aarch64_simd_ci __o
;
24707 temp
.val
[0] = vcombine_s32 (val
.val
[0], vcreate_s32 (__AARCH64_INT64_C (0)));
24708 temp
.val
[1] = vcombine_s32 (val
.val
[1], vcreate_s32 (__AARCH64_INT64_C (0)));
24709 temp
.val
[2] = vcombine_s32 (val
.val
[2], vcreate_s32 (__AARCH64_INT64_C (0)));
24710 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) temp
.val
[0], 0);
24711 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) temp
.val
[1], 1);
24712 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) temp
.val
[2], 2);
24713 __builtin_aarch64_st3v2si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24716 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24717 vst3_u8 (uint8_t * __a
, uint8x8x3_t val
)
24719 __builtin_aarch64_simd_ci __o
;
24721 temp
.val
[0] = vcombine_u8 (val
.val
[0], vcreate_u8 (__AARCH64_UINT64_C (0)));
24722 temp
.val
[1] = vcombine_u8 (val
.val
[1], vcreate_u8 (__AARCH64_UINT64_C (0)));
24723 temp
.val
[2] = vcombine_u8 (val
.val
[2], vcreate_u8 (__AARCH64_UINT64_C (0)));
24724 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24725 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24726 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[2], 2);
24727 __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24730 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24731 vst3_u16 (uint16_t * __a
, uint16x4x3_t val
)
24733 __builtin_aarch64_simd_ci __o
;
24735 temp
.val
[0] = vcombine_u16 (val
.val
[0], vcreate_u16 (__AARCH64_UINT64_C (0)));
24736 temp
.val
[1] = vcombine_u16 (val
.val
[1], vcreate_u16 (__AARCH64_UINT64_C (0)));
24737 temp
.val
[2] = vcombine_u16 (val
.val
[2], vcreate_u16 (__AARCH64_UINT64_C (0)));
24738 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24739 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24740 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[2], 2);
24741 __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24744 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24745 vst3_u32 (uint32_t * __a
, uint32x2x3_t val
)
24747 __builtin_aarch64_simd_ci __o
;
24749 temp
.val
[0] = vcombine_u32 (val
.val
[0], vcreate_u32 (__AARCH64_UINT64_C (0)));
24750 temp
.val
[1] = vcombine_u32 (val
.val
[1], vcreate_u32 (__AARCH64_UINT64_C (0)));
24751 temp
.val
[2] = vcombine_u32 (val
.val
[2], vcreate_u32 (__AARCH64_UINT64_C (0)));
24752 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) temp
.val
[0], 0);
24753 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) temp
.val
[1], 1);
24754 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) temp
.val
[2], 2);
24755 __builtin_aarch64_st3v2si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24758 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24759 vst3_f32 (float32_t
* __a
, float32x2x3_t val
)
24761 __builtin_aarch64_simd_ci __o
;
24762 float32x4x3_t temp
;
24763 temp
.val
[0] = vcombine_f32 (val
.val
[0], vcreate_f32 (__AARCH64_UINT64_C (0)));
24764 temp
.val
[1] = vcombine_f32 (val
.val
[1], vcreate_f32 (__AARCH64_UINT64_C (0)));
24765 temp
.val
[2] = vcombine_f32 (val
.val
[2], vcreate_f32 (__AARCH64_UINT64_C (0)));
24766 __o
= __builtin_aarch64_set_qregciv4sf (__o
, (float32x4_t
) temp
.val
[0], 0);
24767 __o
= __builtin_aarch64_set_qregciv4sf (__o
, (float32x4_t
) temp
.val
[1], 1);
24768 __o
= __builtin_aarch64_set_qregciv4sf (__o
, (float32x4_t
) temp
.val
[2], 2);
24769 __builtin_aarch64_st3v2sf ((__builtin_aarch64_simd_sf
*) __a
, __o
);
24772 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24773 vst3q_s8 (int8_t * __a
, int8x16x3_t val
)
24775 __builtin_aarch64_simd_ci __o
;
24776 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24777 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24778 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[2], 2);
24779 __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24782 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24783 vst3q_p8 (poly8_t
* __a
, poly8x16x3_t val
)
24785 __builtin_aarch64_simd_ci __o
;
24786 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24787 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24788 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[2], 2);
24789 __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24792 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24793 vst3q_s16 (int16_t * __a
, int16x8x3_t val
)
24795 __builtin_aarch64_simd_ci __o
;
24796 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24797 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24798 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[2], 2);
24799 __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24802 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24803 vst3q_p16 (poly16_t
* __a
, poly16x8x3_t val
)
24805 __builtin_aarch64_simd_ci __o
;
24806 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24807 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24808 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[2], 2);
24809 __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24812 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24813 vst3q_s32 (int32_t * __a
, int32x4x3_t val
)
24815 __builtin_aarch64_simd_ci __o
;
24816 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) val
.val
[0], 0);
24817 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) val
.val
[1], 1);
24818 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) val
.val
[2], 2);
24819 __builtin_aarch64_st3v4si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24822 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24823 vst3q_s64 (int64_t * __a
, int64x2x3_t val
)
24825 __builtin_aarch64_simd_ci __o
;
24826 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) val
.val
[0], 0);
24827 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) val
.val
[1], 1);
24828 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) val
.val
[2], 2);
24829 __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24832 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24833 vst3q_u8 (uint8_t * __a
, uint8x16x3_t val
)
24835 __builtin_aarch64_simd_ci __o
;
24836 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24837 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24838 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[2], 2);
24839 __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24842 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24843 vst3q_u16 (uint16_t * __a
, uint16x8x3_t val
)
24845 __builtin_aarch64_simd_ci __o
;
24846 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24847 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24848 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[2], 2);
24849 __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24852 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24853 vst3q_u32 (uint32_t * __a
, uint32x4x3_t val
)
24855 __builtin_aarch64_simd_ci __o
;
24856 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) val
.val
[0], 0);
24857 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) val
.val
[1], 1);
24858 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) val
.val
[2], 2);
24859 __builtin_aarch64_st3v4si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24862 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24863 vst3q_u64 (uint64_t * __a
, uint64x2x3_t val
)
24865 __builtin_aarch64_simd_ci __o
;
24866 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) val
.val
[0], 0);
24867 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) val
.val
[1], 1);
24868 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) val
.val
[2], 2);
24869 __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24872 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24873 vst3q_f32 (float32_t
* __a
, float32x4x3_t val
)
24875 __builtin_aarch64_simd_ci __o
;
24876 __o
= __builtin_aarch64_set_qregciv4sf (__o
, (float32x4_t
) val
.val
[0], 0);
24877 __o
= __builtin_aarch64_set_qregciv4sf (__o
, (float32x4_t
) val
.val
[1], 1);
24878 __o
= __builtin_aarch64_set_qregciv4sf (__o
, (float32x4_t
) val
.val
[2], 2);
24879 __builtin_aarch64_st3v4sf ((__builtin_aarch64_simd_sf
*) __a
, __o
);
24882 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24883 vst3q_f64 (float64_t
* __a
, float64x2x3_t val
)
24885 __builtin_aarch64_simd_ci __o
;
24886 __o
= __builtin_aarch64_set_qregciv2df (__o
, (float64x2_t
) val
.val
[0], 0);
24887 __o
= __builtin_aarch64_set_qregciv2df (__o
, (float64x2_t
) val
.val
[1], 1);
24888 __o
= __builtin_aarch64_set_qregciv2df (__o
, (float64x2_t
) val
.val
[2], 2);
24889 __builtin_aarch64_st3v2df ((__builtin_aarch64_simd_df
*) __a
, __o
);
24892 __extension__
static __inline
void
24893 vst4_s64 (int64_t * __a
, int64x1x4_t val
)
24895 __builtin_aarch64_simd_xi __o
;
24897 temp
.val
[0] = vcombine_s64 (val
.val
[0], vcreate_s64 (__AARCH64_INT64_C (0)));
24898 temp
.val
[1] = vcombine_s64 (val
.val
[1], vcreate_s64 (__AARCH64_INT64_C (0)));
24899 temp
.val
[2] = vcombine_s64 (val
.val
[2], vcreate_s64 (__AARCH64_INT64_C (0)));
24900 temp
.val
[3] = vcombine_s64 (val
.val
[3], vcreate_s64 (__AARCH64_INT64_C (0)));
24901 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[0], 0);
24902 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[1], 1);
24903 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[2], 2);
24904 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[3], 3);
24905 __builtin_aarch64_st4di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24908 __extension__
static __inline
void
24909 vst4_u64 (uint64_t * __a
, uint64x1x4_t val
)
24911 __builtin_aarch64_simd_xi __o
;
24913 temp
.val
[0] = vcombine_u64 (val
.val
[0], vcreate_u64 (__AARCH64_UINT64_C (0)));
24914 temp
.val
[1] = vcombine_u64 (val
.val
[1], vcreate_u64 (__AARCH64_UINT64_C (0)));
24915 temp
.val
[2] = vcombine_u64 (val
.val
[2], vcreate_u64 (__AARCH64_UINT64_C (0)));
24916 temp
.val
[3] = vcombine_u64 (val
.val
[3], vcreate_u64 (__AARCH64_UINT64_C (0)));
24917 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[0], 0);
24918 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[1], 1);
24919 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[2], 2);
24920 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[3], 3);
24921 __builtin_aarch64_st4di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24924 __extension__
static __inline
void
24925 vst4_f64 (float64_t
* __a
, float64x1x4_t val
)
24927 __builtin_aarch64_simd_xi __o
;
24928 float64x2x4_t temp
;
24929 temp
.val
[0] = vcombine_f64 (val
.val
[0], vcreate_f64 (__AARCH64_UINT64_C (0)));
24930 temp
.val
[1] = vcombine_f64 (val
.val
[1], vcreate_f64 (__AARCH64_UINT64_C (0)));
24931 temp
.val
[2] = vcombine_f64 (val
.val
[2], vcreate_f64 (__AARCH64_UINT64_C (0)));
24932 temp
.val
[3] = vcombine_f64 (val
.val
[3], vcreate_f64 (__AARCH64_UINT64_C (0)));
24933 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) temp
.val
[0], 0);
24934 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) temp
.val
[1], 1);
24935 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) temp
.val
[2], 2);
24936 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) temp
.val
[3], 3);
24937 __builtin_aarch64_st4df ((__builtin_aarch64_simd_df
*) __a
, __o
);
24940 __extension__
static __inline
void
24941 vst4_s8 (int8_t * __a
, int8x8x4_t val
)
24943 __builtin_aarch64_simd_xi __o
;
24945 temp
.val
[0] = vcombine_s8 (val
.val
[0], vcreate_s8 (__AARCH64_INT64_C (0)));
24946 temp
.val
[1] = vcombine_s8 (val
.val
[1], vcreate_s8 (__AARCH64_INT64_C (0)));
24947 temp
.val
[2] = vcombine_s8 (val
.val
[2], vcreate_s8 (__AARCH64_INT64_C (0)));
24948 temp
.val
[3] = vcombine_s8 (val
.val
[3], vcreate_s8 (__AARCH64_INT64_C (0)));
24949 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24950 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24951 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[2], 2);
24952 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[3], 3);
24953 __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24956 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24957 vst4_p8 (poly8_t
* __a
, poly8x8x4_t val
)
24959 __builtin_aarch64_simd_xi __o
;
24961 temp
.val
[0] = vcombine_p8 (val
.val
[0], vcreate_p8 (__AARCH64_UINT64_C (0)));
24962 temp
.val
[1] = vcombine_p8 (val
.val
[1], vcreate_p8 (__AARCH64_UINT64_C (0)));
24963 temp
.val
[2] = vcombine_p8 (val
.val
[2], vcreate_p8 (__AARCH64_UINT64_C (0)));
24964 temp
.val
[3] = vcombine_p8 (val
.val
[3], vcreate_p8 (__AARCH64_UINT64_C (0)));
24965 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24966 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24967 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[2], 2);
24968 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[3], 3);
24969 __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24972 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24973 vst4_s16 (int16_t * __a
, int16x4x4_t val
)
24975 __builtin_aarch64_simd_xi __o
;
24977 temp
.val
[0] = vcombine_s16 (val
.val
[0], vcreate_s16 (__AARCH64_INT64_C (0)));
24978 temp
.val
[1] = vcombine_s16 (val
.val
[1], vcreate_s16 (__AARCH64_INT64_C (0)));
24979 temp
.val
[2] = vcombine_s16 (val
.val
[2], vcreate_s16 (__AARCH64_INT64_C (0)));
24980 temp
.val
[3] = vcombine_s16 (val
.val
[3], vcreate_s16 (__AARCH64_INT64_C (0)));
24981 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24982 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24983 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[2], 2);
24984 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[3], 3);
24985 __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24988 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24989 vst4_p16 (poly16_t
* __a
, poly16x4x4_t val
)
24991 __builtin_aarch64_simd_xi __o
;
24993 temp
.val
[0] = vcombine_p16 (val
.val
[0], vcreate_p16 (__AARCH64_UINT64_C (0)));
24994 temp
.val
[1] = vcombine_p16 (val
.val
[1], vcreate_p16 (__AARCH64_UINT64_C (0)));
24995 temp
.val
[2] = vcombine_p16 (val
.val
[2], vcreate_p16 (__AARCH64_UINT64_C (0)));
24996 temp
.val
[3] = vcombine_p16 (val
.val
[3], vcreate_p16 (__AARCH64_UINT64_C (0)));
24997 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24998 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24999 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[2], 2);
25000 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[3], 3);
25001 __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
25004 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25005 vst4_s32 (int32_t * __a
, int32x2x4_t val
)
25007 __builtin_aarch64_simd_xi __o
;
25009 temp
.val
[0] = vcombine_s32 (val
.val
[0], vcreate_s32 (__AARCH64_INT64_C (0)));
25010 temp
.val
[1] = vcombine_s32 (val
.val
[1], vcreate_s32 (__AARCH64_INT64_C (0)));
25011 temp
.val
[2] = vcombine_s32 (val
.val
[2], vcreate_s32 (__AARCH64_INT64_C (0)));
25012 temp
.val
[3] = vcombine_s32 (val
.val
[3], vcreate_s32 (__AARCH64_INT64_C (0)));
25013 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[0], 0);
25014 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[1], 1);
25015 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[2], 2);
25016 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[3], 3);
25017 __builtin_aarch64_st4v2si ((__builtin_aarch64_simd_si
*) __a
, __o
);
25020 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25021 vst4_u8 (uint8_t * __a
, uint8x8x4_t val
)
25023 __builtin_aarch64_simd_xi __o
;
25025 temp
.val
[0] = vcombine_u8 (val
.val
[0], vcreate_u8 (__AARCH64_UINT64_C (0)));
25026 temp
.val
[1] = vcombine_u8 (val
.val
[1], vcreate_u8 (__AARCH64_UINT64_C (0)));
25027 temp
.val
[2] = vcombine_u8 (val
.val
[2], vcreate_u8 (__AARCH64_UINT64_C (0)));
25028 temp
.val
[3] = vcombine_u8 (val
.val
[3], vcreate_u8 (__AARCH64_UINT64_C (0)));
25029 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
25030 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
25031 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[2], 2);
25032 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[3], 3);
25033 __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
25036 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25037 vst4_u16 (uint16_t * __a
, uint16x4x4_t val
)
25039 __builtin_aarch64_simd_xi __o
;
25041 temp
.val
[0] = vcombine_u16 (val
.val
[0], vcreate_u16 (__AARCH64_UINT64_C (0)));
25042 temp
.val
[1] = vcombine_u16 (val
.val
[1], vcreate_u16 (__AARCH64_UINT64_C (0)));
25043 temp
.val
[2] = vcombine_u16 (val
.val
[2], vcreate_u16 (__AARCH64_UINT64_C (0)));
25044 temp
.val
[3] = vcombine_u16 (val
.val
[3], vcreate_u16 (__AARCH64_UINT64_C (0)));
25045 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
25046 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
25047 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[2], 2);
25048 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[3], 3);
25049 __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
25052 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25053 vst4_u32 (uint32_t * __a
, uint32x2x4_t val
)
25055 __builtin_aarch64_simd_xi __o
;
25057 temp
.val
[0] = vcombine_u32 (val
.val
[0], vcreate_u32 (__AARCH64_UINT64_C (0)));
25058 temp
.val
[1] = vcombine_u32 (val
.val
[1], vcreate_u32 (__AARCH64_UINT64_C (0)));
25059 temp
.val
[2] = vcombine_u32 (val
.val
[2], vcreate_u32 (__AARCH64_UINT64_C (0)));
25060 temp
.val
[3] = vcombine_u32 (val
.val
[3], vcreate_u32 (__AARCH64_UINT64_C (0)));
25061 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[0], 0);
25062 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[1], 1);
25063 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[2], 2);
25064 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[3], 3);
25065 __builtin_aarch64_st4v2si ((__builtin_aarch64_simd_si
*) __a
, __o
);
25068 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25069 vst4_f32 (float32_t
* __a
, float32x2x4_t val
)
25071 __builtin_aarch64_simd_xi __o
;
25072 float32x4x4_t temp
;
25073 temp
.val
[0] = vcombine_f32 (val
.val
[0], vcreate_f32 (__AARCH64_UINT64_C (0)));
25074 temp
.val
[1] = vcombine_f32 (val
.val
[1], vcreate_f32 (__AARCH64_UINT64_C (0)));
25075 temp
.val
[2] = vcombine_f32 (val
.val
[2], vcreate_f32 (__AARCH64_UINT64_C (0)));
25076 temp
.val
[3] = vcombine_f32 (val
.val
[3], vcreate_f32 (__AARCH64_UINT64_C (0)));
25077 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) temp
.val
[0], 0);
25078 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) temp
.val
[1], 1);
25079 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) temp
.val
[2], 2);
25080 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) temp
.val
[3], 3);
25081 __builtin_aarch64_st4v2sf ((__builtin_aarch64_simd_sf
*) __a
, __o
);
25084 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25085 vst4q_s8 (int8_t * __a
, int8x16x4_t val
)
25087 __builtin_aarch64_simd_xi __o
;
25088 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
25089 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
25090 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[2], 2);
25091 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[3], 3);
25092 __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
25095 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25096 vst4q_p8 (poly8_t
* __a
, poly8x16x4_t val
)
25098 __builtin_aarch64_simd_xi __o
;
25099 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
25100 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
25101 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[2], 2);
25102 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[3], 3);
25103 __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
25106 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25107 vst4q_s16 (int16_t * __a
, int16x8x4_t val
)
25109 __builtin_aarch64_simd_xi __o
;
25110 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
25111 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
25112 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[2], 2);
25113 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[3], 3);
25114 __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
25117 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25118 vst4q_p16 (poly16_t
* __a
, poly16x8x4_t val
)
25120 __builtin_aarch64_simd_xi __o
;
25121 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
25122 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
25123 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[2], 2);
25124 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[3], 3);
25125 __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
25128 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25129 vst4q_s32 (int32_t * __a
, int32x4x4_t val
)
25131 __builtin_aarch64_simd_xi __o
;
25132 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[0], 0);
25133 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[1], 1);
25134 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[2], 2);
25135 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[3], 3);
25136 __builtin_aarch64_st4v4si ((__builtin_aarch64_simd_si
*) __a
, __o
);
25139 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25140 vst4q_s64 (int64_t * __a
, int64x2x4_t val
)
25142 __builtin_aarch64_simd_xi __o
;
25143 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[0], 0);
25144 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[1], 1);
25145 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[2], 2);
25146 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[3], 3);
25147 __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
25150 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25151 vst4q_u8 (uint8_t * __a
, uint8x16x4_t val
)
25153 __builtin_aarch64_simd_xi __o
;
25154 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
25155 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
25156 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[2], 2);
25157 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[3], 3);
25158 __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
25161 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25162 vst4q_u16 (uint16_t * __a
, uint16x8x4_t val
)
25164 __builtin_aarch64_simd_xi __o
;
25165 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
25166 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
25167 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[2], 2);
25168 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[3], 3);
25169 __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
25172 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25173 vst4q_u32 (uint32_t * __a
, uint32x4x4_t val
)
25175 __builtin_aarch64_simd_xi __o
;
25176 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[0], 0);
25177 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[1], 1);
25178 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[2], 2);
25179 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[3], 3);
25180 __builtin_aarch64_st4v4si ((__builtin_aarch64_simd_si
*) __a
, __o
);
25183 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25184 vst4q_u64 (uint64_t * __a
, uint64x2x4_t val
)
25186 __builtin_aarch64_simd_xi __o
;
25187 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[0], 0);
25188 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[1], 1);
25189 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[2], 2);
25190 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[3], 3);
25191 __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
25194 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25195 vst4q_f32 (float32_t
* __a
, float32x4x4_t val
)
25197 __builtin_aarch64_simd_xi __o
;
25198 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) val
.val
[0], 0);
25199 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) val
.val
[1], 1);
25200 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) val
.val
[2], 2);
25201 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) val
.val
[3], 3);
25202 __builtin_aarch64_st4v4sf ((__builtin_aarch64_simd_sf
*) __a
, __o
);
25205 __extension__
static __inline
void __attribute__ ((__always_inline__
))
25206 vst4q_f64 (float64_t
* __a
, float64x2x4_t val
)
25208 __builtin_aarch64_simd_xi __o
;
25209 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) val
.val
[0], 0);
25210 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) val
.val
[1], 1);
25211 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) val
.val
[2], 2);
25212 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) val
.val
[3], 3);
25213 __builtin_aarch64_st4v2df ((__builtin_aarch64_simd_df
*) __a
, __o
);
25218 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
25219 vsubd_s64 (int64x1_t __a
, int64x1_t __b
)
25224 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
25225 vsubd_u64 (uint64x1_t __a
, uint64x1_t __b
)
25232 __extension__
static __inline float32x2x2_t
__attribute__ ((__always_inline__
))
25233 vtrn_f32 (float32x2_t a
, float32x2_t b
)
25235 return (float32x2x2_t
) {vtrn1_f32 (a
, b
), vtrn2_f32 (a
, b
)};
25238 __extension__
static __inline poly8x8x2_t
__attribute__ ((__always_inline__
))
25239 vtrn_p8 (poly8x8_t a
, poly8x8_t b
)
25241 return (poly8x8x2_t
) {vtrn1_p8 (a
, b
), vtrn2_p8 (a
, b
)};
25244 __extension__
static __inline poly16x4x2_t
__attribute__ ((__always_inline__
))
25245 vtrn_p16 (poly16x4_t a
, poly16x4_t b
)
25247 return (poly16x4x2_t
) {vtrn1_p16 (a
, b
), vtrn2_p16 (a
, b
)};
25250 __extension__
static __inline int8x8x2_t
__attribute__ ((__always_inline__
))
25251 vtrn_s8 (int8x8_t a
, int8x8_t b
)
25253 return (int8x8x2_t
) {vtrn1_s8 (a
, b
), vtrn2_s8 (a
, b
)};
25256 __extension__
static __inline int16x4x2_t
__attribute__ ((__always_inline__
))
25257 vtrn_s16 (int16x4_t a
, int16x4_t b
)
25259 return (int16x4x2_t
) {vtrn1_s16 (a
, b
), vtrn2_s16 (a
, b
)};
25262 __extension__
static __inline int32x2x2_t
__attribute__ ((__always_inline__
))
25263 vtrn_s32 (int32x2_t a
, int32x2_t b
)
25265 return (int32x2x2_t
) {vtrn1_s32 (a
, b
), vtrn2_s32 (a
, b
)};
25268 __extension__
static __inline uint8x8x2_t
__attribute__ ((__always_inline__
))
25269 vtrn_u8 (uint8x8_t a
, uint8x8_t b
)
25271 return (uint8x8x2_t
) {vtrn1_u8 (a
, b
), vtrn2_u8 (a
, b
)};
25274 __extension__
static __inline uint16x4x2_t
__attribute__ ((__always_inline__
))
25275 vtrn_u16 (uint16x4_t a
, uint16x4_t b
)
25277 return (uint16x4x2_t
) {vtrn1_u16 (a
, b
), vtrn2_u16 (a
, b
)};
25280 __extension__
static __inline uint32x2x2_t
__attribute__ ((__always_inline__
))
25281 vtrn_u32 (uint32x2_t a
, uint32x2_t b
)
25283 return (uint32x2x2_t
) {vtrn1_u32 (a
, b
), vtrn2_u32 (a
, b
)};
25286 __extension__
static __inline float32x4x2_t
__attribute__ ((__always_inline__
))
25287 vtrnq_f32 (float32x4_t a
, float32x4_t b
)
25289 return (float32x4x2_t
) {vtrn1q_f32 (a
, b
), vtrn2q_f32 (a
, b
)};
25292 __extension__
static __inline poly8x16x2_t
__attribute__ ((__always_inline__
))
25293 vtrnq_p8 (poly8x16_t a
, poly8x16_t b
)
25295 return (poly8x16x2_t
) {vtrn1q_p8 (a
, b
), vtrn2q_p8 (a
, b
)};
25298 __extension__
static __inline poly16x8x2_t
__attribute__ ((__always_inline__
))
25299 vtrnq_p16 (poly16x8_t a
, poly16x8_t b
)
25301 return (poly16x8x2_t
) {vtrn1q_p16 (a
, b
), vtrn2q_p16 (a
, b
)};
25304 __extension__
static __inline int8x16x2_t
__attribute__ ((__always_inline__
))
25305 vtrnq_s8 (int8x16_t a
, int8x16_t b
)
25307 return (int8x16x2_t
) {vtrn1q_s8 (a
, b
), vtrn2q_s8 (a
, b
)};
25310 __extension__
static __inline int16x8x2_t
__attribute__ ((__always_inline__
))
25311 vtrnq_s16 (int16x8_t a
, int16x8_t b
)
25313 return (int16x8x2_t
) {vtrn1q_s16 (a
, b
), vtrn2q_s16 (a
, b
)};
25316 __extension__
static __inline int32x4x2_t
__attribute__ ((__always_inline__
))
25317 vtrnq_s32 (int32x4_t a
, int32x4_t b
)
25319 return (int32x4x2_t
) {vtrn1q_s32 (a
, b
), vtrn2q_s32 (a
, b
)};
25322 __extension__
static __inline uint8x16x2_t
__attribute__ ((__always_inline__
))
25323 vtrnq_u8 (uint8x16_t a
, uint8x16_t b
)
25325 return (uint8x16x2_t
) {vtrn1q_u8 (a
, b
), vtrn2q_u8 (a
, b
)};
25328 __extension__
static __inline uint16x8x2_t
__attribute__ ((__always_inline__
))
25329 vtrnq_u16 (uint16x8_t a
, uint16x8_t b
)
25331 return (uint16x8x2_t
) {vtrn1q_u16 (a
, b
), vtrn2q_u16 (a
, b
)};
25334 __extension__
static __inline uint32x4x2_t
__attribute__ ((__always_inline__
))
25335 vtrnq_u32 (uint32x4_t a
, uint32x4_t b
)
25337 return (uint32x4x2_t
) {vtrn1q_u32 (a
, b
), vtrn2q_u32 (a
, b
)};
25342 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
25343 vtst_s8 (int8x8_t __a
, int8x8_t __b
)
25345 return (uint8x8_t
) __builtin_aarch64_cmtstv8qi (__a
, __b
);
25348 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
25349 vtst_s16 (int16x4_t __a
, int16x4_t __b
)
25351 return (uint16x4_t
) __builtin_aarch64_cmtstv4hi (__a
, __b
);
25354 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
25355 vtst_s32 (int32x2_t __a
, int32x2_t __b
)
25357 return (uint32x2_t
) __builtin_aarch64_cmtstv2si (__a
, __b
);
25360 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
25361 vtst_s64 (int64x1_t __a
, int64x1_t __b
)
25363 return (__a
& __b
) ? -1ll : 0ll;
25366 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
25367 vtst_u8 (uint8x8_t __a
, uint8x8_t __b
)
25369 return (uint8x8_t
) __builtin_aarch64_cmtstv8qi ((int8x8_t
) __a
,
25373 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
25374 vtst_u16 (uint16x4_t __a
, uint16x4_t __b
)
25376 return (uint16x4_t
) __builtin_aarch64_cmtstv4hi ((int16x4_t
) __a
,
25380 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
25381 vtst_u32 (uint32x2_t __a
, uint32x2_t __b
)
25383 return (uint32x2_t
) __builtin_aarch64_cmtstv2si ((int32x2_t
) __a
,
25387 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
25388 vtst_u64 (uint64x1_t __a
, uint64x1_t __b
)
25390 return (__a
& __b
) ? -1ll : 0ll;
25393 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
25394 vtstq_s8 (int8x16_t __a
, int8x16_t __b
)
25396 return (uint8x16_t
) __builtin_aarch64_cmtstv16qi (__a
, __b
);
25399 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
25400 vtstq_s16 (int16x8_t __a
, int16x8_t __b
)
25402 return (uint16x8_t
) __builtin_aarch64_cmtstv8hi (__a
, __b
);
25405 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
25406 vtstq_s32 (int32x4_t __a
, int32x4_t __b
)
25408 return (uint32x4_t
) __builtin_aarch64_cmtstv4si (__a
, __b
);
25411 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
25412 vtstq_s64 (int64x2_t __a
, int64x2_t __b
)
25414 return (uint64x2_t
) __builtin_aarch64_cmtstv2di (__a
, __b
);
25417 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
25418 vtstq_u8 (uint8x16_t __a
, uint8x16_t __b
)
25420 return (uint8x16_t
) __builtin_aarch64_cmtstv16qi ((int8x16_t
) __a
,
25424 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
25425 vtstq_u16 (uint16x8_t __a
, uint16x8_t __b
)
25427 return (uint16x8_t
) __builtin_aarch64_cmtstv8hi ((int16x8_t
) __a
,
25431 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
25432 vtstq_u32 (uint32x4_t __a
, uint32x4_t __b
)
25434 return (uint32x4_t
) __builtin_aarch64_cmtstv4si ((int32x4_t
) __a
,
25438 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
25439 vtstq_u64 (uint64x2_t __a
, uint64x2_t __b
)
25441 return (uint64x2_t
) __builtin_aarch64_cmtstv2di ((int64x2_t
) __a
,
25445 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
25446 vtstd_s64 (int64x1_t __a
, int64x1_t __b
)
25448 return (__a
& __b
) ? -1ll : 0ll;
25451 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
25452 vtstd_u64 (uint64x1_t __a
, uint64x1_t __b
)
25454 return (__a
& __b
) ? -1ll : 0ll;
25459 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
25460 vuqadd_s8 (int8x8_t __a
, uint8x8_t __b
)
25462 return (int8x8_t
) __builtin_aarch64_suqaddv8qi (__a
, (int8x8_t
) __b
);
25465 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
25466 vuqadd_s16 (int16x4_t __a
, uint16x4_t __b
)
25468 return (int16x4_t
) __builtin_aarch64_suqaddv4hi (__a
, (int16x4_t
) __b
);
25471 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
25472 vuqadd_s32 (int32x2_t __a
, uint32x2_t __b
)
25474 return (int32x2_t
) __builtin_aarch64_suqaddv2si (__a
, (int32x2_t
) __b
);
25477 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
25478 vuqadd_s64 (int64x1_t __a
, uint64x1_t __b
)
25480 return (int64x1_t
) __builtin_aarch64_suqadddi (__a
, (int64x1_t
) __b
);
25483 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
25484 vuqaddq_s8 (int8x16_t __a
, uint8x16_t __b
)
25486 return (int8x16_t
) __builtin_aarch64_suqaddv16qi (__a
, (int8x16_t
) __b
);
25489 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
25490 vuqaddq_s16 (int16x8_t __a
, uint16x8_t __b
)
25492 return (int16x8_t
) __builtin_aarch64_suqaddv8hi (__a
, (int16x8_t
) __b
);
25495 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
25496 vuqaddq_s32 (int32x4_t __a
, uint32x4_t __b
)
25498 return (int32x4_t
) __builtin_aarch64_suqaddv4si (__a
, (int32x4_t
) __b
);
25501 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
25502 vuqaddq_s64 (int64x2_t __a
, uint64x2_t __b
)
25504 return (int64x2_t
) __builtin_aarch64_suqaddv2di (__a
, (int64x2_t
) __b
);
25507 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
25508 vuqaddb_s8 (int8x1_t __a
, uint8x1_t __b
)
25510 return (int8x1_t
) __builtin_aarch64_suqaddqi (__a
, (int8x1_t
) __b
);
25513 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
25514 vuqaddh_s16 (int16x1_t __a
, uint16x1_t __b
)
25516 return (int16x1_t
) __builtin_aarch64_suqaddhi (__a
, (int16x1_t
) __b
);
25519 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
25520 vuqadds_s32 (int32x1_t __a
, uint32x1_t __b
)
25522 return (int32x1_t
) __builtin_aarch64_suqaddsi (__a
, (int32x1_t
) __b
);
25525 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
25526 vuqaddd_s64 (int64x1_t __a
, uint64x1_t __b
)
25528 return (int64x1_t
) __builtin_aarch64_suqadddi (__a
, (int64x1_t
) __b
);
25531 #define __DEFINTERLEAVE(op, rettype, intype, funcsuffix, Q) \
25532 __extension__ static __inline rettype \
25533 __attribute__ ((__always_inline__)) \
25534 v ## op ## Q ## _ ## funcsuffix (intype a, intype b) \
25536 return (rettype) {v ## op ## 1 ## Q ## _ ## funcsuffix (a, b), \
25537 v ## op ## 2 ## Q ## _ ## funcsuffix (a, b)}; \
25540 #define __INTERLEAVE_LIST(op) \
25541 __DEFINTERLEAVE (op, float32x2x2_t, float32x2_t, f32,) \
25542 __DEFINTERLEAVE (op, poly8x8x2_t, poly8x8_t, p8,) \
25543 __DEFINTERLEAVE (op, poly16x4x2_t, poly16x4_t, p16,) \
25544 __DEFINTERLEAVE (op, int8x8x2_t, int8x8_t, s8,) \
25545 __DEFINTERLEAVE (op, int16x4x2_t, int16x4_t, s16,) \
25546 __DEFINTERLEAVE (op, int32x2x2_t, int32x2_t, s32,) \
25547 __DEFINTERLEAVE (op, uint8x8x2_t, uint8x8_t, u8,) \
25548 __DEFINTERLEAVE (op, uint16x4x2_t, uint16x4_t, u16,) \
25549 __DEFINTERLEAVE (op, uint32x2x2_t, uint32x2_t, u32,) \
25550 __DEFINTERLEAVE (op, float32x4x2_t, float32x4_t, f32, q) \
25551 __DEFINTERLEAVE (op, poly8x16x2_t, poly8x16_t, p8, q) \
25552 __DEFINTERLEAVE (op, poly16x8x2_t, poly16x8_t, p16, q) \
25553 __DEFINTERLEAVE (op, int8x16x2_t, int8x16_t, s8, q) \
25554 __DEFINTERLEAVE (op, int16x8x2_t, int16x8_t, s16, q) \
25555 __DEFINTERLEAVE (op, int32x4x2_t, int32x4_t, s32, q) \
25556 __DEFINTERLEAVE (op, uint8x16x2_t, uint8x16_t, u8, q) \
25557 __DEFINTERLEAVE (op, uint16x8x2_t, uint16x8_t, u16, q) \
25558 __DEFINTERLEAVE (op, uint32x4x2_t, uint32x4_t, u32, q)
25562 __INTERLEAVE_LIST (uzp
)
25566 __INTERLEAVE_LIST (zip
)
25568 #undef __INTERLEAVE_LIST
25569 #undef __DEFINTERLEAVE
25571 /* End of optimal implementations in approved order. */
25573 #undef __aarch64_vget_lane_any
25574 #undef __aarch64_vget_lane_f32
25575 #undef __aarch64_vget_lane_f64
25576 #undef __aarch64_vget_lane_p8
25577 #undef __aarch64_vget_lane_p16
25578 #undef __aarch64_vget_lane_s8
25579 #undef __aarch64_vget_lane_s16
25580 #undef __aarch64_vget_lane_s32
25581 #undef __aarch64_vget_lane_s64
25582 #undef __aarch64_vget_lane_u8
25583 #undef __aarch64_vget_lane_u16
25584 #undef __aarch64_vget_lane_u32
25585 #undef __aarch64_vget_lane_u64
25587 #undef __aarch64_vgetq_lane_f32
25588 #undef __aarch64_vgetq_lane_f64
25589 #undef __aarch64_vgetq_lane_p8
25590 #undef __aarch64_vgetq_lane_p16
25591 #undef __aarch64_vgetq_lane_s8
25592 #undef __aarch64_vgetq_lane_s16
25593 #undef __aarch64_vgetq_lane_s32
25594 #undef __aarch64_vgetq_lane_s64
25595 #undef __aarch64_vgetq_lane_u8
25596 #undef __aarch64_vgetq_lane_u16
25597 #undef __aarch64_vgetq_lane_u32
25598 #undef __aarch64_vgetq_lane_u64
25600 #undef __aarch64_vdup_lane_any
25601 #undef __aarch64_vdup_lane_f32
25602 #undef __aarch64_vdup_lane_f64
25603 #undef __aarch64_vdup_lane_p8
25604 #undef __aarch64_vdup_lane_p16
25605 #undef __aarch64_vdup_lane_s8
25606 #undef __aarch64_vdup_lane_s16
25607 #undef __aarch64_vdup_lane_s32
25608 #undef __aarch64_vdup_lane_s64
25609 #undef __aarch64_vdup_lane_u8
25610 #undef __aarch64_vdup_lane_u16
25611 #undef __aarch64_vdup_lane_u32
25612 #undef __aarch64_vdup_lane_u64
25613 #undef __aarch64_vdup_laneq_f32
25614 #undef __aarch64_vdup_laneq_f64
25615 #undef __aarch64_vdup_laneq_p8
25616 #undef __aarch64_vdup_laneq_p16
25617 #undef __aarch64_vdup_laneq_s8
25618 #undef __aarch64_vdup_laneq_s16
25619 #undef __aarch64_vdup_laneq_s32
25620 #undef __aarch64_vdup_laneq_s64
25621 #undef __aarch64_vdup_laneq_u8
25622 #undef __aarch64_vdup_laneq_u16
25623 #undef __aarch64_vdup_laneq_u32
25624 #undef __aarch64_vdup_laneq_u64
25625 #undef __aarch64_vdupq_lane_f32
25626 #undef __aarch64_vdupq_lane_f64
25627 #undef __aarch64_vdupq_lane_p8
25628 #undef __aarch64_vdupq_lane_p16
25629 #undef __aarch64_vdupq_lane_s8
25630 #undef __aarch64_vdupq_lane_s16
25631 #undef __aarch64_vdupq_lane_s32
25632 #undef __aarch64_vdupq_lane_s64
25633 #undef __aarch64_vdupq_lane_u8
25634 #undef __aarch64_vdupq_lane_u16
25635 #undef __aarch64_vdupq_lane_u32
25636 #undef __aarch64_vdupq_lane_u64
25637 #undef __aarch64_vdupq_laneq_f32
25638 #undef __aarch64_vdupq_laneq_f64
25639 #undef __aarch64_vdupq_laneq_p8
25640 #undef __aarch64_vdupq_laneq_p16
25641 #undef __aarch64_vdupq_laneq_s8
25642 #undef __aarch64_vdupq_laneq_s16
25643 #undef __aarch64_vdupq_laneq_s32
25644 #undef __aarch64_vdupq_laneq_s64
25645 #undef __aarch64_vdupq_laneq_u8
25646 #undef __aarch64_vdupq_laneq_u16
25647 #undef __aarch64_vdupq_laneq_u32
25648 #undef __aarch64_vdupq_laneq_u64