1 /* ARM NEON intrinsics include file.
3 Copyright (C) 2011-2014 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_poly64 poly64x2_t
79 __attribute__ ((__vector_size__ (16)));
80 typedef __builtin_aarch64_simd_uqi uint8x16_t
81 __attribute__ ((__vector_size__ (16)));
82 typedef __builtin_aarch64_simd_uhi uint16x8_t
83 __attribute__ ((__vector_size__ (16)));
84 typedef __builtin_aarch64_simd_usi uint32x4_t
85 __attribute__ ((__vector_size__ (16)));
86 typedef __builtin_aarch64_simd_udi uint64x2_t
87 __attribute__ ((__vector_size__ (16)));
89 typedef float float32_t
;
90 typedef double float64_t
;
91 typedef __builtin_aarch64_simd_poly8 poly8_t
;
92 typedef __builtin_aarch64_simd_poly16 poly16_t
;
93 typedef __builtin_aarch64_simd_poly64 poly64_t
;
94 typedef __builtin_aarch64_simd_poly128 poly128_t
;
96 typedef struct int8x8x2_t
101 typedef struct int8x16x2_t
106 typedef struct int16x4x2_t
111 typedef struct int16x8x2_t
116 typedef struct int32x2x2_t
121 typedef struct int32x4x2_t
126 typedef struct int64x1x2_t
131 typedef struct int64x2x2_t
136 typedef struct uint8x8x2_t
141 typedef struct uint8x16x2_t
146 typedef struct uint16x4x2_t
151 typedef struct uint16x8x2_t
156 typedef struct uint32x2x2_t
161 typedef struct uint32x4x2_t
166 typedef struct uint64x1x2_t
171 typedef struct uint64x2x2_t
176 typedef struct float32x2x2_t
181 typedef struct float32x4x2_t
186 typedef struct float64x2x2_t
191 typedef struct float64x1x2_t
196 typedef struct poly8x8x2_t
201 typedef struct poly8x16x2_t
206 typedef struct poly16x4x2_t
211 typedef struct poly16x8x2_t
216 typedef struct int8x8x3_t
221 typedef struct int8x16x3_t
226 typedef struct int16x4x3_t
231 typedef struct int16x8x3_t
236 typedef struct int32x2x3_t
241 typedef struct int32x4x3_t
246 typedef struct int64x1x3_t
251 typedef struct int64x2x3_t
256 typedef struct uint8x8x3_t
261 typedef struct uint8x16x3_t
266 typedef struct uint16x4x3_t
271 typedef struct uint16x8x3_t
276 typedef struct uint32x2x3_t
281 typedef struct uint32x4x3_t
286 typedef struct uint64x1x3_t
291 typedef struct uint64x2x3_t
296 typedef struct float32x2x3_t
301 typedef struct float32x4x3_t
306 typedef struct float64x2x3_t
311 typedef struct float64x1x3_t
316 typedef struct poly8x8x3_t
321 typedef struct poly8x16x3_t
326 typedef struct poly16x4x3_t
331 typedef struct poly16x8x3_t
336 typedef struct int8x8x4_t
341 typedef struct int8x16x4_t
346 typedef struct int16x4x4_t
351 typedef struct int16x8x4_t
356 typedef struct int32x2x4_t
361 typedef struct int32x4x4_t
366 typedef struct int64x1x4_t
371 typedef struct int64x2x4_t
376 typedef struct uint8x8x4_t
381 typedef struct uint8x16x4_t
386 typedef struct uint16x4x4_t
391 typedef struct uint16x8x4_t
396 typedef struct uint32x2x4_t
401 typedef struct uint32x4x4_t
406 typedef struct uint64x1x4_t
411 typedef struct uint64x2x4_t
416 typedef struct float32x2x4_t
421 typedef struct float32x4x4_t
426 typedef struct float64x2x4_t
431 typedef struct float64x1x4_t
436 typedef struct poly8x8x4_t
441 typedef struct poly8x16x4_t
446 typedef struct poly16x4x4_t
451 typedef struct poly16x8x4_t
456 /* vget_lane internal macros. */
458 #define __aarch64_vget_lane_any(__size, __cast_ret, __cast_a, __a, __b) \
460 __builtin_aarch64_get_lane##__size (__cast_a __a, __b))
462 #define __aarch64_vget_lane_f32(__a, __b) \
463 __aarch64_vget_lane_any (v2sf, , , __a, __b)
464 #define __aarch64_vget_lane_f64(__a, __b) (__a)
466 #define __aarch64_vget_lane_p8(__a, __b) \
467 __aarch64_vget_lane_any (v8qi, (poly8_t), (int8x8_t), __a, __b)
468 #define __aarch64_vget_lane_p16(__a, __b) \
469 __aarch64_vget_lane_any (v4hi, (poly16_t), (int16x4_t), __a, __b)
471 #define __aarch64_vget_lane_s8(__a, __b) \
472 __aarch64_vget_lane_any (v8qi, , ,__a, __b)
473 #define __aarch64_vget_lane_s16(__a, __b) \
474 __aarch64_vget_lane_any (v4hi, , ,__a, __b)
475 #define __aarch64_vget_lane_s32(__a, __b) \
476 __aarch64_vget_lane_any (v2si, , ,__a, __b)
477 #define __aarch64_vget_lane_s64(__a, __b) (__a)
479 #define __aarch64_vget_lane_u8(__a, __b) \
480 __aarch64_vget_lane_any (v8qi, (uint8_t), (int8x8_t), __a, __b)
481 #define __aarch64_vget_lane_u16(__a, __b) \
482 __aarch64_vget_lane_any (v4hi, (uint16_t), (int16x4_t), __a, __b)
483 #define __aarch64_vget_lane_u32(__a, __b) \
484 __aarch64_vget_lane_any (v2si, (uint32_t), (int32x2_t), __a, __b)
485 #define __aarch64_vget_lane_u64(__a, __b) (__a)
487 #define __aarch64_vgetq_lane_f32(__a, __b) \
488 __aarch64_vget_lane_any (v4sf, , , __a, __b)
489 #define __aarch64_vgetq_lane_f64(__a, __b) \
490 __aarch64_vget_lane_any (v2df, , , __a, __b)
492 #define __aarch64_vgetq_lane_p8(__a, __b) \
493 __aarch64_vget_lane_any (v16qi, (poly8_t), (int8x16_t), __a, __b)
494 #define __aarch64_vgetq_lane_p16(__a, __b) \
495 __aarch64_vget_lane_any (v8hi, (poly16_t), (int16x8_t), __a, __b)
497 #define __aarch64_vgetq_lane_s8(__a, __b) \
498 __aarch64_vget_lane_any (v16qi, , ,__a, __b)
499 #define __aarch64_vgetq_lane_s16(__a, __b) \
500 __aarch64_vget_lane_any (v8hi, , ,__a, __b)
501 #define __aarch64_vgetq_lane_s32(__a, __b) \
502 __aarch64_vget_lane_any (v4si, , ,__a, __b)
503 #define __aarch64_vgetq_lane_s64(__a, __b) \
504 __aarch64_vget_lane_any (v2di, , ,__a, __b)
506 #define __aarch64_vgetq_lane_u8(__a, __b) \
507 __aarch64_vget_lane_any (v16qi, (uint8_t), (int8x16_t), __a, __b)
508 #define __aarch64_vgetq_lane_u16(__a, __b) \
509 __aarch64_vget_lane_any (v8hi, (uint16_t), (int16x8_t), __a, __b)
510 #define __aarch64_vgetq_lane_u32(__a, __b) \
511 __aarch64_vget_lane_any (v4si, (uint32_t), (int32x4_t), __a, __b)
512 #define __aarch64_vgetq_lane_u64(__a, __b) \
513 __aarch64_vget_lane_any (v2di, (uint64_t), (int64x2_t), __a, __b)
515 /* __aarch64_vdup_lane internal macros. */
516 #define __aarch64_vdup_lane_any(__size, __q1, __q2, __a, __b) \
517 vdup##__q1##_n_##__size (__aarch64_vget##__q2##_lane_##__size (__a, __b))
519 #define __aarch64_vdup_lane_f32(__a, __b) \
520 __aarch64_vdup_lane_any (f32, , , __a, __b)
521 #define __aarch64_vdup_lane_f64(__a, __b) (__a)
522 #define __aarch64_vdup_lane_p8(__a, __b) \
523 __aarch64_vdup_lane_any (p8, , , __a, __b)
524 #define __aarch64_vdup_lane_p16(__a, __b) \
525 __aarch64_vdup_lane_any (p16, , , __a, __b)
526 #define __aarch64_vdup_lane_s8(__a, __b) \
527 __aarch64_vdup_lane_any (s8, , , __a, __b)
528 #define __aarch64_vdup_lane_s16(__a, __b) \
529 __aarch64_vdup_lane_any (s16, , , __a, __b)
530 #define __aarch64_vdup_lane_s32(__a, __b) \
531 __aarch64_vdup_lane_any (s32, , , __a, __b)
532 #define __aarch64_vdup_lane_s64(__a, __b) (__a)
533 #define __aarch64_vdup_lane_u8(__a, __b) \
534 __aarch64_vdup_lane_any (u8, , , __a, __b)
535 #define __aarch64_vdup_lane_u16(__a, __b) \
536 __aarch64_vdup_lane_any (u16, , , __a, __b)
537 #define __aarch64_vdup_lane_u32(__a, __b) \
538 __aarch64_vdup_lane_any (u32, , , __a, __b)
539 #define __aarch64_vdup_lane_u64(__a, __b) (__a)
541 /* __aarch64_vdup_laneq internal macros. */
542 #define __aarch64_vdup_laneq_f32(__a, __b) \
543 __aarch64_vdup_lane_any (f32, , q, __a, __b)
544 #define __aarch64_vdup_laneq_f64(__a, __b) \
545 __aarch64_vdup_lane_any (f64, , q, __a, __b)
546 #define __aarch64_vdup_laneq_p8(__a, __b) \
547 __aarch64_vdup_lane_any (p8, , q, __a, __b)
548 #define __aarch64_vdup_laneq_p16(__a, __b) \
549 __aarch64_vdup_lane_any (p16, , q, __a, __b)
550 #define __aarch64_vdup_laneq_s8(__a, __b) \
551 __aarch64_vdup_lane_any (s8, , q, __a, __b)
552 #define __aarch64_vdup_laneq_s16(__a, __b) \
553 __aarch64_vdup_lane_any (s16, , q, __a, __b)
554 #define __aarch64_vdup_laneq_s32(__a, __b) \
555 __aarch64_vdup_lane_any (s32, , q, __a, __b)
556 #define __aarch64_vdup_laneq_s64(__a, __b) \
557 __aarch64_vdup_lane_any (s64, , q, __a, __b)
558 #define __aarch64_vdup_laneq_u8(__a, __b) \
559 __aarch64_vdup_lane_any (u8, , q, __a, __b)
560 #define __aarch64_vdup_laneq_u16(__a, __b) \
561 __aarch64_vdup_lane_any (u16, , q, __a, __b)
562 #define __aarch64_vdup_laneq_u32(__a, __b) \
563 __aarch64_vdup_lane_any (u32, , q, __a, __b)
564 #define __aarch64_vdup_laneq_u64(__a, __b) \
565 __aarch64_vdup_lane_any (u64, , q, __a, __b)
567 /* __aarch64_vdupq_lane internal macros. */
568 #define __aarch64_vdupq_lane_f32(__a, __b) \
569 __aarch64_vdup_lane_any (f32, q, , __a, __b)
570 #define __aarch64_vdupq_lane_f64(__a, __b) (vdupq_n_f64 (__a))
571 #define __aarch64_vdupq_lane_p8(__a, __b) \
572 __aarch64_vdup_lane_any (p8, q, , __a, __b)
573 #define __aarch64_vdupq_lane_p16(__a, __b) \
574 __aarch64_vdup_lane_any (p16, q, , __a, __b)
575 #define __aarch64_vdupq_lane_s8(__a, __b) \
576 __aarch64_vdup_lane_any (s8, q, , __a, __b)
577 #define __aarch64_vdupq_lane_s16(__a, __b) \
578 __aarch64_vdup_lane_any (s16, q, , __a, __b)
579 #define __aarch64_vdupq_lane_s32(__a, __b) \
580 __aarch64_vdup_lane_any (s32, q, , __a, __b)
581 #define __aarch64_vdupq_lane_s64(__a, __b) (vdupq_n_s64 (__a))
582 #define __aarch64_vdupq_lane_u8(__a, __b) \
583 __aarch64_vdup_lane_any (u8, q, , __a, __b)
584 #define __aarch64_vdupq_lane_u16(__a, __b) \
585 __aarch64_vdup_lane_any (u16, q, , __a, __b)
586 #define __aarch64_vdupq_lane_u32(__a, __b) \
587 __aarch64_vdup_lane_any (u32, q, , __a, __b)
588 #define __aarch64_vdupq_lane_u64(__a, __b) (vdupq_n_u64 (__a))
590 /* __aarch64_vdupq_laneq internal macros. */
591 #define __aarch64_vdupq_laneq_f32(__a, __b) \
592 __aarch64_vdup_lane_any (f32, q, q, __a, __b)
593 #define __aarch64_vdupq_laneq_f64(__a, __b) \
594 __aarch64_vdup_lane_any (f64, q, q, __a, __b)
595 #define __aarch64_vdupq_laneq_p8(__a, __b) \
596 __aarch64_vdup_lane_any (p8, q, q, __a, __b)
597 #define __aarch64_vdupq_laneq_p16(__a, __b) \
598 __aarch64_vdup_lane_any (p16, q, q, __a, __b)
599 #define __aarch64_vdupq_laneq_s8(__a, __b) \
600 __aarch64_vdup_lane_any (s8, q, q, __a, __b)
601 #define __aarch64_vdupq_laneq_s16(__a, __b) \
602 __aarch64_vdup_lane_any (s16, q, q, __a, __b)
603 #define __aarch64_vdupq_laneq_s32(__a, __b) \
604 __aarch64_vdup_lane_any (s32, q, q, __a, __b)
605 #define __aarch64_vdupq_laneq_s64(__a, __b) \
606 __aarch64_vdup_lane_any (s64, q, q, __a, __b)
607 #define __aarch64_vdupq_laneq_u8(__a, __b) \
608 __aarch64_vdup_lane_any (u8, q, q, __a, __b)
609 #define __aarch64_vdupq_laneq_u16(__a, __b) \
610 __aarch64_vdup_lane_any (u16, q, q, __a, __b)
611 #define __aarch64_vdupq_laneq_u32(__a, __b) \
612 __aarch64_vdup_lane_any (u32, q, q, __a, __b)
613 #define __aarch64_vdupq_laneq_u64(__a, __b) \
614 __aarch64_vdup_lane_any (u64, q, q, __a, __b)
617 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
618 vadd_s8 (int8x8_t __a
, int8x8_t __b
)
623 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
624 vadd_s16 (int16x4_t __a
, int16x4_t __b
)
629 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
630 vadd_s32 (int32x2_t __a
, int32x2_t __b
)
635 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
636 vadd_f32 (float32x2_t __a
, float32x2_t __b
)
641 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
642 vadd_f64 (float64x1_t __a
, float64x1_t __b
)
647 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
648 vadd_u8 (uint8x8_t __a
, uint8x8_t __b
)
653 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
654 vadd_u16 (uint16x4_t __a
, uint16x4_t __b
)
659 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
660 vadd_u32 (uint32x2_t __a
, uint32x2_t __b
)
665 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
666 vadd_s64 (int64x1_t __a
, int64x1_t __b
)
671 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
672 vadd_u64 (uint64x1_t __a
, uint64x1_t __b
)
677 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
678 vaddq_s8 (int8x16_t __a
, int8x16_t __b
)
683 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
684 vaddq_s16 (int16x8_t __a
, int16x8_t __b
)
689 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
690 vaddq_s32 (int32x4_t __a
, int32x4_t __b
)
695 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
696 vaddq_s64 (int64x2_t __a
, int64x2_t __b
)
701 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
702 vaddq_f32 (float32x4_t __a
, float32x4_t __b
)
707 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
708 vaddq_f64 (float64x2_t __a
, float64x2_t __b
)
713 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
714 vaddq_u8 (uint8x16_t __a
, uint8x16_t __b
)
719 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
720 vaddq_u16 (uint16x8_t __a
, uint16x8_t __b
)
725 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
726 vaddq_u32 (uint32x4_t __a
, uint32x4_t __b
)
731 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
732 vaddq_u64 (uint64x2_t __a
, uint64x2_t __b
)
737 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
738 vaddl_s8 (int8x8_t __a
, int8x8_t __b
)
740 return (int16x8_t
) __builtin_aarch64_saddlv8qi (__a
, __b
);
743 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
744 vaddl_s16 (int16x4_t __a
, int16x4_t __b
)
746 return (int32x4_t
) __builtin_aarch64_saddlv4hi (__a
, __b
);
749 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
750 vaddl_s32 (int32x2_t __a
, int32x2_t __b
)
752 return (int64x2_t
) __builtin_aarch64_saddlv2si (__a
, __b
);
755 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
756 vaddl_u8 (uint8x8_t __a
, uint8x8_t __b
)
758 return (uint16x8_t
) __builtin_aarch64_uaddlv8qi ((int8x8_t
) __a
,
762 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
763 vaddl_u16 (uint16x4_t __a
, uint16x4_t __b
)
765 return (uint32x4_t
) __builtin_aarch64_uaddlv4hi ((int16x4_t
) __a
,
769 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
770 vaddl_u32 (uint32x2_t __a
, uint32x2_t __b
)
772 return (uint64x2_t
) __builtin_aarch64_uaddlv2si ((int32x2_t
) __a
,
776 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
777 vaddl_high_s8 (int8x16_t __a
, int8x16_t __b
)
779 return (int16x8_t
) __builtin_aarch64_saddl2v16qi (__a
, __b
);
782 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
783 vaddl_high_s16 (int16x8_t __a
, int16x8_t __b
)
785 return (int32x4_t
) __builtin_aarch64_saddl2v8hi (__a
, __b
);
788 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
789 vaddl_high_s32 (int32x4_t __a
, int32x4_t __b
)
791 return (int64x2_t
) __builtin_aarch64_saddl2v4si (__a
, __b
);
794 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
795 vaddl_high_u8 (uint8x16_t __a
, uint8x16_t __b
)
797 return (uint16x8_t
) __builtin_aarch64_uaddl2v16qi ((int8x16_t
) __a
,
801 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
802 vaddl_high_u16 (uint16x8_t __a
, uint16x8_t __b
)
804 return (uint32x4_t
) __builtin_aarch64_uaddl2v8hi ((int16x8_t
) __a
,
808 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
809 vaddl_high_u32 (uint32x4_t __a
, uint32x4_t __b
)
811 return (uint64x2_t
) __builtin_aarch64_uaddl2v4si ((int32x4_t
) __a
,
815 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
816 vaddw_s8 (int16x8_t __a
, int8x8_t __b
)
818 return (int16x8_t
) __builtin_aarch64_saddwv8qi (__a
, __b
);
821 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
822 vaddw_s16 (int32x4_t __a
, int16x4_t __b
)
824 return (int32x4_t
) __builtin_aarch64_saddwv4hi (__a
, __b
);
827 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
828 vaddw_s32 (int64x2_t __a
, int32x2_t __b
)
830 return (int64x2_t
) __builtin_aarch64_saddwv2si (__a
, __b
);
833 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
834 vaddw_u8 (uint16x8_t __a
, uint8x8_t __b
)
836 return (uint16x8_t
) __builtin_aarch64_uaddwv8qi ((int16x8_t
) __a
,
840 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
841 vaddw_u16 (uint32x4_t __a
, uint16x4_t __b
)
843 return (uint32x4_t
) __builtin_aarch64_uaddwv4hi ((int32x4_t
) __a
,
847 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
848 vaddw_u32 (uint64x2_t __a
, uint32x2_t __b
)
850 return (uint64x2_t
) __builtin_aarch64_uaddwv2si ((int64x2_t
) __a
,
854 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
855 vaddw_high_s8 (int16x8_t __a
, int8x16_t __b
)
857 return (int16x8_t
) __builtin_aarch64_saddw2v16qi (__a
, __b
);
860 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
861 vaddw_high_s16 (int32x4_t __a
, int16x8_t __b
)
863 return (int32x4_t
) __builtin_aarch64_saddw2v8hi (__a
, __b
);
866 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
867 vaddw_high_s32 (int64x2_t __a
, int32x4_t __b
)
869 return (int64x2_t
) __builtin_aarch64_saddw2v4si (__a
, __b
);
872 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
873 vaddw_high_u8 (uint16x8_t __a
, uint8x16_t __b
)
875 return (uint16x8_t
) __builtin_aarch64_uaddw2v16qi ((int16x8_t
) __a
,
879 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
880 vaddw_high_u16 (uint32x4_t __a
, uint16x8_t __b
)
882 return (uint32x4_t
) __builtin_aarch64_uaddw2v8hi ((int32x4_t
) __a
,
886 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
887 vaddw_high_u32 (uint64x2_t __a
, uint32x4_t __b
)
889 return (uint64x2_t
) __builtin_aarch64_uaddw2v4si ((int64x2_t
) __a
,
893 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
894 vhadd_s8 (int8x8_t __a
, int8x8_t __b
)
896 return (int8x8_t
) __builtin_aarch64_shaddv8qi (__a
, __b
);
899 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
900 vhadd_s16 (int16x4_t __a
, int16x4_t __b
)
902 return (int16x4_t
) __builtin_aarch64_shaddv4hi (__a
, __b
);
905 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
906 vhadd_s32 (int32x2_t __a
, int32x2_t __b
)
908 return (int32x2_t
) __builtin_aarch64_shaddv2si (__a
, __b
);
911 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
912 vhadd_u8 (uint8x8_t __a
, uint8x8_t __b
)
914 return (uint8x8_t
) __builtin_aarch64_uhaddv8qi ((int8x8_t
) __a
,
918 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
919 vhadd_u16 (uint16x4_t __a
, uint16x4_t __b
)
921 return (uint16x4_t
) __builtin_aarch64_uhaddv4hi ((int16x4_t
) __a
,
925 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
926 vhadd_u32 (uint32x2_t __a
, uint32x2_t __b
)
928 return (uint32x2_t
) __builtin_aarch64_uhaddv2si ((int32x2_t
) __a
,
932 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
933 vhaddq_s8 (int8x16_t __a
, int8x16_t __b
)
935 return (int8x16_t
) __builtin_aarch64_shaddv16qi (__a
, __b
);
938 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
939 vhaddq_s16 (int16x8_t __a
, int16x8_t __b
)
941 return (int16x8_t
) __builtin_aarch64_shaddv8hi (__a
, __b
);
944 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
945 vhaddq_s32 (int32x4_t __a
, int32x4_t __b
)
947 return (int32x4_t
) __builtin_aarch64_shaddv4si (__a
, __b
);
950 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
951 vhaddq_u8 (uint8x16_t __a
, uint8x16_t __b
)
953 return (uint8x16_t
) __builtin_aarch64_uhaddv16qi ((int8x16_t
) __a
,
957 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
958 vhaddq_u16 (uint16x8_t __a
, uint16x8_t __b
)
960 return (uint16x8_t
) __builtin_aarch64_uhaddv8hi ((int16x8_t
) __a
,
964 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
965 vhaddq_u32 (uint32x4_t __a
, uint32x4_t __b
)
967 return (uint32x4_t
) __builtin_aarch64_uhaddv4si ((int32x4_t
) __a
,
971 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
972 vrhadd_s8 (int8x8_t __a
, int8x8_t __b
)
974 return (int8x8_t
) __builtin_aarch64_srhaddv8qi (__a
, __b
);
977 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
978 vrhadd_s16 (int16x4_t __a
, int16x4_t __b
)
980 return (int16x4_t
) __builtin_aarch64_srhaddv4hi (__a
, __b
);
983 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
984 vrhadd_s32 (int32x2_t __a
, int32x2_t __b
)
986 return (int32x2_t
) __builtin_aarch64_srhaddv2si (__a
, __b
);
989 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
990 vrhadd_u8 (uint8x8_t __a
, uint8x8_t __b
)
992 return (uint8x8_t
) __builtin_aarch64_urhaddv8qi ((int8x8_t
) __a
,
996 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
997 vrhadd_u16 (uint16x4_t __a
, uint16x4_t __b
)
999 return (uint16x4_t
) __builtin_aarch64_urhaddv4hi ((int16x4_t
) __a
,
1003 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1004 vrhadd_u32 (uint32x2_t __a
, uint32x2_t __b
)
1006 return (uint32x2_t
) __builtin_aarch64_urhaddv2si ((int32x2_t
) __a
,
1010 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1011 vrhaddq_s8 (int8x16_t __a
, int8x16_t __b
)
1013 return (int8x16_t
) __builtin_aarch64_srhaddv16qi (__a
, __b
);
1016 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1017 vrhaddq_s16 (int16x8_t __a
, int16x8_t __b
)
1019 return (int16x8_t
) __builtin_aarch64_srhaddv8hi (__a
, __b
);
1022 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1023 vrhaddq_s32 (int32x4_t __a
, int32x4_t __b
)
1025 return (int32x4_t
) __builtin_aarch64_srhaddv4si (__a
, __b
);
1028 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1029 vrhaddq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1031 return (uint8x16_t
) __builtin_aarch64_urhaddv16qi ((int8x16_t
) __a
,
1035 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1036 vrhaddq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1038 return (uint16x8_t
) __builtin_aarch64_urhaddv8hi ((int16x8_t
) __a
,
1042 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1043 vrhaddq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1045 return (uint32x4_t
) __builtin_aarch64_urhaddv4si ((int32x4_t
) __a
,
1049 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1050 vaddhn_s16 (int16x8_t __a
, int16x8_t __b
)
1052 return (int8x8_t
) __builtin_aarch64_addhnv8hi (__a
, __b
);
1055 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1056 vaddhn_s32 (int32x4_t __a
, int32x4_t __b
)
1058 return (int16x4_t
) __builtin_aarch64_addhnv4si (__a
, __b
);
1061 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1062 vaddhn_s64 (int64x2_t __a
, int64x2_t __b
)
1064 return (int32x2_t
) __builtin_aarch64_addhnv2di (__a
, __b
);
1067 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1068 vaddhn_u16 (uint16x8_t __a
, uint16x8_t __b
)
1070 return (uint8x8_t
) __builtin_aarch64_addhnv8hi ((int16x8_t
) __a
,
1074 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1075 vaddhn_u32 (uint32x4_t __a
, uint32x4_t __b
)
1077 return (uint16x4_t
) __builtin_aarch64_addhnv4si ((int32x4_t
) __a
,
1081 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1082 vaddhn_u64 (uint64x2_t __a
, uint64x2_t __b
)
1084 return (uint32x2_t
) __builtin_aarch64_addhnv2di ((int64x2_t
) __a
,
1088 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1089 vraddhn_s16 (int16x8_t __a
, int16x8_t __b
)
1091 return (int8x8_t
) __builtin_aarch64_raddhnv8hi (__a
, __b
);
1094 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1095 vraddhn_s32 (int32x4_t __a
, int32x4_t __b
)
1097 return (int16x4_t
) __builtin_aarch64_raddhnv4si (__a
, __b
);
1100 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1101 vraddhn_s64 (int64x2_t __a
, int64x2_t __b
)
1103 return (int32x2_t
) __builtin_aarch64_raddhnv2di (__a
, __b
);
1106 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1107 vraddhn_u16 (uint16x8_t __a
, uint16x8_t __b
)
1109 return (uint8x8_t
) __builtin_aarch64_raddhnv8hi ((int16x8_t
) __a
,
1113 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1114 vraddhn_u32 (uint32x4_t __a
, uint32x4_t __b
)
1116 return (uint16x4_t
) __builtin_aarch64_raddhnv4si ((int32x4_t
) __a
,
1120 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1121 vraddhn_u64 (uint64x2_t __a
, uint64x2_t __b
)
1123 return (uint32x2_t
) __builtin_aarch64_raddhnv2di ((int64x2_t
) __a
,
1127 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1128 vaddhn_high_s16 (int8x8_t __a
, int16x8_t __b
, int16x8_t __c
)
1130 return (int8x16_t
) __builtin_aarch64_addhn2v8hi (__a
, __b
, __c
);
1133 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1134 vaddhn_high_s32 (int16x4_t __a
, int32x4_t __b
, int32x4_t __c
)
1136 return (int16x8_t
) __builtin_aarch64_addhn2v4si (__a
, __b
, __c
);
1139 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1140 vaddhn_high_s64 (int32x2_t __a
, int64x2_t __b
, int64x2_t __c
)
1142 return (int32x4_t
) __builtin_aarch64_addhn2v2di (__a
, __b
, __c
);
1145 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1146 vaddhn_high_u16 (uint8x8_t __a
, uint16x8_t __b
, uint16x8_t __c
)
1148 return (uint8x16_t
) __builtin_aarch64_addhn2v8hi ((int8x8_t
) __a
,
1153 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1154 vaddhn_high_u32 (uint16x4_t __a
, uint32x4_t __b
, uint32x4_t __c
)
1156 return (uint16x8_t
) __builtin_aarch64_addhn2v4si ((int16x4_t
) __a
,
1161 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1162 vaddhn_high_u64 (uint32x2_t __a
, uint64x2_t __b
, uint64x2_t __c
)
1164 return (uint32x4_t
) __builtin_aarch64_addhn2v2di ((int32x2_t
) __a
,
1169 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1170 vraddhn_high_s16 (int8x8_t __a
, int16x8_t __b
, int16x8_t __c
)
1172 return (int8x16_t
) __builtin_aarch64_raddhn2v8hi (__a
, __b
, __c
);
1175 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1176 vraddhn_high_s32 (int16x4_t __a
, int32x4_t __b
, int32x4_t __c
)
1178 return (int16x8_t
) __builtin_aarch64_raddhn2v4si (__a
, __b
, __c
);
1181 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1182 vraddhn_high_s64 (int32x2_t __a
, int64x2_t __b
, int64x2_t __c
)
1184 return (int32x4_t
) __builtin_aarch64_raddhn2v2di (__a
, __b
, __c
);
1187 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1188 vraddhn_high_u16 (uint8x8_t __a
, uint16x8_t __b
, uint16x8_t __c
)
1190 return (uint8x16_t
) __builtin_aarch64_raddhn2v8hi ((int8x8_t
) __a
,
1195 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1196 vraddhn_high_u32 (uint16x4_t __a
, uint32x4_t __b
, uint32x4_t __c
)
1198 return (uint16x8_t
) __builtin_aarch64_raddhn2v4si ((int16x4_t
) __a
,
1203 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1204 vraddhn_high_u64 (uint32x2_t __a
, uint64x2_t __b
, uint64x2_t __c
)
1206 return (uint32x4_t
) __builtin_aarch64_raddhn2v2di ((int32x2_t
) __a
,
1211 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
1212 vdiv_f32 (float32x2_t __a
, float32x2_t __b
)
1217 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
1218 vdiv_f64 (float64x1_t __a
, float64x1_t __b
)
1223 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
1224 vdivq_f32 (float32x4_t __a
, float32x4_t __b
)
1229 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
1230 vdivq_f64 (float64x2_t __a
, float64x2_t __b
)
1235 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1236 vmul_s8 (int8x8_t __a
, int8x8_t __b
)
1241 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1242 vmul_s16 (int16x4_t __a
, int16x4_t __b
)
1247 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1248 vmul_s32 (int32x2_t __a
, int32x2_t __b
)
1253 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
1254 vmul_f32 (float32x2_t __a
, float32x2_t __b
)
1259 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1260 vmul_u8 (uint8x8_t __a
, uint8x8_t __b
)
1265 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1266 vmul_u16 (uint16x4_t __a
, uint16x4_t __b
)
1271 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1272 vmul_u32 (uint32x2_t __a
, uint32x2_t __b
)
1277 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
1278 vmul_p8 (poly8x8_t __a
, poly8x8_t __b
)
1280 return (poly8x8_t
) __builtin_aarch64_pmulv8qi ((int8x8_t
) __a
,
1284 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1285 vmulq_s8 (int8x16_t __a
, int8x16_t __b
)
1290 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1291 vmulq_s16 (int16x8_t __a
, int16x8_t __b
)
1296 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1297 vmulq_s32 (int32x4_t __a
, int32x4_t __b
)
1302 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
1303 vmulq_f32 (float32x4_t __a
, float32x4_t __b
)
1308 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
1309 vmulq_f64 (float64x2_t __a
, float64x2_t __b
)
1314 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1315 vmulq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1320 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1321 vmulq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1326 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1327 vmulq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1332 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
1333 vmulq_p8 (poly8x16_t __a
, poly8x16_t __b
)
1335 return (poly8x16_t
) __builtin_aarch64_pmulv16qi ((int8x16_t
) __a
,
1339 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1340 vand_s8 (int8x8_t __a
, int8x8_t __b
)
1345 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1346 vand_s16 (int16x4_t __a
, int16x4_t __b
)
1351 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1352 vand_s32 (int32x2_t __a
, int32x2_t __b
)
1357 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1358 vand_u8 (uint8x8_t __a
, uint8x8_t __b
)
1363 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1364 vand_u16 (uint16x4_t __a
, uint16x4_t __b
)
1369 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1370 vand_u32 (uint32x2_t __a
, uint32x2_t __b
)
1375 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
1376 vand_s64 (int64x1_t __a
, int64x1_t __b
)
1381 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
1382 vand_u64 (uint64x1_t __a
, uint64x1_t __b
)
1387 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1388 vandq_s8 (int8x16_t __a
, int8x16_t __b
)
1393 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1394 vandq_s16 (int16x8_t __a
, int16x8_t __b
)
1399 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1400 vandq_s32 (int32x4_t __a
, int32x4_t __b
)
1405 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1406 vandq_s64 (int64x2_t __a
, int64x2_t __b
)
1411 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1412 vandq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1417 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1418 vandq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1423 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1424 vandq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1429 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1430 vandq_u64 (uint64x2_t __a
, uint64x2_t __b
)
1435 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1436 vorr_s8 (int8x8_t __a
, int8x8_t __b
)
1441 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1442 vorr_s16 (int16x4_t __a
, int16x4_t __b
)
1447 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1448 vorr_s32 (int32x2_t __a
, int32x2_t __b
)
1453 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1454 vorr_u8 (uint8x8_t __a
, uint8x8_t __b
)
1459 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1460 vorr_u16 (uint16x4_t __a
, uint16x4_t __b
)
1465 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1466 vorr_u32 (uint32x2_t __a
, uint32x2_t __b
)
1471 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
1472 vorr_s64 (int64x1_t __a
, int64x1_t __b
)
1477 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
1478 vorr_u64 (uint64x1_t __a
, uint64x1_t __b
)
1483 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1484 vorrq_s8 (int8x16_t __a
, int8x16_t __b
)
1489 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1490 vorrq_s16 (int16x8_t __a
, int16x8_t __b
)
1495 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1496 vorrq_s32 (int32x4_t __a
, int32x4_t __b
)
1501 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1502 vorrq_s64 (int64x2_t __a
, int64x2_t __b
)
1507 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1508 vorrq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1513 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1514 vorrq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1519 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1520 vorrq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1525 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1526 vorrq_u64 (uint64x2_t __a
, uint64x2_t __b
)
1531 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1532 veor_s8 (int8x8_t __a
, int8x8_t __b
)
1537 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1538 veor_s16 (int16x4_t __a
, int16x4_t __b
)
1543 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1544 veor_s32 (int32x2_t __a
, int32x2_t __b
)
1549 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1550 veor_u8 (uint8x8_t __a
, uint8x8_t __b
)
1555 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1556 veor_u16 (uint16x4_t __a
, uint16x4_t __b
)
1561 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1562 veor_u32 (uint32x2_t __a
, uint32x2_t __b
)
1567 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
1568 veor_s64 (int64x1_t __a
, int64x1_t __b
)
1573 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
1574 veor_u64 (uint64x1_t __a
, uint64x1_t __b
)
1579 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1580 veorq_s8 (int8x16_t __a
, int8x16_t __b
)
1585 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1586 veorq_s16 (int16x8_t __a
, int16x8_t __b
)
1591 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1592 veorq_s32 (int32x4_t __a
, int32x4_t __b
)
1597 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1598 veorq_s64 (int64x2_t __a
, int64x2_t __b
)
1603 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1604 veorq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1609 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1610 veorq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1615 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1616 veorq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1621 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1622 veorq_u64 (uint64x2_t __a
, uint64x2_t __b
)
1627 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1628 vbic_s8 (int8x8_t __a
, int8x8_t __b
)
1633 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1634 vbic_s16 (int16x4_t __a
, int16x4_t __b
)
1639 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1640 vbic_s32 (int32x2_t __a
, int32x2_t __b
)
1645 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1646 vbic_u8 (uint8x8_t __a
, uint8x8_t __b
)
1651 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1652 vbic_u16 (uint16x4_t __a
, uint16x4_t __b
)
1657 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1658 vbic_u32 (uint32x2_t __a
, uint32x2_t __b
)
1663 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
1664 vbic_s64 (int64x1_t __a
, int64x1_t __b
)
1669 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
1670 vbic_u64 (uint64x1_t __a
, uint64x1_t __b
)
1675 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1676 vbicq_s8 (int8x16_t __a
, int8x16_t __b
)
1681 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1682 vbicq_s16 (int16x8_t __a
, int16x8_t __b
)
1687 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1688 vbicq_s32 (int32x4_t __a
, int32x4_t __b
)
1693 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1694 vbicq_s64 (int64x2_t __a
, int64x2_t __b
)
1699 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1700 vbicq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1705 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1706 vbicq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1711 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1712 vbicq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1717 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1718 vbicq_u64 (uint64x2_t __a
, uint64x2_t __b
)
1723 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1724 vorn_s8 (int8x8_t __a
, int8x8_t __b
)
1729 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1730 vorn_s16 (int16x4_t __a
, int16x4_t __b
)
1735 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1736 vorn_s32 (int32x2_t __a
, int32x2_t __b
)
1741 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1742 vorn_u8 (uint8x8_t __a
, uint8x8_t __b
)
1747 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1748 vorn_u16 (uint16x4_t __a
, uint16x4_t __b
)
1753 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1754 vorn_u32 (uint32x2_t __a
, uint32x2_t __b
)
1759 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
1760 vorn_s64 (int64x1_t __a
, int64x1_t __b
)
1765 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
1766 vorn_u64 (uint64x1_t __a
, uint64x1_t __b
)
1771 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1772 vornq_s8 (int8x16_t __a
, int8x16_t __b
)
1777 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1778 vornq_s16 (int16x8_t __a
, int16x8_t __b
)
1783 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1784 vornq_s32 (int32x4_t __a
, int32x4_t __b
)
1789 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1790 vornq_s64 (int64x2_t __a
, int64x2_t __b
)
1795 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1796 vornq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1801 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1802 vornq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1807 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1808 vornq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1813 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1814 vornq_u64 (uint64x2_t __a
, uint64x2_t __b
)
1819 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
1820 vsub_s8 (int8x8_t __a
, int8x8_t __b
)
1825 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
1826 vsub_s16 (int16x4_t __a
, int16x4_t __b
)
1831 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
1832 vsub_s32 (int32x2_t __a
, int32x2_t __b
)
1837 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
1838 vsub_f32 (float32x2_t __a
, float32x2_t __b
)
1843 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
1844 vsub_f64 (float64x1_t __a
, float64x1_t __b
)
1849 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
1850 vsub_u8 (uint8x8_t __a
, uint8x8_t __b
)
1855 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
1856 vsub_u16 (uint16x4_t __a
, uint16x4_t __b
)
1861 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
1862 vsub_u32 (uint32x2_t __a
, uint32x2_t __b
)
1867 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
1868 vsub_s64 (int64x1_t __a
, int64x1_t __b
)
1873 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
1874 vsub_u64 (uint64x1_t __a
, uint64x1_t __b
)
1879 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
1880 vsubq_s8 (int8x16_t __a
, int8x16_t __b
)
1885 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1886 vsubq_s16 (int16x8_t __a
, int16x8_t __b
)
1891 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1892 vsubq_s32 (int32x4_t __a
, int32x4_t __b
)
1897 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1898 vsubq_s64 (int64x2_t __a
, int64x2_t __b
)
1903 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
1904 vsubq_f32 (float32x4_t __a
, float32x4_t __b
)
1909 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
1910 vsubq_f64 (float64x2_t __a
, float64x2_t __b
)
1915 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
1916 vsubq_u8 (uint8x16_t __a
, uint8x16_t __b
)
1921 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1922 vsubq_u16 (uint16x8_t __a
, uint16x8_t __b
)
1927 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1928 vsubq_u32 (uint32x4_t __a
, uint32x4_t __b
)
1933 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1934 vsubq_u64 (uint64x2_t __a
, uint64x2_t __b
)
1939 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1940 vsubl_s8 (int8x8_t __a
, int8x8_t __b
)
1942 return (int16x8_t
) __builtin_aarch64_ssublv8qi (__a
, __b
);
1945 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1946 vsubl_s16 (int16x4_t __a
, int16x4_t __b
)
1948 return (int32x4_t
) __builtin_aarch64_ssublv4hi (__a
, __b
);
1951 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1952 vsubl_s32 (int32x2_t __a
, int32x2_t __b
)
1954 return (int64x2_t
) __builtin_aarch64_ssublv2si (__a
, __b
);
1957 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1958 vsubl_u8 (uint8x8_t __a
, uint8x8_t __b
)
1960 return (uint16x8_t
) __builtin_aarch64_usublv8qi ((int8x8_t
) __a
,
1964 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
1965 vsubl_u16 (uint16x4_t __a
, uint16x4_t __b
)
1967 return (uint32x4_t
) __builtin_aarch64_usublv4hi ((int16x4_t
) __a
,
1971 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
1972 vsubl_u32 (uint32x2_t __a
, uint32x2_t __b
)
1974 return (uint64x2_t
) __builtin_aarch64_usublv2si ((int32x2_t
) __a
,
1978 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
1979 vsubl_high_s8 (int8x16_t __a
, int8x16_t __b
)
1981 return (int16x8_t
) __builtin_aarch64_ssubl2v16qi (__a
, __b
);
1984 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
1985 vsubl_high_s16 (int16x8_t __a
, int16x8_t __b
)
1987 return (int32x4_t
) __builtin_aarch64_ssubl2v8hi (__a
, __b
);
1990 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
1991 vsubl_high_s32 (int32x4_t __a
, int32x4_t __b
)
1993 return (int64x2_t
) __builtin_aarch64_ssubl2v4si (__a
, __b
);
1996 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
1997 vsubl_high_u8 (uint8x16_t __a
, uint8x16_t __b
)
1999 return (uint16x8_t
) __builtin_aarch64_usubl2v16qi ((int8x16_t
) __a
,
2003 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
2004 vsubl_high_u16 (uint16x8_t __a
, uint16x8_t __b
)
2006 return (uint32x4_t
) __builtin_aarch64_usubl2v8hi ((int16x8_t
) __a
,
2010 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
2011 vsubl_high_u32 (uint32x4_t __a
, uint32x4_t __b
)
2013 return (uint64x2_t
) __builtin_aarch64_usubl2v4si ((int32x4_t
) __a
,
2017 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2018 vsubw_s8 (int16x8_t __a
, int8x8_t __b
)
2020 return (int16x8_t
) __builtin_aarch64_ssubwv8qi (__a
, __b
);
2023 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2024 vsubw_s16 (int32x4_t __a
, int16x4_t __b
)
2026 return (int32x4_t
) __builtin_aarch64_ssubwv4hi (__a
, __b
);
2029 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
2030 vsubw_s32 (int64x2_t __a
, int32x2_t __b
)
2032 return (int64x2_t
) __builtin_aarch64_ssubwv2si (__a
, __b
);
2035 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
2036 vsubw_u8 (uint16x8_t __a
, uint8x8_t __b
)
2038 return (uint16x8_t
) __builtin_aarch64_usubwv8qi ((int16x8_t
) __a
,
2042 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
2043 vsubw_u16 (uint32x4_t __a
, uint16x4_t __b
)
2045 return (uint32x4_t
) __builtin_aarch64_usubwv4hi ((int32x4_t
) __a
,
2049 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
2050 vsubw_u32 (uint64x2_t __a
, uint32x2_t __b
)
2052 return (uint64x2_t
) __builtin_aarch64_usubwv2si ((int64x2_t
) __a
,
2056 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2057 vsubw_high_s8 (int16x8_t __a
, int8x16_t __b
)
2059 return (int16x8_t
) __builtin_aarch64_ssubw2v16qi (__a
, __b
);
2062 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2063 vsubw_high_s16 (int32x4_t __a
, int16x8_t __b
)
2065 return (int32x4_t
) __builtin_aarch64_ssubw2v8hi (__a
, __b
);
2068 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
2069 vsubw_high_s32 (int64x2_t __a
, int32x4_t __b
)
2071 return (int64x2_t
) __builtin_aarch64_ssubw2v4si (__a
, __b
);
2074 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
2075 vsubw_high_u8 (uint16x8_t __a
, uint8x16_t __b
)
2077 return (uint16x8_t
) __builtin_aarch64_usubw2v16qi ((int16x8_t
) __a
,
2081 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
2082 vsubw_high_u16 (uint32x4_t __a
, uint16x8_t __b
)
2084 return (uint32x4_t
) __builtin_aarch64_usubw2v8hi ((int32x4_t
) __a
,
2088 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
2089 vsubw_high_u32 (uint64x2_t __a
, uint32x4_t __b
)
2091 return (uint64x2_t
) __builtin_aarch64_usubw2v4si ((int64x2_t
) __a
,
2095 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
2096 vqadd_s8 (int8x8_t __a
, int8x8_t __b
)
2098 return (int8x8_t
) __builtin_aarch64_sqaddv8qi (__a
, __b
);
2101 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
2102 vqadd_s16 (int16x4_t __a
, int16x4_t __b
)
2104 return (int16x4_t
) __builtin_aarch64_sqaddv4hi (__a
, __b
);
2107 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
2108 vqadd_s32 (int32x2_t __a
, int32x2_t __b
)
2110 return (int32x2_t
) __builtin_aarch64_sqaddv2si (__a
, __b
);
2113 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
2114 vqadd_s64 (int64x1_t __a
, int64x1_t __b
)
2116 return (int64x1_t
) __builtin_aarch64_sqadddi (__a
, __b
);
2119 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
2120 vqadd_u8 (uint8x8_t __a
, uint8x8_t __b
)
2122 return (uint8x8_t
) __builtin_aarch64_uqaddv8qi ((int8x8_t
) __a
,
2126 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
2127 vqadd_u16 (uint16x4_t __a
, uint16x4_t __b
)
2129 return (uint16x4_t
) __builtin_aarch64_uqaddv4hi ((int16x4_t
) __a
,
2133 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
2134 vqadd_u32 (uint32x2_t __a
, uint32x2_t __b
)
2136 return (uint32x2_t
) __builtin_aarch64_uqaddv2si ((int32x2_t
) __a
,
2140 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
2141 vqadd_u64 (uint64x1_t __a
, uint64x1_t __b
)
2143 return (uint64x1_t
) __builtin_aarch64_uqadddi ((int64x1_t
) __a
,
2147 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
2148 vqaddq_s8 (int8x16_t __a
, int8x16_t __b
)
2150 return (int8x16_t
) __builtin_aarch64_sqaddv16qi (__a
, __b
);
2153 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2154 vqaddq_s16 (int16x8_t __a
, int16x8_t __b
)
2156 return (int16x8_t
) __builtin_aarch64_sqaddv8hi (__a
, __b
);
2159 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2160 vqaddq_s32 (int32x4_t __a
, int32x4_t __b
)
2162 return (int32x4_t
) __builtin_aarch64_sqaddv4si (__a
, __b
);
2165 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
2166 vqaddq_s64 (int64x2_t __a
, int64x2_t __b
)
2168 return (int64x2_t
) __builtin_aarch64_sqaddv2di (__a
, __b
);
2171 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
2172 vqaddq_u8 (uint8x16_t __a
, uint8x16_t __b
)
2174 return (uint8x16_t
) __builtin_aarch64_uqaddv16qi ((int8x16_t
) __a
,
2178 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
2179 vqaddq_u16 (uint16x8_t __a
, uint16x8_t __b
)
2181 return (uint16x8_t
) __builtin_aarch64_uqaddv8hi ((int16x8_t
) __a
,
2185 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
2186 vqaddq_u32 (uint32x4_t __a
, uint32x4_t __b
)
2188 return (uint32x4_t
) __builtin_aarch64_uqaddv4si ((int32x4_t
) __a
,
2192 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
2193 vqaddq_u64 (uint64x2_t __a
, uint64x2_t __b
)
2195 return (uint64x2_t
) __builtin_aarch64_uqaddv2di ((int64x2_t
) __a
,
2199 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
2200 vqsub_s8 (int8x8_t __a
, int8x8_t __b
)
2202 return (int8x8_t
) __builtin_aarch64_sqsubv8qi (__a
, __b
);
2205 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
2206 vqsub_s16 (int16x4_t __a
, int16x4_t __b
)
2208 return (int16x4_t
) __builtin_aarch64_sqsubv4hi (__a
, __b
);
2211 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
2212 vqsub_s32 (int32x2_t __a
, int32x2_t __b
)
2214 return (int32x2_t
) __builtin_aarch64_sqsubv2si (__a
, __b
);
2217 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
2218 vqsub_s64 (int64x1_t __a
, int64x1_t __b
)
2220 return (int64x1_t
) __builtin_aarch64_sqsubdi (__a
, __b
);
2223 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
2224 vqsub_u8 (uint8x8_t __a
, uint8x8_t __b
)
2226 return (uint8x8_t
) __builtin_aarch64_uqsubv8qi ((int8x8_t
) __a
,
2230 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
2231 vqsub_u16 (uint16x4_t __a
, uint16x4_t __b
)
2233 return (uint16x4_t
) __builtin_aarch64_uqsubv4hi ((int16x4_t
) __a
,
2237 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
2238 vqsub_u32 (uint32x2_t __a
, uint32x2_t __b
)
2240 return (uint32x2_t
) __builtin_aarch64_uqsubv2si ((int32x2_t
) __a
,
2244 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
2245 vqsub_u64 (uint64x1_t __a
, uint64x1_t __b
)
2247 return (uint64x1_t
) __builtin_aarch64_uqsubdi ((int64x1_t
) __a
,
2251 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
2252 vqsubq_s8 (int8x16_t __a
, int8x16_t __b
)
2254 return (int8x16_t
) __builtin_aarch64_sqsubv16qi (__a
, __b
);
2257 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2258 vqsubq_s16 (int16x8_t __a
, int16x8_t __b
)
2260 return (int16x8_t
) __builtin_aarch64_sqsubv8hi (__a
, __b
);
2263 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2264 vqsubq_s32 (int32x4_t __a
, int32x4_t __b
)
2266 return (int32x4_t
) __builtin_aarch64_sqsubv4si (__a
, __b
);
2269 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
2270 vqsubq_s64 (int64x2_t __a
, int64x2_t __b
)
2272 return (int64x2_t
) __builtin_aarch64_sqsubv2di (__a
, __b
);
2275 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
2276 vqsubq_u8 (uint8x16_t __a
, uint8x16_t __b
)
2278 return (uint8x16_t
) __builtin_aarch64_uqsubv16qi ((int8x16_t
) __a
,
2282 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
2283 vqsubq_u16 (uint16x8_t __a
, uint16x8_t __b
)
2285 return (uint16x8_t
) __builtin_aarch64_uqsubv8hi ((int16x8_t
) __a
,
2289 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
2290 vqsubq_u32 (uint32x4_t __a
, uint32x4_t __b
)
2292 return (uint32x4_t
) __builtin_aarch64_uqsubv4si ((int32x4_t
) __a
,
2296 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
2297 vqsubq_u64 (uint64x2_t __a
, uint64x2_t __b
)
2299 return (uint64x2_t
) __builtin_aarch64_uqsubv2di ((int64x2_t
) __a
,
2303 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
2304 vqneg_s8 (int8x8_t __a
)
2306 return (int8x8_t
) __builtin_aarch64_sqnegv8qi (__a
);
2309 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
2310 vqneg_s16 (int16x4_t __a
)
2312 return (int16x4_t
) __builtin_aarch64_sqnegv4hi (__a
);
2315 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
2316 vqneg_s32 (int32x2_t __a
)
2318 return (int32x2_t
) __builtin_aarch64_sqnegv2si (__a
);
2321 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
2322 vqnegq_s8 (int8x16_t __a
)
2324 return (int8x16_t
) __builtin_aarch64_sqnegv16qi (__a
);
2327 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2328 vqnegq_s16 (int16x8_t __a
)
2330 return (int16x8_t
) __builtin_aarch64_sqnegv8hi (__a
);
2333 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2334 vqnegq_s32 (int32x4_t __a
)
2336 return (int32x4_t
) __builtin_aarch64_sqnegv4si (__a
);
2339 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
2340 vqabs_s8 (int8x8_t __a
)
2342 return (int8x8_t
) __builtin_aarch64_sqabsv8qi (__a
);
2345 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
2346 vqabs_s16 (int16x4_t __a
)
2348 return (int16x4_t
) __builtin_aarch64_sqabsv4hi (__a
);
2351 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
2352 vqabs_s32 (int32x2_t __a
)
2354 return (int32x2_t
) __builtin_aarch64_sqabsv2si (__a
);
2357 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
2358 vqabsq_s8 (int8x16_t __a
)
2360 return (int8x16_t
) __builtin_aarch64_sqabsv16qi (__a
);
2363 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2364 vqabsq_s16 (int16x8_t __a
)
2366 return (int16x8_t
) __builtin_aarch64_sqabsv8hi (__a
);
2369 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2370 vqabsq_s32 (int32x4_t __a
)
2372 return (int32x4_t
) __builtin_aarch64_sqabsv4si (__a
);
2375 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
2376 vqdmulh_s16 (int16x4_t __a
, int16x4_t __b
)
2378 return (int16x4_t
) __builtin_aarch64_sqdmulhv4hi (__a
, __b
);
2381 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
2382 vqdmulh_s32 (int32x2_t __a
, int32x2_t __b
)
2384 return (int32x2_t
) __builtin_aarch64_sqdmulhv2si (__a
, __b
);
2387 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2388 vqdmulhq_s16 (int16x8_t __a
, int16x8_t __b
)
2390 return (int16x8_t
) __builtin_aarch64_sqdmulhv8hi (__a
, __b
);
2393 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2394 vqdmulhq_s32 (int32x4_t __a
, int32x4_t __b
)
2396 return (int32x4_t
) __builtin_aarch64_sqdmulhv4si (__a
, __b
);
2399 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
2400 vqrdmulh_s16 (int16x4_t __a
, int16x4_t __b
)
2402 return (int16x4_t
) __builtin_aarch64_sqrdmulhv4hi (__a
, __b
);
2405 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
2406 vqrdmulh_s32 (int32x2_t __a
, int32x2_t __b
)
2408 return (int32x2_t
) __builtin_aarch64_sqrdmulhv2si (__a
, __b
);
2411 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
2412 vqrdmulhq_s16 (int16x8_t __a
, int16x8_t __b
)
2414 return (int16x8_t
) __builtin_aarch64_sqrdmulhv8hi (__a
, __b
);
2417 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
2418 vqrdmulhq_s32 (int32x4_t __a
, int32x4_t __b
)
2420 return (int32x4_t
) __builtin_aarch64_sqrdmulhv4si (__a
, __b
);
2423 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
2424 vcreate_s8 (uint64_t __a
)
2426 return (int8x8_t
) __a
;
2429 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
2430 vcreate_s16 (uint64_t __a
)
2432 return (int16x4_t
) __a
;
2435 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
2436 vcreate_s32 (uint64_t __a
)
2438 return (int32x2_t
) __a
;
2441 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
2442 vcreate_s64 (uint64_t __a
)
2444 return (int64x1_t
) __a
;
2447 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2448 vcreate_f32 (uint64_t __a
)
2450 return (float32x2_t
) __a
;
2453 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
2454 vcreate_u8 (uint64_t __a
)
2456 return (uint8x8_t
) __a
;
2459 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
2460 vcreate_u16 (uint64_t __a
)
2462 return (uint16x4_t
) __a
;
2465 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
2466 vcreate_u32 (uint64_t __a
)
2468 return (uint32x2_t
) __a
;
2471 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
2472 vcreate_u64 (uint64_t __a
)
2474 return (uint64x1_t
) __a
;
2477 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
2478 vcreate_f64 (uint64_t __a
)
2480 return (float64x1_t
) __builtin_aarch64_createdf (__a
);
2483 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2484 vcreate_p8 (uint64_t __a
)
2486 return (poly8x8_t
) __a
;
2489 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2490 vcreate_p16 (uint64_t __a
)
2492 return (poly16x4_t
) __a
;
2497 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
2498 vget_lane_f32 (float32x2_t __a
, const int __b
)
2500 return __aarch64_vget_lane_f32 (__a
, __b
);
2503 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
2504 vget_lane_f64 (float64x1_t __a
, const int __b
)
2506 return __aarch64_vget_lane_f64 (__a
, __b
);
2509 __extension__
static __inline poly8_t
__attribute__ ((__always_inline__
))
2510 vget_lane_p8 (poly8x8_t __a
, const int __b
)
2512 return __aarch64_vget_lane_p8 (__a
, __b
);
2515 __extension__
static __inline poly16_t
__attribute__ ((__always_inline__
))
2516 vget_lane_p16 (poly16x4_t __a
, const int __b
)
2518 return __aarch64_vget_lane_p16 (__a
, __b
);
2521 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
2522 vget_lane_s8 (int8x8_t __a
, const int __b
)
2524 return __aarch64_vget_lane_s8 (__a
, __b
);
2527 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
2528 vget_lane_s16 (int16x4_t __a
, const int __b
)
2530 return __aarch64_vget_lane_s16 (__a
, __b
);
2533 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
2534 vget_lane_s32 (int32x2_t __a
, const int __b
)
2536 return __aarch64_vget_lane_s32 (__a
, __b
);
2539 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
2540 vget_lane_s64 (int64x1_t __a
, const int __b
)
2542 return __aarch64_vget_lane_s64 (__a
, __b
);
2545 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
2546 vget_lane_u8 (uint8x8_t __a
, const int __b
)
2548 return __aarch64_vget_lane_u8 (__a
, __b
);
2551 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
2552 vget_lane_u16 (uint16x4_t __a
, const int __b
)
2554 return __aarch64_vget_lane_u16 (__a
, __b
);
2557 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
2558 vget_lane_u32 (uint32x2_t __a
, const int __b
)
2560 return __aarch64_vget_lane_u32 (__a
, __b
);
2563 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
2564 vget_lane_u64 (uint64x1_t __a
, const int __b
)
2566 return __aarch64_vget_lane_u64 (__a
, __b
);
2571 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
2572 vgetq_lane_f32 (float32x4_t __a
, const int __b
)
2574 return __aarch64_vgetq_lane_f32 (__a
, __b
);
2577 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
2578 vgetq_lane_f64 (float64x2_t __a
, const int __b
)
2580 return __aarch64_vgetq_lane_f64 (__a
, __b
);
2583 __extension__
static __inline poly8_t
__attribute__ ((__always_inline__
))
2584 vgetq_lane_p8 (poly8x16_t __a
, const int __b
)
2586 return __aarch64_vgetq_lane_p8 (__a
, __b
);
2589 __extension__
static __inline poly16_t
__attribute__ ((__always_inline__
))
2590 vgetq_lane_p16 (poly16x8_t __a
, const int __b
)
2592 return __aarch64_vgetq_lane_p16 (__a
, __b
);
2595 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
2596 vgetq_lane_s8 (int8x16_t __a
, const int __b
)
2598 return __aarch64_vgetq_lane_s8 (__a
, __b
);
2601 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
2602 vgetq_lane_s16 (int16x8_t __a
, const int __b
)
2604 return __aarch64_vgetq_lane_s16 (__a
, __b
);
2607 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
2608 vgetq_lane_s32 (int32x4_t __a
, const int __b
)
2610 return __aarch64_vgetq_lane_s32 (__a
, __b
);
2613 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
2614 vgetq_lane_s64 (int64x2_t __a
, const int __b
)
2616 return __aarch64_vgetq_lane_s64 (__a
, __b
);
2619 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
2620 vgetq_lane_u8 (uint8x16_t __a
, const int __b
)
2622 return __aarch64_vgetq_lane_u8 (__a
, __b
);
2625 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
2626 vgetq_lane_u16 (uint16x8_t __a
, const int __b
)
2628 return __aarch64_vgetq_lane_u16 (__a
, __b
);
2631 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
2632 vgetq_lane_u32 (uint32x4_t __a
, const int __b
)
2634 return __aarch64_vgetq_lane_u32 (__a
, __b
);
2637 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
2638 vgetq_lane_u64 (uint64x2_t __a
, const int __b
)
2640 return __aarch64_vgetq_lane_u64 (__a
, __b
);
2645 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2646 vreinterpret_p8_s8 (int8x8_t __a
)
2648 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv8qi (__a
);
2651 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2652 vreinterpret_p8_s16 (int16x4_t __a
)
2654 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi (__a
);
2657 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2658 vreinterpret_p8_s32 (int32x2_t __a
)
2660 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv2si (__a
);
2663 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2664 vreinterpret_p8_s64 (int64x1_t __a
)
2666 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qidi (__a
);
2669 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2670 vreinterpret_p8_f32 (float32x2_t __a
)
2672 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv2sf (__a
);
2675 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2676 vreinterpret_p8_u8 (uint8x8_t __a
)
2678 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv8qi ((int8x8_t
) __a
);
2681 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2682 vreinterpret_p8_u16 (uint16x4_t __a
)
2684 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t
) __a
);
2687 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2688 vreinterpret_p8_u32 (uint32x2_t __a
)
2690 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv2si ((int32x2_t
) __a
);
2693 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2694 vreinterpret_p8_u64 (uint64x1_t __a
)
2696 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qidi ((int64x1_t
) __a
);
2699 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
2700 vreinterpret_p8_p16 (poly16x4_t __a
)
2702 return (poly8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t
) __a
);
2705 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2706 vreinterpretq_p8_s8 (int8x16_t __a
)
2708 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv16qi (__a
);
2711 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2712 vreinterpretq_p8_s16 (int16x8_t __a
)
2714 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi (__a
);
2717 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2718 vreinterpretq_p8_s32 (int32x4_t __a
)
2720 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv4si (__a
);
2723 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2724 vreinterpretq_p8_s64 (int64x2_t __a
)
2726 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv2di (__a
);
2729 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2730 vreinterpretq_p8_f32 (float32x4_t __a
)
2732 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv4sf (__a
);
2735 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2736 vreinterpretq_p8_u8 (uint8x16_t __a
)
2738 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv16qi ((int8x16_t
)
2742 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2743 vreinterpretq_p8_u16 (uint16x8_t __a
)
2745 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t
)
2749 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2750 vreinterpretq_p8_u32 (uint32x4_t __a
)
2752 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv4si ((int32x4_t
)
2756 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2757 vreinterpretq_p8_u64 (uint64x2_t __a
)
2759 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv2di ((int64x2_t
)
2763 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
2764 vreinterpretq_p8_p16 (poly16x8_t __a
)
2766 return (poly8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t
)
2770 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2771 vreinterpret_p16_s8 (int8x8_t __a
)
2773 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi (__a
);
2776 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2777 vreinterpret_p16_s16 (int16x4_t __a
)
2779 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv4hi (__a
);
2782 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2783 vreinterpret_p16_s32 (int32x2_t __a
)
2785 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv2si (__a
);
2788 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2789 vreinterpret_p16_s64 (int64x1_t __a
)
2791 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hidi (__a
);
2794 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2795 vreinterpret_p16_f32 (float32x2_t __a
)
2797 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv2sf (__a
);
2800 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2801 vreinterpret_p16_u8 (uint8x8_t __a
)
2803 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t
) __a
);
2806 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2807 vreinterpret_p16_u16 (uint16x4_t __a
)
2809 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv4hi ((int16x4_t
) __a
);
2812 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2813 vreinterpret_p16_u32 (uint32x2_t __a
)
2815 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv2si ((int32x2_t
) __a
);
2818 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2819 vreinterpret_p16_u64 (uint64x1_t __a
)
2821 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hidi ((int64x1_t
) __a
);
2824 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
2825 vreinterpret_p16_p8 (poly8x8_t __a
)
2827 return (poly16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t
) __a
);
2830 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2831 vreinterpretq_p16_s8 (int8x16_t __a
)
2833 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi (__a
);
2836 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2837 vreinterpretq_p16_s16 (int16x8_t __a
)
2839 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv8hi (__a
);
2842 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2843 vreinterpretq_p16_s32 (int32x4_t __a
)
2845 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv4si (__a
);
2848 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2849 vreinterpretq_p16_s64 (int64x2_t __a
)
2851 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv2di (__a
);
2854 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2855 vreinterpretq_p16_f32 (float32x4_t __a
)
2857 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv4sf (__a
);
2860 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2861 vreinterpretq_p16_u8 (uint8x16_t __a
)
2863 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t
)
2867 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2868 vreinterpretq_p16_u16 (uint16x8_t __a
)
2870 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv8hi ((int16x8_t
) __a
);
2873 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2874 vreinterpretq_p16_u32 (uint32x4_t __a
)
2876 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv4si ((int32x4_t
) __a
);
2879 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2880 vreinterpretq_p16_u64 (uint64x2_t __a
)
2882 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv2di ((int64x2_t
) __a
);
2885 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
2886 vreinterpretq_p16_p8 (poly8x16_t __a
)
2888 return (poly16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t
)
2892 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2893 vreinterpret_f32_s8 (int8x8_t __a
)
2895 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv8qi (__a
);
2898 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2899 vreinterpret_f32_s16 (int16x4_t __a
)
2901 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv4hi (__a
);
2904 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2905 vreinterpret_f32_s32 (int32x2_t __a
)
2907 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv2si (__a
);
2910 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2911 vreinterpret_f32_s64 (int64x1_t __a
)
2913 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfdi (__a
);
2916 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2917 vreinterpret_f32_u8 (uint8x8_t __a
)
2919 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv8qi ((int8x8_t
) __a
);
2922 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2923 vreinterpret_f32_u16 (uint16x4_t __a
)
2925 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv4hi ((int16x4_t
)
2929 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2930 vreinterpret_f32_u32 (uint32x2_t __a
)
2932 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv2si ((int32x2_t
)
2936 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2937 vreinterpret_f32_u64 (uint64x1_t __a
)
2939 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfdi ((int64x1_t
) __a
);
2942 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2943 vreinterpret_f32_p8 (poly8x8_t __a
)
2945 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv8qi ((int8x8_t
) __a
);
2948 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
2949 vreinterpret_f32_p16 (poly16x4_t __a
)
2951 return (float32x2_t
) __builtin_aarch64_reinterpretv2sfv4hi ((int16x4_t
)
2955 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2956 vreinterpretq_f32_s8 (int8x16_t __a
)
2958 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv16qi (__a
);
2961 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2962 vreinterpretq_f32_s16 (int16x8_t __a
)
2964 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv8hi (__a
);
2967 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2968 vreinterpretq_f32_s32 (int32x4_t __a
)
2970 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv4si (__a
);
2973 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2974 vreinterpretq_f32_s64 (int64x2_t __a
)
2976 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv2di (__a
);
2979 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2980 vreinterpretq_f32_u8 (uint8x16_t __a
)
2982 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv16qi ((int8x16_t
)
2986 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2987 vreinterpretq_f32_u16 (uint16x8_t __a
)
2989 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv8hi ((int16x8_t
)
2993 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
2994 vreinterpretq_f32_u32 (uint32x4_t __a
)
2996 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv4si ((int32x4_t
)
3000 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
3001 vreinterpretq_f32_u64 (uint64x2_t __a
)
3003 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv2di ((int64x2_t
)
3007 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
3008 vreinterpretq_f32_p8 (poly8x16_t __a
)
3010 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv16qi ((int8x16_t
)
3014 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
3015 vreinterpretq_f32_p16 (poly16x8_t __a
)
3017 return (float32x4_t
) __builtin_aarch64_reinterpretv4sfv8hi ((int16x8_t
)
3021 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3022 vreinterpret_s64_s8 (int8x8_t __a
)
3024 return (int64x1_t
) __builtin_aarch64_reinterpretdiv8qi (__a
);
3027 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3028 vreinterpret_s64_s16 (int16x4_t __a
)
3030 return (int64x1_t
) __builtin_aarch64_reinterpretdiv4hi (__a
);
3033 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3034 vreinterpret_s64_s32 (int32x2_t __a
)
3036 return (int64x1_t
) __builtin_aarch64_reinterpretdiv2si (__a
);
3039 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3040 vreinterpret_s64_f32 (float32x2_t __a
)
3042 return (int64x1_t
) __builtin_aarch64_reinterpretdiv2sf (__a
);
3045 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3046 vreinterpret_s64_u8 (uint8x8_t __a
)
3048 return (int64x1_t
) __builtin_aarch64_reinterpretdiv8qi ((int8x8_t
) __a
);
3051 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3052 vreinterpret_s64_u16 (uint16x4_t __a
)
3054 return (int64x1_t
) __builtin_aarch64_reinterpretdiv4hi ((int16x4_t
) __a
);
3057 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3058 vreinterpret_s64_u32 (uint32x2_t __a
)
3060 return (int64x1_t
) __builtin_aarch64_reinterpretdiv2si ((int32x2_t
) __a
);
3063 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3064 vreinterpret_s64_u64 (uint64x1_t __a
)
3066 return (int64x1_t
) __builtin_aarch64_reinterpretdidi ((int64x1_t
) __a
);
3069 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3070 vreinterpret_s64_p8 (poly8x8_t __a
)
3072 return (int64x1_t
) __builtin_aarch64_reinterpretdiv8qi ((int8x8_t
) __a
);
3075 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
3076 vreinterpret_s64_p16 (poly16x4_t __a
)
3078 return (int64x1_t
) __builtin_aarch64_reinterpretdiv4hi ((int16x4_t
) __a
);
3081 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3082 vreinterpretq_s64_s8 (int8x16_t __a
)
3084 return (int64x2_t
) __builtin_aarch64_reinterpretv2div16qi (__a
);
3087 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3088 vreinterpretq_s64_s16 (int16x8_t __a
)
3090 return (int64x2_t
) __builtin_aarch64_reinterpretv2div8hi (__a
);
3093 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3094 vreinterpretq_s64_s32 (int32x4_t __a
)
3096 return (int64x2_t
) __builtin_aarch64_reinterpretv2div4si (__a
);
3099 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3100 vreinterpretq_s64_f32 (float32x4_t __a
)
3102 return (int64x2_t
) __builtin_aarch64_reinterpretv2div4sf (__a
);
3105 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3106 vreinterpretq_s64_u8 (uint8x16_t __a
)
3108 return (int64x2_t
) __builtin_aarch64_reinterpretv2div16qi ((int8x16_t
) __a
);
3111 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3112 vreinterpretq_s64_u16 (uint16x8_t __a
)
3114 return (int64x2_t
) __builtin_aarch64_reinterpretv2div8hi ((int16x8_t
) __a
);
3117 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3118 vreinterpretq_s64_u32 (uint32x4_t __a
)
3120 return (int64x2_t
) __builtin_aarch64_reinterpretv2div4si ((int32x4_t
) __a
);
3123 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3124 vreinterpretq_s64_u64 (uint64x2_t __a
)
3126 return (int64x2_t
) __builtin_aarch64_reinterpretv2div2di ((int64x2_t
) __a
);
3129 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3130 vreinterpretq_s64_p8 (poly8x16_t __a
)
3132 return (int64x2_t
) __builtin_aarch64_reinterpretv2div16qi ((int8x16_t
) __a
);
3135 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
3136 vreinterpretq_s64_p16 (poly16x8_t __a
)
3138 return (int64x2_t
) __builtin_aarch64_reinterpretv2div8hi ((int16x8_t
) __a
);
3141 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3142 vreinterpret_u64_s8 (int8x8_t __a
)
3144 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv8qi (__a
);
3147 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3148 vreinterpret_u64_s16 (int16x4_t __a
)
3150 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv4hi (__a
);
3153 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3154 vreinterpret_u64_s32 (int32x2_t __a
)
3156 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv2si (__a
);
3159 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3160 vreinterpret_u64_s64 (int64x1_t __a
)
3162 return (uint64x1_t
) __builtin_aarch64_reinterpretdidi (__a
);
3165 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3166 vreinterpret_u64_f32 (float32x2_t __a
)
3168 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv2sf (__a
);
3171 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3172 vreinterpret_u64_u8 (uint8x8_t __a
)
3174 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv8qi ((int8x8_t
) __a
);
3177 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3178 vreinterpret_u64_u16 (uint16x4_t __a
)
3180 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv4hi ((int16x4_t
) __a
);
3183 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3184 vreinterpret_u64_u32 (uint32x2_t __a
)
3186 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv2si ((int32x2_t
) __a
);
3189 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3190 vreinterpret_u64_p8 (poly8x8_t __a
)
3192 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv8qi ((int8x8_t
) __a
);
3195 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
3196 vreinterpret_u64_p16 (poly16x4_t __a
)
3198 return (uint64x1_t
) __builtin_aarch64_reinterpretdiv4hi ((int16x4_t
) __a
);
3201 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3202 vreinterpretq_u64_s8 (int8x16_t __a
)
3204 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div16qi (__a
);
3207 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3208 vreinterpretq_u64_s16 (int16x8_t __a
)
3210 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div8hi (__a
);
3213 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3214 vreinterpretq_u64_s32 (int32x4_t __a
)
3216 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div4si (__a
);
3219 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3220 vreinterpretq_u64_s64 (int64x2_t __a
)
3222 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div2di (__a
);
3225 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3226 vreinterpretq_u64_f32 (float32x4_t __a
)
3228 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div4sf (__a
);
3231 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3232 vreinterpretq_u64_u8 (uint8x16_t __a
)
3234 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div16qi ((int8x16_t
)
3238 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3239 vreinterpretq_u64_u16 (uint16x8_t __a
)
3241 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div8hi ((int16x8_t
) __a
);
3244 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3245 vreinterpretq_u64_u32 (uint32x4_t __a
)
3247 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div4si ((int32x4_t
) __a
);
3250 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3251 vreinterpretq_u64_p8 (poly8x16_t __a
)
3253 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div16qi ((int8x16_t
)
3257 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
3258 vreinterpretq_u64_p16 (poly16x8_t __a
)
3260 return (uint64x2_t
) __builtin_aarch64_reinterpretv2div8hi ((int16x8_t
) __a
);
3263 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3264 vreinterpret_s8_s16 (int16x4_t __a
)
3266 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi (__a
);
3269 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3270 vreinterpret_s8_s32 (int32x2_t __a
)
3272 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv2si (__a
);
3275 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3276 vreinterpret_s8_s64 (int64x1_t __a
)
3278 return (int8x8_t
) __builtin_aarch64_reinterpretv8qidi (__a
);
3281 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3282 vreinterpret_s8_f32 (float32x2_t __a
)
3284 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv2sf (__a
);
3287 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3288 vreinterpret_s8_u8 (uint8x8_t __a
)
3290 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv8qi ((int8x8_t
) __a
);
3293 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3294 vreinterpret_s8_u16 (uint16x4_t __a
)
3296 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t
) __a
);
3299 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3300 vreinterpret_s8_u32 (uint32x2_t __a
)
3302 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv2si ((int32x2_t
) __a
);
3305 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3306 vreinterpret_s8_u64 (uint64x1_t __a
)
3308 return (int8x8_t
) __builtin_aarch64_reinterpretv8qidi ((int64x1_t
) __a
);
3311 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3312 vreinterpret_s8_p8 (poly8x8_t __a
)
3314 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv8qi ((int8x8_t
) __a
);
3317 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
3318 vreinterpret_s8_p16 (poly16x4_t __a
)
3320 return (int8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t
) __a
);
3323 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3324 vreinterpretq_s8_s16 (int16x8_t __a
)
3326 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi (__a
);
3329 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3330 vreinterpretq_s8_s32 (int32x4_t __a
)
3332 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv4si (__a
);
3335 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3336 vreinterpretq_s8_s64 (int64x2_t __a
)
3338 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv2di (__a
);
3341 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3342 vreinterpretq_s8_f32 (float32x4_t __a
)
3344 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv4sf (__a
);
3347 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3348 vreinterpretq_s8_u8 (uint8x16_t __a
)
3350 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv16qi ((int8x16_t
)
3354 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3355 vreinterpretq_s8_u16 (uint16x8_t __a
)
3357 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t
) __a
);
3360 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3361 vreinterpretq_s8_u32 (uint32x4_t __a
)
3363 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv4si ((int32x4_t
) __a
);
3366 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3367 vreinterpretq_s8_u64 (uint64x2_t __a
)
3369 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv2di ((int64x2_t
) __a
);
3372 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3373 vreinterpretq_s8_p8 (poly8x16_t __a
)
3375 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv16qi ((int8x16_t
)
3379 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
3380 vreinterpretq_s8_p16 (poly16x8_t __a
)
3382 return (int8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t
) __a
);
3385 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3386 vreinterpret_s16_s8 (int8x8_t __a
)
3388 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi (__a
);
3391 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3392 vreinterpret_s16_s32 (int32x2_t __a
)
3394 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv2si (__a
);
3397 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3398 vreinterpret_s16_s64 (int64x1_t __a
)
3400 return (int16x4_t
) __builtin_aarch64_reinterpretv4hidi (__a
);
3403 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3404 vreinterpret_s16_f32 (float32x2_t __a
)
3406 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv2sf (__a
);
3409 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3410 vreinterpret_s16_u8 (uint8x8_t __a
)
3412 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t
) __a
);
3415 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3416 vreinterpret_s16_u16 (uint16x4_t __a
)
3418 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv4hi ((int16x4_t
) __a
);
3421 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3422 vreinterpret_s16_u32 (uint32x2_t __a
)
3424 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv2si ((int32x2_t
) __a
);
3427 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3428 vreinterpret_s16_u64 (uint64x1_t __a
)
3430 return (int16x4_t
) __builtin_aarch64_reinterpretv4hidi ((int64x1_t
) __a
);
3433 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3434 vreinterpret_s16_p8 (poly8x8_t __a
)
3436 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t
) __a
);
3439 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
3440 vreinterpret_s16_p16 (poly16x4_t __a
)
3442 return (int16x4_t
) __builtin_aarch64_reinterpretv4hiv4hi ((int16x4_t
) __a
);
3445 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3446 vreinterpretq_s16_s8 (int8x16_t __a
)
3448 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi (__a
);
3451 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3452 vreinterpretq_s16_s32 (int32x4_t __a
)
3454 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv4si (__a
);
3457 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3458 vreinterpretq_s16_s64 (int64x2_t __a
)
3460 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv2di (__a
);
3463 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3464 vreinterpretq_s16_f32 (float32x4_t __a
)
3466 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv4sf (__a
);
3469 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3470 vreinterpretq_s16_u8 (uint8x16_t __a
)
3472 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t
) __a
);
3475 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3476 vreinterpretq_s16_u16 (uint16x8_t __a
)
3478 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv8hi ((int16x8_t
) __a
);
3481 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3482 vreinterpretq_s16_u32 (uint32x4_t __a
)
3484 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv4si ((int32x4_t
) __a
);
3487 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3488 vreinterpretq_s16_u64 (uint64x2_t __a
)
3490 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv2di ((int64x2_t
) __a
);
3493 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3494 vreinterpretq_s16_p8 (poly8x16_t __a
)
3496 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t
) __a
);
3499 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
3500 vreinterpretq_s16_p16 (poly16x8_t __a
)
3502 return (int16x8_t
) __builtin_aarch64_reinterpretv8hiv8hi ((int16x8_t
) __a
);
3505 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3506 vreinterpret_s32_s8 (int8x8_t __a
)
3508 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv8qi (__a
);
3511 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3512 vreinterpret_s32_s16 (int16x4_t __a
)
3514 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv4hi (__a
);
3517 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3518 vreinterpret_s32_s64 (int64x1_t __a
)
3520 return (int32x2_t
) __builtin_aarch64_reinterpretv2sidi (__a
);
3523 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3524 vreinterpret_s32_f32 (float32x2_t __a
)
3526 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv2sf (__a
);
3529 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3530 vreinterpret_s32_u8 (uint8x8_t __a
)
3532 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv8qi ((int8x8_t
) __a
);
3535 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3536 vreinterpret_s32_u16 (uint16x4_t __a
)
3538 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv4hi ((int16x4_t
) __a
);
3541 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3542 vreinterpret_s32_u32 (uint32x2_t __a
)
3544 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv2si ((int32x2_t
) __a
);
3547 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3548 vreinterpret_s32_u64 (uint64x1_t __a
)
3550 return (int32x2_t
) __builtin_aarch64_reinterpretv2sidi ((int64x1_t
) __a
);
3553 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3554 vreinterpret_s32_p8 (poly8x8_t __a
)
3556 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv8qi ((int8x8_t
) __a
);
3559 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
3560 vreinterpret_s32_p16 (poly16x4_t __a
)
3562 return (int32x2_t
) __builtin_aarch64_reinterpretv2siv4hi ((int16x4_t
) __a
);
3565 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3566 vreinterpretq_s32_s8 (int8x16_t __a
)
3568 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv16qi (__a
);
3571 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3572 vreinterpretq_s32_s16 (int16x8_t __a
)
3574 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv8hi (__a
);
3577 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3578 vreinterpretq_s32_s64 (int64x2_t __a
)
3580 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv2di (__a
);
3583 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3584 vreinterpretq_s32_f32 (float32x4_t __a
)
3586 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv4sf (__a
);
3589 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3590 vreinterpretq_s32_u8 (uint8x16_t __a
)
3592 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv16qi ((int8x16_t
) __a
);
3595 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3596 vreinterpretq_s32_u16 (uint16x8_t __a
)
3598 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv8hi ((int16x8_t
) __a
);
3601 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3602 vreinterpretq_s32_u32 (uint32x4_t __a
)
3604 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv4si ((int32x4_t
) __a
);
3607 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3608 vreinterpretq_s32_u64 (uint64x2_t __a
)
3610 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv2di ((int64x2_t
) __a
);
3613 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3614 vreinterpretq_s32_p8 (poly8x16_t __a
)
3616 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv16qi ((int8x16_t
) __a
);
3619 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
3620 vreinterpretq_s32_p16 (poly16x8_t __a
)
3622 return (int32x4_t
) __builtin_aarch64_reinterpretv4siv8hi ((int16x8_t
) __a
);
3625 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3626 vreinterpret_u8_s8 (int8x8_t __a
)
3628 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv8qi (__a
);
3631 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3632 vreinterpret_u8_s16 (int16x4_t __a
)
3634 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi (__a
);
3637 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3638 vreinterpret_u8_s32 (int32x2_t __a
)
3640 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv2si (__a
);
3643 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3644 vreinterpret_u8_s64 (int64x1_t __a
)
3646 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qidi (__a
);
3649 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3650 vreinterpret_u8_f32 (float32x2_t __a
)
3652 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv2sf (__a
);
3655 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3656 vreinterpret_u8_u16 (uint16x4_t __a
)
3658 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t
) __a
);
3661 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3662 vreinterpret_u8_u32 (uint32x2_t __a
)
3664 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv2si ((int32x2_t
) __a
);
3667 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3668 vreinterpret_u8_u64 (uint64x1_t __a
)
3670 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qidi ((int64x1_t
) __a
);
3673 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3674 vreinterpret_u8_p8 (poly8x8_t __a
)
3676 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv8qi ((int8x8_t
) __a
);
3679 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
3680 vreinterpret_u8_p16 (poly16x4_t __a
)
3682 return (uint8x8_t
) __builtin_aarch64_reinterpretv8qiv4hi ((int16x4_t
) __a
);
3685 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3686 vreinterpretq_u8_s8 (int8x16_t __a
)
3688 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv16qi (__a
);
3691 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3692 vreinterpretq_u8_s16 (int16x8_t __a
)
3694 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi (__a
);
3697 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3698 vreinterpretq_u8_s32 (int32x4_t __a
)
3700 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv4si (__a
);
3703 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3704 vreinterpretq_u8_s64 (int64x2_t __a
)
3706 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv2di (__a
);
3709 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3710 vreinterpretq_u8_f32 (float32x4_t __a
)
3712 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv4sf (__a
);
3715 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3716 vreinterpretq_u8_u16 (uint16x8_t __a
)
3718 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t
)
3722 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3723 vreinterpretq_u8_u32 (uint32x4_t __a
)
3725 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv4si ((int32x4_t
)
3729 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3730 vreinterpretq_u8_u64 (uint64x2_t __a
)
3732 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv2di ((int64x2_t
)
3736 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3737 vreinterpretq_u8_p8 (poly8x16_t __a
)
3739 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv16qi ((int8x16_t
)
3743 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
3744 vreinterpretq_u8_p16 (poly16x8_t __a
)
3746 return (uint8x16_t
) __builtin_aarch64_reinterpretv16qiv8hi ((int16x8_t
)
3750 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3751 vreinterpret_u16_s8 (int8x8_t __a
)
3753 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi (__a
);
3756 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3757 vreinterpret_u16_s16 (int16x4_t __a
)
3759 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv4hi (__a
);
3762 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3763 vreinterpret_u16_s32 (int32x2_t __a
)
3765 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv2si (__a
);
3768 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3769 vreinterpret_u16_s64 (int64x1_t __a
)
3771 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hidi (__a
);
3774 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3775 vreinterpret_u16_f32 (float32x2_t __a
)
3777 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv2sf (__a
);
3780 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3781 vreinterpret_u16_u8 (uint8x8_t __a
)
3783 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t
) __a
);
3786 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3787 vreinterpret_u16_u32 (uint32x2_t __a
)
3789 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv2si ((int32x2_t
) __a
);
3792 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3793 vreinterpret_u16_u64 (uint64x1_t __a
)
3795 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hidi ((int64x1_t
) __a
);
3798 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3799 vreinterpret_u16_p8 (poly8x8_t __a
)
3801 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv8qi ((int8x8_t
) __a
);
3804 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
3805 vreinterpret_u16_p16 (poly16x4_t __a
)
3807 return (uint16x4_t
) __builtin_aarch64_reinterpretv4hiv4hi ((int16x4_t
) __a
);
3810 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3811 vreinterpretq_u16_s8 (int8x16_t __a
)
3813 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi (__a
);
3816 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3817 vreinterpretq_u16_s16 (int16x8_t __a
)
3819 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv8hi (__a
);
3822 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3823 vreinterpretq_u16_s32 (int32x4_t __a
)
3825 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv4si (__a
);
3828 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3829 vreinterpretq_u16_s64 (int64x2_t __a
)
3831 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv2di (__a
);
3834 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3835 vreinterpretq_u16_f32 (float32x4_t __a
)
3837 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv4sf (__a
);
3840 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3841 vreinterpretq_u16_u8 (uint8x16_t __a
)
3843 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t
)
3847 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3848 vreinterpretq_u16_u32 (uint32x4_t __a
)
3850 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv4si ((int32x4_t
) __a
);
3853 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3854 vreinterpretq_u16_u64 (uint64x2_t __a
)
3856 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv2di ((int64x2_t
) __a
);
3859 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3860 vreinterpretq_u16_p8 (poly8x16_t __a
)
3862 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv16qi ((int8x16_t
)
3866 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
3867 vreinterpretq_u16_p16 (poly16x8_t __a
)
3869 return (uint16x8_t
) __builtin_aarch64_reinterpretv8hiv8hi ((int16x8_t
) __a
);
3872 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3873 vreinterpret_u32_s8 (int8x8_t __a
)
3875 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv8qi (__a
);
3878 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3879 vreinterpret_u32_s16 (int16x4_t __a
)
3881 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv4hi (__a
);
3884 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3885 vreinterpret_u32_s32 (int32x2_t __a
)
3887 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv2si (__a
);
3890 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3891 vreinterpret_u32_s64 (int64x1_t __a
)
3893 return (uint32x2_t
) __builtin_aarch64_reinterpretv2sidi (__a
);
3896 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3897 vreinterpret_u32_f32 (float32x2_t __a
)
3899 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv2sf (__a
);
3902 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3903 vreinterpret_u32_u8 (uint8x8_t __a
)
3905 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv8qi ((int8x8_t
) __a
);
3908 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3909 vreinterpret_u32_u16 (uint16x4_t __a
)
3911 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv4hi ((int16x4_t
) __a
);
3914 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3915 vreinterpret_u32_u64 (uint64x1_t __a
)
3917 return (uint32x2_t
) __builtin_aarch64_reinterpretv2sidi ((int64x1_t
) __a
);
3920 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3921 vreinterpret_u32_p8 (poly8x8_t __a
)
3923 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv8qi ((int8x8_t
) __a
);
3926 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
3927 vreinterpret_u32_p16 (poly16x4_t __a
)
3929 return (uint32x2_t
) __builtin_aarch64_reinterpretv2siv4hi ((int16x4_t
) __a
);
3932 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3933 vreinterpretq_u32_s8 (int8x16_t __a
)
3935 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv16qi (__a
);
3938 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3939 vreinterpretq_u32_s16 (int16x8_t __a
)
3941 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv8hi (__a
);
3944 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3945 vreinterpretq_u32_s32 (int32x4_t __a
)
3947 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv4si (__a
);
3950 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3951 vreinterpretq_u32_s64 (int64x2_t __a
)
3953 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv2di (__a
);
3956 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3957 vreinterpretq_u32_f32 (float32x4_t __a
)
3959 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv4sf (__a
);
3962 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3963 vreinterpretq_u32_u8 (uint8x16_t __a
)
3965 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv16qi ((int8x16_t
)
3969 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3970 vreinterpretq_u32_u16 (uint16x8_t __a
)
3972 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv8hi ((int16x8_t
) __a
);
3975 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3976 vreinterpretq_u32_u64 (uint64x2_t __a
)
3978 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv2di ((int64x2_t
) __a
);
3981 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3982 vreinterpretq_u32_p8 (poly8x16_t __a
)
3984 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv16qi ((int8x16_t
)
3988 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
3989 vreinterpretq_u32_p16 (poly16x8_t __a
)
3991 return (uint32x4_t
) __builtin_aarch64_reinterpretv4siv8hi ((int16x8_t
) __a
);
3994 #define __GET_LOW(__TYPE) \
3995 uint64x2_t tmp = vreinterpretq_u64_##__TYPE (__a); \
3996 uint64_t lo = vgetq_lane_u64 (tmp, 0); \
3997 return vreinterpret_##__TYPE##_u64 (lo);
3999 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
4000 vget_low_f32 (float32x4_t __a
)
4005 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
4006 vget_low_f64 (float64x2_t __a
)
4008 return vgetq_lane_f64 (__a
, 0);
4011 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
4012 vget_low_p8 (poly8x16_t __a
)
4017 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
4018 vget_low_p16 (poly16x8_t __a
)
4023 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
4024 vget_low_s8 (int8x16_t __a
)
4029 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
4030 vget_low_s16 (int16x8_t __a
)
4035 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
4036 vget_low_s32 (int32x4_t __a
)
4041 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
4042 vget_low_s64 (int64x2_t __a
)
4044 return vgetq_lane_s64 (__a
, 0);
4047 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
4048 vget_low_u8 (uint8x16_t __a
)
4053 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
4054 vget_low_u16 (uint16x8_t __a
)
4059 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
4060 vget_low_u32 (uint32x4_t __a
)
4065 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
4066 vget_low_u64 (uint64x2_t __a
)
4068 return vgetq_lane_u64 (__a
, 0);
4073 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
4074 vcombine_s8 (int8x8_t __a
, int8x8_t __b
)
4076 return (int8x16_t
) __builtin_aarch64_combinev8qi (__a
, __b
);
4079 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4080 vcombine_s16 (int16x4_t __a
, int16x4_t __b
)
4082 return (int16x8_t
) __builtin_aarch64_combinev4hi (__a
, __b
);
4085 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4086 vcombine_s32 (int32x2_t __a
, int32x2_t __b
)
4088 return (int32x4_t
) __builtin_aarch64_combinev2si (__a
, __b
);
4091 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
4092 vcombine_s64 (int64x1_t __a
, int64x1_t __b
)
4094 return (int64x2_t
) __builtin_aarch64_combinedi (__a
, __b
);
4097 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
4098 vcombine_f32 (float32x2_t __a
, float32x2_t __b
)
4100 return (float32x4_t
) __builtin_aarch64_combinev2sf (__a
, __b
);
4103 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
4104 vcombine_u8 (uint8x8_t __a
, uint8x8_t __b
)
4106 return (uint8x16_t
) __builtin_aarch64_combinev8qi ((int8x8_t
) __a
,
4110 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
4111 vcombine_u16 (uint16x4_t __a
, uint16x4_t __b
)
4113 return (uint16x8_t
) __builtin_aarch64_combinev4hi ((int16x4_t
) __a
,
4117 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
4118 vcombine_u32 (uint32x2_t __a
, uint32x2_t __b
)
4120 return (uint32x4_t
) __builtin_aarch64_combinev2si ((int32x2_t
) __a
,
4124 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
4125 vcombine_u64 (uint64x1_t __a
, uint64x1_t __b
)
4127 return (uint64x2_t
) __builtin_aarch64_combinedi ((int64x1_t
) __a
,
4131 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
4132 vcombine_f64 (float64x1_t __a
, float64x1_t __b
)
4134 return (float64x2_t
) __builtin_aarch64_combinedf (__a
, __b
);
4137 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
4138 vcombine_p8 (poly8x8_t __a
, poly8x8_t __b
)
4140 return (poly8x16_t
) __builtin_aarch64_combinev8qi ((int8x8_t
) __a
,
4144 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
4145 vcombine_p16 (poly16x4_t __a
, poly16x4_t __b
)
4147 return (poly16x8_t
) __builtin_aarch64_combinev4hi ((int16x4_t
) __a
,
4151 /* Start of temporary inline asm implementations. */
4153 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
4154 vaba_s8 (int8x8_t a
, int8x8_t b
, int8x8_t c
)
4157 __asm__ ("saba %0.8b,%2.8b,%3.8b"
4159 : "0"(a
), "w"(b
), "w"(c
)
4160 : /* No clobbers */);
4164 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
4165 vaba_s16 (int16x4_t a
, int16x4_t b
, int16x4_t c
)
4168 __asm__ ("saba %0.4h,%2.4h,%3.4h"
4170 : "0"(a
), "w"(b
), "w"(c
)
4171 : /* No clobbers */);
4175 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
4176 vaba_s32 (int32x2_t a
, int32x2_t b
, int32x2_t c
)
4179 __asm__ ("saba %0.2s,%2.2s,%3.2s"
4181 : "0"(a
), "w"(b
), "w"(c
)
4182 : /* No clobbers */);
4186 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
4187 vaba_u8 (uint8x8_t a
, uint8x8_t b
, uint8x8_t c
)
4190 __asm__ ("uaba %0.8b,%2.8b,%3.8b"
4192 : "0"(a
), "w"(b
), "w"(c
)
4193 : /* No clobbers */);
4197 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
4198 vaba_u16 (uint16x4_t a
, uint16x4_t b
, uint16x4_t c
)
4201 __asm__ ("uaba %0.4h,%2.4h,%3.4h"
4203 : "0"(a
), "w"(b
), "w"(c
)
4204 : /* No clobbers */);
4208 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
4209 vaba_u32 (uint32x2_t a
, uint32x2_t b
, uint32x2_t c
)
4212 __asm__ ("uaba %0.2s,%2.2s,%3.2s"
4214 : "0"(a
), "w"(b
), "w"(c
)
4215 : /* No clobbers */);
4219 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4220 vabal_high_s8 (int16x8_t a
, int8x16_t b
, int8x16_t c
)
4223 __asm__ ("sabal2 %0.8h,%2.16b,%3.16b"
4225 : "0"(a
), "w"(b
), "w"(c
)
4226 : /* No clobbers */);
4230 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4231 vabal_high_s16 (int32x4_t a
, int16x8_t b
, int16x8_t c
)
4234 __asm__ ("sabal2 %0.4s,%2.8h,%3.8h"
4236 : "0"(a
), "w"(b
), "w"(c
)
4237 : /* No clobbers */);
4241 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
4242 vabal_high_s32 (int64x2_t a
, int32x4_t b
, int32x4_t c
)
4245 __asm__ ("sabal2 %0.2d,%2.4s,%3.4s"
4247 : "0"(a
), "w"(b
), "w"(c
)
4248 : /* No clobbers */);
4252 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
4253 vabal_high_u8 (uint16x8_t a
, uint8x16_t b
, uint8x16_t c
)
4256 __asm__ ("uabal2 %0.8h,%2.16b,%3.16b"
4258 : "0"(a
), "w"(b
), "w"(c
)
4259 : /* No clobbers */);
4263 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
4264 vabal_high_u16 (uint32x4_t a
, uint16x8_t b
, uint16x8_t c
)
4267 __asm__ ("uabal2 %0.4s,%2.8h,%3.8h"
4269 : "0"(a
), "w"(b
), "w"(c
)
4270 : /* No clobbers */);
4274 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
4275 vabal_high_u32 (uint64x2_t a
, uint32x4_t b
, uint32x4_t c
)
4278 __asm__ ("uabal2 %0.2d,%2.4s,%3.4s"
4280 : "0"(a
), "w"(b
), "w"(c
)
4281 : /* No clobbers */);
4285 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4286 vabal_s8 (int16x8_t a
, int8x8_t b
, int8x8_t c
)
4289 __asm__ ("sabal %0.8h,%2.8b,%3.8b"
4291 : "0"(a
), "w"(b
), "w"(c
)
4292 : /* No clobbers */);
4296 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4297 vabal_s16 (int32x4_t a
, int16x4_t b
, int16x4_t c
)
4300 __asm__ ("sabal %0.4s,%2.4h,%3.4h"
4302 : "0"(a
), "w"(b
), "w"(c
)
4303 : /* No clobbers */);
4307 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
4308 vabal_s32 (int64x2_t a
, int32x2_t b
, int32x2_t c
)
4311 __asm__ ("sabal %0.2d,%2.2s,%3.2s"
4313 : "0"(a
), "w"(b
), "w"(c
)
4314 : /* No clobbers */);
4318 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
4319 vabal_u8 (uint16x8_t a
, uint8x8_t b
, uint8x8_t c
)
4322 __asm__ ("uabal %0.8h,%2.8b,%3.8b"
4324 : "0"(a
), "w"(b
), "w"(c
)
4325 : /* No clobbers */);
4329 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
4330 vabal_u16 (uint32x4_t a
, uint16x4_t b
, uint16x4_t c
)
4333 __asm__ ("uabal %0.4s,%2.4h,%3.4h"
4335 : "0"(a
), "w"(b
), "w"(c
)
4336 : /* No clobbers */);
4340 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
4341 vabal_u32 (uint64x2_t a
, uint32x2_t b
, uint32x2_t c
)
4344 __asm__ ("uabal %0.2d,%2.2s,%3.2s"
4346 : "0"(a
), "w"(b
), "w"(c
)
4347 : /* No clobbers */);
4351 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
4352 vabaq_s8 (int8x16_t a
, int8x16_t b
, int8x16_t c
)
4355 __asm__ ("saba %0.16b,%2.16b,%3.16b"
4357 : "0"(a
), "w"(b
), "w"(c
)
4358 : /* No clobbers */);
4362 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4363 vabaq_s16 (int16x8_t a
, int16x8_t b
, int16x8_t c
)
4366 __asm__ ("saba %0.8h,%2.8h,%3.8h"
4368 : "0"(a
), "w"(b
), "w"(c
)
4369 : /* No clobbers */);
4373 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4374 vabaq_s32 (int32x4_t a
, int32x4_t b
, int32x4_t c
)
4377 __asm__ ("saba %0.4s,%2.4s,%3.4s"
4379 : "0"(a
), "w"(b
), "w"(c
)
4380 : /* No clobbers */);
4384 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
4385 vabaq_u8 (uint8x16_t a
, uint8x16_t b
, uint8x16_t c
)
4388 __asm__ ("uaba %0.16b,%2.16b,%3.16b"
4390 : "0"(a
), "w"(b
), "w"(c
)
4391 : /* No clobbers */);
4395 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
4396 vabaq_u16 (uint16x8_t a
, uint16x8_t b
, uint16x8_t c
)
4399 __asm__ ("uaba %0.8h,%2.8h,%3.8h"
4401 : "0"(a
), "w"(b
), "w"(c
)
4402 : /* No clobbers */);
4406 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
4407 vabaq_u32 (uint32x4_t a
, uint32x4_t b
, uint32x4_t c
)
4410 __asm__ ("uaba %0.4s,%2.4s,%3.4s"
4412 : "0"(a
), "w"(b
), "w"(c
)
4413 : /* No clobbers */);
4417 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
4418 vabd_f32 (float32x2_t a
, float32x2_t b
)
4421 __asm__ ("fabd %0.2s, %1.2s, %2.2s"
4424 : /* No clobbers */);
4428 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
4429 vabd_s8 (int8x8_t a
, int8x8_t b
)
4432 __asm__ ("sabd %0.8b, %1.8b, %2.8b"
4435 : /* No clobbers */);
4439 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
4440 vabd_s16 (int16x4_t a
, int16x4_t b
)
4443 __asm__ ("sabd %0.4h, %1.4h, %2.4h"
4446 : /* No clobbers */);
4450 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
4451 vabd_s32 (int32x2_t a
, int32x2_t b
)
4454 __asm__ ("sabd %0.2s, %1.2s, %2.2s"
4457 : /* No clobbers */);
4461 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
4462 vabd_u8 (uint8x8_t a
, uint8x8_t b
)
4465 __asm__ ("uabd %0.8b, %1.8b, %2.8b"
4468 : /* No clobbers */);
4472 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
4473 vabd_u16 (uint16x4_t a
, uint16x4_t b
)
4476 __asm__ ("uabd %0.4h, %1.4h, %2.4h"
4479 : /* No clobbers */);
4483 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
4484 vabd_u32 (uint32x2_t a
, uint32x2_t b
)
4487 __asm__ ("uabd %0.2s, %1.2s, %2.2s"
4490 : /* No clobbers */);
4494 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
4495 vabdd_f64 (float64_t a
, float64_t b
)
4498 __asm__ ("fabd %d0, %d1, %d2"
4501 : /* No clobbers */);
4505 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4506 vabdl_high_s8 (int8x16_t a
, int8x16_t b
)
4509 __asm__ ("sabdl2 %0.8h,%1.16b,%2.16b"
4512 : /* No clobbers */);
4516 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4517 vabdl_high_s16 (int16x8_t a
, int16x8_t b
)
4520 __asm__ ("sabdl2 %0.4s,%1.8h,%2.8h"
4523 : /* No clobbers */);
4527 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
4528 vabdl_high_s32 (int32x4_t a
, int32x4_t b
)
4531 __asm__ ("sabdl2 %0.2d,%1.4s,%2.4s"
4534 : /* No clobbers */);
4538 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
4539 vabdl_high_u8 (uint8x16_t a
, uint8x16_t b
)
4542 __asm__ ("uabdl2 %0.8h,%1.16b,%2.16b"
4545 : /* No clobbers */);
4549 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
4550 vabdl_high_u16 (uint16x8_t a
, uint16x8_t b
)
4553 __asm__ ("uabdl2 %0.4s,%1.8h,%2.8h"
4556 : /* No clobbers */);
4560 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
4561 vabdl_high_u32 (uint32x4_t a
, uint32x4_t b
)
4564 __asm__ ("uabdl2 %0.2d,%1.4s,%2.4s"
4567 : /* No clobbers */);
4571 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4572 vabdl_s8 (int8x8_t a
, int8x8_t b
)
4575 __asm__ ("sabdl %0.8h, %1.8b, %2.8b"
4578 : /* No clobbers */);
4582 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4583 vabdl_s16 (int16x4_t a
, int16x4_t b
)
4586 __asm__ ("sabdl %0.4s, %1.4h, %2.4h"
4589 : /* No clobbers */);
4593 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
4594 vabdl_s32 (int32x2_t a
, int32x2_t b
)
4597 __asm__ ("sabdl %0.2d, %1.2s, %2.2s"
4600 : /* No clobbers */);
4604 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
4605 vabdl_u8 (uint8x8_t a
, uint8x8_t b
)
4608 __asm__ ("uabdl %0.8h, %1.8b, %2.8b"
4611 : /* No clobbers */);
4615 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
4616 vabdl_u16 (uint16x4_t a
, uint16x4_t b
)
4619 __asm__ ("uabdl %0.4s, %1.4h, %2.4h"
4622 : /* No clobbers */);
4626 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
4627 vabdl_u32 (uint32x2_t a
, uint32x2_t b
)
4630 __asm__ ("uabdl %0.2d, %1.2s, %2.2s"
4633 : /* No clobbers */);
4637 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
4638 vabdq_f32 (float32x4_t a
, float32x4_t b
)
4641 __asm__ ("fabd %0.4s, %1.4s, %2.4s"
4644 : /* No clobbers */);
4648 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
4649 vabdq_f64 (float64x2_t a
, float64x2_t b
)
4652 __asm__ ("fabd %0.2d, %1.2d, %2.2d"
4655 : /* No clobbers */);
4659 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
4660 vabdq_s8 (int8x16_t a
, int8x16_t b
)
4663 __asm__ ("sabd %0.16b, %1.16b, %2.16b"
4666 : /* No clobbers */);
4670 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4671 vabdq_s16 (int16x8_t a
, int16x8_t b
)
4674 __asm__ ("sabd %0.8h, %1.8h, %2.8h"
4677 : /* No clobbers */);
4681 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4682 vabdq_s32 (int32x4_t a
, int32x4_t b
)
4685 __asm__ ("sabd %0.4s, %1.4s, %2.4s"
4688 : /* No clobbers */);
4692 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
4693 vabdq_u8 (uint8x16_t a
, uint8x16_t b
)
4696 __asm__ ("uabd %0.16b, %1.16b, %2.16b"
4699 : /* No clobbers */);
4703 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
4704 vabdq_u16 (uint16x8_t a
, uint16x8_t b
)
4707 __asm__ ("uabd %0.8h, %1.8h, %2.8h"
4710 : /* No clobbers */);
4714 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
4715 vabdq_u32 (uint32x4_t a
, uint32x4_t b
)
4718 __asm__ ("uabd %0.4s, %1.4s, %2.4s"
4721 : /* No clobbers */);
4725 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
4726 vabds_f32 (float32_t a
, float32_t b
)
4729 __asm__ ("fabd %s0, %s1, %s2"
4732 : /* No clobbers */);
4736 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
4737 vaddlv_s8 (int8x8_t a
)
4740 __asm__ ("saddlv %h0,%1.8b"
4743 : /* No clobbers */);
4747 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
4748 vaddlv_s16 (int16x4_t a
)
4751 __asm__ ("saddlv %s0,%1.4h"
4754 : /* No clobbers */);
4758 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
4759 vaddlv_u8 (uint8x8_t a
)
4762 __asm__ ("uaddlv %h0,%1.8b"
4765 : /* No clobbers */);
4769 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
4770 vaddlv_u16 (uint16x4_t a
)
4773 __asm__ ("uaddlv %s0,%1.4h"
4776 : /* No clobbers */);
4780 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
4781 vaddlvq_s8 (int8x16_t a
)
4784 __asm__ ("saddlv %h0,%1.16b"
4787 : /* No clobbers */);
4791 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
4792 vaddlvq_s16 (int16x8_t a
)
4795 __asm__ ("saddlv %s0,%1.8h"
4798 : /* No clobbers */);
4802 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
4803 vaddlvq_s32 (int32x4_t a
)
4806 __asm__ ("saddlv %d0,%1.4s"
4809 : /* No clobbers */);
4813 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
4814 vaddlvq_u8 (uint8x16_t a
)
4817 __asm__ ("uaddlv %h0,%1.16b"
4820 : /* No clobbers */);
4824 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
4825 vaddlvq_u16 (uint16x8_t a
)
4828 __asm__ ("uaddlv %s0,%1.8h"
4831 : /* No clobbers */);
4835 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
4836 vaddlvq_u32 (uint32x4_t a
)
4839 __asm__ ("uaddlv %d0,%1.4s"
4842 : /* No clobbers */);
4846 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
4847 vcls_s8 (int8x8_t a
)
4850 __asm__ ("cls %0.8b,%1.8b"
4853 : /* No clobbers */);
4857 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
4858 vcls_s16 (int16x4_t a
)
4861 __asm__ ("cls %0.4h,%1.4h"
4864 : /* No clobbers */);
4868 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
4869 vcls_s32 (int32x2_t a
)
4872 __asm__ ("cls %0.2s,%1.2s"
4875 : /* No clobbers */);
4879 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
4880 vclsq_s8 (int8x16_t a
)
4883 __asm__ ("cls %0.16b,%1.16b"
4886 : /* No clobbers */);
4890 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
4891 vclsq_s16 (int16x8_t a
)
4894 __asm__ ("cls %0.8h,%1.8h"
4897 : /* No clobbers */);
4901 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
4902 vclsq_s32 (int32x4_t a
)
4905 __asm__ ("cls %0.4s,%1.4s"
4908 : /* No clobbers */);
4912 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
4913 vcnt_p8 (poly8x8_t a
)
4916 __asm__ ("cnt %0.8b,%1.8b"
4919 : /* No clobbers */);
4923 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
4924 vcnt_s8 (int8x8_t a
)
4927 __asm__ ("cnt %0.8b,%1.8b"
4930 : /* No clobbers */);
4934 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
4935 vcnt_u8 (uint8x8_t a
)
4938 __asm__ ("cnt %0.8b,%1.8b"
4941 : /* No clobbers */);
4945 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
4946 vcntq_p8 (poly8x16_t a
)
4949 __asm__ ("cnt %0.16b,%1.16b"
4952 : /* No clobbers */);
4956 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
4957 vcntq_s8 (int8x16_t a
)
4960 __asm__ ("cnt %0.16b,%1.16b"
4963 : /* No clobbers */);
4967 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
4968 vcntq_u8 (uint8x16_t a
)
4971 __asm__ ("cnt %0.16b,%1.16b"
4974 : /* No clobbers */);
4978 #define vcopyq_lane_f32(a, b, c, d) \
4981 float32x4_t c_ = (c); \
4982 float32x4_t a_ = (a); \
4983 float32x4_t result; \
4984 __asm__ ("ins %0.s[%2], %3.s[%4]" \
4986 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
4987 : /* No clobbers */); \
4991 #define vcopyq_lane_f64(a, b, c, d) \
4994 float64x2_t c_ = (c); \
4995 float64x2_t a_ = (a); \
4996 float64x2_t result; \
4997 __asm__ ("ins %0.d[%2], %3.d[%4]" \
4999 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5000 : /* No clobbers */); \
5004 #define vcopyq_lane_p8(a, b, c, d) \
5007 poly8x16_t c_ = (c); \
5008 poly8x16_t a_ = (a); \
5009 poly8x16_t result; \
5010 __asm__ ("ins %0.b[%2], %3.b[%4]" \
5012 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5013 : /* No clobbers */); \
5017 #define vcopyq_lane_p16(a, b, c, d) \
5020 poly16x8_t c_ = (c); \
5021 poly16x8_t a_ = (a); \
5022 poly16x8_t result; \
5023 __asm__ ("ins %0.h[%2], %3.h[%4]" \
5025 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5026 : /* No clobbers */); \
5030 #define vcopyq_lane_s8(a, b, c, d) \
5033 int8x16_t c_ = (c); \
5034 int8x16_t a_ = (a); \
5036 __asm__ ("ins %0.b[%2], %3.b[%4]" \
5038 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5039 : /* No clobbers */); \
5043 #define vcopyq_lane_s16(a, b, c, d) \
5046 int16x8_t c_ = (c); \
5047 int16x8_t a_ = (a); \
5049 __asm__ ("ins %0.h[%2], %3.h[%4]" \
5051 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5052 : /* No clobbers */); \
5056 #define vcopyq_lane_s32(a, b, c, d) \
5059 int32x4_t c_ = (c); \
5060 int32x4_t a_ = (a); \
5062 __asm__ ("ins %0.s[%2], %3.s[%4]" \
5064 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5065 : /* No clobbers */); \
5069 #define vcopyq_lane_s64(a, b, c, d) \
5072 int64x2_t c_ = (c); \
5073 int64x2_t a_ = (a); \
5075 __asm__ ("ins %0.d[%2], %3.d[%4]" \
5077 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5078 : /* No clobbers */); \
5082 #define vcopyq_lane_u8(a, b, c, d) \
5085 uint8x16_t c_ = (c); \
5086 uint8x16_t a_ = (a); \
5087 uint8x16_t result; \
5088 __asm__ ("ins %0.b[%2], %3.b[%4]" \
5090 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5091 : /* No clobbers */); \
5095 #define vcopyq_lane_u16(a, b, c, d) \
5098 uint16x8_t c_ = (c); \
5099 uint16x8_t a_ = (a); \
5100 uint16x8_t result; \
5101 __asm__ ("ins %0.h[%2], %3.h[%4]" \
5103 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5104 : /* No clobbers */); \
5108 #define vcopyq_lane_u32(a, b, c, d) \
5111 uint32x4_t c_ = (c); \
5112 uint32x4_t a_ = (a); \
5113 uint32x4_t result; \
5114 __asm__ ("ins %0.s[%2], %3.s[%4]" \
5116 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5117 : /* No clobbers */); \
5121 #define vcopyq_lane_u64(a, b, c, d) \
5124 uint64x2_t c_ = (c); \
5125 uint64x2_t a_ = (a); \
5126 uint64x2_t result; \
5127 __asm__ ("ins %0.d[%2], %3.d[%4]" \
5129 : "0"(a_), "i"(b), "w"(c_), "i"(d) \
5130 : /* No clobbers */); \
5134 /* vcvt_f16_f32 not supported */
5136 /* vcvt_f32_f16 not supported */
5138 /* vcvt_high_f16_f32 not supported */
5140 /* vcvt_high_f32_f16 not supported */
5142 static float32x2_t
vdup_n_f32 (float32_t
);
5144 #define vcvt_n_f32_s32(a, b) \
5147 int32x2_t a_ = (a); \
5148 float32x2_t result; \
5149 __asm__ ("scvtf %0.2s, %1.2s, #%2" \
5152 : /* No clobbers */); \
5156 #define vcvt_n_f32_u32(a, b) \
5159 uint32x2_t a_ = (a); \
5160 float32x2_t result; \
5161 __asm__ ("ucvtf %0.2s, %1.2s, #%2" \
5164 : /* No clobbers */); \
5168 #define vcvt_n_s32_f32(a, b) \
5171 float32x2_t a_ = (a); \
5173 __asm__ ("fcvtzs %0.2s, %1.2s, #%2" \
5176 : /* No clobbers */); \
5180 #define vcvt_n_u32_f32(a, b) \
5183 float32x2_t a_ = (a); \
5184 uint32x2_t result; \
5185 __asm__ ("fcvtzu %0.2s, %1.2s, #%2" \
5188 : /* No clobbers */); \
5192 #define vcvtd_n_f64_s64(a, b) \
5197 __asm__ ("scvtf %d0,%d1,%2" \
5200 : /* No clobbers */); \
5204 #define vcvtd_n_f64_u64(a, b) \
5207 uint64_t a_ = (a); \
5209 __asm__ ("ucvtf %d0,%d1,%2" \
5212 : /* No clobbers */); \
5216 #define vcvtd_n_s64_f64(a, b) \
5219 float64_t a_ = (a); \
5221 __asm__ ("fcvtzs %d0,%d1,%2" \
5224 : /* No clobbers */); \
5228 #define vcvtd_n_u64_f64(a, b) \
5231 float64_t a_ = (a); \
5233 __asm__ ("fcvtzu %d0,%d1,%2" \
5236 : /* No clobbers */); \
5240 #define vcvtq_n_f32_s32(a, b) \
5243 int32x4_t a_ = (a); \
5244 float32x4_t result; \
5245 __asm__ ("scvtf %0.4s, %1.4s, #%2" \
5248 : /* No clobbers */); \
5252 #define vcvtq_n_f32_u32(a, b) \
5255 uint32x4_t a_ = (a); \
5256 float32x4_t result; \
5257 __asm__ ("ucvtf %0.4s, %1.4s, #%2" \
5260 : /* No clobbers */); \
5264 #define vcvtq_n_f64_s64(a, b) \
5267 int64x2_t a_ = (a); \
5268 float64x2_t result; \
5269 __asm__ ("scvtf %0.2d, %1.2d, #%2" \
5272 : /* No clobbers */); \
5276 #define vcvtq_n_f64_u64(a, b) \
5279 uint64x2_t a_ = (a); \
5280 float64x2_t result; \
5281 __asm__ ("ucvtf %0.2d, %1.2d, #%2" \
5284 : /* No clobbers */); \
5288 #define vcvtq_n_s32_f32(a, b) \
5291 float32x4_t a_ = (a); \
5293 __asm__ ("fcvtzs %0.4s, %1.4s, #%2" \
5296 : /* No clobbers */); \
5300 #define vcvtq_n_s64_f64(a, b) \
5303 float64x2_t a_ = (a); \
5305 __asm__ ("fcvtzs %0.2d, %1.2d, #%2" \
5308 : /* No clobbers */); \
5312 #define vcvtq_n_u32_f32(a, b) \
5315 float32x4_t a_ = (a); \
5316 uint32x4_t result; \
5317 __asm__ ("fcvtzu %0.4s, %1.4s, #%2" \
5320 : /* No clobbers */); \
5324 #define vcvtq_n_u64_f64(a, b) \
5327 float64x2_t a_ = (a); \
5328 uint64x2_t result; \
5329 __asm__ ("fcvtzu %0.2d, %1.2d, #%2" \
5332 : /* No clobbers */); \
5336 #define vcvts_n_f32_s32(a, b) \
5341 __asm__ ("scvtf %s0,%s1,%2" \
5344 : /* No clobbers */); \
5348 #define vcvts_n_f32_u32(a, b) \
5351 uint32_t a_ = (a); \
5353 __asm__ ("ucvtf %s0,%s1,%2" \
5356 : /* No clobbers */); \
5360 #define vcvts_n_s32_f32(a, b) \
5363 float32_t a_ = (a); \
5365 __asm__ ("fcvtzs %s0,%s1,%2" \
5368 : /* No clobbers */); \
5372 #define vcvts_n_u32_f32(a, b) \
5375 float32_t a_ = (a); \
5377 __asm__ ("fcvtzu %s0,%s1,%2" \
5380 : /* No clobbers */); \
5384 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
5385 vcvtx_f32_f64 (float64x2_t a
)
5388 __asm__ ("fcvtxn %0.2s,%1.2d"
5391 : /* No clobbers */);
5395 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
5396 vcvtx_high_f32_f64 (float32x2_t a
, float64x2_t b
)
5399 __asm__ ("fcvtxn2 %0.4s,%1.2d"
5402 : /* No clobbers */);
5406 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
5407 vcvtxd_f32_f64 (float64_t a
)
5410 __asm__ ("fcvtxn %s0,%d1"
5413 : /* No clobbers */);
5417 #define vext_f32(a, b, c) \
5420 float32x2_t b_ = (b); \
5421 float32x2_t a_ = (a); \
5422 float32x2_t result; \
5423 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*4" \
5425 : "w"(a_), "w"(b_), "i"(c) \
5426 : /* No clobbers */); \
5430 #define vext_f64(a, b, c) \
5433 float64x1_t b_ = (b); \
5434 float64x1_t a_ = (a); \
5435 float64x1_t result; \
5436 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*8" \
5438 : "w"(a_), "w"(b_), "i"(c) \
5439 : /* No clobbers */); \
5443 #define vext_p8(a, b, c) \
5446 poly8x8_t b_ = (b); \
5447 poly8x8_t a_ = (a); \
5449 __asm__ ("ext %0.8b,%1.8b,%2.8b,%3" \
5451 : "w"(a_), "w"(b_), "i"(c) \
5452 : /* No clobbers */); \
5456 #define vext_p16(a, b, c) \
5459 poly16x4_t b_ = (b); \
5460 poly16x4_t a_ = (a); \
5461 poly16x4_t result; \
5462 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*2" \
5464 : "w"(a_), "w"(b_), "i"(c) \
5465 : /* No clobbers */); \
5469 #define vext_s8(a, b, c) \
5472 int8x8_t b_ = (b); \
5473 int8x8_t a_ = (a); \
5475 __asm__ ("ext %0.8b,%1.8b,%2.8b,%3" \
5477 : "w"(a_), "w"(b_), "i"(c) \
5478 : /* No clobbers */); \
5482 #define vext_s16(a, b, c) \
5485 int16x4_t b_ = (b); \
5486 int16x4_t a_ = (a); \
5488 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*2" \
5490 : "w"(a_), "w"(b_), "i"(c) \
5491 : /* No clobbers */); \
5495 #define vext_s32(a, b, c) \
5498 int32x2_t b_ = (b); \
5499 int32x2_t a_ = (a); \
5501 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*4" \
5503 : "w"(a_), "w"(b_), "i"(c) \
5504 : /* No clobbers */); \
5508 #define vext_s64(a, b, c) \
5511 int64x1_t b_ = (b); \
5512 int64x1_t a_ = (a); \
5514 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*8" \
5516 : "w"(a_), "w"(b_), "i"(c) \
5517 : /* No clobbers */); \
5521 #define vext_u8(a, b, c) \
5524 uint8x8_t b_ = (b); \
5525 uint8x8_t a_ = (a); \
5527 __asm__ ("ext %0.8b,%1.8b,%2.8b,%3" \
5529 : "w"(a_), "w"(b_), "i"(c) \
5530 : /* No clobbers */); \
5534 #define vext_u16(a, b, c) \
5537 uint16x4_t b_ = (b); \
5538 uint16x4_t a_ = (a); \
5539 uint16x4_t result; \
5540 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*2" \
5542 : "w"(a_), "w"(b_), "i"(c) \
5543 : /* No clobbers */); \
5547 #define vext_u32(a, b, c) \
5550 uint32x2_t b_ = (b); \
5551 uint32x2_t a_ = (a); \
5552 uint32x2_t result; \
5553 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*4" \
5555 : "w"(a_), "w"(b_), "i"(c) \
5556 : /* No clobbers */); \
5560 #define vext_u64(a, b, c) \
5563 uint64x1_t b_ = (b); \
5564 uint64x1_t a_ = (a); \
5565 uint64x1_t result; \
5566 __asm__ ("ext %0.8b, %1.8b, %2.8b, #%3*8" \
5568 : "w"(a_), "w"(b_), "i"(c) \
5569 : /* No clobbers */); \
5573 #define vextq_f32(a, b, c) \
5576 float32x4_t b_ = (b); \
5577 float32x4_t a_ = (a); \
5578 float32x4_t result; \
5579 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*4" \
5581 : "w"(a_), "w"(b_), "i"(c) \
5582 : /* No clobbers */); \
5586 #define vextq_f64(a, b, c) \
5589 float64x2_t b_ = (b); \
5590 float64x2_t a_ = (a); \
5591 float64x2_t result; \
5592 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*8" \
5594 : "w"(a_), "w"(b_), "i"(c) \
5595 : /* No clobbers */); \
5599 #define vextq_p8(a, b, c) \
5602 poly8x16_t b_ = (b); \
5603 poly8x16_t a_ = (a); \
5604 poly8x16_t result; \
5605 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3" \
5607 : "w"(a_), "w"(b_), "i"(c) \
5608 : /* No clobbers */); \
5612 #define vextq_p16(a, b, c) \
5615 poly16x8_t b_ = (b); \
5616 poly16x8_t a_ = (a); \
5617 poly16x8_t result; \
5618 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*2" \
5620 : "w"(a_), "w"(b_), "i"(c) \
5621 : /* No clobbers */); \
5625 #define vextq_s8(a, b, c) \
5628 int8x16_t b_ = (b); \
5629 int8x16_t a_ = (a); \
5631 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3" \
5633 : "w"(a_), "w"(b_), "i"(c) \
5634 : /* No clobbers */); \
5638 #define vextq_s16(a, b, c) \
5641 int16x8_t b_ = (b); \
5642 int16x8_t a_ = (a); \
5644 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*2" \
5646 : "w"(a_), "w"(b_), "i"(c) \
5647 : /* No clobbers */); \
5651 #define vextq_s32(a, b, c) \
5654 int32x4_t b_ = (b); \
5655 int32x4_t a_ = (a); \
5657 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*4" \
5659 : "w"(a_), "w"(b_), "i"(c) \
5660 : /* No clobbers */); \
5664 #define vextq_s64(a, b, c) \
5667 int64x2_t b_ = (b); \
5668 int64x2_t a_ = (a); \
5670 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*8" \
5672 : "w"(a_), "w"(b_), "i"(c) \
5673 : /* No clobbers */); \
5677 #define vextq_u8(a, b, c) \
5680 uint8x16_t b_ = (b); \
5681 uint8x16_t a_ = (a); \
5682 uint8x16_t result; \
5683 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3" \
5685 : "w"(a_), "w"(b_), "i"(c) \
5686 : /* No clobbers */); \
5690 #define vextq_u16(a, b, c) \
5693 uint16x8_t b_ = (b); \
5694 uint16x8_t a_ = (a); \
5695 uint16x8_t result; \
5696 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*2" \
5698 : "w"(a_), "w"(b_), "i"(c) \
5699 : /* No clobbers */); \
5703 #define vextq_u32(a, b, c) \
5706 uint32x4_t b_ = (b); \
5707 uint32x4_t a_ = (a); \
5708 uint32x4_t result; \
5709 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*4" \
5711 : "w"(a_), "w"(b_), "i"(c) \
5712 : /* No clobbers */); \
5716 #define vextq_u64(a, b, c) \
5719 uint64x2_t b_ = (b); \
5720 uint64x2_t a_ = (a); \
5721 uint64x2_t result; \
5722 __asm__ ("ext %0.16b, %1.16b, %2.16b, #%3*8" \
5724 : "w"(a_), "w"(b_), "i"(c) \
5725 : /* No clobbers */); \
5729 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
5730 vfma_f32 (float32x2_t a
, float32x2_t b
, float32x2_t c
)
5733 __asm__ ("fmla %0.2s,%2.2s,%3.2s"
5735 : "0"(a
), "w"(b
), "w"(c
)
5736 : /* No clobbers */);
5740 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
5741 vfmaq_f32 (float32x4_t a
, float32x4_t b
, float32x4_t c
)
5744 __asm__ ("fmla %0.4s,%2.4s,%3.4s"
5746 : "0"(a
), "w"(b
), "w"(c
)
5747 : /* No clobbers */);
5751 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
5752 vfmaq_f64 (float64x2_t a
, float64x2_t b
, float64x2_t c
)
5755 __asm__ ("fmla %0.2d,%2.2d,%3.2d"
5757 : "0"(a
), "w"(b
), "w"(c
)
5758 : /* No clobbers */);
5762 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
5763 vfma_n_f32 (float32x2_t a
, float32x2_t b
, float32_t c
)
5766 __asm__ ("fmla %0.2s, %2.2s, %3.s[0]"
5768 : "0"(a
), "w"(b
), "w"(c
)
5769 : /* No clobbers */);
5773 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
5774 vfmaq_n_f32 (float32x4_t a
, float32x4_t b
, float32_t c
)
5777 __asm__ ("fmla %0.4s, %2.4s, %3.s[0]"
5779 : "0"(a
), "w"(b
), "w"(c
)
5780 : /* No clobbers */);
5784 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
5785 vfmaq_n_f64 (float64x2_t a
, float64x2_t b
, float64_t c
)
5788 __asm__ ("fmla %0.2d, %2.2d, %3.d[0]"
5790 : "0"(a
), "w"(b
), "w"(c
)
5791 : /* No clobbers */);
5795 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
5796 vfms_f32 (float32x2_t a
, float32x2_t b
, float32x2_t c
)
5799 __asm__ ("fmls %0.2s,%2.2s,%3.2s"
5801 : "0"(a
), "w"(b
), "w"(c
)
5802 : /* No clobbers */);
5806 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
5807 vfmsq_f32 (float32x4_t a
, float32x4_t b
, float32x4_t c
)
5810 __asm__ ("fmls %0.4s,%2.4s,%3.4s"
5812 : "0"(a
), "w"(b
), "w"(c
)
5813 : /* No clobbers */);
5817 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
5818 vfmsq_f64 (float64x2_t a
, float64x2_t b
, float64x2_t c
)
5821 __asm__ ("fmls %0.2d,%2.2d,%3.2d"
5823 : "0"(a
), "w"(b
), "w"(c
)
5824 : /* No clobbers */);
5828 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
5829 vget_high_f32 (float32x4_t a
)
5832 __asm__ ("ins %0.d[0], %1.d[1]"
5835 : /* No clobbers */);
5839 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
5840 vget_high_f64 (float64x2_t a
)
5843 __asm__ ("ins %0.d[0], %1.d[1]"
5846 : /* No clobbers */);
5850 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
5851 vget_high_p8 (poly8x16_t a
)
5854 __asm__ ("ins %0.d[0], %1.d[1]"
5857 : /* No clobbers */);
5861 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
5862 vget_high_p16 (poly16x8_t a
)
5865 __asm__ ("ins %0.d[0], %1.d[1]"
5868 : /* No clobbers */);
5872 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
5873 vget_high_s8 (int8x16_t a
)
5876 __asm__ ("ins %0.d[0], %1.d[1]"
5879 : /* No clobbers */);
5883 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
5884 vget_high_s16 (int16x8_t a
)
5887 __asm__ ("ins %0.d[0], %1.d[1]"
5890 : /* No clobbers */);
5894 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
5895 vget_high_s32 (int32x4_t a
)
5898 __asm__ ("ins %0.d[0], %1.d[1]"
5901 : /* No clobbers */);
5905 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
5906 vget_high_s64 (int64x2_t a
)
5909 __asm__ ("ins %0.d[0], %1.d[1]"
5912 : /* No clobbers */);
5916 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
5917 vget_high_u8 (uint8x16_t a
)
5920 __asm__ ("ins %0.d[0], %1.d[1]"
5923 : /* No clobbers */);
5927 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
5928 vget_high_u16 (uint16x8_t a
)
5931 __asm__ ("ins %0.d[0], %1.d[1]"
5934 : /* No clobbers */);
5938 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
5939 vget_high_u32 (uint32x4_t a
)
5942 __asm__ ("ins %0.d[0], %1.d[1]"
5945 : /* No clobbers */);
5949 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
5950 vget_high_u64 (uint64x2_t a
)
5953 __asm__ ("ins %0.d[0], %1.d[1]"
5956 : /* No clobbers */);
5960 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
5961 vhsub_s8 (int8x8_t a
, int8x8_t b
)
5964 __asm__ ("shsub %0.8b, %1.8b, %2.8b"
5967 : /* No clobbers */);
5971 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
5972 vhsub_s16 (int16x4_t a
, int16x4_t b
)
5975 __asm__ ("shsub %0.4h, %1.4h, %2.4h"
5978 : /* No clobbers */);
5982 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
5983 vhsub_s32 (int32x2_t a
, int32x2_t b
)
5986 __asm__ ("shsub %0.2s, %1.2s, %2.2s"
5989 : /* No clobbers */);
5993 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
5994 vhsub_u8 (uint8x8_t a
, uint8x8_t b
)
5997 __asm__ ("uhsub %0.8b, %1.8b, %2.8b"
6000 : /* No clobbers */);
6004 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
6005 vhsub_u16 (uint16x4_t a
, uint16x4_t b
)
6008 __asm__ ("uhsub %0.4h, %1.4h, %2.4h"
6011 : /* No clobbers */);
6015 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
6016 vhsub_u32 (uint32x2_t a
, uint32x2_t b
)
6019 __asm__ ("uhsub %0.2s, %1.2s, %2.2s"
6022 : /* No clobbers */);
6026 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
6027 vhsubq_s8 (int8x16_t a
, int8x16_t b
)
6030 __asm__ ("shsub %0.16b, %1.16b, %2.16b"
6033 : /* No clobbers */);
6037 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
6038 vhsubq_s16 (int16x8_t a
, int16x8_t b
)
6041 __asm__ ("shsub %0.8h, %1.8h, %2.8h"
6044 : /* No clobbers */);
6048 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
6049 vhsubq_s32 (int32x4_t a
, int32x4_t b
)
6052 __asm__ ("shsub %0.4s, %1.4s, %2.4s"
6055 : /* No clobbers */);
6059 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
6060 vhsubq_u8 (uint8x16_t a
, uint8x16_t b
)
6063 __asm__ ("uhsub %0.16b, %1.16b, %2.16b"
6066 : /* No clobbers */);
6070 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
6071 vhsubq_u16 (uint16x8_t a
, uint16x8_t b
)
6074 __asm__ ("uhsub %0.8h, %1.8h, %2.8h"
6077 : /* No clobbers */);
6081 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
6082 vhsubq_u32 (uint32x4_t a
, uint32x4_t b
)
6085 __asm__ ("uhsub %0.4s, %1.4s, %2.4s"
6088 : /* No clobbers */);
6092 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
6093 vld1_dup_f32 (const float32_t
* a
)
6096 __asm__ ("ld1r {%0.2s}, %1"
6099 : /* No clobbers */);
6103 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
6104 vld1_dup_f64 (const float64_t
* a
)
6107 __asm__ ("ld1r {%0.1d}, %1"
6110 : /* No clobbers */);
6114 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
6115 vld1_dup_p8 (const poly8_t
* a
)
6118 __asm__ ("ld1r {%0.8b}, %1"
6121 : /* No clobbers */);
6125 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
6126 vld1_dup_p16 (const poly16_t
* a
)
6129 __asm__ ("ld1r {%0.4h}, %1"
6132 : /* No clobbers */);
6136 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
6137 vld1_dup_s8 (const int8_t * a
)
6140 __asm__ ("ld1r {%0.8b}, %1"
6143 : /* No clobbers */);
6147 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
6148 vld1_dup_s16 (const int16_t * a
)
6151 __asm__ ("ld1r {%0.4h}, %1"
6154 : /* No clobbers */);
6158 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
6159 vld1_dup_s32 (const int32_t * a
)
6162 __asm__ ("ld1r {%0.2s}, %1"
6165 : /* No clobbers */);
6169 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
6170 vld1_dup_s64 (const int64_t * a
)
6173 __asm__ ("ld1r {%0.1d}, %1"
6176 : /* No clobbers */);
6180 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
6181 vld1_dup_u8 (const uint8_t * a
)
6184 __asm__ ("ld1r {%0.8b}, %1"
6187 : /* No clobbers */);
6191 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
6192 vld1_dup_u16 (const uint16_t * a
)
6195 __asm__ ("ld1r {%0.4h}, %1"
6198 : /* No clobbers */);
6202 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
6203 vld1_dup_u32 (const uint32_t * a
)
6206 __asm__ ("ld1r {%0.2s}, %1"
6209 : /* No clobbers */);
6213 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
6214 vld1_dup_u64 (const uint64_t * a
)
6217 __asm__ ("ld1r {%0.1d}, %1"
6220 : /* No clobbers */);
6224 #define vld1_lane_f32(a, b, c) \
6227 float32x2_t b_ = (b); \
6228 const float32_t * a_ = (a); \
6229 float32x2_t result; \
6230 __asm__ ("ld1 {%0.s}[%1], %2" \
6232 : "i" (c), "Utv"(*a_), "0"(b_) \
6233 : /* No clobbers */); \
6237 #define vld1_lane_f64(a, b, c) \
6240 float64x1_t b_ = (b); \
6241 const float64_t * a_ = (a); \
6242 float64x1_t result; \
6243 __asm__ ("ld1 {%0.d}[%1], %2" \
6245 : "i" (c), "Utv"(*a_), "0"(b_) \
6246 : /* No clobbers */); \
6250 #define vld1_lane_p8(a, b, c) \
6253 poly8x8_t b_ = (b); \
6254 const poly8_t * a_ = (a); \
6256 __asm__ ("ld1 {%0.b}[%1], %2" \
6258 : "i" (c), "Utv"(*a_), "0"(b_) \
6259 : /* No clobbers */); \
6263 #define vld1_lane_p16(a, b, c) \
6266 poly16x4_t b_ = (b); \
6267 const poly16_t * a_ = (a); \
6268 poly16x4_t result; \
6269 __asm__ ("ld1 {%0.h}[%1], %2" \
6271 : "i" (c), "Utv"(*a_), "0"(b_) \
6272 : /* No clobbers */); \
6276 #define vld1_lane_s8(a, b, c) \
6279 int8x8_t b_ = (b); \
6280 const int8_t * a_ = (a); \
6282 __asm__ ("ld1 {%0.b}[%1], %2" \
6284 : "i" (c), "Utv"(*a_), "0"(b_) \
6285 : /* No clobbers */); \
6289 #define vld1_lane_s16(a, b, c) \
6292 int16x4_t b_ = (b); \
6293 const int16_t * a_ = (a); \
6295 __asm__ ("ld1 {%0.h}[%1], %2" \
6297 : "i" (c), "Utv"(*a_), "0"(b_) \
6298 : /* No clobbers */); \
6302 #define vld1_lane_s32(a, b, c) \
6305 int32x2_t b_ = (b); \
6306 const int32_t * a_ = (a); \
6308 __asm__ ("ld1 {%0.s}[%1], %2" \
6310 : "i" (c), "Utv"(*a_), "0"(b_) \
6311 : /* No clobbers */); \
6315 #define vld1_lane_s64(a, b, c) \
6318 int64x1_t b_ = (b); \
6319 const int64_t * a_ = (a); \
6321 __asm__ ("ld1 {%0.d}[%1], %2" \
6323 : "i" (c), "Utv"(*a_), "0"(b_) \
6324 : /* No clobbers */); \
6328 #define vld1_lane_u8(a, b, c) \
6331 uint8x8_t b_ = (b); \
6332 const uint8_t * a_ = (a); \
6334 __asm__ ("ld1 {%0.b}[%1], %2" \
6336 : "i" (c), "Utv"(*a_), "0"(b_) \
6337 : /* No clobbers */); \
6341 #define vld1_lane_u16(a, b, c) \
6344 uint16x4_t b_ = (b); \
6345 const uint16_t * a_ = (a); \
6346 uint16x4_t result; \
6347 __asm__ ("ld1 {%0.h}[%1], %2" \
6349 : "i" (c), "Utv"(*a_), "0"(b_) \
6350 : /* No clobbers */); \
6354 #define vld1_lane_u32(a, b, c) \
6357 uint32x2_t b_ = (b); \
6358 const uint32_t * a_ = (a); \
6359 uint32x2_t result; \
6360 __asm__ ("ld1 {%0.s}[%1], %2" \
6362 : "i" (c), "Utv"(*a_), "0"(b_) \
6363 : /* No clobbers */); \
6367 #define vld1_lane_u64(a, b, c) \
6370 uint64x1_t b_ = (b); \
6371 const uint64_t * a_ = (a); \
6372 uint64x1_t result; \
6373 __asm__ ("ld1 {%0.d}[%1], %2" \
6375 : "i" (c), "Utv"(*a_), "0"(b_) \
6376 : /* No clobbers */); \
6380 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
6381 vld1q_dup_f32 (const float32_t
* a
)
6384 __asm__ ("ld1r {%0.4s}, %1"
6387 : /* No clobbers */);
6391 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
6392 vld1q_dup_f64 (const float64_t
* a
)
6395 __asm__ ("ld1r {%0.2d}, %1"
6398 : /* No clobbers */);
6402 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
6403 vld1q_dup_p8 (const poly8_t
* a
)
6406 __asm__ ("ld1r {%0.16b}, %1"
6409 : /* No clobbers */);
6413 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
6414 vld1q_dup_p16 (const poly16_t
* a
)
6417 __asm__ ("ld1r {%0.8h}, %1"
6420 : /* No clobbers */);
6424 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
6425 vld1q_dup_s8 (const int8_t * a
)
6428 __asm__ ("ld1r {%0.16b}, %1"
6431 : /* No clobbers */);
6435 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
6436 vld1q_dup_s16 (const int16_t * a
)
6439 __asm__ ("ld1r {%0.8h}, %1"
6442 : /* No clobbers */);
6446 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
6447 vld1q_dup_s32 (const int32_t * a
)
6450 __asm__ ("ld1r {%0.4s}, %1"
6453 : /* No clobbers */);
6457 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
6458 vld1q_dup_s64 (const int64_t * a
)
6461 __asm__ ("ld1r {%0.2d}, %1"
6464 : /* No clobbers */);
6468 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
6469 vld1q_dup_u8 (const uint8_t * a
)
6472 __asm__ ("ld1r {%0.16b}, %1"
6475 : /* No clobbers */);
6479 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
6480 vld1q_dup_u16 (const uint16_t * a
)
6483 __asm__ ("ld1r {%0.8h}, %1"
6486 : /* No clobbers */);
6490 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
6491 vld1q_dup_u32 (const uint32_t * a
)
6494 __asm__ ("ld1r {%0.4s}, %1"
6497 : /* No clobbers */);
6501 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
6502 vld1q_dup_u64 (const uint64_t * a
)
6505 __asm__ ("ld1r {%0.2d}, %1"
6508 : /* No clobbers */);
6512 #define vld1q_lane_f32(a, b, c) \
6515 float32x4_t b_ = (b); \
6516 const float32_t * a_ = (a); \
6517 float32x4_t result; \
6518 __asm__ ("ld1 {%0.s}[%1], %2" \
6520 : "i"(c), "Utv"(*a_), "0"(b_) \
6521 : /* No clobbers */); \
6525 #define vld1q_lane_f64(a, b, c) \
6528 float64x2_t b_ = (b); \
6529 const float64_t * a_ = (a); \
6530 float64x2_t result; \
6531 __asm__ ("ld1 {%0.d}[%1], %2" \
6533 : "i"(c), "Utv"(*a_), "0"(b_) \
6534 : /* No clobbers */); \
6538 #define vld1q_lane_p8(a, b, c) \
6541 poly8x16_t b_ = (b); \
6542 const poly8_t * a_ = (a); \
6543 poly8x16_t result; \
6544 __asm__ ("ld1 {%0.b}[%1], %2" \
6546 : "i"(c), "Utv"(*a_), "0"(b_) \
6547 : /* No clobbers */); \
6551 #define vld1q_lane_p16(a, b, c) \
6554 poly16x8_t b_ = (b); \
6555 const poly16_t * a_ = (a); \
6556 poly16x8_t result; \
6557 __asm__ ("ld1 {%0.h}[%1], %2" \
6559 : "i"(c), "Utv"(*a_), "0"(b_) \
6560 : /* No clobbers */); \
6564 #define vld1q_lane_s8(a, b, c) \
6567 int8x16_t b_ = (b); \
6568 const int8_t * a_ = (a); \
6570 __asm__ ("ld1 {%0.b}[%1], %2" \
6572 : "i"(c), "Utv"(*a_), "0"(b_) \
6573 : /* No clobbers */); \
6577 #define vld1q_lane_s16(a, b, c) \
6580 int16x8_t b_ = (b); \
6581 const int16_t * a_ = (a); \
6583 __asm__ ("ld1 {%0.h}[%1], %2" \
6585 : "i"(c), "Utv"(*a_), "0"(b_) \
6586 : /* No clobbers */); \
6590 #define vld1q_lane_s32(a, b, c) \
6593 int32x4_t b_ = (b); \
6594 const int32_t * a_ = (a); \
6596 __asm__ ("ld1 {%0.s}[%1], %2" \
6598 : "i"(c), "Utv"(*a_), "0"(b_) \
6599 : /* No clobbers */); \
6603 #define vld1q_lane_s64(a, b, c) \
6606 int64x2_t b_ = (b); \
6607 const int64_t * a_ = (a); \
6609 __asm__ ("ld1 {%0.d}[%1], %2" \
6611 : "i"(c), "Utv"(*a_), "0"(b_) \
6612 : /* No clobbers */); \
6616 #define vld1q_lane_u8(a, b, c) \
6619 uint8x16_t b_ = (b); \
6620 const uint8_t * a_ = (a); \
6621 uint8x16_t result; \
6622 __asm__ ("ld1 {%0.b}[%1], %2" \
6624 : "i"(c), "Utv"(*a_), "0"(b_) \
6625 : /* No clobbers */); \
6629 #define vld1q_lane_u16(a, b, c) \
6632 uint16x8_t b_ = (b); \
6633 const uint16_t * a_ = (a); \
6634 uint16x8_t result; \
6635 __asm__ ("ld1 {%0.h}[%1], %2" \
6637 : "i"(c), "Utv"(*a_), "0"(b_) \
6638 : /* No clobbers */); \
6642 #define vld1q_lane_u32(a, b, c) \
6645 uint32x4_t b_ = (b); \
6646 const uint32_t * a_ = (a); \
6647 uint32x4_t result; \
6648 __asm__ ("ld1 {%0.s}[%1], %2" \
6650 : "i"(c), "Utv"(*a_), "0"(b_) \
6651 : /* No clobbers */); \
6655 #define vld1q_lane_u64(a, b, c) \
6658 uint64x2_t b_ = (b); \
6659 const uint64_t * a_ = (a); \
6660 uint64x2_t result; \
6661 __asm__ ("ld1 {%0.d}[%1], %2" \
6663 : "i"(c), "Utv"(*a_), "0"(b_) \
6664 : /* No clobbers */); \
6668 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
6669 vmla_n_f32 (float32x2_t a
, float32x2_t b
, float32_t c
)
6673 __asm__ ("fmul %1.2s, %3.2s, %4.s[0]; fadd %0.2s, %0.2s, %1.2s"
6674 : "=w"(result
), "=w"(t1
)
6675 : "0"(a
), "w"(b
), "w"(c
)
6676 : /* No clobbers */);
6680 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
6681 vmla_n_s16 (int16x4_t a
, int16x4_t b
, int16_t c
)
6684 __asm__ ("mla %0.4h,%2.4h,%3.h[0]"
6686 : "0"(a
), "w"(b
), "x"(c
)
6687 : /* No clobbers */);
6691 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
6692 vmla_n_s32 (int32x2_t a
, int32x2_t b
, int32_t c
)
6695 __asm__ ("mla %0.2s,%2.2s,%3.s[0]"
6697 : "0"(a
), "w"(b
), "w"(c
)
6698 : /* No clobbers */);
6702 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
6703 vmla_n_u16 (uint16x4_t a
, uint16x4_t b
, uint16_t c
)
6706 __asm__ ("mla %0.4h,%2.4h,%3.h[0]"
6708 : "0"(a
), "w"(b
), "x"(c
)
6709 : /* No clobbers */);
6713 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
6714 vmla_n_u32 (uint32x2_t a
, uint32x2_t b
, uint32_t c
)
6717 __asm__ ("mla %0.2s,%2.2s,%3.s[0]"
6719 : "0"(a
), "w"(b
), "w"(c
)
6720 : /* No clobbers */);
6724 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
6725 vmla_s8 (int8x8_t a
, int8x8_t b
, int8x8_t c
)
6728 __asm__ ("mla %0.8b, %2.8b, %3.8b"
6730 : "0"(a
), "w"(b
), "w"(c
)
6731 : /* No clobbers */);
6735 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
6736 vmla_s16 (int16x4_t a
, int16x4_t b
, int16x4_t c
)
6739 __asm__ ("mla %0.4h, %2.4h, %3.4h"
6741 : "0"(a
), "w"(b
), "w"(c
)
6742 : /* No clobbers */);
6746 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
6747 vmla_s32 (int32x2_t a
, int32x2_t b
, int32x2_t c
)
6750 __asm__ ("mla %0.2s, %2.2s, %3.2s"
6752 : "0"(a
), "w"(b
), "w"(c
)
6753 : /* No clobbers */);
6757 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
6758 vmla_u8 (uint8x8_t a
, uint8x8_t b
, uint8x8_t c
)
6761 __asm__ ("mla %0.8b, %2.8b, %3.8b"
6763 : "0"(a
), "w"(b
), "w"(c
)
6764 : /* No clobbers */);
6768 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
6769 vmla_u16 (uint16x4_t a
, uint16x4_t b
, uint16x4_t c
)
6772 __asm__ ("mla %0.4h, %2.4h, %3.4h"
6774 : "0"(a
), "w"(b
), "w"(c
)
6775 : /* No clobbers */);
6779 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
6780 vmla_u32 (uint32x2_t a
, uint32x2_t b
, uint32x2_t c
)
6783 __asm__ ("mla %0.2s, %2.2s, %3.2s"
6785 : "0"(a
), "w"(b
), "w"(c
)
6786 : /* No clobbers */);
6790 #define vmlal_high_lane_s16(a, b, c, d) \
6793 int16x8_t c_ = (c); \
6794 int16x8_t b_ = (b); \
6795 int32x4_t a_ = (a); \
6797 __asm__ ("smlal2 %0.4s, %2.8h, %3.h[%4]" \
6799 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
6800 : /* No clobbers */); \
6804 #define vmlal_high_lane_s32(a, b, c, d) \
6807 int32x4_t c_ = (c); \
6808 int32x4_t b_ = (b); \
6809 int64x2_t a_ = (a); \
6811 __asm__ ("smlal2 %0.2d, %2.4s, %3.s[%4]" \
6813 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
6814 : /* No clobbers */); \
6818 #define vmlal_high_lane_u16(a, b, c, d) \
6821 uint16x8_t c_ = (c); \
6822 uint16x8_t b_ = (b); \
6823 uint32x4_t a_ = (a); \
6824 uint32x4_t result; \
6825 __asm__ ("umlal2 %0.4s, %2.8h, %3.h[%4]" \
6827 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
6828 : /* No clobbers */); \
6832 #define vmlal_high_lane_u32(a, b, c, d) \
6835 uint32x4_t c_ = (c); \
6836 uint32x4_t b_ = (b); \
6837 uint64x2_t a_ = (a); \
6838 uint64x2_t result; \
6839 __asm__ ("umlal2 %0.2d, %2.4s, %3.s[%4]" \
6841 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
6842 : /* No clobbers */); \
6846 #define vmlal_high_laneq_s16(a, b, c, d) \
6849 int16x8_t c_ = (c); \
6850 int16x8_t b_ = (b); \
6851 int32x4_t a_ = (a); \
6853 __asm__ ("smlal2 %0.4s, %2.8h, %3.h[%4]" \
6855 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
6856 : /* No clobbers */); \
6860 #define vmlal_high_laneq_s32(a, b, c, d) \
6863 int32x4_t c_ = (c); \
6864 int32x4_t b_ = (b); \
6865 int64x2_t a_ = (a); \
6867 __asm__ ("smlal2 %0.2d, %2.4s, %3.s[%4]" \
6869 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
6870 : /* No clobbers */); \
6874 #define vmlal_high_laneq_u16(a, b, c, d) \
6877 uint16x8_t c_ = (c); \
6878 uint16x8_t b_ = (b); \
6879 uint32x4_t a_ = (a); \
6880 uint32x4_t result; \
6881 __asm__ ("umlal2 %0.4s, %2.8h, %3.h[%4]" \
6883 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
6884 : /* No clobbers */); \
6888 #define vmlal_high_laneq_u32(a, b, c, d) \
6891 uint32x4_t c_ = (c); \
6892 uint32x4_t b_ = (b); \
6893 uint64x2_t a_ = (a); \
6894 uint64x2_t result; \
6895 __asm__ ("umlal2 %0.2d, %2.4s, %3.s[%4]" \
6897 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
6898 : /* No clobbers */); \
6902 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
6903 vmlal_high_n_s16 (int32x4_t a
, int16x8_t b
, int16_t c
)
6906 __asm__ ("smlal2 %0.4s,%2.8h,%3.h[0]"
6908 : "0"(a
), "w"(b
), "x"(c
)
6909 : /* No clobbers */);
6913 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
6914 vmlal_high_n_s32 (int64x2_t a
, int32x4_t b
, int32_t c
)
6917 __asm__ ("smlal2 %0.2d,%2.4s,%3.s[0]"
6919 : "0"(a
), "w"(b
), "w"(c
)
6920 : /* No clobbers */);
6924 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
6925 vmlal_high_n_u16 (uint32x4_t a
, uint16x8_t b
, uint16_t c
)
6928 __asm__ ("umlal2 %0.4s,%2.8h,%3.h[0]"
6930 : "0"(a
), "w"(b
), "x"(c
)
6931 : /* No clobbers */);
6935 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
6936 vmlal_high_n_u32 (uint64x2_t a
, uint32x4_t b
, uint32_t c
)
6939 __asm__ ("umlal2 %0.2d,%2.4s,%3.s[0]"
6941 : "0"(a
), "w"(b
), "w"(c
)
6942 : /* No clobbers */);
6946 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
6947 vmlal_high_s8 (int16x8_t a
, int8x16_t b
, int8x16_t c
)
6950 __asm__ ("smlal2 %0.8h,%2.16b,%3.16b"
6952 : "0"(a
), "w"(b
), "w"(c
)
6953 : /* No clobbers */);
6957 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
6958 vmlal_high_s16 (int32x4_t a
, int16x8_t b
, int16x8_t c
)
6961 __asm__ ("smlal2 %0.4s,%2.8h,%3.8h"
6963 : "0"(a
), "w"(b
), "w"(c
)
6964 : /* No clobbers */);
6968 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
6969 vmlal_high_s32 (int64x2_t a
, int32x4_t b
, int32x4_t c
)
6972 __asm__ ("smlal2 %0.2d,%2.4s,%3.4s"
6974 : "0"(a
), "w"(b
), "w"(c
)
6975 : /* No clobbers */);
6979 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
6980 vmlal_high_u8 (uint16x8_t a
, uint8x16_t b
, uint8x16_t c
)
6983 __asm__ ("umlal2 %0.8h,%2.16b,%3.16b"
6985 : "0"(a
), "w"(b
), "w"(c
)
6986 : /* No clobbers */);
6990 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
6991 vmlal_high_u16 (uint32x4_t a
, uint16x8_t b
, uint16x8_t c
)
6994 __asm__ ("umlal2 %0.4s,%2.8h,%3.8h"
6996 : "0"(a
), "w"(b
), "w"(c
)
6997 : /* No clobbers */);
7001 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
7002 vmlal_high_u32 (uint64x2_t a
, uint32x4_t b
, uint32x4_t c
)
7005 __asm__ ("umlal2 %0.2d,%2.4s,%3.4s"
7007 : "0"(a
), "w"(b
), "w"(c
)
7008 : /* No clobbers */);
7012 #define vmlal_lane_s16(a, b, c, d) \
7015 int16x4_t c_ = (c); \
7016 int16x4_t b_ = (b); \
7017 int32x4_t a_ = (a); \
7019 __asm__ ("smlal %0.4s,%2.4h,%3.h[%4]" \
7021 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7022 : /* No clobbers */); \
7026 #define vmlal_lane_s32(a, b, c, d) \
7029 int32x2_t c_ = (c); \
7030 int32x2_t b_ = (b); \
7031 int64x2_t a_ = (a); \
7033 __asm__ ("smlal %0.2d,%2.2s,%3.s[%4]" \
7035 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7036 : /* No clobbers */); \
7040 #define vmlal_lane_u16(a, b, c, d) \
7043 uint16x4_t c_ = (c); \
7044 uint16x4_t b_ = (b); \
7045 uint32x4_t a_ = (a); \
7046 uint32x4_t result; \
7047 __asm__ ("umlal %0.4s,%2.4h,%3.h[%4]" \
7049 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7050 : /* No clobbers */); \
7054 #define vmlal_lane_u32(a, b, c, d) \
7057 uint32x2_t c_ = (c); \
7058 uint32x2_t b_ = (b); \
7059 uint64x2_t a_ = (a); \
7060 uint64x2_t result; \
7061 __asm__ ("umlal %0.2d, %2.2s, %3.s[%4]" \
7063 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7064 : /* No clobbers */); \
7068 #define vmlal_laneq_s16(a, b, c, d) \
7071 int16x8_t c_ = (c); \
7072 int16x4_t b_ = (b); \
7073 int32x4_t a_ = (a); \
7075 __asm__ ("smlal %0.4s, %2.4h, %3.h[%4]" \
7077 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7078 : /* No clobbers */); \
7082 #define vmlal_laneq_s32(a, b, c, d) \
7085 int32x4_t c_ = (c); \
7086 int32x2_t b_ = (b); \
7087 int64x2_t a_ = (a); \
7089 __asm__ ("smlal %0.2d, %2.2s, %3.s[%4]" \
7091 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7092 : /* No clobbers */); \
7096 #define vmlal_laneq_u16(a, b, c, d) \
7099 uint16x8_t c_ = (c); \
7100 uint16x4_t b_ = (b); \
7101 uint32x4_t a_ = (a); \
7102 uint32x4_t result; \
7103 __asm__ ("umlal %0.4s, %2.4h, %3.h[%4]" \
7105 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7106 : /* No clobbers */); \
7110 #define vmlal_laneq_u32(a, b, c, d) \
7113 uint32x4_t c_ = (c); \
7114 uint32x2_t b_ = (b); \
7115 uint64x2_t a_ = (a); \
7116 uint64x2_t result; \
7117 __asm__ ("umlal %0.2d, %2.2s, %3.s[%4]" \
7119 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7120 : /* No clobbers */); \
7124 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
7125 vmlal_n_s16 (int32x4_t a
, int16x4_t b
, int16_t c
)
7128 __asm__ ("smlal %0.4s,%2.4h,%3.h[0]"
7130 : "0"(a
), "w"(b
), "x"(c
)
7131 : /* No clobbers */);
7135 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
7136 vmlal_n_s32 (int64x2_t a
, int32x2_t b
, int32_t c
)
7139 __asm__ ("smlal %0.2d,%2.2s,%3.s[0]"
7141 : "0"(a
), "w"(b
), "w"(c
)
7142 : /* No clobbers */);
7146 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
7147 vmlal_n_u16 (uint32x4_t a
, uint16x4_t b
, uint16_t c
)
7150 __asm__ ("umlal %0.4s,%2.4h,%3.h[0]"
7152 : "0"(a
), "w"(b
), "x"(c
)
7153 : /* No clobbers */);
7157 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
7158 vmlal_n_u32 (uint64x2_t a
, uint32x2_t b
, uint32_t c
)
7161 __asm__ ("umlal %0.2d,%2.2s,%3.s[0]"
7163 : "0"(a
), "w"(b
), "w"(c
)
7164 : /* No clobbers */);
7168 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
7169 vmlal_s8 (int16x8_t a
, int8x8_t b
, int8x8_t c
)
7172 __asm__ ("smlal %0.8h,%2.8b,%3.8b"
7174 : "0"(a
), "w"(b
), "w"(c
)
7175 : /* No clobbers */);
7179 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
7180 vmlal_s16 (int32x4_t a
, int16x4_t b
, int16x4_t c
)
7183 __asm__ ("smlal %0.4s,%2.4h,%3.4h"
7185 : "0"(a
), "w"(b
), "w"(c
)
7186 : /* No clobbers */);
7190 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
7191 vmlal_s32 (int64x2_t a
, int32x2_t b
, int32x2_t c
)
7194 __asm__ ("smlal %0.2d,%2.2s,%3.2s"
7196 : "0"(a
), "w"(b
), "w"(c
)
7197 : /* No clobbers */);
7201 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
7202 vmlal_u8 (uint16x8_t a
, uint8x8_t b
, uint8x8_t c
)
7205 __asm__ ("umlal %0.8h,%2.8b,%3.8b"
7207 : "0"(a
), "w"(b
), "w"(c
)
7208 : /* No clobbers */);
7212 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
7213 vmlal_u16 (uint32x4_t a
, uint16x4_t b
, uint16x4_t c
)
7216 __asm__ ("umlal %0.4s,%2.4h,%3.4h"
7218 : "0"(a
), "w"(b
), "w"(c
)
7219 : /* No clobbers */);
7223 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
7224 vmlal_u32 (uint64x2_t a
, uint32x2_t b
, uint32x2_t c
)
7227 __asm__ ("umlal %0.2d,%2.2s,%3.2s"
7229 : "0"(a
), "w"(b
), "w"(c
)
7230 : /* No clobbers */);
7234 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
7235 vmlaq_n_f32 (float32x4_t a
, float32x4_t b
, float32_t c
)
7239 __asm__ ("fmul %1.4s, %3.4s, %4.s[0]; fadd %0.4s, %0.4s, %1.4s"
7240 : "=w"(result
), "=w"(t1
)
7241 : "0"(a
), "w"(b
), "w"(c
)
7242 : /* No clobbers */);
7246 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
7247 vmlaq_n_f64 (float64x2_t a
, float64x2_t b
, float64_t c
)
7251 __asm__ ("fmul %1.2d, %3.2d, %4.d[0]; fadd %0.2d, %0.2d, %1.2d"
7252 : "=w"(result
), "=w"(t1
)
7253 : "0"(a
), "w"(b
), "w"(c
)
7254 : /* No clobbers */);
7258 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
7259 vmlaq_n_s16 (int16x8_t a
, int16x8_t b
, int16_t c
)
7262 __asm__ ("mla %0.8h,%2.8h,%3.h[0]"
7264 : "0"(a
), "w"(b
), "x"(c
)
7265 : /* No clobbers */);
7269 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
7270 vmlaq_n_s32 (int32x4_t a
, int32x4_t b
, int32_t c
)
7273 __asm__ ("mla %0.4s,%2.4s,%3.s[0]"
7275 : "0"(a
), "w"(b
), "w"(c
)
7276 : /* No clobbers */);
7280 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
7281 vmlaq_n_u16 (uint16x8_t a
, uint16x8_t b
, uint16_t c
)
7284 __asm__ ("mla %0.8h,%2.8h,%3.h[0]"
7286 : "0"(a
), "w"(b
), "x"(c
)
7287 : /* No clobbers */);
7291 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
7292 vmlaq_n_u32 (uint32x4_t a
, uint32x4_t b
, uint32_t c
)
7295 __asm__ ("mla %0.4s,%2.4s,%3.s[0]"
7297 : "0"(a
), "w"(b
), "w"(c
)
7298 : /* No clobbers */);
7302 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
7303 vmlaq_s8 (int8x16_t a
, int8x16_t b
, int8x16_t c
)
7306 __asm__ ("mla %0.16b, %2.16b, %3.16b"
7308 : "0"(a
), "w"(b
), "w"(c
)
7309 : /* No clobbers */);
7313 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
7314 vmlaq_s16 (int16x8_t a
, int16x8_t b
, int16x8_t c
)
7317 __asm__ ("mla %0.8h, %2.8h, %3.8h"
7319 : "0"(a
), "w"(b
), "w"(c
)
7320 : /* No clobbers */);
7324 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
7325 vmlaq_s32 (int32x4_t a
, int32x4_t b
, int32x4_t c
)
7328 __asm__ ("mla %0.4s, %2.4s, %3.4s"
7330 : "0"(a
), "w"(b
), "w"(c
)
7331 : /* No clobbers */);
7335 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
7336 vmlaq_u8 (uint8x16_t a
, uint8x16_t b
, uint8x16_t c
)
7339 __asm__ ("mla %0.16b, %2.16b, %3.16b"
7341 : "0"(a
), "w"(b
), "w"(c
)
7342 : /* No clobbers */);
7346 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
7347 vmlaq_u16 (uint16x8_t a
, uint16x8_t b
, uint16x8_t c
)
7350 __asm__ ("mla %0.8h, %2.8h, %3.8h"
7352 : "0"(a
), "w"(b
), "w"(c
)
7353 : /* No clobbers */);
7357 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
7358 vmlaq_u32 (uint32x4_t a
, uint32x4_t b
, uint32x4_t c
)
7361 __asm__ ("mla %0.4s, %2.4s, %3.4s"
7363 : "0"(a
), "w"(b
), "w"(c
)
7364 : /* No clobbers */);
7368 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
7369 vmls_n_f32 (float32x2_t a
, float32x2_t b
, float32_t c
)
7373 __asm__ ("fmul %1.2s, %3.2s, %4.s[0]; fsub %0.2s, %0.2s, %1.2s"
7374 : "=w"(result
), "=w"(t1
)
7375 : "0"(a
), "w"(b
), "w"(c
)
7376 : /* No clobbers */);
7380 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
7381 vmls_n_s16 (int16x4_t a
, int16x4_t b
, int16_t c
)
7384 __asm__ ("mls %0.4h, %2.4h, %3.h[0]"
7386 : "0"(a
), "w"(b
), "x"(c
)
7387 : /* No clobbers */);
7391 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
7392 vmls_n_s32 (int32x2_t a
, int32x2_t b
, int32_t c
)
7395 __asm__ ("mls %0.2s, %2.2s, %3.s[0]"
7397 : "0"(a
), "w"(b
), "w"(c
)
7398 : /* No clobbers */);
7402 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
7403 vmls_n_u16 (uint16x4_t a
, uint16x4_t b
, uint16_t c
)
7406 __asm__ ("mls %0.4h, %2.4h, %3.h[0]"
7408 : "0"(a
), "w"(b
), "x"(c
)
7409 : /* No clobbers */);
7413 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
7414 vmls_n_u32 (uint32x2_t a
, uint32x2_t b
, uint32_t c
)
7417 __asm__ ("mls %0.2s, %2.2s, %3.s[0]"
7419 : "0"(a
), "w"(b
), "w"(c
)
7420 : /* No clobbers */);
7424 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
7425 vmls_s8 (int8x8_t a
, int8x8_t b
, int8x8_t c
)
7428 __asm__ ("mls %0.8b,%2.8b,%3.8b"
7430 : "0"(a
), "w"(b
), "w"(c
)
7431 : /* No clobbers */);
7435 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
7436 vmls_s16 (int16x4_t a
, int16x4_t b
, int16x4_t c
)
7439 __asm__ ("mls %0.4h,%2.4h,%3.4h"
7441 : "0"(a
), "w"(b
), "w"(c
)
7442 : /* No clobbers */);
7446 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
7447 vmls_s32 (int32x2_t a
, int32x2_t b
, int32x2_t c
)
7450 __asm__ ("mls %0.2s,%2.2s,%3.2s"
7452 : "0"(a
), "w"(b
), "w"(c
)
7453 : /* No clobbers */);
7457 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
7458 vmls_u8 (uint8x8_t a
, uint8x8_t b
, uint8x8_t c
)
7461 __asm__ ("mls %0.8b,%2.8b,%3.8b"
7463 : "0"(a
), "w"(b
), "w"(c
)
7464 : /* No clobbers */);
7468 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
7469 vmls_u16 (uint16x4_t a
, uint16x4_t b
, uint16x4_t c
)
7472 __asm__ ("mls %0.4h,%2.4h,%3.4h"
7474 : "0"(a
), "w"(b
), "w"(c
)
7475 : /* No clobbers */);
7479 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
7480 vmls_u32 (uint32x2_t a
, uint32x2_t b
, uint32x2_t c
)
7483 __asm__ ("mls %0.2s,%2.2s,%3.2s"
7485 : "0"(a
), "w"(b
), "w"(c
)
7486 : /* No clobbers */);
7490 #define vmlsl_high_lane_s16(a, b, c, d) \
7493 int16x8_t c_ = (c); \
7494 int16x8_t b_ = (b); \
7495 int32x4_t a_ = (a); \
7497 __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[%4]" \
7499 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7500 : /* No clobbers */); \
7504 #define vmlsl_high_lane_s32(a, b, c, d) \
7507 int32x4_t c_ = (c); \
7508 int32x4_t b_ = (b); \
7509 int64x2_t a_ = (a); \
7511 __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[%4]" \
7513 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7514 : /* No clobbers */); \
7518 #define vmlsl_high_lane_u16(a, b, c, d) \
7521 uint16x8_t c_ = (c); \
7522 uint16x8_t b_ = (b); \
7523 uint32x4_t a_ = (a); \
7524 uint32x4_t result; \
7525 __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[%4]" \
7527 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7528 : /* No clobbers */); \
7532 #define vmlsl_high_lane_u32(a, b, c, d) \
7535 uint32x4_t c_ = (c); \
7536 uint32x4_t b_ = (b); \
7537 uint64x2_t a_ = (a); \
7538 uint64x2_t result; \
7539 __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[%4]" \
7541 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7542 : /* No clobbers */); \
7546 #define vmlsl_high_laneq_s16(a, b, c, d) \
7549 int16x8_t c_ = (c); \
7550 int16x8_t b_ = (b); \
7551 int32x4_t a_ = (a); \
7553 __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[%4]" \
7555 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7556 : /* No clobbers */); \
7560 #define vmlsl_high_laneq_s32(a, b, c, d) \
7563 int32x4_t c_ = (c); \
7564 int32x4_t b_ = (b); \
7565 int64x2_t a_ = (a); \
7567 __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[%4]" \
7569 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7570 : /* No clobbers */); \
7574 #define vmlsl_high_laneq_u16(a, b, c, d) \
7577 uint16x8_t c_ = (c); \
7578 uint16x8_t b_ = (b); \
7579 uint32x4_t a_ = (a); \
7580 uint32x4_t result; \
7581 __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[%4]" \
7583 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7584 : /* No clobbers */); \
7588 #define vmlsl_high_laneq_u32(a, b, c, d) \
7591 uint32x4_t c_ = (c); \
7592 uint32x4_t b_ = (b); \
7593 uint64x2_t a_ = (a); \
7594 uint64x2_t result; \
7595 __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[%4]" \
7597 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7598 : /* No clobbers */); \
7602 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
7603 vmlsl_high_n_s16 (int32x4_t a
, int16x8_t b
, int16_t c
)
7606 __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[0]"
7608 : "0"(a
), "w"(b
), "x"(c
)
7609 : /* No clobbers */);
7613 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
7614 vmlsl_high_n_s32 (int64x2_t a
, int32x4_t b
, int32_t c
)
7617 __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[0]"
7619 : "0"(a
), "w"(b
), "w"(c
)
7620 : /* No clobbers */);
7624 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
7625 vmlsl_high_n_u16 (uint32x4_t a
, uint16x8_t b
, uint16_t c
)
7628 __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[0]"
7630 : "0"(a
), "w"(b
), "x"(c
)
7631 : /* No clobbers */);
7635 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
7636 vmlsl_high_n_u32 (uint64x2_t a
, uint32x4_t b
, uint32_t c
)
7639 __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[0]"
7641 : "0"(a
), "w"(b
), "w"(c
)
7642 : /* No clobbers */);
7646 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
7647 vmlsl_high_s8 (int16x8_t a
, int8x16_t b
, int8x16_t c
)
7650 __asm__ ("smlsl2 %0.8h,%2.16b,%3.16b"
7652 : "0"(a
), "w"(b
), "w"(c
)
7653 : /* No clobbers */);
7657 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
7658 vmlsl_high_s16 (int32x4_t a
, int16x8_t b
, int16x8_t c
)
7661 __asm__ ("smlsl2 %0.4s,%2.8h,%3.8h"
7663 : "0"(a
), "w"(b
), "w"(c
)
7664 : /* No clobbers */);
7668 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
7669 vmlsl_high_s32 (int64x2_t a
, int32x4_t b
, int32x4_t c
)
7672 __asm__ ("smlsl2 %0.2d,%2.4s,%3.4s"
7674 : "0"(a
), "w"(b
), "w"(c
)
7675 : /* No clobbers */);
7679 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
7680 vmlsl_high_u8 (uint16x8_t a
, uint8x16_t b
, uint8x16_t c
)
7683 __asm__ ("umlsl2 %0.8h,%2.16b,%3.16b"
7685 : "0"(a
), "w"(b
), "w"(c
)
7686 : /* No clobbers */);
7690 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
7691 vmlsl_high_u16 (uint32x4_t a
, uint16x8_t b
, uint16x8_t c
)
7694 __asm__ ("umlsl2 %0.4s,%2.8h,%3.8h"
7696 : "0"(a
), "w"(b
), "w"(c
)
7697 : /* No clobbers */);
7701 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
7702 vmlsl_high_u32 (uint64x2_t a
, uint32x4_t b
, uint32x4_t c
)
7705 __asm__ ("umlsl2 %0.2d,%2.4s,%3.4s"
7707 : "0"(a
), "w"(b
), "w"(c
)
7708 : /* No clobbers */);
7712 #define vmlsl_lane_s16(a, b, c, d) \
7715 int16x4_t c_ = (c); \
7716 int16x4_t b_ = (b); \
7717 int32x4_t a_ = (a); \
7719 __asm__ ("smlsl %0.4s, %2.4h, %3.h[%4]" \
7721 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7722 : /* No clobbers */); \
7726 #define vmlsl_lane_s32(a, b, c, d) \
7729 int32x2_t c_ = (c); \
7730 int32x2_t b_ = (b); \
7731 int64x2_t a_ = (a); \
7733 __asm__ ("smlsl %0.2d, %2.2s, %3.s[%4]" \
7735 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7736 : /* No clobbers */); \
7740 #define vmlsl_lane_u16(a, b, c, d) \
7743 uint16x4_t c_ = (c); \
7744 uint16x4_t b_ = (b); \
7745 uint32x4_t a_ = (a); \
7746 uint32x4_t result; \
7747 __asm__ ("umlsl %0.4s, %2.4h, %3.h[%4]" \
7749 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7750 : /* No clobbers */); \
7754 #define vmlsl_lane_u32(a, b, c, d) \
7757 uint32x2_t c_ = (c); \
7758 uint32x2_t b_ = (b); \
7759 uint64x2_t a_ = (a); \
7760 uint64x2_t result; \
7761 __asm__ ("umlsl %0.2d, %2.2s, %3.s[%4]" \
7763 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7764 : /* No clobbers */); \
7768 #define vmlsl_laneq_s16(a, b, c, d) \
7771 int16x8_t c_ = (c); \
7772 int16x4_t b_ = (b); \
7773 int32x4_t a_ = (a); \
7775 __asm__ ("smlsl %0.4s, %2.4h, %3.h[%4]" \
7777 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7778 : /* No clobbers */); \
7782 #define vmlsl_laneq_s32(a, b, c, d) \
7785 int32x4_t c_ = (c); \
7786 int32x2_t b_ = (b); \
7787 int64x2_t a_ = (a); \
7789 __asm__ ("smlsl %0.2d, %2.2s, %3.s[%4]" \
7791 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7792 : /* No clobbers */); \
7796 #define vmlsl_laneq_u16(a, b, c, d) \
7799 uint16x8_t c_ = (c); \
7800 uint16x4_t b_ = (b); \
7801 uint32x4_t a_ = (a); \
7802 uint32x4_t result; \
7803 __asm__ ("umlsl %0.4s, %2.4h, %3.h[%4]" \
7805 : "0"(a_), "w"(b_), "x"(c_), "i"(d) \
7806 : /* No clobbers */); \
7810 #define vmlsl_laneq_u32(a, b, c, d) \
7813 uint32x4_t c_ = (c); \
7814 uint32x2_t b_ = (b); \
7815 uint64x2_t a_ = (a); \
7816 uint64x2_t result; \
7817 __asm__ ("umlsl %0.2d, %2.2s, %3.s[%4]" \
7819 : "0"(a_), "w"(b_), "w"(c_), "i"(d) \
7820 : /* No clobbers */); \
7824 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
7825 vmlsl_n_s16 (int32x4_t a
, int16x4_t b
, int16_t c
)
7828 __asm__ ("smlsl %0.4s, %2.4h, %3.h[0]"
7830 : "0"(a
), "w"(b
), "x"(c
)
7831 : /* No clobbers */);
7835 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
7836 vmlsl_n_s32 (int64x2_t a
, int32x2_t b
, int32_t c
)
7839 __asm__ ("smlsl %0.2d, %2.2s, %3.s[0]"
7841 : "0"(a
), "w"(b
), "w"(c
)
7842 : /* No clobbers */);
7846 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
7847 vmlsl_n_u16 (uint32x4_t a
, uint16x4_t b
, uint16_t c
)
7850 __asm__ ("umlsl %0.4s, %2.4h, %3.h[0]"
7852 : "0"(a
), "w"(b
), "x"(c
)
7853 : /* No clobbers */);
7857 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
7858 vmlsl_n_u32 (uint64x2_t a
, uint32x2_t b
, uint32_t c
)
7861 __asm__ ("umlsl %0.2d, %2.2s, %3.s[0]"
7863 : "0"(a
), "w"(b
), "w"(c
)
7864 : /* No clobbers */);
7868 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
7869 vmlsl_s8 (int16x8_t a
, int8x8_t b
, int8x8_t c
)
7872 __asm__ ("smlsl %0.8h, %2.8b, %3.8b"
7874 : "0"(a
), "w"(b
), "w"(c
)
7875 : /* No clobbers */);
7879 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
7880 vmlsl_s16 (int32x4_t a
, int16x4_t b
, int16x4_t c
)
7883 __asm__ ("smlsl %0.4s, %2.4h, %3.4h"
7885 : "0"(a
), "w"(b
), "w"(c
)
7886 : /* No clobbers */);
7890 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
7891 vmlsl_s32 (int64x2_t a
, int32x2_t b
, int32x2_t c
)
7894 __asm__ ("smlsl %0.2d, %2.2s, %3.2s"
7896 : "0"(a
), "w"(b
), "w"(c
)
7897 : /* No clobbers */);
7901 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
7902 vmlsl_u8 (uint16x8_t a
, uint8x8_t b
, uint8x8_t c
)
7905 __asm__ ("umlsl %0.8h, %2.8b, %3.8b"
7907 : "0"(a
), "w"(b
), "w"(c
)
7908 : /* No clobbers */);
7912 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
7913 vmlsl_u16 (uint32x4_t a
, uint16x4_t b
, uint16x4_t c
)
7916 __asm__ ("umlsl %0.4s, %2.4h, %3.4h"
7918 : "0"(a
), "w"(b
), "w"(c
)
7919 : /* No clobbers */);
7923 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
7924 vmlsl_u32 (uint64x2_t a
, uint32x2_t b
, uint32x2_t c
)
7927 __asm__ ("umlsl %0.2d, %2.2s, %3.2s"
7929 : "0"(a
), "w"(b
), "w"(c
)
7930 : /* No clobbers */);
7934 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
7935 vmlsq_n_f32 (float32x4_t a
, float32x4_t b
, float32_t c
)
7939 __asm__ ("fmul %1.4s, %3.4s, %4.s[0]; fsub %0.4s, %0.4s, %1.4s"
7940 : "=w"(result
), "=w"(t1
)
7941 : "0"(a
), "w"(b
), "w"(c
)
7942 : /* No clobbers */);
7946 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
7947 vmlsq_n_f64 (float64x2_t a
, float64x2_t b
, float64_t c
)
7951 __asm__ ("fmul %1.2d, %3.2d, %4.d[0]; fsub %0.2d, %0.2d, %1.2d"
7952 : "=w"(result
), "=w"(t1
)
7953 : "0"(a
), "w"(b
), "x"(c
)
7954 : /* No clobbers */);
7958 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
7959 vmlsq_n_s16 (int16x8_t a
, int16x8_t b
, int16_t c
)
7962 __asm__ ("mls %0.8h, %2.8h, %3.h[0]"
7964 : "0"(a
), "w"(b
), "x"(c
)
7965 : /* No clobbers */);
7969 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
7970 vmlsq_n_s32 (int32x4_t a
, int32x4_t b
, int32_t c
)
7973 __asm__ ("mls %0.4s, %2.4s, %3.s[0]"
7975 : "0"(a
), "w"(b
), "w"(c
)
7976 : /* No clobbers */);
7980 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
7981 vmlsq_n_u16 (uint16x8_t a
, uint16x8_t b
, uint16_t c
)
7984 __asm__ ("mls %0.8h, %2.8h, %3.h[0]"
7986 : "0"(a
), "w"(b
), "x"(c
)
7987 : /* No clobbers */);
7991 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
7992 vmlsq_n_u32 (uint32x4_t a
, uint32x4_t b
, uint32_t c
)
7995 __asm__ ("mls %0.4s, %2.4s, %3.s[0]"
7997 : "0"(a
), "w"(b
), "w"(c
)
7998 : /* No clobbers */);
8002 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
8003 vmlsq_s8 (int8x16_t a
, int8x16_t b
, int8x16_t c
)
8006 __asm__ ("mls %0.16b,%2.16b,%3.16b"
8008 : "0"(a
), "w"(b
), "w"(c
)
8009 : /* No clobbers */);
8013 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
8014 vmlsq_s16 (int16x8_t a
, int16x8_t b
, int16x8_t c
)
8017 __asm__ ("mls %0.8h,%2.8h,%3.8h"
8019 : "0"(a
), "w"(b
), "w"(c
)
8020 : /* No clobbers */);
8024 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8025 vmlsq_s32 (int32x4_t a
, int32x4_t b
, int32x4_t c
)
8028 __asm__ ("mls %0.4s,%2.4s,%3.4s"
8030 : "0"(a
), "w"(b
), "w"(c
)
8031 : /* No clobbers */);
8035 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
8036 vmlsq_u8 (uint8x16_t a
, uint8x16_t b
, uint8x16_t c
)
8039 __asm__ ("mls %0.16b,%2.16b,%3.16b"
8041 : "0"(a
), "w"(b
), "w"(c
)
8042 : /* No clobbers */);
8046 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
8047 vmlsq_u16 (uint16x8_t a
, uint16x8_t b
, uint16x8_t c
)
8050 __asm__ ("mls %0.8h,%2.8h,%3.8h"
8052 : "0"(a
), "w"(b
), "w"(c
)
8053 : /* No clobbers */);
8057 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8058 vmlsq_u32 (uint32x4_t a
, uint32x4_t b
, uint32x4_t c
)
8061 __asm__ ("mls %0.4s,%2.4s,%3.4s"
8063 : "0"(a
), "w"(b
), "w"(c
)
8064 : /* No clobbers */);
8068 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
8069 vmovl_high_s8 (int8x16_t a
)
8072 __asm__ ("sshll2 %0.8h,%1.16b,#0"
8075 : /* No clobbers */);
8079 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8080 vmovl_high_s16 (int16x8_t a
)
8083 __asm__ ("sshll2 %0.4s,%1.8h,#0"
8086 : /* No clobbers */);
8090 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
8091 vmovl_high_s32 (int32x4_t a
)
8094 __asm__ ("sshll2 %0.2d,%1.4s,#0"
8097 : /* No clobbers */);
8101 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
8102 vmovl_high_u8 (uint8x16_t a
)
8105 __asm__ ("ushll2 %0.8h,%1.16b,#0"
8108 : /* No clobbers */);
8112 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8113 vmovl_high_u16 (uint16x8_t a
)
8116 __asm__ ("ushll2 %0.4s,%1.8h,#0"
8119 : /* No clobbers */);
8123 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
8124 vmovl_high_u32 (uint32x4_t a
)
8127 __asm__ ("ushll2 %0.2d,%1.4s,#0"
8130 : /* No clobbers */);
8134 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
8135 vmovl_s8 (int8x8_t a
)
8138 __asm__ ("sshll %0.8h,%1.8b,#0"
8141 : /* No clobbers */);
8145 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8146 vmovl_s16 (int16x4_t a
)
8149 __asm__ ("sshll %0.4s,%1.4h,#0"
8152 : /* No clobbers */);
8156 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
8157 vmovl_s32 (int32x2_t a
)
8160 __asm__ ("sshll %0.2d,%1.2s,#0"
8163 : /* No clobbers */);
8167 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
8168 vmovl_u8 (uint8x8_t a
)
8171 __asm__ ("ushll %0.8h,%1.8b,#0"
8174 : /* No clobbers */);
8178 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8179 vmovl_u16 (uint16x4_t a
)
8182 __asm__ ("ushll %0.4s,%1.4h,#0"
8185 : /* No clobbers */);
8189 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
8190 vmovl_u32 (uint32x2_t a
)
8193 __asm__ ("ushll %0.2d,%1.2s,#0"
8196 : /* No clobbers */);
8200 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
8201 vmovn_high_s16 (int8x8_t a
, int16x8_t b
)
8203 int8x16_t result
= vcombine_s8 (a
, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
8204 __asm__ ("xtn2 %0.16b,%1.8h"
8207 : /* No clobbers */);
8211 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
8212 vmovn_high_s32 (int16x4_t a
, int32x4_t b
)
8214 int16x8_t result
= vcombine_s16 (a
, vcreate_s16 (__AARCH64_UINT64_C (0x0)));
8215 __asm__ ("xtn2 %0.8h,%1.4s"
8218 : /* No clobbers */);
8222 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8223 vmovn_high_s64 (int32x2_t a
, int64x2_t b
)
8225 int32x4_t result
= vcombine_s32 (a
, vcreate_s32 (__AARCH64_UINT64_C (0x0)));
8226 __asm__ ("xtn2 %0.4s,%1.2d"
8229 : /* No clobbers */);
8233 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
8234 vmovn_high_u16 (uint8x8_t a
, uint16x8_t b
)
8236 uint8x16_t result
= vcombine_u8 (a
, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
8237 __asm__ ("xtn2 %0.16b,%1.8h"
8240 : /* No clobbers */);
8244 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
8245 vmovn_high_u32 (uint16x4_t a
, uint32x4_t b
)
8247 uint16x8_t result
= vcombine_u16 (a
, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
8248 __asm__ ("xtn2 %0.8h,%1.4s"
8251 : /* No clobbers */);
8255 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8256 vmovn_high_u64 (uint32x2_t a
, uint64x2_t b
)
8258 uint32x4_t result
= vcombine_u32 (a
, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
8259 __asm__ ("xtn2 %0.4s,%1.2d"
8262 : /* No clobbers */);
8266 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
8267 vmovn_s16 (int16x8_t a
)
8270 __asm__ ("xtn %0.8b,%1.8h"
8273 : /* No clobbers */);
8277 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
8278 vmovn_s32 (int32x4_t a
)
8281 __asm__ ("xtn %0.4h,%1.4s"
8284 : /* No clobbers */);
8288 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
8289 vmovn_s64 (int64x2_t a
)
8292 __asm__ ("xtn %0.2s,%1.2d"
8295 : /* No clobbers */);
8299 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
8300 vmovn_u16 (uint16x8_t a
)
8303 __asm__ ("xtn %0.8b,%1.8h"
8306 : /* No clobbers */);
8310 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
8311 vmovn_u32 (uint32x4_t a
)
8314 __asm__ ("xtn %0.4h,%1.4s"
8317 : /* No clobbers */);
8321 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
8322 vmovn_u64 (uint64x2_t a
)
8325 __asm__ ("xtn %0.2s,%1.2d"
8328 : /* No clobbers */);
8332 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
8333 vmul_n_f32 (float32x2_t a
, float32_t b
)
8336 __asm__ ("fmul %0.2s,%1.2s,%2.s[0]"
8339 : /* No clobbers */);
8343 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
8344 vmul_n_s16 (int16x4_t a
, int16_t b
)
8347 __asm__ ("mul %0.4h,%1.4h,%2.h[0]"
8350 : /* No clobbers */);
8354 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
8355 vmul_n_s32 (int32x2_t a
, int32_t b
)
8358 __asm__ ("mul %0.2s,%1.2s,%2.s[0]"
8361 : /* No clobbers */);
8365 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
8366 vmul_n_u16 (uint16x4_t a
, uint16_t b
)
8369 __asm__ ("mul %0.4h,%1.4h,%2.h[0]"
8372 : /* No clobbers */);
8376 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
8377 vmul_n_u32 (uint32x2_t a
, uint32_t b
)
8380 __asm__ ("mul %0.2s,%1.2s,%2.s[0]"
8383 : /* No clobbers */);
8387 #define vmuld_lane_f64(a, b, c) \
8390 float64x2_t b_ = (b); \
8391 float64_t a_ = (a); \
8393 __asm__ ("fmul %d0,%d1,%2.d[%3]" \
8395 : "w"(a_), "w"(b_), "i"(c) \
8396 : /* No clobbers */); \
8400 #define vmull_high_lane_s16(a, b, c) \
8403 int16x8_t b_ = (b); \
8404 int16x8_t a_ = (a); \
8406 __asm__ ("smull2 %0.4s, %1.8h, %2.h[%3]" \
8408 : "w"(a_), "x"(b_), "i"(c) \
8409 : /* No clobbers */); \
8413 #define vmull_high_lane_s32(a, b, c) \
8416 int32x4_t b_ = (b); \
8417 int32x4_t a_ = (a); \
8419 __asm__ ("smull2 %0.2d, %1.4s, %2.s[%3]" \
8421 : "w"(a_), "w"(b_), "i"(c) \
8422 : /* No clobbers */); \
8426 #define vmull_high_lane_u16(a, b, c) \
8429 uint16x8_t b_ = (b); \
8430 uint16x8_t a_ = (a); \
8431 uint32x4_t result; \
8432 __asm__ ("umull2 %0.4s, %1.8h, %2.h[%3]" \
8434 : "w"(a_), "x"(b_), "i"(c) \
8435 : /* No clobbers */); \
8439 #define vmull_high_lane_u32(a, b, c) \
8442 uint32x4_t b_ = (b); \
8443 uint32x4_t a_ = (a); \
8444 uint64x2_t result; \
8445 __asm__ ("umull2 %0.2d, %1.4s, %2.s[%3]" \
8447 : "w"(a_), "w"(b_), "i"(c) \
8448 : /* No clobbers */); \
8452 #define vmull_high_laneq_s16(a, b, c) \
8455 int16x8_t b_ = (b); \
8456 int16x8_t a_ = (a); \
8458 __asm__ ("smull2 %0.4s, %1.8h, %2.h[%3]" \
8460 : "w"(a_), "x"(b_), "i"(c) \
8461 : /* No clobbers */); \
8465 #define vmull_high_laneq_s32(a, b, c) \
8468 int32x4_t b_ = (b); \
8469 int32x4_t a_ = (a); \
8471 __asm__ ("smull2 %0.2d, %1.4s, %2.s[%3]" \
8473 : "w"(a_), "w"(b_), "i"(c) \
8474 : /* No clobbers */); \
8478 #define vmull_high_laneq_u16(a, b, c) \
8481 uint16x8_t b_ = (b); \
8482 uint16x8_t a_ = (a); \
8483 uint32x4_t result; \
8484 __asm__ ("umull2 %0.4s, %1.8h, %2.h[%3]" \
8486 : "w"(a_), "x"(b_), "i"(c) \
8487 : /* No clobbers */); \
8491 #define vmull_high_laneq_u32(a, b, c) \
8494 uint32x4_t b_ = (b); \
8495 uint32x4_t a_ = (a); \
8496 uint64x2_t result; \
8497 __asm__ ("umull2 %0.2d, %1.4s, %2.s[%3]" \
8499 : "w"(a_), "w"(b_), "i"(c) \
8500 : /* No clobbers */); \
8504 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8505 vmull_high_n_s16 (int16x8_t a
, int16_t b
)
8508 __asm__ ("smull2 %0.4s,%1.8h,%2.h[0]"
8511 : /* No clobbers */);
8515 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
8516 vmull_high_n_s32 (int32x4_t a
, int32_t b
)
8519 __asm__ ("smull2 %0.2d,%1.4s,%2.s[0]"
8522 : /* No clobbers */);
8526 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8527 vmull_high_n_u16 (uint16x8_t a
, uint16_t b
)
8530 __asm__ ("umull2 %0.4s,%1.8h,%2.h[0]"
8533 : /* No clobbers */);
8537 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
8538 vmull_high_n_u32 (uint32x4_t a
, uint32_t b
)
8541 __asm__ ("umull2 %0.2d,%1.4s,%2.s[0]"
8544 : /* No clobbers */);
8548 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
8549 vmull_high_p8 (poly8x16_t a
, poly8x16_t b
)
8552 __asm__ ("pmull2 %0.8h,%1.16b,%2.16b"
8555 : /* No clobbers */);
8559 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
8560 vmull_high_s8 (int8x16_t a
, int8x16_t b
)
8563 __asm__ ("smull2 %0.8h,%1.16b,%2.16b"
8566 : /* No clobbers */);
8570 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8571 vmull_high_s16 (int16x8_t a
, int16x8_t b
)
8574 __asm__ ("smull2 %0.4s,%1.8h,%2.8h"
8577 : /* No clobbers */);
8581 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
8582 vmull_high_s32 (int32x4_t a
, int32x4_t b
)
8585 __asm__ ("smull2 %0.2d,%1.4s,%2.4s"
8588 : /* No clobbers */);
8592 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
8593 vmull_high_u8 (uint8x16_t a
, uint8x16_t b
)
8596 __asm__ ("umull2 %0.8h,%1.16b,%2.16b"
8599 : /* No clobbers */);
8603 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8604 vmull_high_u16 (uint16x8_t a
, uint16x8_t b
)
8607 __asm__ ("umull2 %0.4s,%1.8h,%2.8h"
8610 : /* No clobbers */);
8614 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
8615 vmull_high_u32 (uint32x4_t a
, uint32x4_t b
)
8618 __asm__ ("umull2 %0.2d,%1.4s,%2.4s"
8621 : /* No clobbers */);
8625 #define vmull_lane_s16(a, b, c) \
8628 int16x4_t b_ = (b); \
8629 int16x4_t a_ = (a); \
8631 __asm__ ("smull %0.4s,%1.4h,%2.h[%3]" \
8633 : "w"(a_), "x"(b_), "i"(c) \
8634 : /* No clobbers */); \
8638 #define vmull_lane_s32(a, b, c) \
8641 int32x2_t b_ = (b); \
8642 int32x2_t a_ = (a); \
8644 __asm__ ("smull %0.2d,%1.2s,%2.s[%3]" \
8646 : "w"(a_), "w"(b_), "i"(c) \
8647 : /* No clobbers */); \
8651 #define vmull_lane_u16(a, b, c) \
8654 uint16x4_t b_ = (b); \
8655 uint16x4_t a_ = (a); \
8656 uint32x4_t result; \
8657 __asm__ ("umull %0.4s,%1.4h,%2.h[%3]" \
8659 : "w"(a_), "x"(b_), "i"(c) \
8660 : /* No clobbers */); \
8664 #define vmull_lane_u32(a, b, c) \
8667 uint32x2_t b_ = (b); \
8668 uint32x2_t a_ = (a); \
8669 uint64x2_t result; \
8670 __asm__ ("umull %0.2d, %1.2s, %2.s[%3]" \
8672 : "w"(a_), "w"(b_), "i"(c) \
8673 : /* No clobbers */); \
8677 #define vmull_laneq_s16(a, b, c) \
8680 int16x8_t b_ = (b); \
8681 int16x4_t a_ = (a); \
8683 __asm__ ("smull %0.4s, %1.4h, %2.h[%3]" \
8685 : "w"(a_), "x"(b_), "i"(c) \
8686 : /* No clobbers */); \
8690 #define vmull_laneq_s32(a, b, c) \
8693 int32x4_t b_ = (b); \
8694 int32x2_t a_ = (a); \
8696 __asm__ ("smull %0.2d, %1.2s, %2.s[%3]" \
8698 : "w"(a_), "w"(b_), "i"(c) \
8699 : /* No clobbers */); \
8703 #define vmull_laneq_u16(a, b, c) \
8706 uint16x8_t b_ = (b); \
8707 uint16x4_t a_ = (a); \
8708 uint32x4_t result; \
8709 __asm__ ("umull %0.4s, %1.4h, %2.h[%3]" \
8711 : "w"(a_), "x"(b_), "i"(c) \
8712 : /* No clobbers */); \
8716 #define vmull_laneq_u32(a, b, c) \
8719 uint32x4_t b_ = (b); \
8720 uint32x2_t a_ = (a); \
8721 uint64x2_t result; \
8722 __asm__ ("umull %0.2d, %1.2s, %2.s[%3]" \
8724 : "w"(a_), "w"(b_), "i"(c) \
8725 : /* No clobbers */); \
8729 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8730 vmull_n_s16 (int16x4_t a
, int16_t b
)
8733 __asm__ ("smull %0.4s,%1.4h,%2.h[0]"
8736 : /* No clobbers */);
8740 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
8741 vmull_n_s32 (int32x2_t a
, int32_t b
)
8744 __asm__ ("smull %0.2d,%1.2s,%2.s[0]"
8747 : /* No clobbers */);
8751 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8752 vmull_n_u16 (uint16x4_t a
, uint16_t b
)
8755 __asm__ ("umull %0.4s,%1.4h,%2.h[0]"
8758 : /* No clobbers */);
8762 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
8763 vmull_n_u32 (uint32x2_t a
, uint32_t b
)
8766 __asm__ ("umull %0.2d,%1.2s,%2.s[0]"
8769 : /* No clobbers */);
8773 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
8774 vmull_p8 (poly8x8_t a
, poly8x8_t b
)
8777 __asm__ ("pmull %0.8h, %1.8b, %2.8b"
8780 : /* No clobbers */);
8784 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
8785 vmull_s8 (int8x8_t a
, int8x8_t b
)
8788 __asm__ ("smull %0.8h, %1.8b, %2.8b"
8791 : /* No clobbers */);
8795 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8796 vmull_s16 (int16x4_t a
, int16x4_t b
)
8799 __asm__ ("smull %0.4s, %1.4h, %2.4h"
8802 : /* No clobbers */);
8806 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
8807 vmull_s32 (int32x2_t a
, int32x2_t b
)
8810 __asm__ ("smull %0.2d, %1.2s, %2.2s"
8813 : /* No clobbers */);
8817 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
8818 vmull_u8 (uint8x8_t a
, uint8x8_t b
)
8821 __asm__ ("umull %0.8h, %1.8b, %2.8b"
8824 : /* No clobbers */);
8828 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8829 vmull_u16 (uint16x4_t a
, uint16x4_t b
)
8832 __asm__ ("umull %0.4s, %1.4h, %2.4h"
8835 : /* No clobbers */);
8839 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
8840 vmull_u32 (uint32x2_t a
, uint32x2_t b
)
8843 __asm__ ("umull %0.2d, %1.2s, %2.2s"
8846 : /* No clobbers */);
8850 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
8851 vmulq_n_f32 (float32x4_t a
, float32_t b
)
8854 __asm__ ("fmul %0.4s,%1.4s,%2.s[0]"
8857 : /* No clobbers */);
8861 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
8862 vmulq_n_f64 (float64x2_t a
, float64_t b
)
8865 __asm__ ("fmul %0.2d,%1.2d,%2.d[0]"
8868 : /* No clobbers */);
8872 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
8873 vmulq_n_s16 (int16x8_t a
, int16_t b
)
8876 __asm__ ("mul %0.8h,%1.8h,%2.h[0]"
8879 : /* No clobbers */);
8883 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
8884 vmulq_n_s32 (int32x4_t a
, int32_t b
)
8887 __asm__ ("mul %0.4s,%1.4s,%2.s[0]"
8890 : /* No clobbers */);
8894 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
8895 vmulq_n_u16 (uint16x8_t a
, uint16_t b
)
8898 __asm__ ("mul %0.8h,%1.8h,%2.h[0]"
8901 : /* No clobbers */);
8905 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
8906 vmulq_n_u32 (uint32x4_t a
, uint32_t b
)
8909 __asm__ ("mul %0.4s,%1.4s,%2.s[0]"
8912 : /* No clobbers */);
8916 #define vmuls_lane_f32(a, b, c) \
8919 float32x4_t b_ = (b); \
8920 float32_t a_ = (a); \
8922 __asm__ ("fmul %s0,%s1,%2.s[%3]" \
8924 : "w"(a_), "w"(b_), "i"(c) \
8925 : /* No clobbers */); \
8929 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
8930 vmulx_f32 (float32x2_t a
, float32x2_t b
)
8933 __asm__ ("fmulx %0.2s,%1.2s,%2.2s"
8936 : /* No clobbers */);
8940 #define vmulx_lane_f32(a, b, c) \
8943 float32x4_t b_ = (b); \
8944 float32x2_t a_ = (a); \
8945 float32x2_t result; \
8946 __asm__ ("fmulx %0.2s,%1.2s,%2.s[%3]" \
8948 : "w"(a_), "w"(b_), "i"(c) \
8949 : /* No clobbers */); \
8953 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
8954 vmulxd_f64 (float64_t a
, float64_t b
)
8957 __asm__ ("fmulx %d0, %d1, %d2"
8960 : /* No clobbers */);
8964 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
8965 vmulxq_f32 (float32x4_t a
, float32x4_t b
)
8968 __asm__ ("fmulx %0.4s,%1.4s,%2.4s"
8971 : /* No clobbers */);
8975 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
8976 vmulxq_f64 (float64x2_t a
, float64x2_t b
)
8979 __asm__ ("fmulx %0.2d,%1.2d,%2.2d"
8982 : /* No clobbers */);
8986 #define vmulxq_lane_f32(a, b, c) \
8989 float32x4_t b_ = (b); \
8990 float32x4_t a_ = (a); \
8991 float32x4_t result; \
8992 __asm__ ("fmulx %0.4s,%1.4s,%2.s[%3]" \
8994 : "w"(a_), "w"(b_), "i"(c) \
8995 : /* No clobbers */); \
8999 #define vmulxq_lane_f64(a, b, c) \
9002 float64x2_t b_ = (b); \
9003 float64x2_t a_ = (a); \
9004 float64x2_t result; \
9005 __asm__ ("fmulx %0.2d,%1.2d,%2.d[%3]" \
9007 : "w"(a_), "w"(b_), "i"(c) \
9008 : /* No clobbers */); \
9012 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
9013 vmulxs_f32 (float32_t a
, float32_t b
)
9016 __asm__ ("fmulx %s0, %s1, %s2"
9019 : /* No clobbers */);
9023 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
9024 vmvn_p8 (poly8x8_t a
)
9027 __asm__ ("mvn %0.8b,%1.8b"
9030 : /* No clobbers */);
9034 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
9035 vmvn_s8 (int8x8_t a
)
9038 __asm__ ("mvn %0.8b,%1.8b"
9041 : /* No clobbers */);
9045 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
9046 vmvn_s16 (int16x4_t a
)
9049 __asm__ ("mvn %0.8b,%1.8b"
9052 : /* No clobbers */);
9056 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
9057 vmvn_s32 (int32x2_t a
)
9060 __asm__ ("mvn %0.8b,%1.8b"
9063 : /* No clobbers */);
9067 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
9068 vmvn_u8 (uint8x8_t a
)
9071 __asm__ ("mvn %0.8b,%1.8b"
9074 : /* No clobbers */);
9078 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
9079 vmvn_u16 (uint16x4_t a
)
9082 __asm__ ("mvn %0.8b,%1.8b"
9085 : /* No clobbers */);
9089 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
9090 vmvn_u32 (uint32x2_t a
)
9093 __asm__ ("mvn %0.8b,%1.8b"
9096 : /* No clobbers */);
9100 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
9101 vmvnq_p8 (poly8x16_t a
)
9104 __asm__ ("mvn %0.16b,%1.16b"
9107 : /* No clobbers */);
9111 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
9112 vmvnq_s8 (int8x16_t a
)
9115 __asm__ ("mvn %0.16b,%1.16b"
9118 : /* No clobbers */);
9122 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
9123 vmvnq_s16 (int16x8_t a
)
9126 __asm__ ("mvn %0.16b,%1.16b"
9129 : /* No clobbers */);
9133 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
9134 vmvnq_s32 (int32x4_t a
)
9137 __asm__ ("mvn %0.16b,%1.16b"
9140 : /* No clobbers */);
9144 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
9145 vmvnq_u8 (uint8x16_t a
)
9148 __asm__ ("mvn %0.16b,%1.16b"
9151 : /* No clobbers */);
9155 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
9156 vmvnq_u16 (uint16x8_t a
)
9159 __asm__ ("mvn %0.16b,%1.16b"
9162 : /* No clobbers */);
9166 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
9167 vmvnq_u32 (uint32x4_t a
)
9170 __asm__ ("mvn %0.16b,%1.16b"
9173 : /* No clobbers */);
9178 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
9179 vpadal_s8 (int16x4_t a
, int8x8_t b
)
9182 __asm__ ("sadalp %0.4h,%2.8b"
9185 : /* No clobbers */);
9189 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
9190 vpadal_s16 (int32x2_t a
, int16x4_t b
)
9193 __asm__ ("sadalp %0.2s,%2.4h"
9196 : /* No clobbers */);
9200 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
9201 vpadal_s32 (int64x1_t a
, int32x2_t b
)
9204 __asm__ ("sadalp %0.1d,%2.2s"
9207 : /* No clobbers */);
9211 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
9212 vpadal_u8 (uint16x4_t a
, uint8x8_t b
)
9215 __asm__ ("uadalp %0.4h,%2.8b"
9218 : /* No clobbers */);
9222 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
9223 vpadal_u16 (uint32x2_t a
, uint16x4_t b
)
9226 __asm__ ("uadalp %0.2s,%2.4h"
9229 : /* No clobbers */);
9233 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
9234 vpadal_u32 (uint64x1_t a
, uint32x2_t b
)
9237 __asm__ ("uadalp %0.1d,%2.2s"
9240 : /* No clobbers */);
9244 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
9245 vpadalq_s8 (int16x8_t a
, int8x16_t b
)
9248 __asm__ ("sadalp %0.8h,%2.16b"
9251 : /* No clobbers */);
9255 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
9256 vpadalq_s16 (int32x4_t a
, int16x8_t b
)
9259 __asm__ ("sadalp %0.4s,%2.8h"
9262 : /* No clobbers */);
9266 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
9267 vpadalq_s32 (int64x2_t a
, int32x4_t b
)
9270 __asm__ ("sadalp %0.2d,%2.4s"
9273 : /* No clobbers */);
9277 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
9278 vpadalq_u8 (uint16x8_t a
, uint8x16_t b
)
9281 __asm__ ("uadalp %0.8h,%2.16b"
9284 : /* No clobbers */);
9288 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
9289 vpadalq_u16 (uint32x4_t a
, uint16x8_t b
)
9292 __asm__ ("uadalp %0.4s,%2.8h"
9295 : /* No clobbers */);
9299 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
9300 vpadalq_u32 (uint64x2_t a
, uint32x4_t b
)
9303 __asm__ ("uadalp %0.2d,%2.4s"
9306 : /* No clobbers */);
9310 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
9311 vpadd_f32 (float32x2_t a
, float32x2_t b
)
9314 __asm__ ("faddp %0.2s,%1.2s,%2.2s"
9317 : /* No clobbers */);
9321 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
9322 vpadd_s8 (int8x8_t __a
, int8x8_t __b
)
9324 return __builtin_aarch64_addpv8qi (__a
, __b
);
9327 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
9328 vpadd_s16 (int16x4_t __a
, int16x4_t __b
)
9330 return __builtin_aarch64_addpv4hi (__a
, __b
);
9333 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
9334 vpadd_s32 (int32x2_t __a
, int32x2_t __b
)
9336 return __builtin_aarch64_addpv2si (__a
, __b
);
9339 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
9340 vpadd_u8 (uint8x8_t __a
, uint8x8_t __b
)
9342 return (uint8x8_t
) __builtin_aarch64_addpv8qi ((int8x8_t
) __a
,
9346 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
9347 vpadd_u16 (uint16x4_t __a
, uint16x4_t __b
)
9349 return (uint16x4_t
) __builtin_aarch64_addpv4hi ((int16x4_t
) __a
,
9353 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
9354 vpadd_u32 (uint32x2_t __a
, uint32x2_t __b
)
9356 return (uint32x2_t
) __builtin_aarch64_addpv2si ((int32x2_t
) __a
,
9360 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
9361 vpaddd_f64 (float64x2_t a
)
9364 __asm__ ("faddp %d0,%1.2d"
9367 : /* No clobbers */);
9371 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
9372 vpaddl_s8 (int8x8_t a
)
9375 __asm__ ("saddlp %0.4h,%1.8b"
9378 : /* No clobbers */);
9382 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
9383 vpaddl_s16 (int16x4_t a
)
9386 __asm__ ("saddlp %0.2s,%1.4h"
9389 : /* No clobbers */);
9393 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
9394 vpaddl_s32 (int32x2_t a
)
9397 __asm__ ("saddlp %0.1d,%1.2s"
9400 : /* No clobbers */);
9404 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
9405 vpaddl_u8 (uint8x8_t a
)
9408 __asm__ ("uaddlp %0.4h,%1.8b"
9411 : /* No clobbers */);
9415 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
9416 vpaddl_u16 (uint16x4_t a
)
9419 __asm__ ("uaddlp %0.2s,%1.4h"
9422 : /* No clobbers */);
9426 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
9427 vpaddl_u32 (uint32x2_t a
)
9430 __asm__ ("uaddlp %0.1d,%1.2s"
9433 : /* No clobbers */);
9437 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
9438 vpaddlq_s8 (int8x16_t a
)
9441 __asm__ ("saddlp %0.8h,%1.16b"
9444 : /* No clobbers */);
9448 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
9449 vpaddlq_s16 (int16x8_t a
)
9452 __asm__ ("saddlp %0.4s,%1.8h"
9455 : /* No clobbers */);
9459 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
9460 vpaddlq_s32 (int32x4_t a
)
9463 __asm__ ("saddlp %0.2d,%1.4s"
9466 : /* No clobbers */);
9470 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
9471 vpaddlq_u8 (uint8x16_t a
)
9474 __asm__ ("uaddlp %0.8h,%1.16b"
9477 : /* No clobbers */);
9481 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
9482 vpaddlq_u16 (uint16x8_t a
)
9485 __asm__ ("uaddlp %0.4s,%1.8h"
9488 : /* No clobbers */);
9492 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
9493 vpaddlq_u32 (uint32x4_t a
)
9496 __asm__ ("uaddlp %0.2d,%1.4s"
9499 : /* No clobbers */);
9503 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
9504 vpaddq_f32 (float32x4_t a
, float32x4_t b
)
9507 __asm__ ("faddp %0.4s,%1.4s,%2.4s"
9510 : /* No clobbers */);
9514 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
9515 vpaddq_f64 (float64x2_t a
, float64x2_t b
)
9518 __asm__ ("faddp %0.2d,%1.2d,%2.2d"
9521 : /* No clobbers */);
9525 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
9526 vpaddq_s8 (int8x16_t a
, int8x16_t b
)
9529 __asm__ ("addp %0.16b,%1.16b,%2.16b"
9532 : /* No clobbers */);
9536 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
9537 vpaddq_s16 (int16x8_t a
, int16x8_t b
)
9540 __asm__ ("addp %0.8h,%1.8h,%2.8h"
9543 : /* No clobbers */);
9547 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
9548 vpaddq_s32 (int32x4_t a
, int32x4_t b
)
9551 __asm__ ("addp %0.4s,%1.4s,%2.4s"
9554 : /* No clobbers */);
9558 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
9559 vpaddq_s64 (int64x2_t a
, int64x2_t b
)
9562 __asm__ ("addp %0.2d,%1.2d,%2.2d"
9565 : /* No clobbers */);
9569 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
9570 vpaddq_u8 (uint8x16_t a
, uint8x16_t b
)
9573 __asm__ ("addp %0.16b,%1.16b,%2.16b"
9576 : /* No clobbers */);
9580 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
9581 vpaddq_u16 (uint16x8_t a
, uint16x8_t b
)
9584 __asm__ ("addp %0.8h,%1.8h,%2.8h"
9587 : /* No clobbers */);
9591 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
9592 vpaddq_u32 (uint32x4_t a
, uint32x4_t b
)
9595 __asm__ ("addp %0.4s,%1.4s,%2.4s"
9598 : /* No clobbers */);
9602 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
9603 vpaddq_u64 (uint64x2_t a
, uint64x2_t b
)
9606 __asm__ ("addp %0.2d,%1.2d,%2.2d"
9609 : /* No clobbers */);
9613 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
9614 vpadds_f32 (float32x2_t a
)
9617 __asm__ ("faddp %s0,%1.2s"
9620 : /* No clobbers */);
9624 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
9625 vpmax_f32 (float32x2_t a
, float32x2_t b
)
9628 __asm__ ("fmaxp %0.2s, %1.2s, %2.2s"
9631 : /* No clobbers */);
9635 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
9636 vpmax_s8 (int8x8_t a
, int8x8_t b
)
9639 __asm__ ("smaxp %0.8b, %1.8b, %2.8b"
9642 : /* No clobbers */);
9646 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
9647 vpmax_s16 (int16x4_t a
, int16x4_t b
)
9650 __asm__ ("smaxp %0.4h, %1.4h, %2.4h"
9653 : /* No clobbers */);
9657 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
9658 vpmax_s32 (int32x2_t a
, int32x2_t b
)
9661 __asm__ ("smaxp %0.2s, %1.2s, %2.2s"
9664 : /* No clobbers */);
9668 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
9669 vpmax_u8 (uint8x8_t a
, uint8x8_t b
)
9672 __asm__ ("umaxp %0.8b, %1.8b, %2.8b"
9675 : /* No clobbers */);
9679 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
9680 vpmax_u16 (uint16x4_t a
, uint16x4_t b
)
9683 __asm__ ("umaxp %0.4h, %1.4h, %2.4h"
9686 : /* No clobbers */);
9690 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
9691 vpmax_u32 (uint32x2_t a
, uint32x2_t b
)
9694 __asm__ ("umaxp %0.2s, %1.2s, %2.2s"
9697 : /* No clobbers */);
9701 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
9702 vpmaxnm_f32 (float32x2_t a
, float32x2_t b
)
9705 __asm__ ("fmaxnmp %0.2s,%1.2s,%2.2s"
9708 : /* No clobbers */);
9712 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
9713 vpmaxnmq_f32 (float32x4_t a
, float32x4_t b
)
9716 __asm__ ("fmaxnmp %0.4s,%1.4s,%2.4s"
9719 : /* No clobbers */);
9723 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
9724 vpmaxnmq_f64 (float64x2_t a
, float64x2_t b
)
9727 __asm__ ("fmaxnmp %0.2d,%1.2d,%2.2d"
9730 : /* No clobbers */);
9734 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
9735 vpmaxnmqd_f64 (float64x2_t a
)
9738 __asm__ ("fmaxnmp %d0,%1.2d"
9741 : /* No clobbers */);
9745 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
9746 vpmaxnms_f32 (float32x2_t a
)
9749 __asm__ ("fmaxnmp %s0,%1.2s"
9752 : /* No clobbers */);
9756 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
9757 vpmaxq_f32 (float32x4_t a
, float32x4_t b
)
9760 __asm__ ("fmaxp %0.4s, %1.4s, %2.4s"
9763 : /* No clobbers */);
9767 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
9768 vpmaxq_f64 (float64x2_t a
, float64x2_t b
)
9771 __asm__ ("fmaxp %0.2d, %1.2d, %2.2d"
9774 : /* No clobbers */);
9778 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
9779 vpmaxq_s8 (int8x16_t a
, int8x16_t b
)
9782 __asm__ ("smaxp %0.16b, %1.16b, %2.16b"
9785 : /* No clobbers */);
9789 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
9790 vpmaxq_s16 (int16x8_t a
, int16x8_t b
)
9793 __asm__ ("smaxp %0.8h, %1.8h, %2.8h"
9796 : /* No clobbers */);
9800 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
9801 vpmaxq_s32 (int32x4_t a
, int32x4_t b
)
9804 __asm__ ("smaxp %0.4s, %1.4s, %2.4s"
9807 : /* No clobbers */);
9811 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
9812 vpmaxq_u8 (uint8x16_t a
, uint8x16_t b
)
9815 __asm__ ("umaxp %0.16b, %1.16b, %2.16b"
9818 : /* No clobbers */);
9822 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
9823 vpmaxq_u16 (uint16x8_t a
, uint16x8_t b
)
9826 __asm__ ("umaxp %0.8h, %1.8h, %2.8h"
9829 : /* No clobbers */);
9833 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
9834 vpmaxq_u32 (uint32x4_t a
, uint32x4_t b
)
9837 __asm__ ("umaxp %0.4s, %1.4s, %2.4s"
9840 : /* No clobbers */);
9844 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
9845 vpmaxqd_f64 (float64x2_t a
)
9848 __asm__ ("fmaxp %d0,%1.2d"
9851 : /* No clobbers */);
9855 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
9856 vpmaxs_f32 (float32x2_t a
)
9859 __asm__ ("fmaxp %s0,%1.2s"
9862 : /* No clobbers */);
9866 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
9867 vpmin_f32 (float32x2_t a
, float32x2_t b
)
9870 __asm__ ("fminp %0.2s, %1.2s, %2.2s"
9873 : /* No clobbers */);
9877 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
9878 vpmin_s8 (int8x8_t a
, int8x8_t b
)
9881 __asm__ ("sminp %0.8b, %1.8b, %2.8b"
9884 : /* No clobbers */);
9888 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
9889 vpmin_s16 (int16x4_t a
, int16x4_t b
)
9892 __asm__ ("sminp %0.4h, %1.4h, %2.4h"
9895 : /* No clobbers */);
9899 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
9900 vpmin_s32 (int32x2_t a
, int32x2_t b
)
9903 __asm__ ("sminp %0.2s, %1.2s, %2.2s"
9906 : /* No clobbers */);
9910 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
9911 vpmin_u8 (uint8x8_t a
, uint8x8_t b
)
9914 __asm__ ("uminp %0.8b, %1.8b, %2.8b"
9917 : /* No clobbers */);
9921 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
9922 vpmin_u16 (uint16x4_t a
, uint16x4_t b
)
9925 __asm__ ("uminp %0.4h, %1.4h, %2.4h"
9928 : /* No clobbers */);
9932 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
9933 vpmin_u32 (uint32x2_t a
, uint32x2_t b
)
9936 __asm__ ("uminp %0.2s, %1.2s, %2.2s"
9939 : /* No clobbers */);
9943 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
9944 vpminnm_f32 (float32x2_t a
, float32x2_t b
)
9947 __asm__ ("fminnmp %0.2s,%1.2s,%2.2s"
9950 : /* No clobbers */);
9954 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
9955 vpminnmq_f32 (float32x4_t a
, float32x4_t b
)
9958 __asm__ ("fminnmp %0.4s,%1.4s,%2.4s"
9961 : /* No clobbers */);
9965 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
9966 vpminnmq_f64 (float64x2_t a
, float64x2_t b
)
9969 __asm__ ("fminnmp %0.2d,%1.2d,%2.2d"
9972 : /* No clobbers */);
9976 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
9977 vpminnmqd_f64 (float64x2_t a
)
9980 __asm__ ("fminnmp %d0,%1.2d"
9983 : /* No clobbers */);
9987 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
9988 vpminnms_f32 (float32x2_t a
)
9991 __asm__ ("fminnmp %s0,%1.2s"
9994 : /* No clobbers */);
9998 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
9999 vpminq_f32 (float32x4_t a
, float32x4_t b
)
10001 float32x4_t result
;
10002 __asm__ ("fminp %0.4s, %1.4s, %2.4s"
10005 : /* No clobbers */);
10009 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
10010 vpminq_f64 (float64x2_t a
, float64x2_t b
)
10012 float64x2_t result
;
10013 __asm__ ("fminp %0.2d, %1.2d, %2.2d"
10016 : /* No clobbers */);
10020 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
10021 vpminq_s8 (int8x16_t a
, int8x16_t b
)
10024 __asm__ ("sminp %0.16b, %1.16b, %2.16b"
10027 : /* No clobbers */);
10031 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
10032 vpminq_s16 (int16x8_t a
, int16x8_t b
)
10035 __asm__ ("sminp %0.8h, %1.8h, %2.8h"
10038 : /* No clobbers */);
10042 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
10043 vpminq_s32 (int32x4_t a
, int32x4_t b
)
10046 __asm__ ("sminp %0.4s, %1.4s, %2.4s"
10049 : /* No clobbers */);
10053 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
10054 vpminq_u8 (uint8x16_t a
, uint8x16_t b
)
10057 __asm__ ("uminp %0.16b, %1.16b, %2.16b"
10060 : /* No clobbers */);
10064 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
10065 vpminq_u16 (uint16x8_t a
, uint16x8_t b
)
10068 __asm__ ("uminp %0.8h, %1.8h, %2.8h"
10071 : /* No clobbers */);
10075 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
10076 vpminq_u32 (uint32x4_t a
, uint32x4_t b
)
10079 __asm__ ("uminp %0.4s, %1.4s, %2.4s"
10082 : /* No clobbers */);
10086 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
10087 vpminqd_f64 (float64x2_t a
)
10090 __asm__ ("fminp %d0,%1.2d"
10093 : /* No clobbers */);
10097 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
10098 vpmins_f32 (float32x2_t a
)
10101 __asm__ ("fminp %s0,%1.2s"
10104 : /* No clobbers */);
10108 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
10109 vqdmulh_n_s16 (int16x4_t a
, int16_t b
)
10112 __asm__ ("sqdmulh %0.4h,%1.4h,%2.h[0]"
10115 : /* No clobbers */);
10119 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
10120 vqdmulh_n_s32 (int32x2_t a
, int32_t b
)
10123 __asm__ ("sqdmulh %0.2s,%1.2s,%2.s[0]"
10126 : /* No clobbers */);
10130 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
10131 vqdmulhq_n_s16 (int16x8_t a
, int16_t b
)
10134 __asm__ ("sqdmulh %0.8h,%1.8h,%2.h[0]"
10137 : /* No clobbers */);
10141 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
10142 vqdmulhq_n_s32 (int32x4_t a
, int32_t b
)
10145 __asm__ ("sqdmulh %0.4s,%1.4s,%2.s[0]"
10148 : /* No clobbers */);
10152 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
10153 vqmovn_high_s16 (int8x8_t a
, int16x8_t b
)
10155 int8x16_t result
= vcombine_s8 (a
, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
10156 __asm__ ("sqxtn2 %0.16b, %1.8h"
10159 : /* No clobbers */);
10163 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
10164 vqmovn_high_s32 (int16x4_t a
, int32x4_t b
)
10166 int16x8_t result
= vcombine_s16 (a
, vcreate_s16 (__AARCH64_UINT64_C (0x0)));
10167 __asm__ ("sqxtn2 %0.8h, %1.4s"
10170 : /* No clobbers */);
10174 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
10175 vqmovn_high_s64 (int32x2_t a
, int64x2_t b
)
10177 int32x4_t result
= vcombine_s32 (a
, vcreate_s32 (__AARCH64_UINT64_C (0x0)));
10178 __asm__ ("sqxtn2 %0.4s, %1.2d"
10181 : /* No clobbers */);
10185 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
10186 vqmovn_high_u16 (uint8x8_t a
, uint16x8_t b
)
10188 uint8x16_t result
= vcombine_u8 (a
, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
10189 __asm__ ("uqxtn2 %0.16b, %1.8h"
10192 : /* No clobbers */);
10196 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
10197 vqmovn_high_u32 (uint16x4_t a
, uint32x4_t b
)
10199 uint16x8_t result
= vcombine_u16 (a
, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
10200 __asm__ ("uqxtn2 %0.8h, %1.4s"
10203 : /* No clobbers */);
10207 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
10208 vqmovn_high_u64 (uint32x2_t a
, uint64x2_t b
)
10210 uint32x4_t result
= vcombine_u32 (a
, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
10211 __asm__ ("uqxtn2 %0.4s, %1.2d"
10214 : /* No clobbers */);
10218 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
10219 vqmovun_high_s16 (uint8x8_t a
, int16x8_t b
)
10221 uint8x16_t result
= vcombine_u8 (a
, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
10222 __asm__ ("sqxtun2 %0.16b, %1.8h"
10225 : /* No clobbers */);
10229 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
10230 vqmovun_high_s32 (uint16x4_t a
, int32x4_t b
)
10232 uint16x8_t result
= vcombine_u16 (a
, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
10233 __asm__ ("sqxtun2 %0.8h, %1.4s"
10236 : /* No clobbers */);
10240 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
10241 vqmovun_high_s64 (uint32x2_t a
, int64x2_t b
)
10243 uint32x4_t result
= vcombine_u32 (a
, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
10244 __asm__ ("sqxtun2 %0.4s, %1.2d"
10247 : /* No clobbers */);
10251 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
10252 vqrdmulh_n_s16 (int16x4_t a
, int16_t b
)
10255 __asm__ ("sqrdmulh %0.4h,%1.4h,%2.h[0]"
10258 : /* No clobbers */);
10262 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
10263 vqrdmulh_n_s32 (int32x2_t a
, int32_t b
)
10266 __asm__ ("sqrdmulh %0.2s,%1.2s,%2.s[0]"
10269 : /* No clobbers */);
10273 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
10274 vqrdmulhq_n_s16 (int16x8_t a
, int16_t b
)
10277 __asm__ ("sqrdmulh %0.8h,%1.8h,%2.h[0]"
10280 : /* No clobbers */);
10284 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
10285 vqrdmulhq_n_s32 (int32x4_t a
, int32_t b
)
10288 __asm__ ("sqrdmulh %0.4s,%1.4s,%2.s[0]"
10291 : /* No clobbers */);
10295 #define vqrshrn_high_n_s16(a, b, c) \
10298 int16x8_t b_ = (b); \
10299 int8x8_t a_ = (a); \
10300 int8x16_t result = vcombine_s8 \
10302 (__AARCH64_UINT64_C (0x0))); \
10303 __asm__ ("sqrshrn2 %0.16b, %1.8h, #%2" \
10305 : "w"(b_), "i"(c) \
10306 : /* No clobbers */); \
10310 #define vqrshrn_high_n_s32(a, b, c) \
10313 int32x4_t b_ = (b); \
10314 int16x4_t a_ = (a); \
10315 int16x8_t result = vcombine_s16 \
10317 (__AARCH64_UINT64_C (0x0))); \
10318 __asm__ ("sqrshrn2 %0.8h, %1.4s, #%2" \
10320 : "w"(b_), "i"(c) \
10321 : /* No clobbers */); \
10325 #define vqrshrn_high_n_s64(a, b, c) \
10328 int64x2_t b_ = (b); \
10329 int32x2_t a_ = (a); \
10330 int32x4_t result = vcombine_s32 \
10332 (__AARCH64_UINT64_C (0x0))); \
10333 __asm__ ("sqrshrn2 %0.4s, %1.2d, #%2" \
10335 : "w"(b_), "i"(c) \
10336 : /* No clobbers */); \
10340 #define vqrshrn_high_n_u16(a, b, c) \
10343 uint16x8_t b_ = (b); \
10344 uint8x8_t a_ = (a); \
10345 uint8x16_t result = vcombine_u8 \
10347 (__AARCH64_UINT64_C (0x0))); \
10348 __asm__ ("uqrshrn2 %0.16b, %1.8h, #%2" \
10350 : "w"(b_), "i"(c) \
10351 : /* No clobbers */); \
10355 #define vqrshrn_high_n_u32(a, b, c) \
10358 uint32x4_t b_ = (b); \
10359 uint16x4_t a_ = (a); \
10360 uint16x8_t result = vcombine_u16 \
10362 (__AARCH64_UINT64_C (0x0))); \
10363 __asm__ ("uqrshrn2 %0.8h, %1.4s, #%2" \
10365 : "w"(b_), "i"(c) \
10366 : /* No clobbers */); \
10370 #define vqrshrn_high_n_u64(a, b, c) \
10373 uint64x2_t b_ = (b); \
10374 uint32x2_t a_ = (a); \
10375 uint32x4_t result = vcombine_u32 \
10377 (__AARCH64_UINT64_C (0x0))); \
10378 __asm__ ("uqrshrn2 %0.4s, %1.2d, #%2" \
10380 : "w"(b_), "i"(c) \
10381 : /* No clobbers */); \
10385 #define vqrshrun_high_n_s16(a, b, c) \
10388 int16x8_t b_ = (b); \
10389 uint8x8_t a_ = (a); \
10390 uint8x16_t result = vcombine_u8 \
10392 (__AARCH64_UINT64_C (0x0))); \
10393 __asm__ ("sqrshrun2 %0.16b, %1.8h, #%2" \
10395 : "w"(b_), "i"(c) \
10396 : /* No clobbers */); \
10400 #define vqrshrun_high_n_s32(a, b, c) \
10403 int32x4_t b_ = (b); \
10404 uint16x4_t a_ = (a); \
10405 uint16x8_t result = vcombine_u16 \
10407 (__AARCH64_UINT64_C (0x0))); \
10408 __asm__ ("sqrshrun2 %0.8h, %1.4s, #%2" \
10410 : "w"(b_), "i"(c) \
10411 : /* No clobbers */); \
10415 #define vqrshrun_high_n_s64(a, b, c) \
10418 int64x2_t b_ = (b); \
10419 uint32x2_t a_ = (a); \
10420 uint32x4_t result = vcombine_u32 \
10422 (__AARCH64_UINT64_C (0x0))); \
10423 __asm__ ("sqrshrun2 %0.4s, %1.2d, #%2" \
10425 : "w"(b_), "i"(c) \
10426 : /* No clobbers */); \
10430 #define vqshrn_high_n_s16(a, b, c) \
10433 int16x8_t b_ = (b); \
10434 int8x8_t a_ = (a); \
10435 int8x16_t result = vcombine_s8 \
10437 (__AARCH64_UINT64_C (0x0))); \
10438 __asm__ ("sqshrn2 %0.16b, %1.8h, #%2" \
10440 : "w"(b_), "i"(c) \
10441 : /* No clobbers */); \
10445 #define vqshrn_high_n_s32(a, b, c) \
10448 int32x4_t b_ = (b); \
10449 int16x4_t a_ = (a); \
10450 int16x8_t result = vcombine_s16 \
10452 (__AARCH64_UINT64_C (0x0))); \
10453 __asm__ ("sqshrn2 %0.8h, %1.4s, #%2" \
10455 : "w"(b_), "i"(c) \
10456 : /* No clobbers */); \
10460 #define vqshrn_high_n_s64(a, b, c) \
10463 int64x2_t b_ = (b); \
10464 int32x2_t a_ = (a); \
10465 int32x4_t result = vcombine_s32 \
10467 (__AARCH64_UINT64_C (0x0))); \
10468 __asm__ ("sqshrn2 %0.4s, %1.2d, #%2" \
10470 : "w"(b_), "i"(c) \
10471 : /* No clobbers */); \
10475 #define vqshrn_high_n_u16(a, b, c) \
10478 uint16x8_t b_ = (b); \
10479 uint8x8_t a_ = (a); \
10480 uint8x16_t result = vcombine_u8 \
10482 (__AARCH64_UINT64_C (0x0))); \
10483 __asm__ ("uqshrn2 %0.16b, %1.8h, #%2" \
10485 : "w"(b_), "i"(c) \
10486 : /* No clobbers */); \
10490 #define vqshrn_high_n_u32(a, b, c) \
10493 uint32x4_t b_ = (b); \
10494 uint16x4_t a_ = (a); \
10495 uint16x8_t result = vcombine_u16 \
10497 (__AARCH64_UINT64_C (0x0))); \
10498 __asm__ ("uqshrn2 %0.8h, %1.4s, #%2" \
10500 : "w"(b_), "i"(c) \
10501 : /* No clobbers */); \
10505 #define vqshrn_high_n_u64(a, b, c) \
10508 uint64x2_t b_ = (b); \
10509 uint32x2_t a_ = (a); \
10510 uint32x4_t result = vcombine_u32 \
10512 (__AARCH64_UINT64_C (0x0))); \
10513 __asm__ ("uqshrn2 %0.4s, %1.2d, #%2" \
10515 : "w"(b_), "i"(c) \
10516 : /* No clobbers */); \
10520 #define vqshrun_high_n_s16(a, b, c) \
10523 int16x8_t b_ = (b); \
10524 uint8x8_t a_ = (a); \
10525 uint8x16_t result = vcombine_u8 \
10527 (__AARCH64_UINT64_C (0x0))); \
10528 __asm__ ("sqshrun2 %0.16b, %1.8h, #%2" \
10530 : "w"(b_), "i"(c) \
10531 : /* No clobbers */); \
10535 #define vqshrun_high_n_s32(a, b, c) \
10538 int32x4_t b_ = (b); \
10539 uint16x4_t a_ = (a); \
10540 uint16x8_t result = vcombine_u16 \
10542 (__AARCH64_UINT64_C (0x0))); \
10543 __asm__ ("sqshrun2 %0.8h, %1.4s, #%2" \
10545 : "w"(b_), "i"(c) \
10546 : /* No clobbers */); \
10550 #define vqshrun_high_n_s64(a, b, c) \
10553 int64x2_t b_ = (b); \
10554 uint32x2_t a_ = (a); \
10555 uint32x4_t result = vcombine_u32 \
10557 (__AARCH64_UINT64_C (0x0))); \
10558 __asm__ ("sqshrun2 %0.4s, %1.2d, #%2" \
10560 : "w"(b_), "i"(c) \
10561 : /* No clobbers */); \
10565 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
10566 vrbit_s8 (int8x8_t a
)
10569 __asm__ ("rbit %0.8b,%1.8b"
10572 : /* No clobbers */);
10576 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
10577 vrbit_u8 (uint8x8_t a
)
10580 __asm__ ("rbit %0.8b,%1.8b"
10583 : /* No clobbers */);
10587 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
10588 vrbitq_s8 (int8x16_t a
)
10591 __asm__ ("rbit %0.16b,%1.16b"
10594 : /* No clobbers */);
10598 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
10599 vrbitq_u8 (uint8x16_t a
)
10602 __asm__ ("rbit %0.16b,%1.16b"
10605 : /* No clobbers */);
10609 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
10610 vrecpe_u32 (uint32x2_t a
)
10613 __asm__ ("urecpe %0.2s,%1.2s"
10616 : /* No clobbers */);
10620 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
10621 vrecpeq_u32 (uint32x4_t a
)
10624 __asm__ ("urecpe %0.4s,%1.4s"
10627 : /* No clobbers */);
10631 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
10632 vrev16_p8 (poly8x8_t a
)
10635 __asm__ ("rev16 %0.8b,%1.8b"
10638 : /* No clobbers */);
10642 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
10643 vrev16_s8 (int8x8_t a
)
10646 __asm__ ("rev16 %0.8b,%1.8b"
10649 : /* No clobbers */);
10653 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
10654 vrev16_u8 (uint8x8_t a
)
10657 __asm__ ("rev16 %0.8b,%1.8b"
10660 : /* No clobbers */);
10664 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
10665 vrev16q_p8 (poly8x16_t a
)
10668 __asm__ ("rev16 %0.16b,%1.16b"
10671 : /* No clobbers */);
10675 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
10676 vrev16q_s8 (int8x16_t a
)
10679 __asm__ ("rev16 %0.16b,%1.16b"
10682 : /* No clobbers */);
10686 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
10687 vrev16q_u8 (uint8x16_t a
)
10690 __asm__ ("rev16 %0.16b,%1.16b"
10693 : /* No clobbers */);
10697 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
10698 vrev32_p8 (poly8x8_t a
)
10701 __asm__ ("rev32 %0.8b,%1.8b"
10704 : /* No clobbers */);
10708 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
10709 vrev32_p16 (poly16x4_t a
)
10712 __asm__ ("rev32 %0.4h,%1.4h"
10715 : /* No clobbers */);
10719 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
10720 vrev32_s8 (int8x8_t a
)
10723 __asm__ ("rev32 %0.8b,%1.8b"
10726 : /* No clobbers */);
10730 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
10731 vrev32_s16 (int16x4_t a
)
10734 __asm__ ("rev32 %0.4h,%1.4h"
10737 : /* No clobbers */);
10741 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
10742 vrev32_u8 (uint8x8_t a
)
10745 __asm__ ("rev32 %0.8b,%1.8b"
10748 : /* No clobbers */);
10752 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
10753 vrev32_u16 (uint16x4_t a
)
10756 __asm__ ("rev32 %0.4h,%1.4h"
10759 : /* No clobbers */);
10763 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
10764 vrev32q_p8 (poly8x16_t a
)
10767 __asm__ ("rev32 %0.16b,%1.16b"
10770 : /* No clobbers */);
10774 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
10775 vrev32q_p16 (poly16x8_t a
)
10778 __asm__ ("rev32 %0.8h,%1.8h"
10781 : /* No clobbers */);
10785 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
10786 vrev32q_s8 (int8x16_t a
)
10789 __asm__ ("rev32 %0.16b,%1.16b"
10792 : /* No clobbers */);
10796 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
10797 vrev32q_s16 (int16x8_t a
)
10800 __asm__ ("rev32 %0.8h,%1.8h"
10803 : /* No clobbers */);
10807 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
10808 vrev32q_u8 (uint8x16_t a
)
10811 __asm__ ("rev32 %0.16b,%1.16b"
10814 : /* No clobbers */);
10818 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
10819 vrev32q_u16 (uint16x8_t a
)
10822 __asm__ ("rev32 %0.8h,%1.8h"
10825 : /* No clobbers */);
10829 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
10830 vrev64_f32 (float32x2_t a
)
10832 float32x2_t result
;
10833 __asm__ ("rev64 %0.2s,%1.2s"
10836 : /* No clobbers */);
10840 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
10841 vrev64_p8 (poly8x8_t a
)
10844 __asm__ ("rev64 %0.8b,%1.8b"
10847 : /* No clobbers */);
10851 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
10852 vrev64_p16 (poly16x4_t a
)
10855 __asm__ ("rev64 %0.4h,%1.4h"
10858 : /* No clobbers */);
10862 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
10863 vrev64_s8 (int8x8_t a
)
10866 __asm__ ("rev64 %0.8b,%1.8b"
10869 : /* No clobbers */);
10873 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
10874 vrev64_s16 (int16x4_t a
)
10877 __asm__ ("rev64 %0.4h,%1.4h"
10880 : /* No clobbers */);
10884 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
10885 vrev64_s32 (int32x2_t a
)
10888 __asm__ ("rev64 %0.2s,%1.2s"
10891 : /* No clobbers */);
10895 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
10896 vrev64_u8 (uint8x8_t a
)
10899 __asm__ ("rev64 %0.8b,%1.8b"
10902 : /* No clobbers */);
10906 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
10907 vrev64_u16 (uint16x4_t a
)
10910 __asm__ ("rev64 %0.4h,%1.4h"
10913 : /* No clobbers */);
10917 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
10918 vrev64_u32 (uint32x2_t a
)
10921 __asm__ ("rev64 %0.2s,%1.2s"
10924 : /* No clobbers */);
10928 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
10929 vrev64q_f32 (float32x4_t a
)
10931 float32x4_t result
;
10932 __asm__ ("rev64 %0.4s,%1.4s"
10935 : /* No clobbers */);
10939 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
10940 vrev64q_p8 (poly8x16_t a
)
10943 __asm__ ("rev64 %0.16b,%1.16b"
10946 : /* No clobbers */);
10950 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
10951 vrev64q_p16 (poly16x8_t a
)
10954 __asm__ ("rev64 %0.8h,%1.8h"
10957 : /* No clobbers */);
10961 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
10962 vrev64q_s8 (int8x16_t a
)
10965 __asm__ ("rev64 %0.16b,%1.16b"
10968 : /* No clobbers */);
10972 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
10973 vrev64q_s16 (int16x8_t a
)
10976 __asm__ ("rev64 %0.8h,%1.8h"
10979 : /* No clobbers */);
10983 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
10984 vrev64q_s32 (int32x4_t a
)
10987 __asm__ ("rev64 %0.4s,%1.4s"
10990 : /* No clobbers */);
10994 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
10995 vrev64q_u8 (uint8x16_t a
)
10998 __asm__ ("rev64 %0.16b,%1.16b"
11001 : /* No clobbers */);
11005 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
11006 vrev64q_u16 (uint16x8_t a
)
11009 __asm__ ("rev64 %0.8h,%1.8h"
11012 : /* No clobbers */);
11016 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
11017 vrev64q_u32 (uint32x4_t a
)
11020 __asm__ ("rev64 %0.4s,%1.4s"
11023 : /* No clobbers */);
11027 #define vrshrn_high_n_s16(a, b, c) \
11030 int16x8_t b_ = (b); \
11031 int8x8_t a_ = (a); \
11032 int8x16_t result = vcombine_s8 \
11034 (__AARCH64_UINT64_C (0x0))); \
11035 __asm__ ("rshrn2 %0.16b,%1.8h,#%2" \
11037 : "w"(b_), "i"(c) \
11038 : /* No clobbers */); \
11042 #define vrshrn_high_n_s32(a, b, c) \
11045 int32x4_t b_ = (b); \
11046 int16x4_t a_ = (a); \
11047 int16x8_t result = vcombine_s16 \
11049 (__AARCH64_UINT64_C (0x0))); \
11050 __asm__ ("rshrn2 %0.8h,%1.4s,#%2" \
11052 : "w"(b_), "i"(c) \
11053 : /* No clobbers */); \
11057 #define vrshrn_high_n_s64(a, b, c) \
11060 int64x2_t b_ = (b); \
11061 int32x2_t a_ = (a); \
11062 int32x4_t result = vcombine_s32 \
11064 (__AARCH64_UINT64_C (0x0))); \
11065 __asm__ ("rshrn2 %0.4s,%1.2d,#%2" \
11067 : "w"(b_), "i"(c) \
11068 : /* No clobbers */); \
11072 #define vrshrn_high_n_u16(a, b, c) \
11075 uint16x8_t b_ = (b); \
11076 uint8x8_t a_ = (a); \
11077 uint8x16_t result = vcombine_u8 \
11079 (__AARCH64_UINT64_C (0x0))); \
11080 __asm__ ("rshrn2 %0.16b,%1.8h,#%2" \
11082 : "w"(b_), "i"(c) \
11083 : /* No clobbers */); \
11087 #define vrshrn_high_n_u32(a, b, c) \
11090 uint32x4_t b_ = (b); \
11091 uint16x4_t a_ = (a); \
11092 uint16x8_t result = vcombine_u16 \
11094 (__AARCH64_UINT64_C (0x0))); \
11095 __asm__ ("rshrn2 %0.8h,%1.4s,#%2" \
11097 : "w"(b_), "i"(c) \
11098 : /* No clobbers */); \
11102 #define vrshrn_high_n_u64(a, b, c) \
11105 uint64x2_t b_ = (b); \
11106 uint32x2_t a_ = (a); \
11107 uint32x4_t result = vcombine_u32 \
11109 (__AARCH64_UINT64_C (0x0))); \
11110 __asm__ ("rshrn2 %0.4s,%1.2d,#%2" \
11112 : "w"(b_), "i"(c) \
11113 : /* No clobbers */); \
11117 #define vrshrn_n_s16(a, b) \
11120 int16x8_t a_ = (a); \
11122 __asm__ ("rshrn %0.8b,%1.8h,%2" \
11124 : "w"(a_), "i"(b) \
11125 : /* No clobbers */); \
11129 #define vrshrn_n_s32(a, b) \
11132 int32x4_t a_ = (a); \
11133 int16x4_t result; \
11134 __asm__ ("rshrn %0.4h,%1.4s,%2" \
11136 : "w"(a_), "i"(b) \
11137 : /* No clobbers */); \
11141 #define vrshrn_n_s64(a, b) \
11144 int64x2_t a_ = (a); \
11145 int32x2_t result; \
11146 __asm__ ("rshrn %0.2s,%1.2d,%2" \
11148 : "w"(a_), "i"(b) \
11149 : /* No clobbers */); \
11153 #define vrshrn_n_u16(a, b) \
11156 uint16x8_t a_ = (a); \
11157 uint8x8_t result; \
11158 __asm__ ("rshrn %0.8b,%1.8h,%2" \
11160 : "w"(a_), "i"(b) \
11161 : /* No clobbers */); \
11165 #define vrshrn_n_u32(a, b) \
11168 uint32x4_t a_ = (a); \
11169 uint16x4_t result; \
11170 __asm__ ("rshrn %0.4h,%1.4s,%2" \
11172 : "w"(a_), "i"(b) \
11173 : /* No clobbers */); \
11177 #define vrshrn_n_u64(a, b) \
11180 uint64x2_t a_ = (a); \
11181 uint32x2_t result; \
11182 __asm__ ("rshrn %0.2s,%1.2d,%2" \
11184 : "w"(a_), "i"(b) \
11185 : /* No clobbers */); \
11189 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
11190 vrsqrte_f32 (float32x2_t a
)
11192 float32x2_t result
;
11193 __asm__ ("frsqrte %0.2s,%1.2s"
11196 : /* No clobbers */);
11200 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
11201 vrsqrte_f64 (float64x1_t a
)
11203 float64x1_t result
;
11204 __asm__ ("frsqrte %d0,%d1"
11207 : /* No clobbers */);
11211 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
11212 vrsqrte_u32 (uint32x2_t a
)
11215 __asm__ ("ursqrte %0.2s,%1.2s"
11218 : /* No clobbers */);
11222 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
11223 vrsqrted_f64 (float64_t a
)
11226 __asm__ ("frsqrte %d0,%d1"
11229 : /* No clobbers */);
11233 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
11234 vrsqrteq_f32 (float32x4_t a
)
11236 float32x4_t result
;
11237 __asm__ ("frsqrte %0.4s,%1.4s"
11240 : /* No clobbers */);
11244 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
11245 vrsqrteq_f64 (float64x2_t a
)
11247 float64x2_t result
;
11248 __asm__ ("frsqrte %0.2d,%1.2d"
11251 : /* No clobbers */);
11255 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
11256 vrsqrteq_u32 (uint32x4_t a
)
11259 __asm__ ("ursqrte %0.4s,%1.4s"
11262 : /* No clobbers */);
11266 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
11267 vrsqrtes_f32 (float32_t a
)
11270 __asm__ ("frsqrte %s0,%s1"
11273 : /* No clobbers */);
11277 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
11278 vrsqrts_f32 (float32x2_t a
, float32x2_t b
)
11280 float32x2_t result
;
11281 __asm__ ("frsqrts %0.2s,%1.2s,%2.2s"
11284 : /* No clobbers */);
11288 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
11289 vrsqrtsd_f64 (float64_t a
, float64_t b
)
11292 __asm__ ("frsqrts %d0,%d1,%d2"
11295 : /* No clobbers */);
11299 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
11300 vrsqrtsq_f32 (float32x4_t a
, float32x4_t b
)
11302 float32x4_t result
;
11303 __asm__ ("frsqrts %0.4s,%1.4s,%2.4s"
11306 : /* No clobbers */);
11310 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
11311 vrsqrtsq_f64 (float64x2_t a
, float64x2_t b
)
11313 float64x2_t result
;
11314 __asm__ ("frsqrts %0.2d,%1.2d,%2.2d"
11317 : /* No clobbers */);
11321 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
11322 vrsqrtss_f32 (float32_t a
, float32_t b
)
11325 __asm__ ("frsqrts %s0,%s1,%s2"
11328 : /* No clobbers */);
11332 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
11333 vrsrtsq_f64 (float64x2_t a
, float64x2_t b
)
11335 float64x2_t result
;
11336 __asm__ ("frsqrts %0.2d,%1.2d,%2.2d"
11339 : /* No clobbers */);
11343 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
11344 vrsubhn_high_s16 (int8x8_t a
, int16x8_t b
, int16x8_t c
)
11346 int8x16_t result
= vcombine_s8 (a
, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
11347 __asm__ ("rsubhn2 %0.16b, %1.8h, %2.8h"
11350 : /* No clobbers */);
11354 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
11355 vrsubhn_high_s32 (int16x4_t a
, int32x4_t b
, int32x4_t c
)
11357 int16x8_t result
= vcombine_s16 (a
, vcreate_s16 (__AARCH64_UINT64_C (0x0)));
11358 __asm__ ("rsubhn2 %0.8h, %1.4s, %2.4s"
11361 : /* No clobbers */);
11365 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
11366 vrsubhn_high_s64 (int32x2_t a
, int64x2_t b
, int64x2_t c
)
11368 int32x4_t result
= vcombine_s32 (a
, vcreate_s32 (__AARCH64_UINT64_C (0x0)));
11369 __asm__ ("rsubhn2 %0.4s, %1.2d, %2.2d"
11372 : /* No clobbers */);
11376 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
11377 vrsubhn_high_u16 (uint8x8_t a
, uint16x8_t b
, uint16x8_t c
)
11379 uint8x16_t result
= vcombine_u8 (a
, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
11380 __asm__ ("rsubhn2 %0.16b, %1.8h, %2.8h"
11383 : /* No clobbers */);
11387 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
11388 vrsubhn_high_u32 (uint16x4_t a
, uint32x4_t b
, uint32x4_t c
)
11390 uint16x8_t result
= vcombine_u16 (a
, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
11391 __asm__ ("rsubhn2 %0.8h, %1.4s, %2.4s"
11394 : /* No clobbers */);
11398 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
11399 vrsubhn_high_u64 (uint32x2_t a
, uint64x2_t b
, uint64x2_t c
)
11401 uint32x4_t result
= vcombine_u32 (a
, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
11402 __asm__ ("rsubhn2 %0.4s, %1.2d, %2.2d"
11405 : /* No clobbers */);
11409 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
11410 vrsubhn_s16 (int16x8_t a
, int16x8_t b
)
11413 __asm__ ("rsubhn %0.8b, %1.8h, %2.8h"
11416 : /* No clobbers */);
11420 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
11421 vrsubhn_s32 (int32x4_t a
, int32x4_t b
)
11424 __asm__ ("rsubhn %0.4h, %1.4s, %2.4s"
11427 : /* No clobbers */);
11431 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
11432 vrsubhn_s64 (int64x2_t a
, int64x2_t b
)
11435 __asm__ ("rsubhn %0.2s, %1.2d, %2.2d"
11438 : /* No clobbers */);
11442 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
11443 vrsubhn_u16 (uint16x8_t a
, uint16x8_t b
)
11446 __asm__ ("rsubhn %0.8b, %1.8h, %2.8h"
11449 : /* No clobbers */);
11453 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
11454 vrsubhn_u32 (uint32x4_t a
, uint32x4_t b
)
11457 __asm__ ("rsubhn %0.4h, %1.4s, %2.4s"
11460 : /* No clobbers */);
11464 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
11465 vrsubhn_u64 (uint64x2_t a
, uint64x2_t b
)
11468 __asm__ ("rsubhn %0.2s, %1.2d, %2.2d"
11471 : /* No clobbers */);
11475 #define vset_lane_f32(a, b, c) \
11478 float32x2_t b_ = (b); \
11479 float32_t a_ = (a); \
11480 float32x2_t result; \
11481 __asm__ ("ins %0.s[%3], %w1" \
11483 : "r"(a_), "0"(b_), "i"(c) \
11484 : /* No clobbers */); \
11488 #define vset_lane_f64(a, b, c) \
11491 float64x1_t b_ = (b); \
11492 float64_t a_ = (a); \
11493 float64x1_t result; \
11494 __asm__ ("ins %0.d[%3], %x1" \
11496 : "r"(a_), "0"(b_), "i"(c) \
11497 : /* No clobbers */); \
11501 #define vset_lane_p8(a, b, c) \
11504 poly8x8_t b_ = (b); \
11505 poly8_t a_ = (a); \
11506 poly8x8_t result; \
11507 __asm__ ("ins %0.b[%3], %w1" \
11509 : "r"(a_), "0"(b_), "i"(c) \
11510 : /* No clobbers */); \
11514 #define vset_lane_p16(a, b, c) \
11517 poly16x4_t b_ = (b); \
11518 poly16_t a_ = (a); \
11519 poly16x4_t result; \
11520 __asm__ ("ins %0.h[%3], %w1" \
11522 : "r"(a_), "0"(b_), "i"(c) \
11523 : /* No clobbers */); \
11527 #define vset_lane_s8(a, b, c) \
11530 int8x8_t b_ = (b); \
11533 __asm__ ("ins %0.b[%3], %w1" \
11535 : "r"(a_), "0"(b_), "i"(c) \
11536 : /* No clobbers */); \
11540 #define vset_lane_s16(a, b, c) \
11543 int16x4_t b_ = (b); \
11544 int16_t a_ = (a); \
11545 int16x4_t result; \
11546 __asm__ ("ins %0.h[%3], %w1" \
11548 : "r"(a_), "0"(b_), "i"(c) \
11549 : /* No clobbers */); \
11553 #define vset_lane_s32(a, b, c) \
11556 int32x2_t b_ = (b); \
11557 int32_t a_ = (a); \
11558 int32x2_t result; \
11559 __asm__ ("ins %0.s[%3], %w1" \
11561 : "r"(a_), "0"(b_), "i"(c) \
11562 : /* No clobbers */); \
11566 #define vset_lane_s64(a, b, c) \
11569 int64x1_t b_ = (b); \
11570 int64_t a_ = (a); \
11571 int64x1_t result; \
11572 __asm__ ("ins %0.d[%3], %x1" \
11574 : "r"(a_), "0"(b_), "i"(c) \
11575 : /* No clobbers */); \
11579 #define vset_lane_u8(a, b, c) \
11582 uint8x8_t b_ = (b); \
11583 uint8_t a_ = (a); \
11584 uint8x8_t result; \
11585 __asm__ ("ins %0.b[%3], %w1" \
11587 : "r"(a_), "0"(b_), "i"(c) \
11588 : /* No clobbers */); \
11592 #define vset_lane_u16(a, b, c) \
11595 uint16x4_t b_ = (b); \
11596 uint16_t a_ = (a); \
11597 uint16x4_t result; \
11598 __asm__ ("ins %0.h[%3], %w1" \
11600 : "r"(a_), "0"(b_), "i"(c) \
11601 : /* No clobbers */); \
11605 #define vset_lane_u32(a, b, c) \
11608 uint32x2_t b_ = (b); \
11609 uint32_t a_ = (a); \
11610 uint32x2_t result; \
11611 __asm__ ("ins %0.s[%3], %w1" \
11613 : "r"(a_), "0"(b_), "i"(c) \
11614 : /* No clobbers */); \
11618 #define vset_lane_u64(a, b, c) \
11621 uint64x1_t b_ = (b); \
11622 uint64_t a_ = (a); \
11623 uint64x1_t result; \
11624 __asm__ ("ins %0.d[%3], %x1" \
11626 : "r"(a_), "0"(b_), "i"(c) \
11627 : /* No clobbers */); \
11631 #define vsetq_lane_f32(a, b, c) \
11634 float32x4_t b_ = (b); \
11635 float32_t a_ = (a); \
11636 float32x4_t result; \
11637 __asm__ ("ins %0.s[%3], %w1" \
11639 : "r"(a_), "0"(b_), "i"(c) \
11640 : /* No clobbers */); \
11644 #define vsetq_lane_f64(a, b, c) \
11647 float64x2_t b_ = (b); \
11648 float64_t a_ = (a); \
11649 float64x2_t result; \
11650 __asm__ ("ins %0.d[%3], %x1" \
11652 : "r"(a_), "0"(b_), "i"(c) \
11653 : /* No clobbers */); \
11657 #define vsetq_lane_p8(a, b, c) \
11660 poly8x16_t b_ = (b); \
11661 poly8_t a_ = (a); \
11662 poly8x16_t result; \
11663 __asm__ ("ins %0.b[%3], %w1" \
11665 : "r"(a_), "0"(b_), "i"(c) \
11666 : /* No clobbers */); \
11670 #define vsetq_lane_p16(a, b, c) \
11673 poly16x8_t b_ = (b); \
11674 poly16_t a_ = (a); \
11675 poly16x8_t result; \
11676 __asm__ ("ins %0.h[%3], %w1" \
11678 : "r"(a_), "0"(b_), "i"(c) \
11679 : /* No clobbers */); \
11683 #define vsetq_lane_s8(a, b, c) \
11686 int8x16_t b_ = (b); \
11688 int8x16_t result; \
11689 __asm__ ("ins %0.b[%3], %w1" \
11691 : "r"(a_), "0"(b_), "i"(c) \
11692 : /* No clobbers */); \
11696 #define vsetq_lane_s16(a, b, c) \
11699 int16x8_t b_ = (b); \
11700 int16_t a_ = (a); \
11701 int16x8_t result; \
11702 __asm__ ("ins %0.h[%3], %w1" \
11704 : "r"(a_), "0"(b_), "i"(c) \
11705 : /* No clobbers */); \
11709 #define vsetq_lane_s32(a, b, c) \
11712 int32x4_t b_ = (b); \
11713 int32_t a_ = (a); \
11714 int32x4_t result; \
11715 __asm__ ("ins %0.s[%3], %w1" \
11717 : "r"(a_), "0"(b_), "i"(c) \
11718 : /* No clobbers */); \
11722 #define vsetq_lane_s64(a, b, c) \
11725 int64x2_t b_ = (b); \
11726 int64_t a_ = (a); \
11727 int64x2_t result; \
11728 __asm__ ("ins %0.d[%3], %x1" \
11730 : "r"(a_), "0"(b_), "i"(c) \
11731 : /* No clobbers */); \
11735 #define vsetq_lane_u8(a, b, c) \
11738 uint8x16_t b_ = (b); \
11739 uint8_t a_ = (a); \
11740 uint8x16_t result; \
11741 __asm__ ("ins %0.b[%3], %w1" \
11743 : "r"(a_), "0"(b_), "i"(c) \
11744 : /* No clobbers */); \
11748 #define vsetq_lane_u16(a, b, c) \
11751 uint16x8_t b_ = (b); \
11752 uint16_t a_ = (a); \
11753 uint16x8_t result; \
11754 __asm__ ("ins %0.h[%3], %w1" \
11756 : "r"(a_), "0"(b_), "i"(c) \
11757 : /* No clobbers */); \
11761 #define vsetq_lane_u32(a, b, c) \
11764 uint32x4_t b_ = (b); \
11765 uint32_t a_ = (a); \
11766 uint32x4_t result; \
11767 __asm__ ("ins %0.s[%3], %w1" \
11769 : "r"(a_), "0"(b_), "i"(c) \
11770 : /* No clobbers */); \
11774 #define vsetq_lane_u64(a, b, c) \
11777 uint64x2_t b_ = (b); \
11778 uint64_t a_ = (a); \
11779 uint64x2_t result; \
11780 __asm__ ("ins %0.d[%3], %x1" \
11782 : "r"(a_), "0"(b_), "i"(c) \
11783 : /* No clobbers */); \
11787 #define vshrn_high_n_s16(a, b, c) \
11790 int16x8_t b_ = (b); \
11791 int8x8_t a_ = (a); \
11792 int8x16_t result = vcombine_s8 \
11794 (__AARCH64_UINT64_C (0x0))); \
11795 __asm__ ("shrn2 %0.16b,%1.8h,#%2" \
11797 : "w"(b_), "i"(c) \
11798 : /* No clobbers */); \
11802 #define vshrn_high_n_s32(a, b, c) \
11805 int32x4_t b_ = (b); \
11806 int16x4_t a_ = (a); \
11807 int16x8_t result = vcombine_s16 \
11809 (__AARCH64_UINT64_C (0x0))); \
11810 __asm__ ("shrn2 %0.8h,%1.4s,#%2" \
11812 : "w"(b_), "i"(c) \
11813 : /* No clobbers */); \
11817 #define vshrn_high_n_s64(a, b, c) \
11820 int64x2_t b_ = (b); \
11821 int32x2_t a_ = (a); \
11822 int32x4_t result = vcombine_s32 \
11824 (__AARCH64_UINT64_C (0x0))); \
11825 __asm__ ("shrn2 %0.4s,%1.2d,#%2" \
11827 : "w"(b_), "i"(c) \
11828 : /* No clobbers */); \
11832 #define vshrn_high_n_u16(a, b, c) \
11835 uint16x8_t b_ = (b); \
11836 uint8x8_t a_ = (a); \
11837 uint8x16_t result = vcombine_u8 \
11839 (__AARCH64_UINT64_C (0x0))); \
11840 __asm__ ("shrn2 %0.16b,%1.8h,#%2" \
11842 : "w"(b_), "i"(c) \
11843 : /* No clobbers */); \
11847 #define vshrn_high_n_u32(a, b, c) \
11850 uint32x4_t b_ = (b); \
11851 uint16x4_t a_ = (a); \
11852 uint16x8_t result = vcombine_u16 \
11854 (__AARCH64_UINT64_C (0x0))); \
11855 __asm__ ("shrn2 %0.8h,%1.4s,#%2" \
11857 : "w"(b_), "i"(c) \
11858 : /* No clobbers */); \
11862 #define vshrn_high_n_u64(a, b, c) \
11865 uint64x2_t b_ = (b); \
11866 uint32x2_t a_ = (a); \
11867 uint32x4_t result = vcombine_u32 \
11869 (__AARCH64_UINT64_C (0x0))); \
11870 __asm__ ("shrn2 %0.4s,%1.2d,#%2" \
11872 : "w"(b_), "i"(c) \
11873 : /* No clobbers */); \
11877 #define vshrn_n_s16(a, b) \
11880 int16x8_t a_ = (a); \
11882 __asm__ ("shrn %0.8b,%1.8h,%2" \
11884 : "w"(a_), "i"(b) \
11885 : /* No clobbers */); \
11889 #define vshrn_n_s32(a, b) \
11892 int32x4_t a_ = (a); \
11893 int16x4_t result; \
11894 __asm__ ("shrn %0.4h,%1.4s,%2" \
11896 : "w"(a_), "i"(b) \
11897 : /* No clobbers */); \
11901 #define vshrn_n_s64(a, b) \
11904 int64x2_t a_ = (a); \
11905 int32x2_t result; \
11906 __asm__ ("shrn %0.2s,%1.2d,%2" \
11908 : "w"(a_), "i"(b) \
11909 : /* No clobbers */); \
11913 #define vshrn_n_u16(a, b) \
11916 uint16x8_t a_ = (a); \
11917 uint8x8_t result; \
11918 __asm__ ("shrn %0.8b,%1.8h,%2" \
11920 : "w"(a_), "i"(b) \
11921 : /* No clobbers */); \
11925 #define vshrn_n_u32(a, b) \
11928 uint32x4_t a_ = (a); \
11929 uint16x4_t result; \
11930 __asm__ ("shrn %0.4h,%1.4s,%2" \
11932 : "w"(a_), "i"(b) \
11933 : /* No clobbers */); \
11937 #define vshrn_n_u64(a, b) \
11940 uint64x2_t a_ = (a); \
11941 uint32x2_t result; \
11942 __asm__ ("shrn %0.2s,%1.2d,%2" \
11944 : "w"(a_), "i"(b) \
11945 : /* No clobbers */); \
11949 #define vsli_n_p8(a, b, c) \
11952 poly8x8_t b_ = (b); \
11953 poly8x8_t a_ = (a); \
11954 poly8x8_t result; \
11955 __asm__ ("sli %0.8b,%2.8b,%3" \
11957 : "0"(a_), "w"(b_), "i"(c) \
11958 : /* No clobbers */); \
11962 #define vsli_n_p16(a, b, c) \
11965 poly16x4_t b_ = (b); \
11966 poly16x4_t a_ = (a); \
11967 poly16x4_t result; \
11968 __asm__ ("sli %0.4h,%2.4h,%3" \
11970 : "0"(a_), "w"(b_), "i"(c) \
11971 : /* No clobbers */); \
11975 #define vsliq_n_p8(a, b, c) \
11978 poly8x16_t b_ = (b); \
11979 poly8x16_t a_ = (a); \
11980 poly8x16_t result; \
11981 __asm__ ("sli %0.16b,%2.16b,%3" \
11983 : "0"(a_), "w"(b_), "i"(c) \
11984 : /* No clobbers */); \
11988 #define vsliq_n_p16(a, b, c) \
11991 poly16x8_t b_ = (b); \
11992 poly16x8_t a_ = (a); \
11993 poly16x8_t result; \
11994 __asm__ ("sli %0.8h,%2.8h,%3" \
11996 : "0"(a_), "w"(b_), "i"(c) \
11997 : /* No clobbers */); \
12001 #define vsri_n_p8(a, b, c) \
12004 poly8x8_t b_ = (b); \
12005 poly8x8_t a_ = (a); \
12006 poly8x8_t result; \
12007 __asm__ ("sri %0.8b,%2.8b,%3" \
12009 : "0"(a_), "w"(b_), "i"(c) \
12010 : /* No clobbers */); \
12014 #define vsri_n_p16(a, b, c) \
12017 poly16x4_t b_ = (b); \
12018 poly16x4_t a_ = (a); \
12019 poly16x4_t result; \
12020 __asm__ ("sri %0.4h,%2.4h,%3" \
12022 : "0"(a_), "w"(b_), "i"(c) \
12023 : /* No clobbers */); \
12027 #define vsriq_n_p8(a, b, c) \
12030 poly8x16_t b_ = (b); \
12031 poly8x16_t a_ = (a); \
12032 poly8x16_t result; \
12033 __asm__ ("sri %0.16b,%2.16b,%3" \
12035 : "0"(a_), "w"(b_), "i"(c) \
12036 : /* No clobbers */); \
12040 #define vsriq_n_p16(a, b, c) \
12043 poly16x8_t b_ = (b); \
12044 poly16x8_t a_ = (a); \
12045 poly16x8_t result; \
12046 __asm__ ("sri %0.8h,%2.8h,%3" \
12048 : "0"(a_), "w"(b_), "i"(c) \
12049 : /* No clobbers */); \
12053 #define vst1_lane_f32(a, b, c) \
12056 float32x2_t b_ = (b); \
12057 float32_t * a_ = (a); \
12058 __asm__ ("st1 {%1.s}[%2],[%0]" \
12060 : "r"(a_), "w"(b_), "i"(c) \
12064 #define vst1_lane_f64(a, b, c) \
12067 float64x1_t b_ = (b); \
12068 float64_t * a_ = (a); \
12069 __asm__ ("st1 {%1.d}[%2],[%0]" \
12071 : "r"(a_), "w"(b_), "i"(c) \
12075 #define vst1_lane_p8(a, b, c) \
12078 poly8x8_t b_ = (b); \
12079 poly8_t * a_ = (a); \
12080 __asm__ ("st1 {%1.b}[%2],[%0]" \
12082 : "r"(a_), "w"(b_), "i"(c) \
12086 #define vst1_lane_p16(a, b, c) \
12089 poly16x4_t b_ = (b); \
12090 poly16_t * a_ = (a); \
12091 __asm__ ("st1 {%1.h}[%2],[%0]" \
12093 : "r"(a_), "w"(b_), "i"(c) \
12097 #define vst1_lane_s8(a, b, c) \
12100 int8x8_t b_ = (b); \
12101 int8_t * a_ = (a); \
12102 __asm__ ("st1 {%1.b}[%2],[%0]" \
12104 : "r"(a_), "w"(b_), "i"(c) \
12108 #define vst1_lane_s16(a, b, c) \
12111 int16x4_t b_ = (b); \
12112 int16_t * a_ = (a); \
12113 __asm__ ("st1 {%1.h}[%2],[%0]" \
12115 : "r"(a_), "w"(b_), "i"(c) \
12119 #define vst1_lane_s32(a, b, c) \
12122 int32x2_t b_ = (b); \
12123 int32_t * a_ = (a); \
12124 __asm__ ("st1 {%1.s}[%2],[%0]" \
12126 : "r"(a_), "w"(b_), "i"(c) \
12130 #define vst1_lane_s64(a, b, c) \
12133 int64x1_t b_ = (b); \
12134 int64_t * a_ = (a); \
12135 __asm__ ("st1 {%1.d}[%2],[%0]" \
12137 : "r"(a_), "w"(b_), "i"(c) \
12141 #define vst1_lane_u8(a, b, c) \
12144 uint8x8_t b_ = (b); \
12145 uint8_t * a_ = (a); \
12146 __asm__ ("st1 {%1.b}[%2],[%0]" \
12148 : "r"(a_), "w"(b_), "i"(c) \
12152 #define vst1_lane_u16(a, b, c) \
12155 uint16x4_t b_ = (b); \
12156 uint16_t * a_ = (a); \
12157 __asm__ ("st1 {%1.h}[%2],[%0]" \
12159 : "r"(a_), "w"(b_), "i"(c) \
12163 #define vst1_lane_u32(a, b, c) \
12166 uint32x2_t b_ = (b); \
12167 uint32_t * a_ = (a); \
12168 __asm__ ("st1 {%1.s}[%2],[%0]" \
12170 : "r"(a_), "w"(b_), "i"(c) \
12174 #define vst1_lane_u64(a, b, c) \
12177 uint64x1_t b_ = (b); \
12178 uint64_t * a_ = (a); \
12179 __asm__ ("st1 {%1.d}[%2],[%0]" \
12181 : "r"(a_), "w"(b_), "i"(c) \
12186 #define vst1q_lane_f32(a, b, c) \
12189 float32x4_t b_ = (b); \
12190 float32_t * a_ = (a); \
12191 __asm__ ("st1 {%1.s}[%2],[%0]" \
12193 : "r"(a_), "w"(b_), "i"(c) \
12197 #define vst1q_lane_f64(a, b, c) \
12200 float64x2_t b_ = (b); \
12201 float64_t * a_ = (a); \
12202 __asm__ ("st1 {%1.d}[%2],[%0]" \
12204 : "r"(a_), "w"(b_), "i"(c) \
12208 #define vst1q_lane_p8(a, b, c) \
12211 poly8x16_t b_ = (b); \
12212 poly8_t * a_ = (a); \
12213 __asm__ ("st1 {%1.b}[%2],[%0]" \
12215 : "r"(a_), "w"(b_), "i"(c) \
12219 #define vst1q_lane_p16(a, b, c) \
12222 poly16x8_t b_ = (b); \
12223 poly16_t * a_ = (a); \
12224 __asm__ ("st1 {%1.h}[%2],[%0]" \
12226 : "r"(a_), "w"(b_), "i"(c) \
12230 #define vst1q_lane_s8(a, b, c) \
12233 int8x16_t b_ = (b); \
12234 int8_t * a_ = (a); \
12235 __asm__ ("st1 {%1.b}[%2],[%0]" \
12237 : "r"(a_), "w"(b_), "i"(c) \
12241 #define vst1q_lane_s16(a, b, c) \
12244 int16x8_t b_ = (b); \
12245 int16_t * a_ = (a); \
12246 __asm__ ("st1 {%1.h}[%2],[%0]" \
12248 : "r"(a_), "w"(b_), "i"(c) \
12252 #define vst1q_lane_s32(a, b, c) \
12255 int32x4_t b_ = (b); \
12256 int32_t * a_ = (a); \
12257 __asm__ ("st1 {%1.s}[%2],[%0]" \
12259 : "r"(a_), "w"(b_), "i"(c) \
12263 #define vst1q_lane_s64(a, b, c) \
12266 int64x2_t b_ = (b); \
12267 int64_t * a_ = (a); \
12268 __asm__ ("st1 {%1.d}[%2],[%0]" \
12270 : "r"(a_), "w"(b_), "i"(c) \
12274 #define vst1q_lane_u8(a, b, c) \
12277 uint8x16_t b_ = (b); \
12278 uint8_t * a_ = (a); \
12279 __asm__ ("st1 {%1.b}[%2],[%0]" \
12281 : "r"(a_), "w"(b_), "i"(c) \
12285 #define vst1q_lane_u16(a, b, c) \
12288 uint16x8_t b_ = (b); \
12289 uint16_t * a_ = (a); \
12290 __asm__ ("st1 {%1.h}[%2],[%0]" \
12292 : "r"(a_), "w"(b_), "i"(c) \
12296 #define vst1q_lane_u32(a, b, c) \
12299 uint32x4_t b_ = (b); \
12300 uint32_t * a_ = (a); \
12301 __asm__ ("st1 {%1.s}[%2],[%0]" \
12303 : "r"(a_), "w"(b_), "i"(c) \
12307 #define vst1q_lane_u64(a, b, c) \
12310 uint64x2_t b_ = (b); \
12311 uint64_t * a_ = (a); \
12312 __asm__ ("st1 {%1.d}[%2],[%0]" \
12314 : "r"(a_), "w"(b_), "i"(c) \
12318 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
12319 vsubhn_high_s16 (int8x8_t a
, int16x8_t b
, int16x8_t c
)
12321 int8x16_t result
= vcombine_s8 (a
, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
12322 __asm__ ("subhn2 %0.16b, %1.8h, %2.8h"
12325 : /* No clobbers */);
12329 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
12330 vsubhn_high_s32 (int16x4_t a
, int32x4_t b
, int32x4_t c
)
12332 int16x8_t result
= vcombine_s16 (a
, vcreate_s16 (__AARCH64_UINT64_C (0x0)));
12333 __asm__ ("subhn2 %0.8h, %1.4s, %2.4s"
12336 : /* No clobbers */);
12340 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
12341 vsubhn_high_s64 (int32x2_t a
, int64x2_t b
, int64x2_t c
)
12343 int32x4_t result
= vcombine_s32 (a
, vcreate_s32 (__AARCH64_UINT64_C (0x0)));
12344 __asm__ ("subhn2 %0.4s, %1.2d, %2.2d"
12347 : /* No clobbers */);
12351 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
12352 vsubhn_high_u16 (uint8x8_t a
, uint16x8_t b
, uint16x8_t c
)
12354 uint8x16_t result
= vcombine_u8 (a
, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
12355 __asm__ ("subhn2 %0.16b, %1.8h, %2.8h"
12358 : /* No clobbers */);
12362 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
12363 vsubhn_high_u32 (uint16x4_t a
, uint32x4_t b
, uint32x4_t c
)
12365 uint16x8_t result
= vcombine_u16 (a
, vcreate_u16 (__AARCH64_UINT64_C (0x0)));
12366 __asm__ ("subhn2 %0.8h, %1.4s, %2.4s"
12369 : /* No clobbers */);
12373 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
12374 vsubhn_high_u64 (uint32x2_t a
, uint64x2_t b
, uint64x2_t c
)
12376 uint32x4_t result
= vcombine_u32 (a
, vcreate_u32 (__AARCH64_UINT64_C (0x0)));
12377 __asm__ ("subhn2 %0.4s, %1.2d, %2.2d"
12380 : /* No clobbers */);
12384 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
12385 vsubhn_s16 (int16x8_t a
, int16x8_t b
)
12388 __asm__ ("subhn %0.8b, %1.8h, %2.8h"
12391 : /* No clobbers */);
12395 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
12396 vsubhn_s32 (int32x4_t a
, int32x4_t b
)
12399 __asm__ ("subhn %0.4h, %1.4s, %2.4s"
12402 : /* No clobbers */);
12406 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
12407 vsubhn_s64 (int64x2_t a
, int64x2_t b
)
12410 __asm__ ("subhn %0.2s, %1.2d, %2.2d"
12413 : /* No clobbers */);
12417 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
12418 vsubhn_u16 (uint16x8_t a
, uint16x8_t b
)
12421 __asm__ ("subhn %0.8b, %1.8h, %2.8h"
12424 : /* No clobbers */);
12428 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
12429 vsubhn_u32 (uint32x4_t a
, uint32x4_t b
)
12432 __asm__ ("subhn %0.4h, %1.4s, %2.4s"
12435 : /* No clobbers */);
12439 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
12440 vsubhn_u64 (uint64x2_t a
, uint64x2_t b
)
12443 __asm__ ("subhn %0.2s, %1.2d, %2.2d"
12446 : /* No clobbers */);
12450 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
12451 vtrn1_f32 (float32x2_t a
, float32x2_t b
)
12453 float32x2_t result
;
12454 __asm__ ("trn1 %0.2s,%1.2s,%2.2s"
12457 : /* No clobbers */);
12461 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
12462 vtrn1_p8 (poly8x8_t a
, poly8x8_t b
)
12465 __asm__ ("trn1 %0.8b,%1.8b,%2.8b"
12468 : /* No clobbers */);
12472 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
12473 vtrn1_p16 (poly16x4_t a
, poly16x4_t b
)
12476 __asm__ ("trn1 %0.4h,%1.4h,%2.4h"
12479 : /* No clobbers */);
12483 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
12484 vtrn1_s8 (int8x8_t a
, int8x8_t b
)
12487 __asm__ ("trn1 %0.8b,%1.8b,%2.8b"
12490 : /* No clobbers */);
12494 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
12495 vtrn1_s16 (int16x4_t a
, int16x4_t b
)
12498 __asm__ ("trn1 %0.4h,%1.4h,%2.4h"
12501 : /* No clobbers */);
12505 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
12506 vtrn1_s32 (int32x2_t a
, int32x2_t b
)
12509 __asm__ ("trn1 %0.2s,%1.2s,%2.2s"
12512 : /* No clobbers */);
12516 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
12517 vtrn1_u8 (uint8x8_t a
, uint8x8_t b
)
12520 __asm__ ("trn1 %0.8b,%1.8b,%2.8b"
12523 : /* No clobbers */);
12527 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
12528 vtrn1_u16 (uint16x4_t a
, uint16x4_t b
)
12531 __asm__ ("trn1 %0.4h,%1.4h,%2.4h"
12534 : /* No clobbers */);
12538 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
12539 vtrn1_u32 (uint32x2_t a
, uint32x2_t b
)
12542 __asm__ ("trn1 %0.2s,%1.2s,%2.2s"
12545 : /* No clobbers */);
12549 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
12550 vtrn1q_f32 (float32x4_t a
, float32x4_t b
)
12552 float32x4_t result
;
12553 __asm__ ("trn1 %0.4s,%1.4s,%2.4s"
12556 : /* No clobbers */);
12560 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
12561 vtrn1q_f64 (float64x2_t a
, float64x2_t b
)
12563 float64x2_t result
;
12564 __asm__ ("trn1 %0.2d,%1.2d,%2.2d"
12567 : /* No clobbers */);
12571 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
12572 vtrn1q_p8 (poly8x16_t a
, poly8x16_t b
)
12575 __asm__ ("trn1 %0.16b,%1.16b,%2.16b"
12578 : /* No clobbers */);
12582 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
12583 vtrn1q_p16 (poly16x8_t a
, poly16x8_t b
)
12586 __asm__ ("trn1 %0.8h,%1.8h,%2.8h"
12589 : /* No clobbers */);
12593 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
12594 vtrn1q_s8 (int8x16_t a
, int8x16_t b
)
12597 __asm__ ("trn1 %0.16b,%1.16b,%2.16b"
12600 : /* No clobbers */);
12604 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
12605 vtrn1q_s16 (int16x8_t a
, int16x8_t b
)
12608 __asm__ ("trn1 %0.8h,%1.8h,%2.8h"
12611 : /* No clobbers */);
12615 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
12616 vtrn1q_s32 (int32x4_t a
, int32x4_t b
)
12619 __asm__ ("trn1 %0.4s,%1.4s,%2.4s"
12622 : /* No clobbers */);
12626 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
12627 vtrn1q_s64 (int64x2_t a
, int64x2_t b
)
12630 __asm__ ("trn1 %0.2d,%1.2d,%2.2d"
12633 : /* No clobbers */);
12637 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
12638 vtrn1q_u8 (uint8x16_t a
, uint8x16_t b
)
12641 __asm__ ("trn1 %0.16b,%1.16b,%2.16b"
12644 : /* No clobbers */);
12648 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
12649 vtrn1q_u16 (uint16x8_t a
, uint16x8_t b
)
12652 __asm__ ("trn1 %0.8h,%1.8h,%2.8h"
12655 : /* No clobbers */);
12659 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
12660 vtrn1q_u32 (uint32x4_t a
, uint32x4_t b
)
12663 __asm__ ("trn1 %0.4s,%1.4s,%2.4s"
12666 : /* No clobbers */);
12670 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
12671 vtrn1q_u64 (uint64x2_t a
, uint64x2_t b
)
12674 __asm__ ("trn1 %0.2d,%1.2d,%2.2d"
12677 : /* No clobbers */);
12681 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
12682 vtrn2_f32 (float32x2_t a
, float32x2_t b
)
12684 float32x2_t result
;
12685 __asm__ ("trn2 %0.2s,%1.2s,%2.2s"
12688 : /* No clobbers */);
12692 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
12693 vtrn2_p8 (poly8x8_t a
, poly8x8_t b
)
12696 __asm__ ("trn2 %0.8b,%1.8b,%2.8b"
12699 : /* No clobbers */);
12703 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
12704 vtrn2_p16 (poly16x4_t a
, poly16x4_t b
)
12707 __asm__ ("trn2 %0.4h,%1.4h,%2.4h"
12710 : /* No clobbers */);
12714 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
12715 vtrn2_s8 (int8x8_t a
, int8x8_t b
)
12718 __asm__ ("trn2 %0.8b,%1.8b,%2.8b"
12721 : /* No clobbers */);
12725 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
12726 vtrn2_s16 (int16x4_t a
, int16x4_t b
)
12729 __asm__ ("trn2 %0.4h,%1.4h,%2.4h"
12732 : /* No clobbers */);
12736 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
12737 vtrn2_s32 (int32x2_t a
, int32x2_t b
)
12740 __asm__ ("trn2 %0.2s,%1.2s,%2.2s"
12743 : /* No clobbers */);
12747 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
12748 vtrn2_u8 (uint8x8_t a
, uint8x8_t b
)
12751 __asm__ ("trn2 %0.8b,%1.8b,%2.8b"
12754 : /* No clobbers */);
12758 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
12759 vtrn2_u16 (uint16x4_t a
, uint16x4_t b
)
12762 __asm__ ("trn2 %0.4h,%1.4h,%2.4h"
12765 : /* No clobbers */);
12769 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
12770 vtrn2_u32 (uint32x2_t a
, uint32x2_t b
)
12773 __asm__ ("trn2 %0.2s,%1.2s,%2.2s"
12776 : /* No clobbers */);
12780 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
12781 vtrn2q_f32 (float32x4_t a
, float32x4_t b
)
12783 float32x4_t result
;
12784 __asm__ ("trn2 %0.4s,%1.4s,%2.4s"
12787 : /* No clobbers */);
12791 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
12792 vtrn2q_f64 (float64x2_t a
, float64x2_t b
)
12794 float64x2_t result
;
12795 __asm__ ("trn2 %0.2d,%1.2d,%2.2d"
12798 : /* No clobbers */);
12802 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
12803 vtrn2q_p8 (poly8x16_t a
, poly8x16_t b
)
12806 __asm__ ("trn2 %0.16b,%1.16b,%2.16b"
12809 : /* No clobbers */);
12813 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
12814 vtrn2q_p16 (poly16x8_t a
, poly16x8_t b
)
12817 __asm__ ("trn2 %0.8h,%1.8h,%2.8h"
12820 : /* No clobbers */);
12824 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
12825 vtrn2q_s8 (int8x16_t a
, int8x16_t b
)
12828 __asm__ ("trn2 %0.16b,%1.16b,%2.16b"
12831 : /* No clobbers */);
12835 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
12836 vtrn2q_s16 (int16x8_t a
, int16x8_t b
)
12839 __asm__ ("trn2 %0.8h,%1.8h,%2.8h"
12842 : /* No clobbers */);
12846 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
12847 vtrn2q_s32 (int32x4_t a
, int32x4_t b
)
12850 __asm__ ("trn2 %0.4s,%1.4s,%2.4s"
12853 : /* No clobbers */);
12857 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
12858 vtrn2q_s64 (int64x2_t a
, int64x2_t b
)
12861 __asm__ ("trn2 %0.2d,%1.2d,%2.2d"
12864 : /* No clobbers */);
12868 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
12869 vtrn2q_u8 (uint8x16_t a
, uint8x16_t b
)
12872 __asm__ ("trn2 %0.16b,%1.16b,%2.16b"
12875 : /* No clobbers */);
12879 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
12880 vtrn2q_u16 (uint16x8_t a
, uint16x8_t b
)
12883 __asm__ ("trn2 %0.8h,%1.8h,%2.8h"
12886 : /* No clobbers */);
12890 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
12891 vtrn2q_u32 (uint32x4_t a
, uint32x4_t b
)
12894 __asm__ ("trn2 %0.4s,%1.4s,%2.4s"
12897 : /* No clobbers */);
12901 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
12902 vtrn2q_u64 (uint64x2_t a
, uint64x2_t b
)
12905 __asm__ ("trn2 %0.2d,%1.2d,%2.2d"
12908 : /* No clobbers */);
12912 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
12913 vtst_p8 (poly8x8_t a
, poly8x8_t b
)
12916 __asm__ ("cmtst %0.8b, %1.8b, %2.8b"
12919 : /* No clobbers */);
12923 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
12924 vtst_p16 (poly16x4_t a
, poly16x4_t b
)
12927 __asm__ ("cmtst %0.4h, %1.4h, %2.4h"
12930 : /* No clobbers */);
12934 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
12935 vtstq_p8 (poly8x16_t a
, poly8x16_t b
)
12938 __asm__ ("cmtst %0.16b, %1.16b, %2.16b"
12941 : /* No clobbers */);
12945 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
12946 vtstq_p16 (poly16x8_t a
, poly16x8_t b
)
12949 __asm__ ("cmtst %0.8h, %1.8h, %2.8h"
12952 : /* No clobbers */);
12955 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
12956 vuzp1_f32 (float32x2_t a
, float32x2_t b
)
12958 float32x2_t result
;
12959 __asm__ ("uzp1 %0.2s,%1.2s,%2.2s"
12962 : /* No clobbers */);
12966 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
12967 vuzp1_p8 (poly8x8_t a
, poly8x8_t b
)
12970 __asm__ ("uzp1 %0.8b,%1.8b,%2.8b"
12973 : /* No clobbers */);
12977 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
12978 vuzp1_p16 (poly16x4_t a
, poly16x4_t b
)
12981 __asm__ ("uzp1 %0.4h,%1.4h,%2.4h"
12984 : /* No clobbers */);
12988 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
12989 vuzp1_s8 (int8x8_t a
, int8x8_t b
)
12992 __asm__ ("uzp1 %0.8b,%1.8b,%2.8b"
12995 : /* No clobbers */);
12999 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
13000 vuzp1_s16 (int16x4_t a
, int16x4_t b
)
13003 __asm__ ("uzp1 %0.4h,%1.4h,%2.4h"
13006 : /* No clobbers */);
13010 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
13011 vuzp1_s32 (int32x2_t a
, int32x2_t b
)
13014 __asm__ ("uzp1 %0.2s,%1.2s,%2.2s"
13017 : /* No clobbers */);
13021 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
13022 vuzp1_u8 (uint8x8_t a
, uint8x8_t b
)
13025 __asm__ ("uzp1 %0.8b,%1.8b,%2.8b"
13028 : /* No clobbers */);
13032 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
13033 vuzp1_u16 (uint16x4_t a
, uint16x4_t b
)
13036 __asm__ ("uzp1 %0.4h,%1.4h,%2.4h"
13039 : /* No clobbers */);
13043 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
13044 vuzp1_u32 (uint32x2_t a
, uint32x2_t b
)
13047 __asm__ ("uzp1 %0.2s,%1.2s,%2.2s"
13050 : /* No clobbers */);
13054 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
13055 vuzp1q_f32 (float32x4_t a
, float32x4_t b
)
13057 float32x4_t result
;
13058 __asm__ ("uzp1 %0.4s,%1.4s,%2.4s"
13061 : /* No clobbers */);
13065 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
13066 vuzp1q_f64 (float64x2_t a
, float64x2_t b
)
13068 float64x2_t result
;
13069 __asm__ ("uzp1 %0.2d,%1.2d,%2.2d"
13072 : /* No clobbers */);
13076 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
13077 vuzp1q_p8 (poly8x16_t a
, poly8x16_t b
)
13080 __asm__ ("uzp1 %0.16b,%1.16b,%2.16b"
13083 : /* No clobbers */);
13087 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
13088 vuzp1q_p16 (poly16x8_t a
, poly16x8_t b
)
13091 __asm__ ("uzp1 %0.8h,%1.8h,%2.8h"
13094 : /* No clobbers */);
13098 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
13099 vuzp1q_s8 (int8x16_t a
, int8x16_t b
)
13102 __asm__ ("uzp1 %0.16b,%1.16b,%2.16b"
13105 : /* No clobbers */);
13109 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
13110 vuzp1q_s16 (int16x8_t a
, int16x8_t b
)
13113 __asm__ ("uzp1 %0.8h,%1.8h,%2.8h"
13116 : /* No clobbers */);
13120 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
13121 vuzp1q_s32 (int32x4_t a
, int32x4_t b
)
13124 __asm__ ("uzp1 %0.4s,%1.4s,%2.4s"
13127 : /* No clobbers */);
13131 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
13132 vuzp1q_s64 (int64x2_t a
, int64x2_t b
)
13135 __asm__ ("uzp1 %0.2d,%1.2d,%2.2d"
13138 : /* No clobbers */);
13142 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
13143 vuzp1q_u8 (uint8x16_t a
, uint8x16_t b
)
13146 __asm__ ("uzp1 %0.16b,%1.16b,%2.16b"
13149 : /* No clobbers */);
13153 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
13154 vuzp1q_u16 (uint16x8_t a
, uint16x8_t b
)
13157 __asm__ ("uzp1 %0.8h,%1.8h,%2.8h"
13160 : /* No clobbers */);
13164 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
13165 vuzp1q_u32 (uint32x4_t a
, uint32x4_t b
)
13168 __asm__ ("uzp1 %0.4s,%1.4s,%2.4s"
13171 : /* No clobbers */);
13175 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
13176 vuzp1q_u64 (uint64x2_t a
, uint64x2_t b
)
13179 __asm__ ("uzp1 %0.2d,%1.2d,%2.2d"
13182 : /* No clobbers */);
13186 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
13187 vuzp2_f32 (float32x2_t a
, float32x2_t b
)
13189 float32x2_t result
;
13190 __asm__ ("uzp2 %0.2s,%1.2s,%2.2s"
13193 : /* No clobbers */);
13197 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
13198 vuzp2_p8 (poly8x8_t a
, poly8x8_t b
)
13201 __asm__ ("uzp2 %0.8b,%1.8b,%2.8b"
13204 : /* No clobbers */);
13208 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
13209 vuzp2_p16 (poly16x4_t a
, poly16x4_t b
)
13212 __asm__ ("uzp2 %0.4h,%1.4h,%2.4h"
13215 : /* No clobbers */);
13219 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
13220 vuzp2_s8 (int8x8_t a
, int8x8_t b
)
13223 __asm__ ("uzp2 %0.8b,%1.8b,%2.8b"
13226 : /* No clobbers */);
13230 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
13231 vuzp2_s16 (int16x4_t a
, int16x4_t b
)
13234 __asm__ ("uzp2 %0.4h,%1.4h,%2.4h"
13237 : /* No clobbers */);
13241 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
13242 vuzp2_s32 (int32x2_t a
, int32x2_t b
)
13245 __asm__ ("uzp2 %0.2s,%1.2s,%2.2s"
13248 : /* No clobbers */);
13252 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
13253 vuzp2_u8 (uint8x8_t a
, uint8x8_t b
)
13256 __asm__ ("uzp2 %0.8b,%1.8b,%2.8b"
13259 : /* No clobbers */);
13263 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
13264 vuzp2_u16 (uint16x4_t a
, uint16x4_t b
)
13267 __asm__ ("uzp2 %0.4h,%1.4h,%2.4h"
13270 : /* No clobbers */);
13274 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
13275 vuzp2_u32 (uint32x2_t a
, uint32x2_t b
)
13278 __asm__ ("uzp2 %0.2s,%1.2s,%2.2s"
13281 : /* No clobbers */);
13285 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
13286 vuzp2q_f32 (float32x4_t a
, float32x4_t b
)
13288 float32x4_t result
;
13289 __asm__ ("uzp2 %0.4s,%1.4s,%2.4s"
13292 : /* No clobbers */);
13296 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
13297 vuzp2q_f64 (float64x2_t a
, float64x2_t b
)
13299 float64x2_t result
;
13300 __asm__ ("uzp2 %0.2d,%1.2d,%2.2d"
13303 : /* No clobbers */);
13307 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
13308 vuzp2q_p8 (poly8x16_t a
, poly8x16_t b
)
13311 __asm__ ("uzp2 %0.16b,%1.16b,%2.16b"
13314 : /* No clobbers */);
13318 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
13319 vuzp2q_p16 (poly16x8_t a
, poly16x8_t b
)
13322 __asm__ ("uzp2 %0.8h,%1.8h,%2.8h"
13325 : /* No clobbers */);
13329 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
13330 vuzp2q_s8 (int8x16_t a
, int8x16_t b
)
13333 __asm__ ("uzp2 %0.16b,%1.16b,%2.16b"
13336 : /* No clobbers */);
13340 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
13341 vuzp2q_s16 (int16x8_t a
, int16x8_t b
)
13344 __asm__ ("uzp2 %0.8h,%1.8h,%2.8h"
13347 : /* No clobbers */);
13351 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
13352 vuzp2q_s32 (int32x4_t a
, int32x4_t b
)
13355 __asm__ ("uzp2 %0.4s,%1.4s,%2.4s"
13358 : /* No clobbers */);
13362 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
13363 vuzp2q_s64 (int64x2_t a
, int64x2_t b
)
13366 __asm__ ("uzp2 %0.2d,%1.2d,%2.2d"
13369 : /* No clobbers */);
13373 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
13374 vuzp2q_u8 (uint8x16_t a
, uint8x16_t b
)
13377 __asm__ ("uzp2 %0.16b,%1.16b,%2.16b"
13380 : /* No clobbers */);
13384 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
13385 vuzp2q_u16 (uint16x8_t a
, uint16x8_t b
)
13388 __asm__ ("uzp2 %0.8h,%1.8h,%2.8h"
13391 : /* No clobbers */);
13395 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
13396 vuzp2q_u32 (uint32x4_t a
, uint32x4_t b
)
13399 __asm__ ("uzp2 %0.4s,%1.4s,%2.4s"
13402 : /* No clobbers */);
13406 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
13407 vuzp2q_u64 (uint64x2_t a
, uint64x2_t b
)
13410 __asm__ ("uzp2 %0.2d,%1.2d,%2.2d"
13413 : /* No clobbers */);
13417 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
13418 vzip1_f32 (float32x2_t a
, float32x2_t b
)
13420 float32x2_t result
;
13421 __asm__ ("zip1 %0.2s,%1.2s,%2.2s"
13424 : /* No clobbers */);
13428 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
13429 vzip1_p8 (poly8x8_t a
, poly8x8_t b
)
13432 __asm__ ("zip1 %0.8b,%1.8b,%2.8b"
13435 : /* No clobbers */);
13439 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
13440 vzip1_p16 (poly16x4_t a
, poly16x4_t b
)
13443 __asm__ ("zip1 %0.4h,%1.4h,%2.4h"
13446 : /* No clobbers */);
13450 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
13451 vzip1_s8 (int8x8_t a
, int8x8_t b
)
13454 __asm__ ("zip1 %0.8b,%1.8b,%2.8b"
13457 : /* No clobbers */);
13461 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
13462 vzip1_s16 (int16x4_t a
, int16x4_t b
)
13465 __asm__ ("zip1 %0.4h,%1.4h,%2.4h"
13468 : /* No clobbers */);
13472 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
13473 vzip1_s32 (int32x2_t a
, int32x2_t b
)
13476 __asm__ ("zip1 %0.2s,%1.2s,%2.2s"
13479 : /* No clobbers */);
13483 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
13484 vzip1_u8 (uint8x8_t a
, uint8x8_t b
)
13487 __asm__ ("zip1 %0.8b,%1.8b,%2.8b"
13490 : /* No clobbers */);
13494 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
13495 vzip1_u16 (uint16x4_t a
, uint16x4_t b
)
13498 __asm__ ("zip1 %0.4h,%1.4h,%2.4h"
13501 : /* No clobbers */);
13505 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
13506 vzip1_u32 (uint32x2_t a
, uint32x2_t b
)
13509 __asm__ ("zip1 %0.2s,%1.2s,%2.2s"
13512 : /* No clobbers */);
13516 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
13517 vzip1q_f32 (float32x4_t a
, float32x4_t b
)
13519 float32x4_t result
;
13520 __asm__ ("zip1 %0.4s,%1.4s,%2.4s"
13523 : /* No clobbers */);
13527 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
13528 vzip1q_f64 (float64x2_t a
, float64x2_t b
)
13530 float64x2_t result
;
13531 __asm__ ("zip1 %0.2d,%1.2d,%2.2d"
13534 : /* No clobbers */);
13538 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
13539 vzip1q_p8 (poly8x16_t a
, poly8x16_t b
)
13542 __asm__ ("zip1 %0.16b,%1.16b,%2.16b"
13545 : /* No clobbers */);
13549 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
13550 vzip1q_p16 (poly16x8_t a
, poly16x8_t b
)
13553 __asm__ ("zip1 %0.8h,%1.8h,%2.8h"
13556 : /* No clobbers */);
13560 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
13561 vzip1q_s8 (int8x16_t a
, int8x16_t b
)
13564 __asm__ ("zip1 %0.16b,%1.16b,%2.16b"
13567 : /* No clobbers */);
13571 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
13572 vzip1q_s16 (int16x8_t a
, int16x8_t b
)
13575 __asm__ ("zip1 %0.8h,%1.8h,%2.8h"
13578 : /* No clobbers */);
13582 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
13583 vzip1q_s32 (int32x4_t a
, int32x4_t b
)
13586 __asm__ ("zip1 %0.4s,%1.4s,%2.4s"
13589 : /* No clobbers */);
13593 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
13594 vzip1q_s64 (int64x2_t a
, int64x2_t b
)
13597 __asm__ ("zip1 %0.2d,%1.2d,%2.2d"
13600 : /* No clobbers */);
13604 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
13605 vzip1q_u8 (uint8x16_t a
, uint8x16_t b
)
13608 __asm__ ("zip1 %0.16b,%1.16b,%2.16b"
13611 : /* No clobbers */);
13615 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
13616 vzip1q_u16 (uint16x8_t a
, uint16x8_t b
)
13619 __asm__ ("zip1 %0.8h,%1.8h,%2.8h"
13622 : /* No clobbers */);
13626 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
13627 vzip1q_u32 (uint32x4_t a
, uint32x4_t b
)
13630 __asm__ ("zip1 %0.4s,%1.4s,%2.4s"
13633 : /* No clobbers */);
13637 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
13638 vzip1q_u64 (uint64x2_t a
, uint64x2_t b
)
13641 __asm__ ("zip1 %0.2d,%1.2d,%2.2d"
13644 : /* No clobbers */);
13648 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
13649 vzip2_f32 (float32x2_t a
, float32x2_t b
)
13651 float32x2_t result
;
13652 __asm__ ("zip2 %0.2s,%1.2s,%2.2s"
13655 : /* No clobbers */);
13659 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
13660 vzip2_p8 (poly8x8_t a
, poly8x8_t b
)
13663 __asm__ ("zip2 %0.8b,%1.8b,%2.8b"
13666 : /* No clobbers */);
13670 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
13671 vzip2_p16 (poly16x4_t a
, poly16x4_t b
)
13674 __asm__ ("zip2 %0.4h,%1.4h,%2.4h"
13677 : /* No clobbers */);
13681 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
13682 vzip2_s8 (int8x8_t a
, int8x8_t b
)
13685 __asm__ ("zip2 %0.8b,%1.8b,%2.8b"
13688 : /* No clobbers */);
13692 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
13693 vzip2_s16 (int16x4_t a
, int16x4_t b
)
13696 __asm__ ("zip2 %0.4h,%1.4h,%2.4h"
13699 : /* No clobbers */);
13703 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
13704 vzip2_s32 (int32x2_t a
, int32x2_t b
)
13707 __asm__ ("zip2 %0.2s,%1.2s,%2.2s"
13710 : /* No clobbers */);
13714 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
13715 vzip2_u8 (uint8x8_t a
, uint8x8_t b
)
13718 __asm__ ("zip2 %0.8b,%1.8b,%2.8b"
13721 : /* No clobbers */);
13725 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
13726 vzip2_u16 (uint16x4_t a
, uint16x4_t b
)
13729 __asm__ ("zip2 %0.4h,%1.4h,%2.4h"
13732 : /* No clobbers */);
13736 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
13737 vzip2_u32 (uint32x2_t a
, uint32x2_t b
)
13740 __asm__ ("zip2 %0.2s,%1.2s,%2.2s"
13743 : /* No clobbers */);
13747 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
13748 vzip2q_f32 (float32x4_t a
, float32x4_t b
)
13750 float32x4_t result
;
13751 __asm__ ("zip2 %0.4s,%1.4s,%2.4s"
13754 : /* No clobbers */);
13758 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
13759 vzip2q_f64 (float64x2_t a
, float64x2_t b
)
13761 float64x2_t result
;
13762 __asm__ ("zip2 %0.2d,%1.2d,%2.2d"
13765 : /* No clobbers */);
13769 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
13770 vzip2q_p8 (poly8x16_t a
, poly8x16_t b
)
13773 __asm__ ("zip2 %0.16b,%1.16b,%2.16b"
13776 : /* No clobbers */);
13780 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
13781 vzip2q_p16 (poly16x8_t a
, poly16x8_t b
)
13784 __asm__ ("zip2 %0.8h,%1.8h,%2.8h"
13787 : /* No clobbers */);
13791 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
13792 vzip2q_s8 (int8x16_t a
, int8x16_t b
)
13795 __asm__ ("zip2 %0.16b,%1.16b,%2.16b"
13798 : /* No clobbers */);
13802 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
13803 vzip2q_s16 (int16x8_t a
, int16x8_t b
)
13806 __asm__ ("zip2 %0.8h,%1.8h,%2.8h"
13809 : /* No clobbers */);
13813 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
13814 vzip2q_s32 (int32x4_t a
, int32x4_t b
)
13817 __asm__ ("zip2 %0.4s,%1.4s,%2.4s"
13820 : /* No clobbers */);
13824 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
13825 vzip2q_s64 (int64x2_t a
, int64x2_t b
)
13828 __asm__ ("zip2 %0.2d,%1.2d,%2.2d"
13831 : /* No clobbers */);
13835 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
13836 vzip2q_u8 (uint8x16_t a
, uint8x16_t b
)
13839 __asm__ ("zip2 %0.16b,%1.16b,%2.16b"
13842 : /* No clobbers */);
13846 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
13847 vzip2q_u16 (uint16x8_t a
, uint16x8_t b
)
13850 __asm__ ("zip2 %0.8h,%1.8h,%2.8h"
13853 : /* No clobbers */);
13857 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
13858 vzip2q_u32 (uint32x4_t a
, uint32x4_t b
)
13861 __asm__ ("zip2 %0.4s,%1.4s,%2.4s"
13864 : /* No clobbers */);
13868 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
13869 vzip2q_u64 (uint64x2_t a
, uint64x2_t b
)
13872 __asm__ ("zip2 %0.2d,%1.2d,%2.2d"
13875 : /* No clobbers */);
13879 /* End of temporary inline asm implementations. */
13881 /* Start of temporary inline asm for vldn, vstn and friends. */
13883 /* Create struct element types for duplicating loads.
13885 Create 2 element structures of:
13887 +------+----+----+----+----+
13888 | | 8 | 16 | 32 | 64 |
13889 +------+----+----+----+----+
13890 |int | Y | Y | N | N |
13891 +------+----+----+----+----+
13892 |uint | Y | Y | N | N |
13893 +------+----+----+----+----+
13894 |float | - | - | N | N |
13895 +------+----+----+----+----+
13896 |poly | Y | Y | - | - |
13897 +------+----+----+----+----+
13899 Create 3 element structures of:
13901 +------+----+----+----+----+
13902 | | 8 | 16 | 32 | 64 |
13903 +------+----+----+----+----+
13904 |int | Y | Y | Y | Y |
13905 +------+----+----+----+----+
13906 |uint | Y | Y | Y | Y |
13907 +------+----+----+----+----+
13908 |float | - | - | Y | Y |
13909 +------+----+----+----+----+
13910 |poly | Y | Y | - | - |
13911 +------+----+----+----+----+
13913 Create 4 element structures of:
13915 +------+----+----+----+----+
13916 | | 8 | 16 | 32 | 64 |
13917 +------+----+----+----+----+
13918 |int | Y | N | N | Y |
13919 +------+----+----+----+----+
13920 |uint | Y | N | N | Y |
13921 +------+----+----+----+----+
13922 |float | - | - | N | Y |
13923 +------+----+----+----+----+
13924 |poly | Y | N | - | - |
13925 +------+----+----+----+----+
13927 This is required for casting memory reference. */
13928 #define __STRUCTN(t, sz, nelem) \
13929 typedef struct t ## sz ## x ## nelem ## _t { \
13930 t ## sz ## _t val[nelem]; \
13931 } t ## sz ## x ## nelem ## _t;
13933 /* 2-element structs. */
13934 __STRUCTN (int, 8, 2)
13935 __STRUCTN (int, 16, 2)
13936 __STRUCTN (uint
, 8, 2)
13937 __STRUCTN (uint
, 16, 2)
13938 __STRUCTN (poly
, 8, 2)
13939 __STRUCTN (poly
, 16, 2)
13940 /* 3-element structs. */
13941 __STRUCTN (int, 8, 3)
13942 __STRUCTN (int, 16, 3)
13943 __STRUCTN (int, 32, 3)
13944 __STRUCTN (int, 64, 3)
13945 __STRUCTN (uint
, 8, 3)
13946 __STRUCTN (uint
, 16, 3)
13947 __STRUCTN (uint
, 32, 3)
13948 __STRUCTN (uint
, 64, 3)
13949 __STRUCTN (float, 32, 3)
13950 __STRUCTN (float, 64, 3)
13951 __STRUCTN (poly
, 8, 3)
13952 __STRUCTN (poly
, 16, 3)
13953 /* 4-element structs. */
13954 __STRUCTN (int, 8, 4)
13955 __STRUCTN (int, 64, 4)
13956 __STRUCTN (uint
, 8, 4)
13957 __STRUCTN (uint
, 64, 4)
13958 __STRUCTN (poly
, 8, 4)
13959 __STRUCTN (float, 64, 4)
13962 #define __LD2R_FUNC(rettype, structtype, ptrtype, \
13963 regsuffix, funcsuffix, Q) \
13964 __extension__ static __inline rettype \
13965 __attribute__ ((__always_inline__)) \
13966 vld2 ## Q ## _dup_ ## funcsuffix (const ptrtype *ptr) \
13969 __asm__ ("ld2r {v16." #regsuffix ", v17." #regsuffix "}, %1\n\t" \
13970 "st1 {v16." #regsuffix ", v17." #regsuffix "}, %0\n\t" \
13972 : "Q"(*(const structtype *)ptr) \
13973 : "memory", "v16", "v17"); \
13977 __LD2R_FUNC (float32x2x2_t
, float32x2_t
, float32_t
, 2s
, f32
,)
13978 __LD2R_FUNC (float64x1x2_t
, float64x2_t
, float64_t
, 1d
, f64
,)
13979 __LD2R_FUNC (poly8x8x2_t
, poly8x2_t
, poly8_t
, 8b
, p8
,)
13980 __LD2R_FUNC (poly16x4x2_t
, poly16x2_t
, poly16_t
, 4h
, p16
,)
13981 __LD2R_FUNC (int8x8x2_t
, int8x2_t
, int8_t, 8b
, s8
,)
13982 __LD2R_FUNC (int16x4x2_t
, int16x2_t
, int16_t, 4h
, s16
,)
13983 __LD2R_FUNC (int32x2x2_t
, int32x2_t
, int32_t, 2s
, s32
,)
13984 __LD2R_FUNC (int64x1x2_t
, int64x2_t
, int64_t, 1d
, s64
,)
13985 __LD2R_FUNC (uint8x8x2_t
, uint8x2_t
, uint8_t, 8b
, u8
,)
13986 __LD2R_FUNC (uint16x4x2_t
, uint16x2_t
, uint16_t, 4h
, u16
,)
13987 __LD2R_FUNC (uint32x2x2_t
, uint32x2_t
, uint32_t, 2s
, u32
,)
13988 __LD2R_FUNC (uint64x1x2_t
, uint64x2_t
, uint64_t, 1d
, u64
,)
13989 __LD2R_FUNC (float32x4x2_t
, float32x2_t
, float32_t
, 4s
, f32
, q
)
13990 __LD2R_FUNC (float64x2x2_t
, float64x2_t
, float64_t
, 2d
, f64
, q
)
13991 __LD2R_FUNC (poly8x16x2_t
, poly8x2_t
, poly8_t
, 16b
, p8
, q
)
13992 __LD2R_FUNC (poly16x8x2_t
, poly16x2_t
, poly16_t
, 8h
, p16
, q
)
13993 __LD2R_FUNC (int8x16x2_t
, int8x2_t
, int8_t, 16b
, s8
, q
)
13994 __LD2R_FUNC (int16x8x2_t
, int16x2_t
, int16_t, 8h
, s16
, q
)
13995 __LD2R_FUNC (int32x4x2_t
, int32x2_t
, int32_t, 4s
, s32
, q
)
13996 __LD2R_FUNC (int64x2x2_t
, int64x2_t
, int64_t, 2d
, s64
, q
)
13997 __LD2R_FUNC (uint8x16x2_t
, uint8x2_t
, uint8_t, 16b
, u8
, q
)
13998 __LD2R_FUNC (uint16x8x2_t
, uint16x2_t
, uint16_t, 8h
, u16
, q
)
13999 __LD2R_FUNC (uint32x4x2_t
, uint32x2_t
, uint32_t, 4s
, u32
, q
)
14000 __LD2R_FUNC (uint64x2x2_t
, uint64x2_t
, uint64_t, 2d
, u64
, q
)
14002 #define __LD2_LANE_FUNC(rettype, ptrtype, regsuffix, \
14003 lnsuffix, funcsuffix, Q) \
14004 __extension__ static __inline rettype \
14005 __attribute__ ((__always_inline__)) \
14006 vld2 ## Q ## _lane_ ## funcsuffix (const ptrtype *ptr, \
14007 rettype b, const int c) \
14010 __asm__ ("ld1 {v16." #regsuffix ", v17." #regsuffix "}, %1\n\t" \
14011 "ld2 {v16." #lnsuffix ", v17." #lnsuffix "}[%3], %2\n\t" \
14012 "st1 {v16." #regsuffix ", v17." #regsuffix "}, %0\n\t" \
14014 : "Q"(b), "Q"(*(const rettype *)ptr), "i"(c) \
14015 : "memory", "v16", "v17"); \
14019 __LD2_LANE_FUNC (int8x8x2_t
, uint8_t, 8b
, b
, s8
,)
14020 __LD2_LANE_FUNC (float32x2x2_t
, float32_t
, 2s
, s
, f32
,)
14021 __LD2_LANE_FUNC (float64x1x2_t
, float64_t
, 1d
, d
, f64
,)
14022 __LD2_LANE_FUNC (poly8x8x2_t
, poly8_t
, 8b
, b
, p8
,)
14023 __LD2_LANE_FUNC (poly16x4x2_t
, poly16_t
, 4h
, h
, p16
,)
14024 __LD2_LANE_FUNC (int16x4x2_t
, int16_t, 4h
, h
, s16
,)
14025 __LD2_LANE_FUNC (int32x2x2_t
, int32_t, 2s
, s
, s32
,)
14026 __LD2_LANE_FUNC (int64x1x2_t
, int64_t, 1d
, d
, s64
,)
14027 __LD2_LANE_FUNC (uint8x8x2_t
, uint8_t, 8b
, b
, u8
,)
14028 __LD2_LANE_FUNC (uint16x4x2_t
, uint16_t, 4h
, h
, u16
,)
14029 __LD2_LANE_FUNC (uint32x2x2_t
, uint32_t, 2s
, s
, u32
,)
14030 __LD2_LANE_FUNC (uint64x1x2_t
, uint64_t, 1d
, d
, u64
,)
14031 __LD2_LANE_FUNC (float32x4x2_t
, float32_t
, 4s
, s
, f32
, q
)
14032 __LD2_LANE_FUNC (float64x2x2_t
, float64_t
, 2d
, d
, f64
, q
)
14033 __LD2_LANE_FUNC (poly8x16x2_t
, poly8_t
, 16b
, b
, p8
, q
)
14034 __LD2_LANE_FUNC (poly16x8x2_t
, poly16_t
, 8h
, h
, p16
, q
)
14035 __LD2_LANE_FUNC (int8x16x2_t
, int8_t, 16b
, b
, s8
, q
)
14036 __LD2_LANE_FUNC (int16x8x2_t
, int16_t, 8h
, h
, s16
, q
)
14037 __LD2_LANE_FUNC (int32x4x2_t
, int32_t, 4s
, s
, s32
, q
)
14038 __LD2_LANE_FUNC (int64x2x2_t
, int64_t, 2d
, d
, s64
, q
)
14039 __LD2_LANE_FUNC (uint8x16x2_t
, uint8_t, 16b
, b
, u8
, q
)
14040 __LD2_LANE_FUNC (uint16x8x2_t
, uint16_t, 8h
, h
, u16
, q
)
14041 __LD2_LANE_FUNC (uint32x4x2_t
, uint32_t, 4s
, s
, u32
, q
)
14042 __LD2_LANE_FUNC (uint64x2x2_t
, uint64_t, 2d
, d
, u64
, q
)
14044 #define __LD3R_FUNC(rettype, structtype, ptrtype, \
14045 regsuffix, funcsuffix, Q) \
14046 __extension__ static __inline rettype \
14047 __attribute__ ((__always_inline__)) \
14048 vld3 ## Q ## _dup_ ## funcsuffix (const ptrtype *ptr) \
14051 __asm__ ("ld3r {v16." #regsuffix " - v18." #regsuffix "}, %1\n\t" \
14052 "st1 {v16." #regsuffix " - v18." #regsuffix "}, %0\n\t" \
14054 : "Q"(*(const structtype *)ptr) \
14055 : "memory", "v16", "v17", "v18"); \
14059 __LD3R_FUNC (float32x2x3_t
, float32x3_t
, float32_t
, 2s
, f32
,)
14060 __LD3R_FUNC (float64x1x3_t
, float64x3_t
, float64_t
, 1d
, f64
,)
14061 __LD3R_FUNC (poly8x8x3_t
, poly8x3_t
, poly8_t
, 8b
, p8
,)
14062 __LD3R_FUNC (poly16x4x3_t
, poly16x3_t
, poly16_t
, 4h
, p16
,)
14063 __LD3R_FUNC (int8x8x3_t
, int8x3_t
, int8_t, 8b
, s8
,)
14064 __LD3R_FUNC (int16x4x3_t
, int16x3_t
, int16_t, 4h
, s16
,)
14065 __LD3R_FUNC (int32x2x3_t
, int32x3_t
, int32_t, 2s
, s32
,)
14066 __LD3R_FUNC (int64x1x3_t
, int64x3_t
, int64_t, 1d
, s64
,)
14067 __LD3R_FUNC (uint8x8x3_t
, uint8x3_t
, uint8_t, 8b
, u8
,)
14068 __LD3R_FUNC (uint16x4x3_t
, uint16x3_t
, uint16_t, 4h
, u16
,)
14069 __LD3R_FUNC (uint32x2x3_t
, uint32x3_t
, uint32_t, 2s
, u32
,)
14070 __LD3R_FUNC (uint64x1x3_t
, uint64x3_t
, uint64_t, 1d
, u64
,)
14071 __LD3R_FUNC (float32x4x3_t
, float32x3_t
, float32_t
, 4s
, f32
, q
)
14072 __LD3R_FUNC (float64x2x3_t
, float64x3_t
, float64_t
, 2d
, f64
, q
)
14073 __LD3R_FUNC (poly8x16x3_t
, poly8x3_t
, poly8_t
, 16b
, p8
, q
)
14074 __LD3R_FUNC (poly16x8x3_t
, poly16x3_t
, poly16_t
, 8h
, p16
, q
)
14075 __LD3R_FUNC (int8x16x3_t
, int8x3_t
, int8_t, 16b
, s8
, q
)
14076 __LD3R_FUNC (int16x8x3_t
, int16x3_t
, int16_t, 8h
, s16
, q
)
14077 __LD3R_FUNC (int32x4x3_t
, int32x3_t
, int32_t, 4s
, s32
, q
)
14078 __LD3R_FUNC (int64x2x3_t
, int64x3_t
, int64_t, 2d
, s64
, q
)
14079 __LD3R_FUNC (uint8x16x3_t
, uint8x3_t
, uint8_t, 16b
, u8
, q
)
14080 __LD3R_FUNC (uint16x8x3_t
, uint16x3_t
, uint16_t, 8h
, u16
, q
)
14081 __LD3R_FUNC (uint32x4x3_t
, uint32x3_t
, uint32_t, 4s
, u32
, q
)
14082 __LD3R_FUNC (uint64x2x3_t
, uint64x3_t
, uint64_t, 2d
, u64
, q
)
14084 #define __LD3_LANE_FUNC(rettype, ptrtype, regsuffix, \
14085 lnsuffix, funcsuffix, Q) \
14086 __extension__ static __inline rettype \
14087 __attribute__ ((__always_inline__)) \
14088 vld3 ## Q ## _lane_ ## funcsuffix (const ptrtype *ptr, \
14089 rettype b, const int c) \
14092 __asm__ ("ld1 {v16." #regsuffix " - v18." #regsuffix "}, %1\n\t" \
14093 "ld3 {v16." #lnsuffix " - v18." #lnsuffix "}[%3], %2\n\t" \
14094 "st1 {v16." #regsuffix " - v18." #regsuffix "}, %0\n\t" \
14096 : "Q"(b), "Q"(*(const rettype *)ptr), "i"(c) \
14097 : "memory", "v16", "v17", "v18"); \
14101 __LD3_LANE_FUNC (int8x8x3_t
, uint8_t, 8b
, b
, s8
,)
14102 __LD3_LANE_FUNC (float32x2x3_t
, float32_t
, 2s
, s
, f32
,)
14103 __LD3_LANE_FUNC (float64x1x3_t
, float64_t
, 1d
, d
, f64
,)
14104 __LD3_LANE_FUNC (poly8x8x3_t
, poly8_t
, 8b
, b
, p8
,)
14105 __LD3_LANE_FUNC (poly16x4x3_t
, poly16_t
, 4h
, h
, p16
,)
14106 __LD3_LANE_FUNC (int16x4x3_t
, int16_t, 4h
, h
, s16
,)
14107 __LD3_LANE_FUNC (int32x2x3_t
, int32_t, 2s
, s
, s32
,)
14108 __LD3_LANE_FUNC (int64x1x3_t
, int64_t, 1d
, d
, s64
,)
14109 __LD3_LANE_FUNC (uint8x8x3_t
, uint8_t, 8b
, b
, u8
,)
14110 __LD3_LANE_FUNC (uint16x4x3_t
, uint16_t, 4h
, h
, u16
,)
14111 __LD3_LANE_FUNC (uint32x2x3_t
, uint32_t, 2s
, s
, u32
,)
14112 __LD3_LANE_FUNC (uint64x1x3_t
, uint64_t, 1d
, d
, u64
,)
14113 __LD3_LANE_FUNC (float32x4x3_t
, float32_t
, 4s
, s
, f32
, q
)
14114 __LD3_LANE_FUNC (float64x2x3_t
, float64_t
, 2d
, d
, f64
, q
)
14115 __LD3_LANE_FUNC (poly8x16x3_t
, poly8_t
, 16b
, b
, p8
, q
)
14116 __LD3_LANE_FUNC (poly16x8x3_t
, poly16_t
, 8h
, h
, p16
, q
)
14117 __LD3_LANE_FUNC (int8x16x3_t
, int8_t, 16b
, b
, s8
, q
)
14118 __LD3_LANE_FUNC (int16x8x3_t
, int16_t, 8h
, h
, s16
, q
)
14119 __LD3_LANE_FUNC (int32x4x3_t
, int32_t, 4s
, s
, s32
, q
)
14120 __LD3_LANE_FUNC (int64x2x3_t
, int64_t, 2d
, d
, s64
, q
)
14121 __LD3_LANE_FUNC (uint8x16x3_t
, uint8_t, 16b
, b
, u8
, q
)
14122 __LD3_LANE_FUNC (uint16x8x3_t
, uint16_t, 8h
, h
, u16
, q
)
14123 __LD3_LANE_FUNC (uint32x4x3_t
, uint32_t, 4s
, s
, u32
, q
)
14124 __LD3_LANE_FUNC (uint64x2x3_t
, uint64_t, 2d
, d
, u64
, q
)
14126 #define __LD4R_FUNC(rettype, structtype, ptrtype, \
14127 regsuffix, funcsuffix, Q) \
14128 __extension__ static __inline rettype \
14129 __attribute__ ((__always_inline__)) \
14130 vld4 ## Q ## _dup_ ## funcsuffix (const ptrtype *ptr) \
14133 __asm__ ("ld4r {v16." #regsuffix " - v19." #regsuffix "}, %1\n\t" \
14134 "st1 {v16." #regsuffix " - v19." #regsuffix "}, %0\n\t" \
14136 : "Q"(*(const structtype *)ptr) \
14137 : "memory", "v16", "v17", "v18", "v19"); \
14141 __LD4R_FUNC (float32x2x4_t
, float32x4_t
, float32_t
, 2s
, f32
,)
14142 __LD4R_FUNC (float64x1x4_t
, float64x4_t
, float64_t
, 1d
, f64
,)
14143 __LD4R_FUNC (poly8x8x4_t
, poly8x4_t
, poly8_t
, 8b
, p8
,)
14144 __LD4R_FUNC (poly16x4x4_t
, poly16x4_t
, poly16_t
, 4h
, p16
,)
14145 __LD4R_FUNC (int8x8x4_t
, int8x4_t
, int8_t, 8b
, s8
,)
14146 __LD4R_FUNC (int16x4x4_t
, int16x4_t
, int16_t, 4h
, s16
,)
14147 __LD4R_FUNC (int32x2x4_t
, int32x4_t
, int32_t, 2s
, s32
,)
14148 __LD4R_FUNC (int64x1x4_t
, int64x4_t
, int64_t, 1d
, s64
,)
14149 __LD4R_FUNC (uint8x8x4_t
, uint8x4_t
, uint8_t, 8b
, u8
,)
14150 __LD4R_FUNC (uint16x4x4_t
, uint16x4_t
, uint16_t, 4h
, u16
,)
14151 __LD4R_FUNC (uint32x2x4_t
, uint32x4_t
, uint32_t, 2s
, u32
,)
14152 __LD4R_FUNC (uint64x1x4_t
, uint64x4_t
, uint64_t, 1d
, u64
,)
14153 __LD4R_FUNC (float32x4x4_t
, float32x4_t
, float32_t
, 4s
, f32
, q
)
14154 __LD4R_FUNC (float64x2x4_t
, float64x4_t
, float64_t
, 2d
, f64
, q
)
14155 __LD4R_FUNC (poly8x16x4_t
, poly8x4_t
, poly8_t
, 16b
, p8
, q
)
14156 __LD4R_FUNC (poly16x8x4_t
, poly16x4_t
, poly16_t
, 8h
, p16
, q
)
14157 __LD4R_FUNC (int8x16x4_t
, int8x4_t
, int8_t, 16b
, s8
, q
)
14158 __LD4R_FUNC (int16x8x4_t
, int16x4_t
, int16_t, 8h
, s16
, q
)
14159 __LD4R_FUNC (int32x4x4_t
, int32x4_t
, int32_t, 4s
, s32
, q
)
14160 __LD4R_FUNC (int64x2x4_t
, int64x4_t
, int64_t, 2d
, s64
, q
)
14161 __LD4R_FUNC (uint8x16x4_t
, uint8x4_t
, uint8_t, 16b
, u8
, q
)
14162 __LD4R_FUNC (uint16x8x4_t
, uint16x4_t
, uint16_t, 8h
, u16
, q
)
14163 __LD4R_FUNC (uint32x4x4_t
, uint32x4_t
, uint32_t, 4s
, u32
, q
)
14164 __LD4R_FUNC (uint64x2x4_t
, uint64x4_t
, uint64_t, 2d
, u64
, q
)
14166 #define __LD4_LANE_FUNC(rettype, ptrtype, regsuffix, \
14167 lnsuffix, funcsuffix, Q) \
14168 __extension__ static __inline rettype \
14169 __attribute__ ((__always_inline__)) \
14170 vld4 ## Q ## _lane_ ## funcsuffix (const ptrtype *ptr, \
14171 rettype b, const int c) \
14174 __asm__ ("ld1 {v16." #regsuffix " - v19." #regsuffix "}, %1\n\t" \
14175 "ld4 {v16." #lnsuffix " - v19." #lnsuffix "}[%3], %2\n\t" \
14176 "st1 {v16." #regsuffix " - v19." #regsuffix "}, %0\n\t" \
14178 : "Q"(b), "Q"(*(const rettype *)ptr), "i"(c) \
14179 : "memory", "v16", "v17", "v18", "v19"); \
14183 __LD4_LANE_FUNC (int8x8x4_t
, uint8_t, 8b
, b
, s8
,)
14184 __LD4_LANE_FUNC (float32x2x4_t
, float32_t
, 2s
, s
, f32
,)
14185 __LD4_LANE_FUNC (float64x1x4_t
, float64_t
, 1d
, d
, f64
,)
14186 __LD4_LANE_FUNC (poly8x8x4_t
, poly8_t
, 8b
, b
, p8
,)
14187 __LD4_LANE_FUNC (poly16x4x4_t
, poly16_t
, 4h
, h
, p16
,)
14188 __LD4_LANE_FUNC (int16x4x4_t
, int16_t, 4h
, h
, s16
,)
14189 __LD4_LANE_FUNC (int32x2x4_t
, int32_t, 2s
, s
, s32
,)
14190 __LD4_LANE_FUNC (int64x1x4_t
, int64_t, 1d
, d
, s64
,)
14191 __LD4_LANE_FUNC (uint8x8x4_t
, uint8_t, 8b
, b
, u8
,)
14192 __LD4_LANE_FUNC (uint16x4x4_t
, uint16_t, 4h
, h
, u16
,)
14193 __LD4_LANE_FUNC (uint32x2x4_t
, uint32_t, 2s
, s
, u32
,)
14194 __LD4_LANE_FUNC (uint64x1x4_t
, uint64_t, 1d
, d
, u64
,)
14195 __LD4_LANE_FUNC (float32x4x4_t
, float32_t
, 4s
, s
, f32
, q
)
14196 __LD4_LANE_FUNC (float64x2x4_t
, float64_t
, 2d
, d
, f64
, q
)
14197 __LD4_LANE_FUNC (poly8x16x4_t
, poly8_t
, 16b
, b
, p8
, q
)
14198 __LD4_LANE_FUNC (poly16x8x4_t
, poly16_t
, 8h
, h
, p16
, q
)
14199 __LD4_LANE_FUNC (int8x16x4_t
, int8_t, 16b
, b
, s8
, q
)
14200 __LD4_LANE_FUNC (int16x8x4_t
, int16_t, 8h
, h
, s16
, q
)
14201 __LD4_LANE_FUNC (int32x4x4_t
, int32_t, 4s
, s
, s32
, q
)
14202 __LD4_LANE_FUNC (int64x2x4_t
, int64_t, 2d
, d
, s64
, q
)
14203 __LD4_LANE_FUNC (uint8x16x4_t
, uint8_t, 16b
, b
, u8
, q
)
14204 __LD4_LANE_FUNC (uint16x8x4_t
, uint16_t, 8h
, h
, u16
, q
)
14205 __LD4_LANE_FUNC (uint32x4x4_t
, uint32_t, 4s
, s
, u32
, q
)
14206 __LD4_LANE_FUNC (uint64x2x4_t
, uint64_t, 2d
, d
, u64
, q
)
14208 #define __ST2_LANE_FUNC(intype, ptrtype, regsuffix, \
14209 lnsuffix, funcsuffix, Q) \
14210 typedef struct { ptrtype __x[2]; } __ST2_LANE_STRUCTURE_##intype; \
14211 __extension__ static __inline void \
14212 __attribute__ ((__always_inline__)) \
14213 vst2 ## Q ## _lane_ ## funcsuffix (ptrtype *ptr, \
14214 intype b, const int c) \
14216 __ST2_LANE_STRUCTURE_##intype *__p = \
14217 (__ST2_LANE_STRUCTURE_##intype *)ptr; \
14218 __asm__ ("ld1 {v16." #regsuffix ", v17." #regsuffix "}, %1\n\t" \
14219 "st2 {v16." #lnsuffix ", v17." #lnsuffix "}[%2], %0\n\t" \
14225 __ST2_LANE_FUNC (int8x8x2_t
, int8_t, 8b
, b
, s8
,)
14226 __ST2_LANE_FUNC (float32x2x2_t
, float32_t
, 2s
, s
, f32
,)
14227 __ST2_LANE_FUNC (float64x1x2_t
, float64_t
, 1d
, d
, f64
,)
14228 __ST2_LANE_FUNC (poly8x8x2_t
, poly8_t
, 8b
, b
, p8
,)
14229 __ST2_LANE_FUNC (poly16x4x2_t
, poly16_t
, 4h
, h
, p16
,)
14230 __ST2_LANE_FUNC (int16x4x2_t
, int16_t, 4h
, h
, s16
,)
14231 __ST2_LANE_FUNC (int32x2x2_t
, int32_t, 2s
, s
, s32
,)
14232 __ST2_LANE_FUNC (int64x1x2_t
, int64_t, 1d
, d
, s64
,)
14233 __ST2_LANE_FUNC (uint8x8x2_t
, uint8_t, 8b
, b
, u8
,)
14234 __ST2_LANE_FUNC (uint16x4x2_t
, uint16_t, 4h
, h
, u16
,)
14235 __ST2_LANE_FUNC (uint32x2x2_t
, uint32_t, 2s
, s
, u32
,)
14236 __ST2_LANE_FUNC (uint64x1x2_t
, uint64_t, 1d
, d
, u64
,)
14237 __ST2_LANE_FUNC (float32x4x2_t
, float32_t
, 4s
, s
, f32
, q
)
14238 __ST2_LANE_FUNC (float64x2x2_t
, float64_t
, 2d
, d
, f64
, q
)
14239 __ST2_LANE_FUNC (poly8x16x2_t
, poly8_t
, 16b
, b
, p8
, q
)
14240 __ST2_LANE_FUNC (poly16x8x2_t
, poly16_t
, 8h
, h
, p16
, q
)
14241 __ST2_LANE_FUNC (int8x16x2_t
, int8_t, 16b
, b
, s8
, q
)
14242 __ST2_LANE_FUNC (int16x8x2_t
, int16_t, 8h
, h
, s16
, q
)
14243 __ST2_LANE_FUNC (int32x4x2_t
, int32_t, 4s
, s
, s32
, q
)
14244 __ST2_LANE_FUNC (int64x2x2_t
, int64_t, 2d
, d
, s64
, q
)
14245 __ST2_LANE_FUNC (uint8x16x2_t
, uint8_t, 16b
, b
, u8
, q
)
14246 __ST2_LANE_FUNC (uint16x8x2_t
, uint16_t, 8h
, h
, u16
, q
)
14247 __ST2_LANE_FUNC (uint32x4x2_t
, uint32_t, 4s
, s
, u32
, q
)
14248 __ST2_LANE_FUNC (uint64x2x2_t
, uint64_t, 2d
, d
, u64
, q
)
14250 #define __ST3_LANE_FUNC(intype, ptrtype, regsuffix, \
14251 lnsuffix, funcsuffix, Q) \
14252 typedef struct { ptrtype __x[3]; } __ST3_LANE_STRUCTURE_##intype; \
14253 __extension__ static __inline void \
14254 __attribute__ ((__always_inline__)) \
14255 vst3 ## Q ## _lane_ ## funcsuffix (ptrtype *ptr, \
14256 intype b, const int c) \
14258 __ST3_LANE_STRUCTURE_##intype *__p = \
14259 (__ST3_LANE_STRUCTURE_##intype *)ptr; \
14260 __asm__ ("ld1 {v16." #regsuffix " - v18." #regsuffix "}, %1\n\t" \
14261 "st3 {v16." #lnsuffix " - v18." #lnsuffix "}[%2], %0\n\t" \
14264 : "v16", "v17", "v18"); \
14267 __ST3_LANE_FUNC (int8x8x3_t
, int8_t, 8b
, b
, s8
,)
14268 __ST3_LANE_FUNC (float32x2x3_t
, float32_t
, 2s
, s
, f32
,)
14269 __ST3_LANE_FUNC (float64x1x3_t
, float64_t
, 1d
, d
, f64
,)
14270 __ST3_LANE_FUNC (poly8x8x3_t
, poly8_t
, 8b
, b
, p8
,)
14271 __ST3_LANE_FUNC (poly16x4x3_t
, poly16_t
, 4h
, h
, p16
,)
14272 __ST3_LANE_FUNC (int16x4x3_t
, int16_t, 4h
, h
, s16
,)
14273 __ST3_LANE_FUNC (int32x2x3_t
, int32_t, 2s
, s
, s32
,)
14274 __ST3_LANE_FUNC (int64x1x3_t
, int64_t, 1d
, d
, s64
,)
14275 __ST3_LANE_FUNC (uint8x8x3_t
, uint8_t, 8b
, b
, u8
,)
14276 __ST3_LANE_FUNC (uint16x4x3_t
, uint16_t, 4h
, h
, u16
,)
14277 __ST3_LANE_FUNC (uint32x2x3_t
, uint32_t, 2s
, s
, u32
,)
14278 __ST3_LANE_FUNC (uint64x1x3_t
, uint64_t, 1d
, d
, u64
,)
14279 __ST3_LANE_FUNC (float32x4x3_t
, float32_t
, 4s
, s
, f32
, q
)
14280 __ST3_LANE_FUNC (float64x2x3_t
, float64_t
, 2d
, d
, f64
, q
)
14281 __ST3_LANE_FUNC (poly8x16x3_t
, poly8_t
, 16b
, b
, p8
, q
)
14282 __ST3_LANE_FUNC (poly16x8x3_t
, poly16_t
, 8h
, h
, p16
, q
)
14283 __ST3_LANE_FUNC (int8x16x3_t
, int8_t, 16b
, b
, s8
, q
)
14284 __ST3_LANE_FUNC (int16x8x3_t
, int16_t, 8h
, h
, s16
, q
)
14285 __ST3_LANE_FUNC (int32x4x3_t
, int32_t, 4s
, s
, s32
, q
)
14286 __ST3_LANE_FUNC (int64x2x3_t
, int64_t, 2d
, d
, s64
, q
)
14287 __ST3_LANE_FUNC (uint8x16x3_t
, uint8_t, 16b
, b
, u8
, q
)
14288 __ST3_LANE_FUNC (uint16x8x3_t
, uint16_t, 8h
, h
, u16
, q
)
14289 __ST3_LANE_FUNC (uint32x4x3_t
, uint32_t, 4s
, s
, u32
, q
)
14290 __ST3_LANE_FUNC (uint64x2x3_t
, uint64_t, 2d
, d
, u64
, q
)
14292 #define __ST4_LANE_FUNC(intype, ptrtype, regsuffix, \
14293 lnsuffix, funcsuffix, Q) \
14294 typedef struct { ptrtype __x[4]; } __ST4_LANE_STRUCTURE_##intype; \
14295 __extension__ static __inline void \
14296 __attribute__ ((__always_inline__)) \
14297 vst4 ## Q ## _lane_ ## funcsuffix (ptrtype *ptr, \
14298 intype b, const int c) \
14300 __ST4_LANE_STRUCTURE_##intype *__p = \
14301 (__ST4_LANE_STRUCTURE_##intype *)ptr; \
14302 __asm__ ("ld1 {v16." #regsuffix " - v19." #regsuffix "}, %1\n\t" \
14303 "st4 {v16." #lnsuffix " - v19." #lnsuffix "}[%2], %0\n\t" \
14306 : "v16", "v17", "v18", "v19"); \
14309 __ST4_LANE_FUNC (int8x8x4_t
, int8_t, 8b
, b
, s8
,)
14310 __ST4_LANE_FUNC (float32x2x4_t
, float32_t
, 2s
, s
, f32
,)
14311 __ST4_LANE_FUNC (float64x1x4_t
, float64_t
, 1d
, d
, f64
,)
14312 __ST4_LANE_FUNC (poly8x8x4_t
, poly8_t
, 8b
, b
, p8
,)
14313 __ST4_LANE_FUNC (poly16x4x4_t
, poly16_t
, 4h
, h
, p16
,)
14314 __ST4_LANE_FUNC (int16x4x4_t
, int16_t, 4h
, h
, s16
,)
14315 __ST4_LANE_FUNC (int32x2x4_t
, int32_t, 2s
, s
, s32
,)
14316 __ST4_LANE_FUNC (int64x1x4_t
, int64_t, 1d
, d
, s64
,)
14317 __ST4_LANE_FUNC (uint8x8x4_t
, uint8_t, 8b
, b
, u8
,)
14318 __ST4_LANE_FUNC (uint16x4x4_t
, uint16_t, 4h
, h
, u16
,)
14319 __ST4_LANE_FUNC (uint32x2x4_t
, uint32_t, 2s
, s
, u32
,)
14320 __ST4_LANE_FUNC (uint64x1x4_t
, uint64_t, 1d
, d
, u64
,)
14321 __ST4_LANE_FUNC (float32x4x4_t
, float32_t
, 4s
, s
, f32
, q
)
14322 __ST4_LANE_FUNC (float64x2x4_t
, float64_t
, 2d
, d
, f64
, q
)
14323 __ST4_LANE_FUNC (poly8x16x4_t
, poly8_t
, 16b
, b
, p8
, q
)
14324 __ST4_LANE_FUNC (poly16x8x4_t
, poly16_t
, 8h
, h
, p16
, q
)
14325 __ST4_LANE_FUNC (int8x16x4_t
, int8_t, 16b
, b
, s8
, q
)
14326 __ST4_LANE_FUNC (int16x8x4_t
, int16_t, 8h
, h
, s16
, q
)
14327 __ST4_LANE_FUNC (int32x4x4_t
, int32_t, 4s
, s
, s32
, q
)
14328 __ST4_LANE_FUNC (int64x2x4_t
, int64_t, 2d
, d
, s64
, q
)
14329 __ST4_LANE_FUNC (uint8x16x4_t
, uint8_t, 16b
, b
, u8
, q
)
14330 __ST4_LANE_FUNC (uint16x8x4_t
, uint16_t, 8h
, h
, u16
, q
)
14331 __ST4_LANE_FUNC (uint32x4x4_t
, uint32_t, 4s
, s
, u32
, q
)
14332 __ST4_LANE_FUNC (uint64x2x4_t
, uint64_t, 2d
, d
, u64
, q
)
14334 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
14335 vaddlv_s32 (int32x2_t a
)
14338 __asm__ ("saddlp %0.1d, %1.2s" : "=w"(result
) : "w"(a
) : );
14342 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
14343 vaddlv_u32 (uint32x2_t a
)
14346 __asm__ ("uaddlp %0.1d, %1.2s" : "=w"(result
) : "w"(a
) : );
14350 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
14351 vpaddd_s64 (int64x2_t __a
)
14353 return __builtin_aarch64_addpdi (__a
);
14356 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
14357 vqdmulh_laneq_s16 (int16x4_t __a
, int16x8_t __b
, const int __c
)
14359 return __builtin_aarch64_sqdmulh_laneqv4hi (__a
, __b
, __c
);
14362 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
14363 vqdmulh_laneq_s32 (int32x2_t __a
, int32x4_t __b
, const int __c
)
14365 return __builtin_aarch64_sqdmulh_laneqv2si (__a
, __b
, __c
);
14368 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
14369 vqdmulhq_laneq_s16 (int16x8_t __a
, int16x8_t __b
, const int __c
)
14371 return __builtin_aarch64_sqdmulh_laneqv8hi (__a
, __b
, __c
);
14374 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
14375 vqdmulhq_laneq_s32 (int32x4_t __a
, int32x4_t __b
, const int __c
)
14377 return __builtin_aarch64_sqdmulh_laneqv4si (__a
, __b
, __c
);
14380 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
14381 vqrdmulh_laneq_s16 (int16x4_t __a
, int16x8_t __b
, const int __c
)
14383 return __builtin_aarch64_sqrdmulh_laneqv4hi (__a
, __b
, __c
);
14386 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
14387 vqrdmulh_laneq_s32 (int32x2_t __a
, int32x4_t __b
, const int __c
)
14389 return __builtin_aarch64_sqrdmulh_laneqv2si (__a
, __b
, __c
);
14392 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
14393 vqrdmulhq_laneq_s16 (int16x8_t __a
, int16x8_t __b
, const int __c
)
14395 return __builtin_aarch64_sqrdmulh_laneqv8hi (__a
, __b
, __c
);
14398 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
14399 vqrdmulhq_laneq_s32 (int32x4_t __a
, int32x4_t __b
, const int __c
)
14401 return __builtin_aarch64_sqrdmulh_laneqv4si (__a
, __b
, __c
);
14404 /* Table intrinsics. */
14406 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
14407 vqtbl1_p8 (poly8x16_t a
, uint8x8_t b
)
14410 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
14413 : /* No clobbers */);
14417 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
14418 vqtbl1_s8 (int8x16_t a
, uint8x8_t b
)
14421 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
14424 : /* No clobbers */);
14428 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14429 vqtbl1_u8 (uint8x16_t a
, uint8x8_t b
)
14432 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
14435 : /* No clobbers */);
14439 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
14440 vqtbl1q_p8 (poly8x16_t a
, uint8x16_t b
)
14443 __asm__ ("tbl %0.16b, {%1.16b}, %2.16b"
14446 : /* No clobbers */);
14450 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
14451 vqtbl1q_s8 (int8x16_t a
, uint8x16_t b
)
14454 __asm__ ("tbl %0.16b, {%1.16b}, %2.16b"
14457 : /* No clobbers */);
14461 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
14462 vqtbl1q_u8 (uint8x16_t a
, uint8x16_t b
)
14465 __asm__ ("tbl %0.16b, {%1.16b}, %2.16b"
14468 : /* No clobbers */);
14472 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
14473 vqtbl2_s8 (int8x16x2_t tab
, uint8x8_t idx
)
14476 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
14477 "tbl %0.8b, {v16.16b, v17.16b}, %2.8b\n\t"
14480 :"memory", "v16", "v17");
14484 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14485 vqtbl2_u8 (uint8x16x2_t tab
, uint8x8_t idx
)
14488 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
14489 "tbl %0.8b, {v16.16b, v17.16b}, %2.8b\n\t"
14492 :"memory", "v16", "v17");
14496 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
14497 vqtbl2_p8 (poly8x16x2_t tab
, uint8x8_t idx
)
14500 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
14501 "tbl %0.8b, {v16.16b, v17.16b}, %2.8b\n\t"
14504 :"memory", "v16", "v17");
14508 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
14509 vqtbl2q_s8 (int8x16x2_t tab
, uint8x16_t idx
)
14512 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
14513 "tbl %0.16b, {v16.16b, v17.16b}, %2.16b\n\t"
14516 :"memory", "v16", "v17");
14520 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
14521 vqtbl2q_u8 (uint8x16x2_t tab
, uint8x16_t idx
)
14524 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
14525 "tbl %0.16b, {v16.16b, v17.16b}, %2.16b\n\t"
14528 :"memory", "v16", "v17");
14532 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
14533 vqtbl2q_p8 (poly8x16x2_t tab
, uint8x16_t idx
)
14536 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
14537 "tbl %0.16b, {v16.16b, v17.16b}, %2.16b\n\t"
14540 :"memory", "v16", "v17");
14544 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
14545 vqtbl3_s8 (int8x16x3_t tab
, uint8x8_t idx
)
14548 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
14549 "tbl %0.8b, {v16.16b - v18.16b}, %2.8b\n\t"
14552 :"memory", "v16", "v17", "v18");
14556 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14557 vqtbl3_u8 (uint8x16x3_t tab
, uint8x8_t idx
)
14560 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
14561 "tbl %0.8b, {v16.16b - v18.16b}, %2.8b\n\t"
14564 :"memory", "v16", "v17", "v18");
14568 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
14569 vqtbl3_p8 (poly8x16x3_t tab
, uint8x8_t idx
)
14572 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
14573 "tbl %0.8b, {v16.16b - v18.16b}, %2.8b\n\t"
14576 :"memory", "v16", "v17", "v18");
14580 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
14581 vqtbl3q_s8 (int8x16x3_t tab
, uint8x16_t idx
)
14584 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
14585 "tbl %0.16b, {v16.16b - v18.16b}, %2.16b\n\t"
14588 :"memory", "v16", "v17", "v18");
14592 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
14593 vqtbl3q_u8 (uint8x16x3_t tab
, uint8x16_t idx
)
14596 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
14597 "tbl %0.16b, {v16.16b - v18.16b}, %2.16b\n\t"
14600 :"memory", "v16", "v17", "v18");
14604 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
14605 vqtbl3q_p8 (poly8x16x3_t tab
, uint8x16_t idx
)
14608 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
14609 "tbl %0.16b, {v16.16b - v18.16b}, %2.16b\n\t"
14612 :"memory", "v16", "v17", "v18");
14616 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
14617 vqtbl4_s8 (int8x16x4_t tab
, uint8x8_t idx
)
14620 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
14621 "tbl %0.8b, {v16.16b - v19.16b}, %2.8b\n\t"
14624 :"memory", "v16", "v17", "v18", "v19");
14628 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14629 vqtbl4_u8 (uint8x16x4_t tab
, uint8x8_t idx
)
14632 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
14633 "tbl %0.8b, {v16.16b - v19.16b}, %2.8b\n\t"
14636 :"memory", "v16", "v17", "v18", "v19");
14640 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
14641 vqtbl4_p8 (poly8x16x4_t tab
, uint8x8_t idx
)
14644 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
14645 "tbl %0.8b, {v16.16b - v19.16b}, %2.8b\n\t"
14648 :"memory", "v16", "v17", "v18", "v19");
14653 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
14654 vqtbl4q_s8 (int8x16x4_t tab
, uint8x16_t idx
)
14657 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
14658 "tbl %0.16b, {v16.16b - v19.16b}, %2.16b\n\t"
14661 :"memory", "v16", "v17", "v18", "v19");
14665 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
14666 vqtbl4q_u8 (uint8x16x4_t tab
, uint8x16_t idx
)
14669 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
14670 "tbl %0.16b, {v16.16b - v19.16b}, %2.16b\n\t"
14673 :"memory", "v16", "v17", "v18", "v19");
14677 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
14678 vqtbl4q_p8 (poly8x16x4_t tab
, uint8x16_t idx
)
14681 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
14682 "tbl %0.16b, {v16.16b - v19.16b}, %2.16b\n\t"
14685 :"memory", "v16", "v17", "v18", "v19");
14690 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
14691 vqtbx1_s8 (int8x8_t r
, int8x16_t tab
, uint8x8_t idx
)
14693 int8x8_t result
= r
;
14694 __asm__ ("tbx %0.8b,{%1.16b},%2.8b"
14696 : "w"(tab
), "w"(idx
)
14697 : /* No clobbers */);
14701 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14702 vqtbx1_u8 (uint8x8_t r
, uint8x16_t tab
, uint8x8_t idx
)
14704 uint8x8_t result
= r
;
14705 __asm__ ("tbx %0.8b,{%1.16b},%2.8b"
14707 : "w"(tab
), "w"(idx
)
14708 : /* No clobbers */);
14712 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
14713 vqtbx1_p8 (poly8x8_t r
, poly8x16_t tab
, uint8x8_t idx
)
14715 poly8x8_t result
= r
;
14716 __asm__ ("tbx %0.8b,{%1.16b},%2.8b"
14718 : "w"(tab
), "w"(idx
)
14719 : /* No clobbers */);
14723 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
14724 vqtbx1q_s8 (int8x16_t r
, int8x16_t tab
, uint8x16_t idx
)
14726 int8x16_t result
= r
;
14727 __asm__ ("tbx %0.16b,{%1.16b},%2.16b"
14729 : "w"(tab
), "w"(idx
)
14730 : /* No clobbers */);
14734 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
14735 vqtbx1q_u8 (uint8x16_t r
, uint8x16_t tab
, uint8x16_t idx
)
14737 uint8x16_t result
= r
;
14738 __asm__ ("tbx %0.16b,{%1.16b},%2.16b"
14740 : "w"(tab
), "w"(idx
)
14741 : /* No clobbers */);
14745 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
14746 vqtbx1q_p8 (poly8x16_t r
, poly8x16_t tab
, uint8x16_t idx
)
14748 poly8x16_t result
= r
;
14749 __asm__ ("tbx %0.16b,{%1.16b},%2.16b"
14751 : "w"(tab
), "w"(idx
)
14752 : /* No clobbers */);
14756 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
14757 vqtbx2_s8 (int8x8_t r
, int8x16x2_t tab
, uint8x8_t idx
)
14759 int8x8_t result
= r
;
14760 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
14761 "tbx %0.8b, {v16.16b, v17.16b}, %2.8b\n\t"
14764 :"memory", "v16", "v17");
14768 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14769 vqtbx2_u8 (uint8x8_t r
, uint8x16x2_t tab
, uint8x8_t idx
)
14771 uint8x8_t result
= r
;
14772 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
14773 "tbx %0.8b, {v16.16b, v17.16b}, %2.8b\n\t"
14776 :"memory", "v16", "v17");
14780 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
14781 vqtbx2_p8 (poly8x8_t r
, poly8x16x2_t tab
, uint8x8_t idx
)
14783 poly8x8_t result
= r
;
14784 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
14785 "tbx %0.8b, {v16.16b, v17.16b}, %2.8b\n\t"
14788 :"memory", "v16", "v17");
14793 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
14794 vqtbx2q_s8 (int8x16_t r
, int8x16x2_t tab
, uint8x16_t idx
)
14796 int8x16_t result
= r
;
14797 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
14798 "tbx %0.16b, {v16.16b, v17.16b}, %2.16b\n\t"
14801 :"memory", "v16", "v17");
14805 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
14806 vqtbx2q_u8 (uint8x16_t r
, uint8x16x2_t tab
, uint8x16_t idx
)
14808 uint8x16_t result
= r
;
14809 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
14810 "tbx %0.16b, {v16.16b, v17.16b}, %2.16b\n\t"
14813 :"memory", "v16", "v17");
14817 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
14818 vqtbx2q_p8 (poly8x16_t r
, poly8x16x2_t tab
, uint8x16_t idx
)
14820 poly8x16_t result
= r
;
14821 __asm__ ("ld1 {v16.16b, v17.16b}, %1\n\t"
14822 "tbx %0.16b, {v16.16b, v17.16b}, %2.16b\n\t"
14825 :"memory", "v16", "v17");
14830 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
14831 vqtbx3_s8 (int8x8_t r
, int8x16x3_t tab
, uint8x8_t idx
)
14833 int8x8_t result
= r
;
14834 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
14835 "tbx %0.8b, {v16.16b - v18.16b}, %2.8b\n\t"
14838 :"memory", "v16", "v17", "v18");
14842 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14843 vqtbx3_u8 (uint8x8_t r
, uint8x16x3_t tab
, uint8x8_t idx
)
14845 uint8x8_t result
= r
;
14846 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
14847 "tbx %0.8b, {v16.16b - v18.16b}, %2.8b\n\t"
14850 :"memory", "v16", "v17", "v18");
14854 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
14855 vqtbx3_p8 (poly8x8_t r
, poly8x16x3_t tab
, uint8x8_t idx
)
14857 poly8x8_t result
= r
;
14858 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
14859 "tbx %0.8b, {v16.16b - v18.16b}, %2.8b\n\t"
14862 :"memory", "v16", "v17", "v18");
14867 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
14868 vqtbx3q_s8 (int8x16_t r
, int8x16x3_t tab
, uint8x16_t idx
)
14870 int8x16_t result
= r
;
14871 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
14872 "tbx %0.16b, {v16.16b - v18.16b}, %2.16b\n\t"
14875 :"memory", "v16", "v17", "v18");
14879 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
14880 vqtbx3q_u8 (uint8x16_t r
, uint8x16x3_t tab
, uint8x16_t idx
)
14882 uint8x16_t result
= r
;
14883 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
14884 "tbx %0.16b, {v16.16b - v18.16b}, %2.16b\n\t"
14887 :"memory", "v16", "v17", "v18");
14891 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
14892 vqtbx3q_p8 (poly8x16_t r
, poly8x16x3_t tab
, uint8x16_t idx
)
14894 poly8x16_t result
= r
;
14895 __asm__ ("ld1 {v16.16b - v18.16b}, %1\n\t"
14896 "tbx %0.16b, {v16.16b - v18.16b}, %2.16b\n\t"
14899 :"memory", "v16", "v17", "v18");
14904 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
14905 vqtbx4_s8 (int8x8_t r
, int8x16x4_t tab
, uint8x8_t idx
)
14907 int8x8_t result
= r
;
14908 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
14909 "tbx %0.8b, {v16.16b - v19.16b}, %2.8b\n\t"
14912 :"memory", "v16", "v17", "v18", "v19");
14916 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14917 vqtbx4_u8 (uint8x8_t r
, uint8x16x4_t tab
, uint8x8_t idx
)
14919 uint8x8_t result
= r
;
14920 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
14921 "tbx %0.8b, {v16.16b - v19.16b}, %2.8b\n\t"
14924 :"memory", "v16", "v17", "v18", "v19");
14928 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
14929 vqtbx4_p8 (poly8x8_t r
, poly8x16x4_t tab
, uint8x8_t idx
)
14931 poly8x8_t result
= r
;
14932 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
14933 "tbx %0.8b, {v16.16b - v19.16b}, %2.8b\n\t"
14936 :"memory", "v16", "v17", "v18", "v19");
14941 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
14942 vqtbx4q_s8 (int8x16_t r
, int8x16x4_t tab
, uint8x16_t idx
)
14944 int8x16_t result
= r
;
14945 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
14946 "tbx %0.16b, {v16.16b - v19.16b}, %2.16b\n\t"
14949 :"memory", "v16", "v17", "v18", "v19");
14953 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
14954 vqtbx4q_u8 (uint8x16_t r
, uint8x16x4_t tab
, uint8x16_t idx
)
14956 uint8x16_t result
= r
;
14957 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
14958 "tbx %0.16b, {v16.16b - v19.16b}, %2.16b\n\t"
14961 :"memory", "v16", "v17", "v18", "v19");
14965 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
14966 vqtbx4q_p8 (poly8x16_t r
, poly8x16x4_t tab
, uint8x16_t idx
)
14968 poly8x16_t result
= r
;
14969 __asm__ ("ld1 {v16.16b - v19.16b}, %1\n\t"
14970 "tbx %0.16b, {v16.16b - v19.16b}, %2.16b\n\t"
14973 :"memory", "v16", "v17", "v18", "v19");
14977 /* V7 legacy table intrinsics. */
14979 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
14980 vtbl1_s8 (int8x8_t tab
, int8x8_t idx
)
14983 int8x16_t temp
= vcombine_s8 (tab
, vcreate_s8 (__AARCH64_UINT64_C (0x0)));
14984 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
14986 : "w"(temp
), "w"(idx
)
14987 : /* No clobbers */);
14991 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
14992 vtbl1_u8 (uint8x8_t tab
, uint8x8_t idx
)
14995 uint8x16_t temp
= vcombine_u8 (tab
, vcreate_u8 (__AARCH64_UINT64_C (0x0)));
14996 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
14998 : "w"(temp
), "w"(idx
)
14999 : /* No clobbers */);
15003 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
15004 vtbl1_p8 (poly8x8_t tab
, uint8x8_t idx
)
15007 poly8x16_t temp
= vcombine_p8 (tab
, vcreate_p8 (__AARCH64_UINT64_C (0x0)));
15008 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
15010 : "w"(temp
), "w"(idx
)
15011 : /* No clobbers */);
15015 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
15016 vtbl2_s8 (int8x8x2_t tab
, int8x8_t idx
)
15019 int8x16_t temp
= vcombine_s8 (tab
.val
[0], tab
.val
[1]);
15020 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
15022 : "w"(temp
), "w"(idx
)
15023 : /* No clobbers */);
15027 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15028 vtbl2_u8 (uint8x8x2_t tab
, uint8x8_t idx
)
15031 uint8x16_t temp
= vcombine_u8 (tab
.val
[0], tab
.val
[1]);
15032 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
15034 : "w"(temp
), "w"(idx
)
15035 : /* No clobbers */);
15039 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
15040 vtbl2_p8 (poly8x8x2_t tab
, uint8x8_t idx
)
15043 poly8x16_t temp
= vcombine_p8 (tab
.val
[0], tab
.val
[1]);
15044 __asm__ ("tbl %0.8b, {%1.16b}, %2.8b"
15046 : "w"(temp
), "w"(idx
)
15047 : /* No clobbers */);
15051 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
15052 vtbl3_s8 (int8x8x3_t tab
, int8x8_t idx
)
15056 temp
.val
[0] = vcombine_s8 (tab
.val
[0], tab
.val
[1]);
15057 temp
.val
[1] = vcombine_s8 (tab
.val
[2], vcreate_s8 (__AARCH64_UINT64_C (0x0)));
15058 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
15059 "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
15061 : "Q"(temp
), "w"(idx
)
15062 : "v16", "v17", "memory");
15066 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15067 vtbl3_u8 (uint8x8x3_t tab
, uint8x8_t idx
)
15071 temp
.val
[0] = vcombine_u8 (tab
.val
[0], tab
.val
[1]);
15072 temp
.val
[1] = vcombine_u8 (tab
.val
[2], vcreate_u8 (__AARCH64_UINT64_C (0x0)));
15073 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
15074 "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
15076 : "Q"(temp
), "w"(idx
)
15077 : "v16", "v17", "memory");
15081 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
15082 vtbl3_p8 (poly8x8x3_t tab
, uint8x8_t idx
)
15086 temp
.val
[0] = vcombine_p8 (tab
.val
[0], tab
.val
[1]);
15087 temp
.val
[1] = vcombine_p8 (tab
.val
[2], vcreate_p8 (__AARCH64_UINT64_C (0x0)));
15088 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
15089 "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
15091 : "Q"(temp
), "w"(idx
)
15092 : "v16", "v17", "memory");
15096 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
15097 vtbl4_s8 (int8x8x4_t tab
, int8x8_t idx
)
15101 temp
.val
[0] = vcombine_s8 (tab
.val
[0], tab
.val
[1]);
15102 temp
.val
[1] = vcombine_s8 (tab
.val
[2], tab
.val
[3]);
15103 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
15104 "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
15106 : "Q"(temp
), "w"(idx
)
15107 : "v16", "v17", "memory");
15111 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15112 vtbl4_u8 (uint8x8x4_t tab
, uint8x8_t idx
)
15116 temp
.val
[0] = vcombine_u8 (tab
.val
[0], tab
.val
[1]);
15117 temp
.val
[1] = vcombine_u8 (tab
.val
[2], tab
.val
[3]);
15118 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
15119 "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
15121 : "Q"(temp
), "w"(idx
)
15122 : "v16", "v17", "memory");
15126 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
15127 vtbl4_p8 (poly8x8x4_t tab
, uint8x8_t idx
)
15131 temp
.val
[0] = vcombine_p8 (tab
.val
[0], tab
.val
[1]);
15132 temp
.val
[1] = vcombine_p8 (tab
.val
[2], tab
.val
[3]);
15133 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
15134 "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
15136 : "Q"(temp
), "w"(idx
)
15137 : "v16", "v17", "memory");
15141 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
15142 vtbx2_s8 (int8x8_t r
, int8x8x2_t tab
, int8x8_t idx
)
15144 int8x8_t result
= r
;
15145 int8x16_t temp
= vcombine_s8 (tab
.val
[0], tab
.val
[1]);
15146 __asm__ ("tbx %0.8b, {%1.16b}, %2.8b"
15148 : "w"(temp
), "w"(idx
)
15149 : /* No clobbers */);
15153 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15154 vtbx2_u8 (uint8x8_t r
, uint8x8x2_t tab
, uint8x8_t idx
)
15156 uint8x8_t result
= r
;
15157 uint8x16_t temp
= vcombine_u8 (tab
.val
[0], tab
.val
[1]);
15158 __asm__ ("tbx %0.8b, {%1.16b}, %2.8b"
15160 : "w"(temp
), "w"(idx
)
15161 : /* No clobbers */);
15165 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
15166 vtbx2_p8 (poly8x8_t r
, poly8x8x2_t tab
, uint8x8_t idx
)
15168 poly8x8_t result
= r
;
15169 poly8x16_t temp
= vcombine_p8 (tab
.val
[0], tab
.val
[1]);
15170 __asm__ ("tbx %0.8b, {%1.16b}, %2.8b"
15172 : "w"(temp
), "w"(idx
)
15173 : /* No clobbers */);
15177 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
15178 vtbx4_s8 (int8x8_t r
, int8x8x4_t tab
, int8x8_t idx
)
15180 int8x8_t result
= r
;
15182 temp
.val
[0] = vcombine_s8 (tab
.val
[0], tab
.val
[1]);
15183 temp
.val
[1] = vcombine_s8 (tab
.val
[2], tab
.val
[3]);
15184 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
15185 "tbx %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
15187 : "Q"(temp
), "w"(idx
)
15188 : "v16", "v17", "memory");
15192 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15193 vtbx4_u8 (uint8x8_t r
, uint8x8x4_t tab
, uint8x8_t idx
)
15195 uint8x8_t result
= r
;
15197 temp
.val
[0] = vcombine_u8 (tab
.val
[0], tab
.val
[1]);
15198 temp
.val
[1] = vcombine_u8 (tab
.val
[2], tab
.val
[3]);
15199 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
15200 "tbx %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
15202 : "Q"(temp
), "w"(idx
)
15203 : "v16", "v17", "memory");
15207 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
15208 vtbx4_p8 (poly8x8_t r
, poly8x8x4_t tab
, uint8x8_t idx
)
15210 poly8x8_t result
= r
;
15212 temp
.val
[0] = vcombine_p8 (tab
.val
[0], tab
.val
[1]);
15213 temp
.val
[1] = vcombine_p8 (tab
.val
[2], tab
.val
[3]);
15214 __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
15215 "tbx %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
15217 : "Q"(temp
), "w"(idx
)
15218 : "v16", "v17", "memory");
15222 /* End of temporary inline asm. */
15224 /* Start of optimal implementations in approved order. */
15228 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
15229 vabs_f32 (float32x2_t __a
)
15231 return __builtin_aarch64_absv2sf (__a
);
15234 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
15235 vabs_f64 (float64x1_t __a
)
15237 return __builtin_fabs (__a
);
15240 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
15241 vabs_s8 (int8x8_t __a
)
15243 return __builtin_aarch64_absv8qi (__a
);
15246 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
15247 vabs_s16 (int16x4_t __a
)
15249 return __builtin_aarch64_absv4hi (__a
);
15252 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
15253 vabs_s32 (int32x2_t __a
)
15255 return __builtin_aarch64_absv2si (__a
);
15258 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
15259 vabs_s64 (int64x1_t __a
)
15261 return __builtin_llabs (__a
);
15264 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
15265 vabsq_f32 (float32x4_t __a
)
15267 return __builtin_aarch64_absv4sf (__a
);
15270 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
15271 vabsq_f64 (float64x2_t __a
)
15273 return __builtin_aarch64_absv2df (__a
);
15276 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
15277 vabsq_s8 (int8x16_t __a
)
15279 return __builtin_aarch64_absv16qi (__a
);
15282 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
15283 vabsq_s16 (int16x8_t __a
)
15285 return __builtin_aarch64_absv8hi (__a
);
15288 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
15289 vabsq_s32 (int32x4_t __a
)
15291 return __builtin_aarch64_absv4si (__a
);
15294 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
15295 vabsq_s64 (int64x2_t __a
)
15297 return __builtin_aarch64_absv2di (__a
);
15302 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
15303 vaddd_s64 (int64x1_t __a
, int64x1_t __b
)
15308 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
15309 vaddd_u64 (uint64x1_t __a
, uint64x1_t __b
)
15315 #define __LANE0(__t) ((__t) - 1)
15317 #define __LANE0(__t) 0
15322 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
15323 vaddv_s8 (int8x8_t __a
)
15325 return vget_lane_s8 (__builtin_aarch64_reduc_splus_v8qi (__a
), __LANE0 (8));
15328 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
15329 vaddv_s16 (int16x4_t __a
)
15331 return vget_lane_s16 (__builtin_aarch64_reduc_splus_v4hi (__a
), __LANE0 (4));
15334 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
15335 vaddv_s32 (int32x2_t __a
)
15337 return vget_lane_s32 (__builtin_aarch64_reduc_splus_v2si (__a
), __LANE0 (2));
15340 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
15341 vaddv_u8 (uint8x8_t __a
)
15343 return vget_lane_u8 ((uint8x8_t
)
15344 __builtin_aarch64_reduc_uplus_v8qi ((int8x8_t
) __a
),
15348 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
15349 vaddv_u16 (uint16x4_t __a
)
15351 return vget_lane_u16 ((uint16x4_t
)
15352 __builtin_aarch64_reduc_uplus_v4hi ((int16x4_t
) __a
),
15356 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
15357 vaddv_u32 (uint32x2_t __a
)
15359 return vget_lane_u32 ((uint32x2_t
)
15360 __builtin_aarch64_reduc_uplus_v2si ((int32x2_t
) __a
),
15364 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
15365 vaddvq_s8 (int8x16_t __a
)
15367 return vgetq_lane_s8 (__builtin_aarch64_reduc_splus_v16qi (__a
),
15371 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
15372 vaddvq_s16 (int16x8_t __a
)
15374 return vgetq_lane_s16 (__builtin_aarch64_reduc_splus_v8hi (__a
), __LANE0 (8));
15377 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
15378 vaddvq_s32 (int32x4_t __a
)
15380 return vgetq_lane_s32 (__builtin_aarch64_reduc_splus_v4si (__a
), __LANE0 (4));
15383 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
15384 vaddvq_s64 (int64x2_t __a
)
15386 return vgetq_lane_s64 (__builtin_aarch64_reduc_splus_v2di (__a
), __LANE0 (2));
15389 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
15390 vaddvq_u8 (uint8x16_t __a
)
15392 return vgetq_lane_u8 ((uint8x16_t
)
15393 __builtin_aarch64_reduc_uplus_v16qi ((int8x16_t
) __a
),
15397 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
15398 vaddvq_u16 (uint16x8_t __a
)
15400 return vgetq_lane_u16 ((uint16x8_t
)
15401 __builtin_aarch64_reduc_uplus_v8hi ((int16x8_t
) __a
),
15405 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
15406 vaddvq_u32 (uint32x4_t __a
)
15408 return vgetq_lane_u32 ((uint32x4_t
)
15409 __builtin_aarch64_reduc_uplus_v4si ((int32x4_t
) __a
),
15413 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
15414 vaddvq_u64 (uint64x2_t __a
)
15416 return vgetq_lane_u64 ((uint64x2_t
)
15417 __builtin_aarch64_reduc_uplus_v2di ((int64x2_t
) __a
),
15421 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
15422 vaddv_f32 (float32x2_t __a
)
15424 float32x2_t __t
= __builtin_aarch64_reduc_splus_v2sf (__a
);
15425 return vget_lane_f32 (__t
, __LANE0 (2));
15428 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
15429 vaddvq_f32 (float32x4_t __a
)
15431 float32x4_t __t
= __builtin_aarch64_reduc_splus_v4sf (__a
);
15432 return vgetq_lane_f32 (__t
, __LANE0 (4));
15435 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
15436 vaddvq_f64 (float64x2_t __a
)
15438 float64x2_t __t
= __builtin_aarch64_reduc_splus_v2df (__a
);
15439 return vgetq_lane_f64 (__t
, __LANE0 (2));
15444 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
15445 vbsl_f32 (uint32x2_t __a
, float32x2_t __b
, float32x2_t __c
)
15447 return __builtin_aarch64_simd_bslv2sf_suss (__a
, __b
, __c
);
15450 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
15451 vbsl_p8 (uint8x8_t __a
, poly8x8_t __b
, poly8x8_t __c
)
15453 return __builtin_aarch64_simd_bslv8qi_pupp (__a
, __b
, __c
);
15456 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
15457 vbsl_p16 (uint16x4_t __a
, poly16x4_t __b
, poly16x4_t __c
)
15459 return __builtin_aarch64_simd_bslv4hi_pupp (__a
, __b
, __c
);
15462 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
15463 vbsl_s8 (uint8x8_t __a
, int8x8_t __b
, int8x8_t __c
)
15465 return __builtin_aarch64_simd_bslv8qi_suss (__a
, __b
, __c
);
15468 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
15469 vbsl_s16 (uint16x4_t __a
, int16x4_t __b
, int16x4_t __c
)
15471 return __builtin_aarch64_simd_bslv4hi_suss (__a
, __b
, __c
);
15474 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
15475 vbsl_s32 (uint32x2_t __a
, int32x2_t __b
, int32x2_t __c
)
15477 return __builtin_aarch64_simd_bslv2si_suss (__a
, __b
, __c
);
15480 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
15481 vbsl_s64 (uint64x1_t __a
, int64x1_t __b
, int64x1_t __c
)
15483 return __builtin_aarch64_simd_bsldi_suss (__a
, __b
, __c
);
15486 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15487 vbsl_u8 (uint8x8_t __a
, uint8x8_t __b
, uint8x8_t __c
)
15489 return __builtin_aarch64_simd_bslv8qi_uuuu (__a
, __b
, __c
);
15492 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
15493 vbsl_u16 (uint16x4_t __a
, uint16x4_t __b
, uint16x4_t __c
)
15495 return __builtin_aarch64_simd_bslv4hi_uuuu (__a
, __b
, __c
);
15498 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
15499 vbsl_u32 (uint32x2_t __a
, uint32x2_t __b
, uint32x2_t __c
)
15501 return __builtin_aarch64_simd_bslv2si_uuuu (__a
, __b
, __c
);
15504 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
15505 vbsl_u64 (uint64x1_t __a
, uint64x1_t __b
, uint64x1_t __c
)
15507 return __builtin_aarch64_simd_bsldi_uuuu (__a
, __b
, __c
);
15510 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
15511 vbslq_f32 (uint32x4_t __a
, float32x4_t __b
, float32x4_t __c
)
15513 return __builtin_aarch64_simd_bslv4sf_suss (__a
, __b
, __c
);
15516 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
15517 vbslq_f64 (uint64x2_t __a
, float64x2_t __b
, float64x2_t __c
)
15519 return __builtin_aarch64_simd_bslv2df_suss (__a
, __b
, __c
);
15522 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
15523 vbslq_p8 (uint8x16_t __a
, poly8x16_t __b
, poly8x16_t __c
)
15525 return __builtin_aarch64_simd_bslv16qi_pupp (__a
, __b
, __c
);
15528 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
15529 vbslq_p16 (uint16x8_t __a
, poly16x8_t __b
, poly16x8_t __c
)
15531 return __builtin_aarch64_simd_bslv8hi_pupp (__a
, __b
, __c
);
15534 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
15535 vbslq_s8 (uint8x16_t __a
, int8x16_t __b
, int8x16_t __c
)
15537 return __builtin_aarch64_simd_bslv16qi_suss (__a
, __b
, __c
);
15540 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
15541 vbslq_s16 (uint16x8_t __a
, int16x8_t __b
, int16x8_t __c
)
15543 return __builtin_aarch64_simd_bslv8hi_suss (__a
, __b
, __c
);
15546 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
15547 vbslq_s32 (uint32x4_t __a
, int32x4_t __b
, int32x4_t __c
)
15549 return __builtin_aarch64_simd_bslv4si_suss (__a
, __b
, __c
);
15552 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
15553 vbslq_s64 (uint64x2_t __a
, int64x2_t __b
, int64x2_t __c
)
15555 return __builtin_aarch64_simd_bslv2di_suss (__a
, __b
, __c
);
15558 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
15559 vbslq_u8 (uint8x16_t __a
, uint8x16_t __b
, uint8x16_t __c
)
15561 return __builtin_aarch64_simd_bslv16qi_uuuu (__a
, __b
, __c
);
15564 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
15565 vbslq_u16 (uint16x8_t __a
, uint16x8_t __b
, uint16x8_t __c
)
15567 return __builtin_aarch64_simd_bslv8hi_uuuu (__a
, __b
, __c
);
15570 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
15571 vbslq_u32 (uint32x4_t __a
, uint32x4_t __b
, uint32x4_t __c
)
15573 return __builtin_aarch64_simd_bslv4si_uuuu (__a
, __b
, __c
);
15576 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
15577 vbslq_u64 (uint64x2_t __a
, uint64x2_t __b
, uint64x2_t __c
)
15579 return __builtin_aarch64_simd_bslv2di_uuuu (__a
, __b
, __c
);
15582 #ifdef __ARM_FEATURE_CRYPTO
15586 static __inline uint8x16_t
15587 vaeseq_u8 (uint8x16_t data
, uint8x16_t key
)
15589 return __builtin_aarch64_crypto_aesev16qi_uuu (data
, key
);
15592 static __inline uint8x16_t
15593 vaesdq_u8 (uint8x16_t data
, uint8x16_t key
)
15595 return __builtin_aarch64_crypto_aesdv16qi_uuu (data
, key
);
15598 static __inline uint8x16_t
15599 vaesmcq_u8 (uint8x16_t data
)
15601 return __builtin_aarch64_crypto_aesmcv16qi_uu (data
);
15604 static __inline uint8x16_t
15605 vaesimcq_u8 (uint8x16_t data
)
15607 return __builtin_aarch64_crypto_aesimcv16qi_uu (data
);
15614 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
15615 vcages_f32 (float32_t __a
, float32_t __b
)
15617 return __builtin_fabsf (__a
) >= __builtin_fabsf (__b
) ? -1 : 0;
15620 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
15621 vcage_f32 (float32x2_t __a
, float32x2_t __b
)
15623 return vabs_f32 (__a
) >= vabs_f32 (__b
);
15626 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
15627 vcageq_f32 (float32x4_t __a
, float32x4_t __b
)
15629 return vabsq_f32 (__a
) >= vabsq_f32 (__b
);
15632 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
15633 vcaged_f64 (float64_t __a
, float64_t __b
)
15635 return __builtin_fabs (__a
) >= __builtin_fabs (__b
) ? -1 : 0;
15638 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
15639 vcageq_f64 (float64x2_t __a
, float64x2_t __b
)
15641 return vabsq_f64 (__a
) >= vabsq_f64 (__b
);
15646 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
15647 vcagts_f32 (float32_t __a
, float32_t __b
)
15649 return __builtin_fabsf (__a
) > __builtin_fabsf (__b
) ? -1 : 0;
15652 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
15653 vcagt_f32 (float32x2_t __a
, float32x2_t __b
)
15655 return vabs_f32 (__a
) > vabs_f32 (__b
);
15658 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
15659 vcagtq_f32 (float32x4_t __a
, float32x4_t __b
)
15661 return vabsq_f32 (__a
) > vabsq_f32 (__b
);
15664 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
15665 vcagtd_f64 (float64_t __a
, float64_t __b
)
15667 return __builtin_fabs (__a
) > __builtin_fabs (__b
) ? -1 : 0;
15670 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
15671 vcagtq_f64 (float64x2_t __a
, float64x2_t __b
)
15673 return vabsq_f64 (__a
) > vabsq_f64 (__b
);
15678 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
15679 vcale_f32 (float32x2_t __a
, float32x2_t __b
)
15681 return vabs_f32 (__a
) <= vabs_f32 (__b
);
15684 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
15685 vcaleq_f32 (float32x4_t __a
, float32x4_t __b
)
15687 return vabsq_f32 (__a
) <= vabsq_f32 (__b
);
15690 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
15691 vcaleq_f64 (float64x2_t __a
, float64x2_t __b
)
15693 return vabsq_f64 (__a
) <= vabsq_f64 (__b
);
15698 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
15699 vcalt_f32 (float32x2_t __a
, float32x2_t __b
)
15701 return vabs_f32 (__a
) < vabs_f32 (__b
);
15704 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
15705 vcaltq_f32 (float32x4_t __a
, float32x4_t __b
)
15707 return vabsq_f32 (__a
) < vabsq_f32 (__b
);
15710 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
15711 vcaltq_f64 (float64x2_t __a
, float64x2_t __b
)
15713 return vabsq_f64 (__a
) < vabsq_f64 (__b
);
15716 /* vceq - vector. */
15718 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
15719 vceq_f32 (float32x2_t __a
, float32x2_t __b
)
15721 return (uint32x2_t
) __builtin_aarch64_cmeqv2sf (__a
, __b
);
15724 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
15725 vceq_f64 (float64x1_t __a
, float64x1_t __b
)
15727 return __a
== __b
? -1ll : 0ll;
15730 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15731 vceq_p8 (poly8x8_t __a
, poly8x8_t __b
)
15733 return (uint8x8_t
) __builtin_aarch64_cmeqv8qi ((int8x8_t
) __a
,
15737 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15738 vceq_s8 (int8x8_t __a
, int8x8_t __b
)
15740 return (uint8x8_t
) __builtin_aarch64_cmeqv8qi (__a
, __b
);
15743 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
15744 vceq_s16 (int16x4_t __a
, int16x4_t __b
)
15746 return (uint16x4_t
) __builtin_aarch64_cmeqv4hi (__a
, __b
);
15749 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
15750 vceq_s32 (int32x2_t __a
, int32x2_t __b
)
15752 return (uint32x2_t
) __builtin_aarch64_cmeqv2si (__a
, __b
);
15755 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
15756 vceq_s64 (int64x1_t __a
, int64x1_t __b
)
15758 return __a
== __b
? -1ll : 0ll;
15761 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15762 vceq_u8 (uint8x8_t __a
, uint8x8_t __b
)
15764 return (uint8x8_t
) __builtin_aarch64_cmeqv8qi ((int8x8_t
) __a
,
15768 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
15769 vceq_u16 (uint16x4_t __a
, uint16x4_t __b
)
15771 return (uint16x4_t
) __builtin_aarch64_cmeqv4hi ((int16x4_t
) __a
,
15775 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
15776 vceq_u32 (uint32x2_t __a
, uint32x2_t __b
)
15778 return (uint32x2_t
) __builtin_aarch64_cmeqv2si ((int32x2_t
) __a
,
15782 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
15783 vceq_u64 (uint64x1_t __a
, uint64x1_t __b
)
15785 return __a
== __b
? -1ll : 0ll;
15788 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
15789 vceqq_f32 (float32x4_t __a
, float32x4_t __b
)
15791 return (uint32x4_t
) __builtin_aarch64_cmeqv4sf (__a
, __b
);
15794 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
15795 vceqq_f64 (float64x2_t __a
, float64x2_t __b
)
15797 return (uint64x2_t
) __builtin_aarch64_cmeqv2df (__a
, __b
);
15800 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
15801 vceqq_p8 (poly8x16_t __a
, poly8x16_t __b
)
15803 return (uint8x16_t
) __builtin_aarch64_cmeqv16qi ((int8x16_t
) __a
,
15807 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
15808 vceqq_s8 (int8x16_t __a
, int8x16_t __b
)
15810 return (uint8x16_t
) __builtin_aarch64_cmeqv16qi (__a
, __b
);
15813 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
15814 vceqq_s16 (int16x8_t __a
, int16x8_t __b
)
15816 return (uint16x8_t
) __builtin_aarch64_cmeqv8hi (__a
, __b
);
15819 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
15820 vceqq_s32 (int32x4_t __a
, int32x4_t __b
)
15822 return (uint32x4_t
) __builtin_aarch64_cmeqv4si (__a
, __b
);
15825 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
15826 vceqq_s64 (int64x2_t __a
, int64x2_t __b
)
15828 return (uint64x2_t
) __builtin_aarch64_cmeqv2di (__a
, __b
);
15831 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
15832 vceqq_u8 (uint8x16_t __a
, uint8x16_t __b
)
15834 return (uint8x16_t
) __builtin_aarch64_cmeqv16qi ((int8x16_t
) __a
,
15838 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
15839 vceqq_u16 (uint16x8_t __a
, uint16x8_t __b
)
15841 return (uint16x8_t
) __builtin_aarch64_cmeqv8hi ((int16x8_t
) __a
,
15845 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
15846 vceqq_u32 (uint32x4_t __a
, uint32x4_t __b
)
15848 return (uint32x4_t
) __builtin_aarch64_cmeqv4si ((int32x4_t
) __a
,
15852 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
15853 vceqq_u64 (uint64x2_t __a
, uint64x2_t __b
)
15855 return (uint64x2_t
) __builtin_aarch64_cmeqv2di ((int64x2_t
) __a
,
15859 /* vceq - scalar. */
15861 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
15862 vceqs_f32 (float32_t __a
, float32_t __b
)
15864 return __a
== __b
? -1 : 0;
15867 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
15868 vceqd_s64 (int64x1_t __a
, int64x1_t __b
)
15870 return __a
== __b
? -1ll : 0ll;
15873 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
15874 vceqd_u64 (uint64x1_t __a
, uint64x1_t __b
)
15876 return __a
== __b
? -1ll : 0ll;
15879 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
15880 vceqd_f64 (float64_t __a
, float64_t __b
)
15882 return __a
== __b
? -1ll : 0ll;
15885 /* vceqz - vector. */
15887 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
15888 vceqz_f32 (float32x2_t __a
)
15890 float32x2_t __b
= {0.0f
, 0.0f
};
15891 return (uint32x2_t
) __builtin_aarch64_cmeqv2sf (__a
, __b
);
15894 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
15895 vceqz_f64 (float64x1_t __a
)
15897 return __a
== 0.0 ? -1ll : 0ll;
15900 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15901 vceqz_p8 (poly8x8_t __a
)
15903 poly8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
15904 return (uint8x8_t
) __builtin_aarch64_cmeqv8qi ((int8x8_t
) __a
,
15908 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15909 vceqz_s8 (int8x8_t __a
)
15911 int8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
15912 return (uint8x8_t
) __builtin_aarch64_cmeqv8qi (__a
, __b
);
15915 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
15916 vceqz_s16 (int16x4_t __a
)
15918 int16x4_t __b
= {0, 0, 0, 0};
15919 return (uint16x4_t
) __builtin_aarch64_cmeqv4hi (__a
, __b
);
15922 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
15923 vceqz_s32 (int32x2_t __a
)
15925 int32x2_t __b
= {0, 0};
15926 return (uint32x2_t
) __builtin_aarch64_cmeqv2si (__a
, __b
);
15929 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
15930 vceqz_s64 (int64x1_t __a
)
15932 return __a
== 0ll ? -1ll : 0ll;
15935 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
15936 vceqz_u8 (uint8x8_t __a
)
15938 uint8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
15939 return (uint8x8_t
) __builtin_aarch64_cmeqv8qi ((int8x8_t
) __a
,
15943 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
15944 vceqz_u16 (uint16x4_t __a
)
15946 uint16x4_t __b
= {0, 0, 0, 0};
15947 return (uint16x4_t
) __builtin_aarch64_cmeqv4hi ((int16x4_t
) __a
,
15951 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
15952 vceqz_u32 (uint32x2_t __a
)
15954 uint32x2_t __b
= {0, 0};
15955 return (uint32x2_t
) __builtin_aarch64_cmeqv2si ((int32x2_t
) __a
,
15959 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
15960 vceqz_u64 (uint64x1_t __a
)
15962 return __a
== 0ll ? -1ll : 0ll;
15965 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
15966 vceqzq_f32 (float32x4_t __a
)
15968 float32x4_t __b
= {0.0f
, 0.0f
, 0.0f
, 0.0f
};
15969 return (uint32x4_t
) __builtin_aarch64_cmeqv4sf (__a
, __b
);
15972 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
15973 vceqzq_f64 (float64x2_t __a
)
15975 float64x2_t __b
= {0.0, 0.0};
15976 return (uint64x2_t
) __builtin_aarch64_cmeqv2df (__a
, __b
);
15979 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
15980 vceqzq_p8 (poly8x16_t __a
)
15982 poly8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
15983 0, 0, 0, 0, 0, 0, 0, 0};
15984 return (uint8x16_t
) __builtin_aarch64_cmeqv16qi ((int8x16_t
) __a
,
15988 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
15989 vceqzq_s8 (int8x16_t __a
)
15991 int8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
15992 0, 0, 0, 0, 0, 0, 0, 0};
15993 return (uint8x16_t
) __builtin_aarch64_cmeqv16qi (__a
, __b
);
15996 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
15997 vceqzq_s16 (int16x8_t __a
)
15999 int16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
16000 return (uint16x8_t
) __builtin_aarch64_cmeqv8hi (__a
, __b
);
16003 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16004 vceqzq_s32 (int32x4_t __a
)
16006 int32x4_t __b
= {0, 0, 0, 0};
16007 return (uint32x4_t
) __builtin_aarch64_cmeqv4si (__a
, __b
);
16010 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16011 vceqzq_s64 (int64x2_t __a
)
16013 int64x2_t __b
= {0, 0};
16014 return (uint64x2_t
) __builtin_aarch64_cmeqv2di (__a
, __b
);
16017 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16018 vceqzq_u8 (uint8x16_t __a
)
16020 uint8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
16021 0, 0, 0, 0, 0, 0, 0, 0};
16022 return (uint8x16_t
) __builtin_aarch64_cmeqv16qi ((int8x16_t
) __a
,
16026 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
16027 vceqzq_u16 (uint16x8_t __a
)
16029 uint16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
16030 return (uint16x8_t
) __builtin_aarch64_cmeqv8hi ((int16x8_t
) __a
,
16034 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16035 vceqzq_u32 (uint32x4_t __a
)
16037 uint32x4_t __b
= {0, 0, 0, 0};
16038 return (uint32x4_t
) __builtin_aarch64_cmeqv4si ((int32x4_t
) __a
,
16042 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16043 vceqzq_u64 (uint64x2_t __a
)
16045 uint64x2_t __b
= {0, 0};
16046 return (uint64x2_t
) __builtin_aarch64_cmeqv2di ((int64x2_t
) __a
,
16050 /* vceqz - scalar. */
16052 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
16053 vceqzs_f32 (float32_t __a
)
16055 return __a
== 0.0f
? -1 : 0;
16058 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16059 vceqzd_s64 (int64x1_t __a
)
16061 return __a
== 0 ? -1ll : 0ll;
16064 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16065 vceqzd_u64 (int64x1_t __a
)
16067 return __a
== 0 ? -1ll : 0ll;
16070 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
16071 vceqzd_f64 (float64_t __a
)
16073 return __a
== 0.0 ? -1ll : 0ll;
16076 /* vcge - vector. */
16078 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16079 vcge_f32 (float32x2_t __a
, float32x2_t __b
)
16081 return (uint32x2_t
) __builtin_aarch64_cmgev2sf (__a
, __b
);
16084 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16085 vcge_f64 (float64x1_t __a
, float64x1_t __b
)
16087 return __a
>= __b
? -1ll : 0ll;
16090 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16091 vcge_p8 (poly8x8_t __a
, poly8x8_t __b
)
16093 return (uint8x8_t
) __builtin_aarch64_cmgev8qi ((int8x8_t
) __a
,
16097 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16098 vcge_s8 (int8x8_t __a
, int8x8_t __b
)
16100 return (uint8x8_t
) __builtin_aarch64_cmgev8qi (__a
, __b
);
16103 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
16104 vcge_s16 (int16x4_t __a
, int16x4_t __b
)
16106 return (uint16x4_t
) __builtin_aarch64_cmgev4hi (__a
, __b
);
16109 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16110 vcge_s32 (int32x2_t __a
, int32x2_t __b
)
16112 return (uint32x2_t
) __builtin_aarch64_cmgev2si (__a
, __b
);
16115 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16116 vcge_s64 (int64x1_t __a
, int64x1_t __b
)
16118 return __a
>= __b
? -1ll : 0ll;
16121 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16122 vcge_u8 (uint8x8_t __a
, uint8x8_t __b
)
16124 return (uint8x8_t
) __builtin_aarch64_cmgeuv8qi ((int8x8_t
) __a
,
16128 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
16129 vcge_u16 (uint16x4_t __a
, uint16x4_t __b
)
16131 return (uint16x4_t
) __builtin_aarch64_cmgeuv4hi ((int16x4_t
) __a
,
16135 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16136 vcge_u32 (uint32x2_t __a
, uint32x2_t __b
)
16138 return (uint32x2_t
) __builtin_aarch64_cmgeuv2si ((int32x2_t
) __a
,
16142 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16143 vcge_u64 (uint64x1_t __a
, uint64x1_t __b
)
16145 return __a
>= __b
? -1ll : 0ll;
16148 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16149 vcgeq_f32 (float32x4_t __a
, float32x4_t __b
)
16151 return (uint32x4_t
) __builtin_aarch64_cmgev4sf (__a
, __b
);
16154 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16155 vcgeq_f64 (float64x2_t __a
, float64x2_t __b
)
16157 return (uint64x2_t
) __builtin_aarch64_cmgev2df (__a
, __b
);
16160 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16161 vcgeq_p8 (poly8x16_t __a
, poly8x16_t __b
)
16163 return (uint8x16_t
) __builtin_aarch64_cmgev16qi ((int8x16_t
) __a
,
16167 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16168 vcgeq_s8 (int8x16_t __a
, int8x16_t __b
)
16170 return (uint8x16_t
) __builtin_aarch64_cmgev16qi (__a
, __b
);
16173 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
16174 vcgeq_s16 (int16x8_t __a
, int16x8_t __b
)
16176 return (uint16x8_t
) __builtin_aarch64_cmgev8hi (__a
, __b
);
16179 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16180 vcgeq_s32 (int32x4_t __a
, int32x4_t __b
)
16182 return (uint32x4_t
) __builtin_aarch64_cmgev4si (__a
, __b
);
16185 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16186 vcgeq_s64 (int64x2_t __a
, int64x2_t __b
)
16188 return (uint64x2_t
) __builtin_aarch64_cmgev2di (__a
, __b
);
16191 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16192 vcgeq_u8 (uint8x16_t __a
, uint8x16_t __b
)
16194 return (uint8x16_t
) __builtin_aarch64_cmgeuv16qi ((int8x16_t
) __a
,
16198 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
16199 vcgeq_u16 (uint16x8_t __a
, uint16x8_t __b
)
16201 return (uint16x8_t
) __builtin_aarch64_cmgeuv8hi ((int16x8_t
) __a
,
16205 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16206 vcgeq_u32 (uint32x4_t __a
, uint32x4_t __b
)
16208 return (uint32x4_t
) __builtin_aarch64_cmgeuv4si ((int32x4_t
) __a
,
16212 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16213 vcgeq_u64 (uint64x2_t __a
, uint64x2_t __b
)
16215 return (uint64x2_t
) __builtin_aarch64_cmgeuv2di ((int64x2_t
) __a
,
16219 /* vcge - scalar. */
16221 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
16222 vcges_f32 (float32_t __a
, float32_t __b
)
16224 return __a
>= __b
? -1 : 0;
16227 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16228 vcged_s64 (int64x1_t __a
, int64x1_t __b
)
16230 return __a
>= __b
? -1ll : 0ll;
16233 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16234 vcged_u64 (uint64x1_t __a
, uint64x1_t __b
)
16236 return __a
>= __b
? -1ll : 0ll;
16239 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
16240 vcged_f64 (float64_t __a
, float64_t __b
)
16242 return __a
>= __b
? -1ll : 0ll;
16245 /* vcgez - vector. */
16247 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16248 vcgez_f32 (float32x2_t __a
)
16250 float32x2_t __b
= {0.0f
, 0.0f
};
16251 return (uint32x2_t
) __builtin_aarch64_cmgev2sf (__a
, __b
);
16254 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16255 vcgez_f64 (float64x1_t __a
)
16257 return __a
>= 0.0 ? -1ll : 0ll;
16260 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16261 vcgez_p8 (poly8x8_t __a
)
16263 poly8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
16264 return (uint8x8_t
) __builtin_aarch64_cmgev8qi ((int8x8_t
) __a
,
16268 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16269 vcgez_s8 (int8x8_t __a
)
16271 int8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
16272 return (uint8x8_t
) __builtin_aarch64_cmgev8qi (__a
, __b
);
16275 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
16276 vcgez_s16 (int16x4_t __a
)
16278 int16x4_t __b
= {0, 0, 0, 0};
16279 return (uint16x4_t
) __builtin_aarch64_cmgev4hi (__a
, __b
);
16282 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16283 vcgez_s32 (int32x2_t __a
)
16285 int32x2_t __b
= {0, 0};
16286 return (uint32x2_t
) __builtin_aarch64_cmgev2si (__a
, __b
);
16289 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16290 vcgez_s64 (int64x1_t __a
)
16292 return __a
>= 0ll ? -1ll : 0ll;
16295 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16296 vcgez_u8 (uint8x8_t __a
)
16298 uint8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
16299 return (uint8x8_t
) __builtin_aarch64_cmgeuv8qi ((int8x8_t
) __a
,
16303 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
16304 vcgez_u16 (uint16x4_t __a
)
16306 uint16x4_t __b
= {0, 0, 0, 0};
16307 return (uint16x4_t
) __builtin_aarch64_cmgeuv4hi ((int16x4_t
) __a
,
16311 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16312 vcgez_u32 (uint32x2_t __a
)
16314 uint32x2_t __b
= {0, 0};
16315 return (uint32x2_t
) __builtin_aarch64_cmgeuv2si ((int32x2_t
) __a
,
16319 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16320 vcgez_u64 (uint64x1_t __a
)
16322 return __a
>= 0ll ? -1ll : 0ll;
16325 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16326 vcgezq_f32 (float32x4_t __a
)
16328 float32x4_t __b
= {0.0f
, 0.0f
, 0.0f
, 0.0f
};
16329 return (uint32x4_t
) __builtin_aarch64_cmgev4sf (__a
, __b
);
16332 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16333 vcgezq_f64 (float64x2_t __a
)
16335 float64x2_t __b
= {0.0, 0.0};
16336 return (uint64x2_t
) __builtin_aarch64_cmgev2df (__a
, __b
);
16339 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16340 vcgezq_p8 (poly8x16_t __a
)
16342 poly8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
16343 0, 0, 0, 0, 0, 0, 0, 0};
16344 return (uint8x16_t
) __builtin_aarch64_cmgev16qi ((int8x16_t
) __a
,
16348 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16349 vcgezq_s8 (int8x16_t __a
)
16351 int8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
16352 0, 0, 0, 0, 0, 0, 0, 0};
16353 return (uint8x16_t
) __builtin_aarch64_cmgev16qi (__a
, __b
);
16356 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
16357 vcgezq_s16 (int16x8_t __a
)
16359 int16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
16360 return (uint16x8_t
) __builtin_aarch64_cmgev8hi (__a
, __b
);
16363 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16364 vcgezq_s32 (int32x4_t __a
)
16366 int32x4_t __b
= {0, 0, 0, 0};
16367 return (uint32x4_t
) __builtin_aarch64_cmgev4si (__a
, __b
);
16370 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16371 vcgezq_s64 (int64x2_t __a
)
16373 int64x2_t __b
= {0, 0};
16374 return (uint64x2_t
) __builtin_aarch64_cmgev2di (__a
, __b
);
16377 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16378 vcgezq_u8 (uint8x16_t __a
)
16380 uint8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
16381 0, 0, 0, 0, 0, 0, 0, 0};
16382 return (uint8x16_t
) __builtin_aarch64_cmgeuv16qi ((int8x16_t
) __a
,
16386 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
16387 vcgezq_u16 (uint16x8_t __a
)
16389 uint16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
16390 return (uint16x8_t
) __builtin_aarch64_cmgeuv8hi ((int16x8_t
) __a
,
16394 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16395 vcgezq_u32 (uint32x4_t __a
)
16397 uint32x4_t __b
= {0, 0, 0, 0};
16398 return (uint32x4_t
) __builtin_aarch64_cmgeuv4si ((int32x4_t
) __a
,
16402 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16403 vcgezq_u64 (uint64x2_t __a
)
16405 uint64x2_t __b
= {0, 0};
16406 return (uint64x2_t
) __builtin_aarch64_cmgeuv2di ((int64x2_t
) __a
,
16410 /* vcgez - scalar. */
16412 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
16413 vcgezs_f32 (float32_t __a
)
16415 return __a
>= 0.0f
? -1 : 0;
16418 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16419 vcgezd_s64 (int64x1_t __a
)
16421 return __a
>= 0 ? -1ll : 0ll;
16424 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16425 vcgezd_u64 (int64x1_t __a
)
16427 return __a
>= 0 ? -1ll : 0ll;
16430 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
16431 vcgezd_f64 (float64_t __a
)
16433 return __a
>= 0.0 ? -1ll : 0ll;
16436 /* vcgt - vector. */
16438 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16439 vcgt_f32 (float32x2_t __a
, float32x2_t __b
)
16441 return (uint32x2_t
) __builtin_aarch64_cmgtv2sf (__a
, __b
);
16444 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16445 vcgt_f64 (float64x1_t __a
, float64x1_t __b
)
16447 return __a
> __b
? -1ll : 0ll;
16450 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16451 vcgt_p8 (poly8x8_t __a
, poly8x8_t __b
)
16453 return (uint8x8_t
) __builtin_aarch64_cmgtv8qi ((int8x8_t
) __a
,
16457 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16458 vcgt_s8 (int8x8_t __a
, int8x8_t __b
)
16460 return (uint8x8_t
) __builtin_aarch64_cmgtv8qi (__a
, __b
);
16463 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
16464 vcgt_s16 (int16x4_t __a
, int16x4_t __b
)
16466 return (uint16x4_t
) __builtin_aarch64_cmgtv4hi (__a
, __b
);
16469 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16470 vcgt_s32 (int32x2_t __a
, int32x2_t __b
)
16472 return (uint32x2_t
) __builtin_aarch64_cmgtv2si (__a
, __b
);
16475 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16476 vcgt_s64 (int64x1_t __a
, int64x1_t __b
)
16478 return __a
> __b
? -1ll : 0ll;
16481 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16482 vcgt_u8 (uint8x8_t __a
, uint8x8_t __b
)
16484 return (uint8x8_t
) __builtin_aarch64_cmgtuv8qi ((int8x8_t
) __a
,
16488 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
16489 vcgt_u16 (uint16x4_t __a
, uint16x4_t __b
)
16491 return (uint16x4_t
) __builtin_aarch64_cmgtuv4hi ((int16x4_t
) __a
,
16495 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16496 vcgt_u32 (uint32x2_t __a
, uint32x2_t __b
)
16498 return (uint32x2_t
) __builtin_aarch64_cmgtuv2si ((int32x2_t
) __a
,
16502 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16503 vcgt_u64 (uint64x1_t __a
, uint64x1_t __b
)
16505 return __a
> __b
? -1ll : 0ll;
16508 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16509 vcgtq_f32 (float32x4_t __a
, float32x4_t __b
)
16511 return (uint32x4_t
) __builtin_aarch64_cmgtv4sf (__a
, __b
);
16514 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16515 vcgtq_f64 (float64x2_t __a
, float64x2_t __b
)
16517 return (uint64x2_t
) __builtin_aarch64_cmgtv2df (__a
, __b
);
16520 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16521 vcgtq_p8 (poly8x16_t __a
, poly8x16_t __b
)
16523 return (uint8x16_t
) __builtin_aarch64_cmgtv16qi ((int8x16_t
) __a
,
16527 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16528 vcgtq_s8 (int8x16_t __a
, int8x16_t __b
)
16530 return (uint8x16_t
) __builtin_aarch64_cmgtv16qi (__a
, __b
);
16533 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
16534 vcgtq_s16 (int16x8_t __a
, int16x8_t __b
)
16536 return (uint16x8_t
) __builtin_aarch64_cmgtv8hi (__a
, __b
);
16539 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16540 vcgtq_s32 (int32x4_t __a
, int32x4_t __b
)
16542 return (uint32x4_t
) __builtin_aarch64_cmgtv4si (__a
, __b
);
16545 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16546 vcgtq_s64 (int64x2_t __a
, int64x2_t __b
)
16548 return (uint64x2_t
) __builtin_aarch64_cmgtv2di (__a
, __b
);
16551 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16552 vcgtq_u8 (uint8x16_t __a
, uint8x16_t __b
)
16554 return (uint8x16_t
) __builtin_aarch64_cmgtuv16qi ((int8x16_t
) __a
,
16558 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
16559 vcgtq_u16 (uint16x8_t __a
, uint16x8_t __b
)
16561 return (uint16x8_t
) __builtin_aarch64_cmgtuv8hi ((int16x8_t
) __a
,
16565 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16566 vcgtq_u32 (uint32x4_t __a
, uint32x4_t __b
)
16568 return (uint32x4_t
) __builtin_aarch64_cmgtuv4si ((int32x4_t
) __a
,
16572 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16573 vcgtq_u64 (uint64x2_t __a
, uint64x2_t __b
)
16575 return (uint64x2_t
) __builtin_aarch64_cmgtuv2di ((int64x2_t
) __a
,
16579 /* vcgt - scalar. */
16581 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
16582 vcgts_f32 (float32_t __a
, float32_t __b
)
16584 return __a
> __b
? -1 : 0;
16587 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16588 vcgtd_s64 (int64x1_t __a
, int64x1_t __b
)
16590 return __a
> __b
? -1ll : 0ll;
16593 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16594 vcgtd_u64 (uint64x1_t __a
, uint64x1_t __b
)
16596 return __a
> __b
? -1ll : 0ll;
16599 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
16600 vcgtd_f64 (float64_t __a
, float64_t __b
)
16602 return __a
> __b
? -1ll : 0ll;
16605 /* vcgtz - vector. */
16607 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16608 vcgtz_f32 (float32x2_t __a
)
16610 float32x2_t __b
= {0.0f
, 0.0f
};
16611 return (uint32x2_t
) __builtin_aarch64_cmgtv2sf (__a
, __b
);
16614 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16615 vcgtz_f64 (float64x1_t __a
)
16617 return __a
> 0.0 ? -1ll : 0ll;
16620 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16621 vcgtz_p8 (poly8x8_t __a
)
16623 poly8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
16624 return (uint8x8_t
) __builtin_aarch64_cmgtv8qi ((int8x8_t
) __a
,
16628 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16629 vcgtz_s8 (int8x8_t __a
)
16631 int8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
16632 return (uint8x8_t
) __builtin_aarch64_cmgtv8qi (__a
, __b
);
16635 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
16636 vcgtz_s16 (int16x4_t __a
)
16638 int16x4_t __b
= {0, 0, 0, 0};
16639 return (uint16x4_t
) __builtin_aarch64_cmgtv4hi (__a
, __b
);
16642 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16643 vcgtz_s32 (int32x2_t __a
)
16645 int32x2_t __b
= {0, 0};
16646 return (uint32x2_t
) __builtin_aarch64_cmgtv2si (__a
, __b
);
16649 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16650 vcgtz_s64 (int64x1_t __a
)
16652 return __a
> 0ll ? -1ll : 0ll;
16655 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16656 vcgtz_u8 (uint8x8_t __a
)
16658 uint8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
16659 return (uint8x8_t
) __builtin_aarch64_cmgtuv8qi ((int8x8_t
) __a
,
16663 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
16664 vcgtz_u16 (uint16x4_t __a
)
16666 uint16x4_t __b
= {0, 0, 0, 0};
16667 return (uint16x4_t
) __builtin_aarch64_cmgtuv4hi ((int16x4_t
) __a
,
16671 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16672 vcgtz_u32 (uint32x2_t __a
)
16674 uint32x2_t __b
= {0, 0};
16675 return (uint32x2_t
) __builtin_aarch64_cmgtuv2si ((int32x2_t
) __a
,
16679 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16680 vcgtz_u64 (uint64x1_t __a
)
16682 return __a
> 0ll ? -1ll : 0ll;
16685 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16686 vcgtzq_f32 (float32x4_t __a
)
16688 float32x4_t __b
= {0.0f
, 0.0f
, 0.0f
, 0.0f
};
16689 return (uint32x4_t
) __builtin_aarch64_cmgtv4sf (__a
, __b
);
16692 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16693 vcgtzq_f64 (float64x2_t __a
)
16695 float64x2_t __b
= {0.0, 0.0};
16696 return (uint64x2_t
) __builtin_aarch64_cmgtv2df (__a
, __b
);
16699 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16700 vcgtzq_p8 (poly8x16_t __a
)
16702 poly8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
16703 0, 0, 0, 0, 0, 0, 0, 0};
16704 return (uint8x16_t
) __builtin_aarch64_cmgtv16qi ((int8x16_t
) __a
,
16708 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16709 vcgtzq_s8 (int8x16_t __a
)
16711 int8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
16712 0, 0, 0, 0, 0, 0, 0, 0};
16713 return (uint8x16_t
) __builtin_aarch64_cmgtv16qi (__a
, __b
);
16716 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
16717 vcgtzq_s16 (int16x8_t __a
)
16719 int16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
16720 return (uint16x8_t
) __builtin_aarch64_cmgtv8hi (__a
, __b
);
16723 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16724 vcgtzq_s32 (int32x4_t __a
)
16726 int32x4_t __b
= {0, 0, 0, 0};
16727 return (uint32x4_t
) __builtin_aarch64_cmgtv4si (__a
, __b
);
16730 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16731 vcgtzq_s64 (int64x2_t __a
)
16733 int64x2_t __b
= {0, 0};
16734 return (uint64x2_t
) __builtin_aarch64_cmgtv2di (__a
, __b
);
16737 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16738 vcgtzq_u8 (uint8x16_t __a
)
16740 uint8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
16741 0, 0, 0, 0, 0, 0, 0, 0};
16742 return (uint8x16_t
) __builtin_aarch64_cmgtuv16qi ((int8x16_t
) __a
,
16746 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
16747 vcgtzq_u16 (uint16x8_t __a
)
16749 uint16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
16750 return (uint16x8_t
) __builtin_aarch64_cmgtuv8hi ((int16x8_t
) __a
,
16754 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16755 vcgtzq_u32 (uint32x4_t __a
)
16757 uint32x4_t __b
= {0, 0, 0, 0};
16758 return (uint32x4_t
) __builtin_aarch64_cmgtuv4si ((int32x4_t
) __a
,
16762 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16763 vcgtzq_u64 (uint64x2_t __a
)
16765 uint64x2_t __b
= {0, 0};
16766 return (uint64x2_t
) __builtin_aarch64_cmgtuv2di ((int64x2_t
) __a
,
16770 /* vcgtz - scalar. */
16772 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
16773 vcgtzs_f32 (float32_t __a
)
16775 return __a
> 0.0f
? -1 : 0;
16778 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16779 vcgtzd_s64 (int64x1_t __a
)
16781 return __a
> 0 ? -1ll : 0ll;
16784 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16785 vcgtzd_u64 (int64x1_t __a
)
16787 return __a
> 0 ? -1ll : 0ll;
16790 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
16791 vcgtzd_f64 (float64_t __a
)
16793 return __a
> 0.0 ? -1ll : 0ll;
16796 /* vcle - vector. */
16798 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16799 vcle_f32 (float32x2_t __a
, float32x2_t __b
)
16801 return (uint32x2_t
) __builtin_aarch64_cmgev2sf (__b
, __a
);
16804 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16805 vcle_f64 (float64x1_t __a
, float64x1_t __b
)
16807 return __a
<= __b
? -1ll : 0ll;
16810 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16811 vcle_p8 (poly8x8_t __a
, poly8x8_t __b
)
16813 return (uint8x8_t
) __builtin_aarch64_cmgev8qi ((int8x8_t
) __b
,
16817 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16818 vcle_s8 (int8x8_t __a
, int8x8_t __b
)
16820 return (uint8x8_t
) __builtin_aarch64_cmgev8qi (__b
, __a
);
16823 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
16824 vcle_s16 (int16x4_t __a
, int16x4_t __b
)
16826 return (uint16x4_t
) __builtin_aarch64_cmgev4hi (__b
, __a
);
16829 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16830 vcle_s32 (int32x2_t __a
, int32x2_t __b
)
16832 return (uint32x2_t
) __builtin_aarch64_cmgev2si (__b
, __a
);
16835 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16836 vcle_s64 (int64x1_t __a
, int64x1_t __b
)
16838 return __a
<= __b
? -1ll : 0ll;
16841 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16842 vcle_u8 (uint8x8_t __a
, uint8x8_t __b
)
16844 return (uint8x8_t
) __builtin_aarch64_cmgeuv8qi ((int8x8_t
) __b
,
16848 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
16849 vcle_u16 (uint16x4_t __a
, uint16x4_t __b
)
16851 return (uint16x4_t
) __builtin_aarch64_cmgeuv4hi ((int16x4_t
) __b
,
16855 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16856 vcle_u32 (uint32x2_t __a
, uint32x2_t __b
)
16858 return (uint32x2_t
) __builtin_aarch64_cmgeuv2si ((int32x2_t
) __b
,
16862 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16863 vcle_u64 (uint64x1_t __a
, uint64x1_t __b
)
16865 return __a
<= __b
? -1ll : 0ll;
16868 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16869 vcleq_f32 (float32x4_t __a
, float32x4_t __b
)
16871 return (uint32x4_t
) __builtin_aarch64_cmgev4sf (__b
, __a
);
16874 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16875 vcleq_f64 (float64x2_t __a
, float64x2_t __b
)
16877 return (uint64x2_t
) __builtin_aarch64_cmgev2df (__b
, __a
);
16880 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16881 vcleq_p8 (poly8x16_t __a
, poly8x16_t __b
)
16883 return (uint8x16_t
) __builtin_aarch64_cmgev16qi ((int8x16_t
) __b
,
16887 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16888 vcleq_s8 (int8x16_t __a
, int8x16_t __b
)
16890 return (uint8x16_t
) __builtin_aarch64_cmgev16qi (__b
, __a
);
16893 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
16894 vcleq_s16 (int16x8_t __a
, int16x8_t __b
)
16896 return (uint16x8_t
) __builtin_aarch64_cmgev8hi (__b
, __a
);
16899 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16900 vcleq_s32 (int32x4_t __a
, int32x4_t __b
)
16902 return (uint32x4_t
) __builtin_aarch64_cmgev4si (__b
, __a
);
16905 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16906 vcleq_s64 (int64x2_t __a
, int64x2_t __b
)
16908 return (uint64x2_t
) __builtin_aarch64_cmgev2di (__b
, __a
);
16911 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
16912 vcleq_u8 (uint8x16_t __a
, uint8x16_t __b
)
16914 return (uint8x16_t
) __builtin_aarch64_cmgeuv16qi ((int8x16_t
) __b
,
16918 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
16919 vcleq_u16 (uint16x8_t __a
, uint16x8_t __b
)
16921 return (uint16x8_t
) __builtin_aarch64_cmgeuv8hi ((int16x8_t
) __b
,
16925 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
16926 vcleq_u32 (uint32x4_t __a
, uint32x4_t __b
)
16928 return (uint32x4_t
) __builtin_aarch64_cmgeuv4si ((int32x4_t
) __b
,
16932 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
16933 vcleq_u64 (uint64x2_t __a
, uint64x2_t __b
)
16935 return (uint64x2_t
) __builtin_aarch64_cmgeuv2di ((int64x2_t
) __b
,
16939 /* vcle - scalar. */
16941 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
16942 vcles_f32 (float32_t __a
, float32_t __b
)
16944 return __a
<= __b
? -1 : 0;
16947 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16948 vcled_s64 (int64x1_t __a
, int64x1_t __b
)
16950 return __a
<= __b
? -1ll : 0ll;
16953 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16954 vcled_u64 (uint64x1_t __a
, uint64x1_t __b
)
16956 return __a
<= __b
? -1ll : 0ll;
16959 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
16960 vcled_f64 (float64_t __a
, float64_t __b
)
16962 return __a
<= __b
? -1ll : 0ll;
16965 /* vclez - vector. */
16967 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
16968 vclez_f32 (float32x2_t __a
)
16970 float32x2_t __b
= {0.0f
, 0.0f
};
16971 return (uint32x2_t
) __builtin_aarch64_cmlev2sf (__a
, __b
);
16974 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
16975 vclez_f64 (float64x1_t __a
)
16977 return __a
<= 0.0 ? -1ll : 0ll;
16980 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16981 vclez_p8 (poly8x8_t __a
)
16983 poly8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
16984 return (uint8x8_t
) __builtin_aarch64_cmlev8qi ((int8x8_t
) __a
,
16988 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
16989 vclez_s8 (int8x8_t __a
)
16991 int8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
16992 return (uint8x8_t
) __builtin_aarch64_cmlev8qi (__a
, __b
);
16995 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
16996 vclez_s16 (int16x4_t __a
)
16998 int16x4_t __b
= {0, 0, 0, 0};
16999 return (uint16x4_t
) __builtin_aarch64_cmlev4hi (__a
, __b
);
17002 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17003 vclez_s32 (int32x2_t __a
)
17005 int32x2_t __b
= {0, 0};
17006 return (uint32x2_t
) __builtin_aarch64_cmlev2si (__a
, __b
);
17009 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17010 vclez_s64 (int64x1_t __a
)
17012 return __a
<= 0ll ? -1ll : 0ll;
17015 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17016 vclez_u64 (uint64x1_t __a
)
17018 return __a
<= 0ll ? -1ll : 0ll;
17021 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17022 vclezq_f32 (float32x4_t __a
)
17024 float32x4_t __b
= {0.0f
, 0.0f
, 0.0f
, 0.0f
};
17025 return (uint32x4_t
) __builtin_aarch64_cmlev4sf (__a
, __b
);
17028 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17029 vclezq_f64 (float64x2_t __a
)
17031 float64x2_t __b
= {0.0, 0.0};
17032 return (uint64x2_t
) __builtin_aarch64_cmlev2df (__a
, __b
);
17035 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17036 vclezq_p8 (poly8x16_t __a
)
17038 poly8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
17039 0, 0, 0, 0, 0, 0, 0, 0};
17040 return (uint8x16_t
) __builtin_aarch64_cmlev16qi ((int8x16_t
) __a
,
17044 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17045 vclezq_s8 (int8x16_t __a
)
17047 int8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
17048 0, 0, 0, 0, 0, 0, 0, 0};
17049 return (uint8x16_t
) __builtin_aarch64_cmlev16qi (__a
, __b
);
17052 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17053 vclezq_s16 (int16x8_t __a
)
17055 int16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17056 return (uint16x8_t
) __builtin_aarch64_cmlev8hi (__a
, __b
);
17059 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17060 vclezq_s32 (int32x4_t __a
)
17062 int32x4_t __b
= {0, 0, 0, 0};
17063 return (uint32x4_t
) __builtin_aarch64_cmlev4si (__a
, __b
);
17066 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17067 vclezq_s64 (int64x2_t __a
)
17069 int64x2_t __b
= {0, 0};
17070 return (uint64x2_t
) __builtin_aarch64_cmlev2di (__a
, __b
);
17073 /* vclez - scalar. */
17075 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
17076 vclezs_f32 (float32_t __a
)
17078 return __a
<= 0.0f
? -1 : 0;
17081 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17082 vclezd_s64 (int64x1_t __a
)
17084 return __a
<= 0 ? -1ll : 0ll;
17087 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17088 vclezd_u64 (int64x1_t __a
)
17090 return __a
<= 0 ? -1ll : 0ll;
17093 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
17094 vclezd_f64 (float64_t __a
)
17096 return __a
<= 0.0 ? -1ll : 0ll;
17099 /* vclt - vector. */
17101 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17102 vclt_f32 (float32x2_t __a
, float32x2_t __b
)
17104 return (uint32x2_t
) __builtin_aarch64_cmgtv2sf (__b
, __a
);
17107 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17108 vclt_f64 (float64x1_t __a
, float64x1_t __b
)
17110 return __a
< __b
? -1ll : 0ll;
17113 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17114 vclt_p8 (poly8x8_t __a
, poly8x8_t __b
)
17116 return (uint8x8_t
) __builtin_aarch64_cmgtv8qi ((int8x8_t
) __b
,
17120 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17121 vclt_s8 (int8x8_t __a
, int8x8_t __b
)
17123 return (uint8x8_t
) __builtin_aarch64_cmgtv8qi (__b
, __a
);
17126 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17127 vclt_s16 (int16x4_t __a
, int16x4_t __b
)
17129 return (uint16x4_t
) __builtin_aarch64_cmgtv4hi (__b
, __a
);
17132 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17133 vclt_s32 (int32x2_t __a
, int32x2_t __b
)
17135 return (uint32x2_t
) __builtin_aarch64_cmgtv2si (__b
, __a
);
17138 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17139 vclt_s64 (int64x1_t __a
, int64x1_t __b
)
17141 return __a
< __b
? -1ll : 0ll;
17144 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17145 vclt_u8 (uint8x8_t __a
, uint8x8_t __b
)
17147 return (uint8x8_t
) __builtin_aarch64_cmgtuv8qi ((int8x8_t
) __b
,
17151 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17152 vclt_u16 (uint16x4_t __a
, uint16x4_t __b
)
17154 return (uint16x4_t
) __builtin_aarch64_cmgtuv4hi ((int16x4_t
) __b
,
17158 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17159 vclt_u32 (uint32x2_t __a
, uint32x2_t __b
)
17161 return (uint32x2_t
) __builtin_aarch64_cmgtuv2si ((int32x2_t
) __b
,
17165 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17166 vclt_u64 (uint64x1_t __a
, uint64x1_t __b
)
17168 return __a
< __b
? -1ll : 0ll;
17171 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17172 vcltq_f32 (float32x4_t __a
, float32x4_t __b
)
17174 return (uint32x4_t
) __builtin_aarch64_cmgtv4sf (__b
, __a
);
17177 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17178 vcltq_f64 (float64x2_t __a
, float64x2_t __b
)
17180 return (uint64x2_t
) __builtin_aarch64_cmgtv2df (__b
, __a
);
17183 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17184 vcltq_p8 (poly8x16_t __a
, poly8x16_t __b
)
17186 return (uint8x16_t
) __builtin_aarch64_cmgtv16qi ((int8x16_t
) __b
,
17190 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17191 vcltq_s8 (int8x16_t __a
, int8x16_t __b
)
17193 return (uint8x16_t
) __builtin_aarch64_cmgtv16qi (__b
, __a
);
17196 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17197 vcltq_s16 (int16x8_t __a
, int16x8_t __b
)
17199 return (uint16x8_t
) __builtin_aarch64_cmgtv8hi (__b
, __a
);
17202 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17203 vcltq_s32 (int32x4_t __a
, int32x4_t __b
)
17205 return (uint32x4_t
) __builtin_aarch64_cmgtv4si (__b
, __a
);
17208 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17209 vcltq_s64 (int64x2_t __a
, int64x2_t __b
)
17211 return (uint64x2_t
) __builtin_aarch64_cmgtv2di (__b
, __a
);
17214 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17215 vcltq_u8 (uint8x16_t __a
, uint8x16_t __b
)
17217 return (uint8x16_t
) __builtin_aarch64_cmgtuv16qi ((int8x16_t
) __b
,
17221 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17222 vcltq_u16 (uint16x8_t __a
, uint16x8_t __b
)
17224 return (uint16x8_t
) __builtin_aarch64_cmgtuv8hi ((int16x8_t
) __b
,
17228 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17229 vcltq_u32 (uint32x4_t __a
, uint32x4_t __b
)
17231 return (uint32x4_t
) __builtin_aarch64_cmgtuv4si ((int32x4_t
) __b
,
17235 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17236 vcltq_u64 (uint64x2_t __a
, uint64x2_t __b
)
17238 return (uint64x2_t
) __builtin_aarch64_cmgtuv2di ((int64x2_t
) __b
,
17242 /* vclt - scalar. */
17244 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
17245 vclts_f32 (float32_t __a
, float32_t __b
)
17247 return __a
< __b
? -1 : 0;
17250 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17251 vcltd_s64 (int64x1_t __a
, int64x1_t __b
)
17253 return __a
< __b
? -1ll : 0ll;
17256 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17257 vcltd_u64 (uint64x1_t __a
, uint64x1_t __b
)
17259 return __a
< __b
? -1ll : 0ll;
17262 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
17263 vcltd_f64 (float64_t __a
, float64_t __b
)
17265 return __a
< __b
? -1ll : 0ll;
17268 /* vcltz - vector. */
17270 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17271 vcltz_f32 (float32x2_t __a
)
17273 float32x2_t __b
= {0.0f
, 0.0f
};
17274 return (uint32x2_t
) __builtin_aarch64_cmltv2sf (__a
, __b
);
17277 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17278 vcltz_f64 (float64x1_t __a
)
17280 return __a
< 0.0 ? -1ll : 0ll;
17283 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17284 vcltz_p8 (poly8x8_t __a
)
17286 poly8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17287 return (uint8x8_t
) __builtin_aarch64_cmltv8qi ((int8x8_t
) __a
,
17291 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17292 vcltz_s8 (int8x8_t __a
)
17294 int8x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17295 return (uint8x8_t
) __builtin_aarch64_cmltv8qi (__a
, __b
);
17298 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17299 vcltz_s16 (int16x4_t __a
)
17301 int16x4_t __b
= {0, 0, 0, 0};
17302 return (uint16x4_t
) __builtin_aarch64_cmltv4hi (__a
, __b
);
17305 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17306 vcltz_s32 (int32x2_t __a
)
17308 int32x2_t __b
= {0, 0};
17309 return (uint32x2_t
) __builtin_aarch64_cmltv2si (__a
, __b
);
17312 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17313 vcltz_s64 (int64x1_t __a
)
17315 return __a
< 0ll ? -1ll : 0ll;
17318 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17319 vcltzq_f32 (float32x4_t __a
)
17321 float32x4_t __b
= {0.0f
, 0.0f
, 0.0f
, 0.0f
};
17322 return (uint32x4_t
) __builtin_aarch64_cmltv4sf (__a
, __b
);
17325 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17326 vcltzq_f64 (float64x2_t __a
)
17328 float64x2_t __b
= {0.0, 0.0};
17329 return (uint64x2_t
) __builtin_aarch64_cmltv2df (__a
, __b
);
17332 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17333 vcltzq_p8 (poly8x16_t __a
)
17335 poly8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
17336 0, 0, 0, 0, 0, 0, 0, 0};
17337 return (uint8x16_t
) __builtin_aarch64_cmltv16qi ((int8x16_t
) __a
,
17341 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17342 vcltzq_s8 (int8x16_t __a
)
17344 int8x16_t __b
= {0, 0, 0, 0, 0, 0, 0, 0,
17345 0, 0, 0, 0, 0, 0, 0, 0};
17346 return (uint8x16_t
) __builtin_aarch64_cmltv16qi (__a
, __b
);
17349 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17350 vcltzq_s16 (int16x8_t __a
)
17352 int16x8_t __b
= {0, 0, 0, 0, 0, 0, 0, 0};
17353 return (uint16x8_t
) __builtin_aarch64_cmltv8hi (__a
, __b
);
17356 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17357 vcltzq_s32 (int32x4_t __a
)
17359 int32x4_t __b
= {0, 0, 0, 0};
17360 return (uint32x4_t
) __builtin_aarch64_cmltv4si (__a
, __b
);
17363 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17364 vcltzq_s64 (int64x2_t __a
)
17366 int64x2_t __b
= {0, 0};
17367 return (uint64x2_t
) __builtin_aarch64_cmltv2di (__a
, __b
);
17370 /* vcltz - scalar. */
17372 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
17373 vcltzs_f32 (float32_t __a
)
17375 return __a
< 0.0f
? -1 : 0;
17378 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17379 vcltzd_s64 (int64x1_t __a
)
17381 return __a
< 0 ? -1ll : 0ll;
17384 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17385 vcltzd_u64 (int64x1_t __a
)
17387 return __a
< 0 ? -1ll : 0ll;
17390 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
17391 vcltzd_f64 (float64_t __a
)
17393 return __a
< 0.0 ? -1ll : 0ll;
17398 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
17399 vclz_s8 (int8x8_t __a
)
17401 return __builtin_aarch64_clzv8qi (__a
);
17404 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
17405 vclz_s16 (int16x4_t __a
)
17407 return __builtin_aarch64_clzv4hi (__a
);
17410 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
17411 vclz_s32 (int32x2_t __a
)
17413 return __builtin_aarch64_clzv2si (__a
);
17416 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17417 vclz_u8 (uint8x8_t __a
)
17419 return (uint8x8_t
)__builtin_aarch64_clzv8qi ((int8x8_t
)__a
);
17422 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17423 vclz_u16 (uint16x4_t __a
)
17425 return (uint16x4_t
)__builtin_aarch64_clzv4hi ((int16x4_t
)__a
);
17428 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17429 vclz_u32 (uint32x2_t __a
)
17431 return (uint32x2_t
)__builtin_aarch64_clzv2si ((int32x2_t
)__a
);
17434 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
17435 vclzq_s8 (int8x16_t __a
)
17437 return __builtin_aarch64_clzv16qi (__a
);
17440 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
17441 vclzq_s16 (int16x8_t __a
)
17443 return __builtin_aarch64_clzv8hi (__a
);
17446 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
17447 vclzq_s32 (int32x4_t __a
)
17449 return __builtin_aarch64_clzv4si (__a
);
17452 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
17453 vclzq_u8 (uint8x16_t __a
)
17455 return (uint8x16_t
)__builtin_aarch64_clzv16qi ((int8x16_t
)__a
);
17458 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
17459 vclzq_u16 (uint16x8_t __a
)
17461 return (uint16x8_t
)__builtin_aarch64_clzv8hi ((int16x8_t
)__a
);
17464 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17465 vclzq_u32 (uint32x4_t __a
)
17467 return (uint32x4_t
)__builtin_aarch64_clzv4si ((int32x4_t
)__a
);
17470 /* vcvt (double -> float). */
17472 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
17473 vcvt_f32_f64 (float64x2_t __a
)
17475 return __builtin_aarch64_float_truncate_lo_v2sf (__a
);
17478 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
17479 vcvt_high_f32_f64 (float32x2_t __a
, float64x2_t __b
)
17481 return __builtin_aarch64_float_truncate_hi_v4sf (__a
, __b
);
17484 /* vcvt (float -> double). */
17486 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
17487 vcvt_f64_f32 (float32x2_t __a
)
17490 return __builtin_aarch64_float_extend_lo_v2df (__a
);
17493 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
17494 vcvt_high_f64_f32 (float32x4_t __a
)
17496 return __builtin_aarch64_vec_unpacks_hi_v4sf (__a
);
17499 /* vcvt (<u>int -> float) */
17501 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
17502 vcvtd_f64_s64 (int64_t __a
)
17504 return (float64_t
) __a
;
17507 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
17508 vcvtd_f64_u64 (uint64_t __a
)
17510 return (float64_t
) __a
;
17513 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
17514 vcvts_f32_s32 (int32_t __a
)
17516 return (float32_t
) __a
;
17519 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
17520 vcvts_f32_u32 (uint32_t __a
)
17522 return (float32_t
) __a
;
17525 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
17526 vcvt_f32_s32 (int32x2_t __a
)
17528 return __builtin_aarch64_floatv2siv2sf (__a
);
17531 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
17532 vcvt_f32_u32 (uint32x2_t __a
)
17534 return __builtin_aarch64_floatunsv2siv2sf ((int32x2_t
) __a
);
17537 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
17538 vcvtq_f32_s32 (int32x4_t __a
)
17540 return __builtin_aarch64_floatv4siv4sf (__a
);
17543 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
17544 vcvtq_f32_u32 (uint32x4_t __a
)
17546 return __builtin_aarch64_floatunsv4siv4sf ((int32x4_t
) __a
);
17549 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
17550 vcvtq_f64_s64 (int64x2_t __a
)
17552 return __builtin_aarch64_floatv2div2df (__a
);
17555 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
17556 vcvtq_f64_u64 (uint64x2_t __a
)
17558 return __builtin_aarch64_floatunsv2div2df ((int64x2_t
) __a
);
17561 /* vcvt (float -> <u>int) */
17563 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
17564 vcvtd_s64_f64 (float64_t __a
)
17566 return (int64_t) __a
;
17569 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
17570 vcvtd_u64_f64 (float64_t __a
)
17572 return (uint64_t) __a
;
17575 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
17576 vcvts_s32_f32 (float32_t __a
)
17578 return (int32_t) __a
;
17581 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
17582 vcvts_u32_f32 (float32_t __a
)
17584 return (uint32_t) __a
;
17587 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
17588 vcvt_s32_f32 (float32x2_t __a
)
17590 return __builtin_aarch64_lbtruncv2sfv2si (__a
);
17593 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17594 vcvt_u32_f32 (float32x2_t __a
)
17596 /* TODO: This cast should go away when builtins have
17597 their correct types. */
17598 return (uint32x2_t
) __builtin_aarch64_lbtruncuv2sfv2si (__a
);
17601 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
17602 vcvtq_s32_f32 (float32x4_t __a
)
17604 return __builtin_aarch64_lbtruncv4sfv4si (__a
);
17607 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17608 vcvtq_u32_f32 (float32x4_t __a
)
17610 /* TODO: This cast should go away when builtins have
17611 their correct types. */
17612 return (uint32x4_t
) __builtin_aarch64_lbtruncuv4sfv4si (__a
);
17615 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
17616 vcvtq_s64_f64 (float64x2_t __a
)
17618 return __builtin_aarch64_lbtruncv2dfv2di (__a
);
17621 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17622 vcvtq_u64_f64 (float64x2_t __a
)
17624 /* TODO: This cast should go away when builtins have
17625 their correct types. */
17626 return (uint64x2_t
) __builtin_aarch64_lbtruncuv2dfv2di (__a
);
17631 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
17632 vcvtad_s64_f64 (float64_t __a
)
17634 return __builtin_aarch64_lrounddfdi (__a
);
17637 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
17638 vcvtad_u64_f64 (float64_t __a
)
17640 return __builtin_aarch64_lroundudfdi (__a
);
17643 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
17644 vcvtas_s32_f32 (float32_t __a
)
17646 return __builtin_aarch64_lroundsfsi (__a
);
17649 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
17650 vcvtas_u32_f32 (float32_t __a
)
17652 return __builtin_aarch64_lroundusfsi (__a
);
17655 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
17656 vcvta_s32_f32 (float32x2_t __a
)
17658 return __builtin_aarch64_lroundv2sfv2si (__a
);
17661 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17662 vcvta_u32_f32 (float32x2_t __a
)
17664 /* TODO: This cast should go away when builtins have
17665 their correct types. */
17666 return (uint32x2_t
) __builtin_aarch64_lrounduv2sfv2si (__a
);
17669 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
17670 vcvtaq_s32_f32 (float32x4_t __a
)
17672 return __builtin_aarch64_lroundv4sfv4si (__a
);
17675 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17676 vcvtaq_u32_f32 (float32x4_t __a
)
17678 /* TODO: This cast should go away when builtins have
17679 their correct types. */
17680 return (uint32x4_t
) __builtin_aarch64_lrounduv4sfv4si (__a
);
17683 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
17684 vcvtaq_s64_f64 (float64x2_t __a
)
17686 return __builtin_aarch64_lroundv2dfv2di (__a
);
17689 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17690 vcvtaq_u64_f64 (float64x2_t __a
)
17692 /* TODO: This cast should go away when builtins have
17693 their correct types. */
17694 return (uint64x2_t
) __builtin_aarch64_lrounduv2dfv2di (__a
);
17699 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
17700 vcvtmd_s64_f64 (float64_t __a
)
17702 return __builtin_lfloor (__a
);
17705 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
17706 vcvtmd_u64_f64 (float64_t __a
)
17708 return __builtin_aarch64_lfloorudfdi (__a
);
17711 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
17712 vcvtms_s32_f32 (float32_t __a
)
17714 return __builtin_ifloorf (__a
);
17717 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
17718 vcvtms_u32_f32 (float32_t __a
)
17720 return __builtin_aarch64_lfloorusfsi (__a
);
17723 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
17724 vcvtm_s32_f32 (float32x2_t __a
)
17726 return __builtin_aarch64_lfloorv2sfv2si (__a
);
17729 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17730 vcvtm_u32_f32 (float32x2_t __a
)
17732 /* TODO: This cast should go away when builtins have
17733 their correct types. */
17734 return (uint32x2_t
) __builtin_aarch64_lflooruv2sfv2si (__a
);
17737 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
17738 vcvtmq_s32_f32 (float32x4_t __a
)
17740 return __builtin_aarch64_lfloorv4sfv4si (__a
);
17743 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17744 vcvtmq_u32_f32 (float32x4_t __a
)
17746 /* TODO: This cast should go away when builtins have
17747 their correct types. */
17748 return (uint32x4_t
) __builtin_aarch64_lflooruv4sfv4si (__a
);
17751 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
17752 vcvtmq_s64_f64 (float64x2_t __a
)
17754 return __builtin_aarch64_lfloorv2dfv2di (__a
);
17757 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17758 vcvtmq_u64_f64 (float64x2_t __a
)
17760 /* TODO: This cast should go away when builtins have
17761 their correct types. */
17762 return (uint64x2_t
) __builtin_aarch64_lflooruv2dfv2di (__a
);
17767 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
17768 vcvtnd_s64_f64 (float64_t __a
)
17770 return __builtin_aarch64_lfrintndfdi (__a
);
17773 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
17774 vcvtnd_u64_f64 (float64_t __a
)
17776 return __builtin_aarch64_lfrintnudfdi (__a
);
17779 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
17780 vcvtns_s32_f32 (float32_t __a
)
17782 return __builtin_aarch64_lfrintnsfsi (__a
);
17785 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
17786 vcvtns_u32_f32 (float32_t __a
)
17788 return __builtin_aarch64_lfrintnusfsi (__a
);
17791 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
17792 vcvtn_s32_f32 (float32x2_t __a
)
17794 return __builtin_aarch64_lfrintnv2sfv2si (__a
);
17797 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17798 vcvtn_u32_f32 (float32x2_t __a
)
17800 /* TODO: This cast should go away when builtins have
17801 their correct types. */
17802 return (uint32x2_t
) __builtin_aarch64_lfrintnuv2sfv2si (__a
);
17805 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
17806 vcvtnq_s32_f32 (float32x4_t __a
)
17808 return __builtin_aarch64_lfrintnv4sfv4si (__a
);
17811 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17812 vcvtnq_u32_f32 (float32x4_t __a
)
17814 /* TODO: This cast should go away when builtins have
17815 their correct types. */
17816 return (uint32x4_t
) __builtin_aarch64_lfrintnuv4sfv4si (__a
);
17819 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
17820 vcvtnq_s64_f64 (float64x2_t __a
)
17822 return __builtin_aarch64_lfrintnv2dfv2di (__a
);
17825 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17826 vcvtnq_u64_f64 (float64x2_t __a
)
17828 /* TODO: This cast should go away when builtins have
17829 their correct types. */
17830 return (uint64x2_t
) __builtin_aarch64_lfrintnuv2dfv2di (__a
);
17835 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
17836 vcvtpd_s64_f64 (float64_t __a
)
17838 return __builtin_lceil (__a
);
17841 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
17842 vcvtpd_u64_f64 (float64_t __a
)
17844 return __builtin_aarch64_lceiludfdi (__a
);
17847 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
17848 vcvtps_s32_f32 (float32_t __a
)
17850 return __builtin_iceilf (__a
);
17853 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
17854 vcvtps_u32_f32 (float32_t __a
)
17856 return __builtin_aarch64_lceilusfsi (__a
);
17859 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
17860 vcvtp_s32_f32 (float32x2_t __a
)
17862 return __builtin_aarch64_lceilv2sfv2si (__a
);
17865 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17866 vcvtp_u32_f32 (float32x2_t __a
)
17868 /* TODO: This cast should go away when builtins have
17869 their correct types. */
17870 return (uint32x2_t
) __builtin_aarch64_lceiluv2sfv2si (__a
);
17873 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
17874 vcvtpq_s32_f32 (float32x4_t __a
)
17876 return __builtin_aarch64_lceilv4sfv4si (__a
);
17879 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
17880 vcvtpq_u32_f32 (float32x4_t __a
)
17882 /* TODO: This cast should go away when builtins have
17883 their correct types. */
17884 return (uint32x4_t
) __builtin_aarch64_lceiluv4sfv4si (__a
);
17887 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
17888 vcvtpq_s64_f64 (float64x2_t __a
)
17890 return __builtin_aarch64_lceilv2dfv2di (__a
);
17893 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
17894 vcvtpq_u64_f64 (float64x2_t __a
)
17896 /* TODO: This cast should go away when builtins have
17897 their correct types. */
17898 return (uint64x2_t
) __builtin_aarch64_lceiluv2dfv2di (__a
);
17903 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
17904 vdup_n_f32 (float32_t __a
)
17906 return (float32x2_t
) {__a
, __a
};
17909 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
17910 vdup_n_f64 (float64_t __a
)
17915 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
17916 vdup_n_p8 (poly8_t __a
)
17918 return (poly8x8_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
17921 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
17922 vdup_n_p16 (poly16_t __a
)
17924 return (poly16x4_t
) {__a
, __a
, __a
, __a
};
17927 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
17928 vdup_n_s8 (int8_t __a
)
17930 return (int8x8_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
17933 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
17934 vdup_n_s16 (int16_t __a
)
17936 return (int16x4_t
) {__a
, __a
, __a
, __a
};
17939 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
17940 vdup_n_s32 (int32_t __a
)
17942 return (int32x2_t
) {__a
, __a
};
17945 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
17946 vdup_n_s64 (int64_t __a
)
17951 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
17952 vdup_n_u8 (uint8_t __a
)
17954 return (uint8x8_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
17957 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
17958 vdup_n_u16 (uint16_t __a
)
17960 return (uint16x4_t
) {__a
, __a
, __a
, __a
};
17963 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
17964 vdup_n_u32 (uint32_t __a
)
17966 return (uint32x2_t
) {__a
, __a
};
17969 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
17970 vdup_n_u64 (uint64_t __a
)
17977 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
17978 vdupq_n_f32 (float32_t __a
)
17980 return (float32x4_t
) {__a
, __a
, __a
, __a
};
17983 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
17984 vdupq_n_f64 (float64_t __a
)
17986 return (float64x2_t
) {__a
, __a
};
17989 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
17990 vdupq_n_p8 (uint32_t __a
)
17992 return (poly8x16_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
,
17993 __a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
17996 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
17997 vdupq_n_p16 (uint32_t __a
)
17999 return (poly16x8_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
18002 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
18003 vdupq_n_s8 (int32_t __a
)
18005 return (int8x16_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
,
18006 __a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
18009 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
18010 vdupq_n_s16 (int32_t __a
)
18012 return (int16x8_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
18015 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
18016 vdupq_n_s32 (int32_t __a
)
18018 return (int32x4_t
) {__a
, __a
, __a
, __a
};
18021 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
18022 vdupq_n_s64 (int64_t __a
)
18024 return (int64x2_t
) {__a
, __a
};
18027 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
18028 vdupq_n_u8 (uint32_t __a
)
18030 return (uint8x16_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
,
18031 __a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
18034 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
18035 vdupq_n_u16 (uint32_t __a
)
18037 return (uint16x8_t
) {__a
, __a
, __a
, __a
, __a
, __a
, __a
, __a
};
18040 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18041 vdupq_n_u32 (uint32_t __a
)
18043 return (uint32x4_t
) {__a
, __a
, __a
, __a
};
18046 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18047 vdupq_n_u64 (uint64_t __a
)
18049 return (uint64x2_t
) {__a
, __a
};
18054 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
18055 vdup_lane_f32 (float32x2_t __a
, const int __b
)
18057 return __aarch64_vdup_lane_f32 (__a
, __b
);
18060 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
18061 vdup_lane_f64 (float64x1_t __a
, const int __b
)
18063 return __aarch64_vdup_lane_f64 (__a
, __b
);
18066 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
18067 vdup_lane_p8 (poly8x8_t __a
, const int __b
)
18069 return __aarch64_vdup_lane_p8 (__a
, __b
);
18072 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
18073 vdup_lane_p16 (poly16x4_t __a
, const int __b
)
18075 return __aarch64_vdup_lane_p16 (__a
, __b
);
18078 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
18079 vdup_lane_s8 (int8x8_t __a
, const int __b
)
18081 return __aarch64_vdup_lane_s8 (__a
, __b
);
18084 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
18085 vdup_lane_s16 (int16x4_t __a
, const int __b
)
18087 return __aarch64_vdup_lane_s16 (__a
, __b
);
18090 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
18091 vdup_lane_s32 (int32x2_t __a
, const int __b
)
18093 return __aarch64_vdup_lane_s32 (__a
, __b
);
18096 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
18097 vdup_lane_s64 (int64x1_t __a
, const int __b
)
18099 return __aarch64_vdup_lane_s64 (__a
, __b
);
18102 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
18103 vdup_lane_u8 (uint8x8_t __a
, const int __b
)
18105 return __aarch64_vdup_lane_u8 (__a
, __b
);
18108 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
18109 vdup_lane_u16 (uint16x4_t __a
, const int __b
)
18111 return __aarch64_vdup_lane_u16 (__a
, __b
);
18114 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18115 vdup_lane_u32 (uint32x2_t __a
, const int __b
)
18117 return __aarch64_vdup_lane_u32 (__a
, __b
);
18120 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18121 vdup_lane_u64 (uint64x1_t __a
, const int __b
)
18123 return __aarch64_vdup_lane_u64 (__a
, __b
);
18128 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
18129 vdup_laneq_f32 (float32x4_t __a
, const int __b
)
18131 return __aarch64_vdup_laneq_f32 (__a
, __b
);
18134 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
18135 vdup_laneq_f64 (float64x2_t __a
, const int __b
)
18137 return __aarch64_vdup_laneq_f64 (__a
, __b
);
18140 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
18141 vdup_laneq_p8 (poly8x16_t __a
, const int __b
)
18143 return __aarch64_vdup_laneq_p8 (__a
, __b
);
18146 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
18147 vdup_laneq_p16 (poly16x8_t __a
, const int __b
)
18149 return __aarch64_vdup_laneq_p16 (__a
, __b
);
18152 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
18153 vdup_laneq_s8 (int8x16_t __a
, const int __b
)
18155 return __aarch64_vdup_laneq_s8 (__a
, __b
);
18158 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
18159 vdup_laneq_s16 (int16x8_t __a
, const int __b
)
18161 return __aarch64_vdup_laneq_s16 (__a
, __b
);
18164 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
18165 vdup_laneq_s32 (int32x4_t __a
, const int __b
)
18167 return __aarch64_vdup_laneq_s32 (__a
, __b
);
18170 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
18171 vdup_laneq_s64 (int64x2_t __a
, const int __b
)
18173 return __aarch64_vdup_laneq_s64 (__a
, __b
);
18176 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
18177 vdup_laneq_u8 (uint8x16_t __a
, const int __b
)
18179 return __aarch64_vdup_laneq_u8 (__a
, __b
);
18182 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
18183 vdup_laneq_u16 (uint16x8_t __a
, const int __b
)
18185 return __aarch64_vdup_laneq_u16 (__a
, __b
);
18188 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18189 vdup_laneq_u32 (uint32x4_t __a
, const int __b
)
18191 return __aarch64_vdup_laneq_u32 (__a
, __b
);
18194 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18195 vdup_laneq_u64 (uint64x2_t __a
, const int __b
)
18197 return __aarch64_vdup_laneq_u64 (__a
, __b
);
18201 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
18202 vdupq_lane_f32 (float32x2_t __a
, const int __b
)
18204 return __aarch64_vdupq_lane_f32 (__a
, __b
);
18207 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
18208 vdupq_lane_f64 (float64x1_t __a
, const int __b
)
18210 return __aarch64_vdupq_lane_f64 (__a
, __b
);
18213 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
18214 vdupq_lane_p8 (poly8x8_t __a
, const int __b
)
18216 return __aarch64_vdupq_lane_p8 (__a
, __b
);
18219 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
18220 vdupq_lane_p16 (poly16x4_t __a
, const int __b
)
18222 return __aarch64_vdupq_lane_p16 (__a
, __b
);
18225 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
18226 vdupq_lane_s8 (int8x8_t __a
, const int __b
)
18228 return __aarch64_vdupq_lane_s8 (__a
, __b
);
18231 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
18232 vdupq_lane_s16 (int16x4_t __a
, const int __b
)
18234 return __aarch64_vdupq_lane_s16 (__a
, __b
);
18237 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
18238 vdupq_lane_s32 (int32x2_t __a
, const int __b
)
18240 return __aarch64_vdupq_lane_s32 (__a
, __b
);
18243 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
18244 vdupq_lane_s64 (int64x1_t __a
, const int __b
)
18246 return __aarch64_vdupq_lane_s64 (__a
, __b
);
18249 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
18250 vdupq_lane_u8 (uint8x8_t __a
, const int __b
)
18252 return __aarch64_vdupq_lane_u8 (__a
, __b
);
18255 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
18256 vdupq_lane_u16 (uint16x4_t __a
, const int __b
)
18258 return __aarch64_vdupq_lane_u16 (__a
, __b
);
18261 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18262 vdupq_lane_u32 (uint32x2_t __a
, const int __b
)
18264 return __aarch64_vdupq_lane_u32 (__a
, __b
);
18267 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18268 vdupq_lane_u64 (uint64x1_t __a
, const int __b
)
18270 return __aarch64_vdupq_lane_u64 (__a
, __b
);
18274 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
18275 vdupq_laneq_f32 (float32x4_t __a
, const int __b
)
18277 return __aarch64_vdupq_laneq_f32 (__a
, __b
);
18280 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
18281 vdupq_laneq_f64 (float64x2_t __a
, const int __b
)
18283 return __aarch64_vdupq_laneq_f64 (__a
, __b
);
18286 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
18287 vdupq_laneq_p8 (poly8x16_t __a
, const int __b
)
18289 return __aarch64_vdupq_laneq_p8 (__a
, __b
);
18292 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
18293 vdupq_laneq_p16 (poly16x8_t __a
, const int __b
)
18295 return __aarch64_vdupq_laneq_p16 (__a
, __b
);
18298 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
18299 vdupq_laneq_s8 (int8x16_t __a
, const int __b
)
18301 return __aarch64_vdupq_laneq_s8 (__a
, __b
);
18304 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
18305 vdupq_laneq_s16 (int16x8_t __a
, const int __b
)
18307 return __aarch64_vdupq_laneq_s16 (__a
, __b
);
18310 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
18311 vdupq_laneq_s32 (int32x4_t __a
, const int __b
)
18313 return __aarch64_vdupq_laneq_s32 (__a
, __b
);
18316 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
18317 vdupq_laneq_s64 (int64x2_t __a
, const int __b
)
18319 return __aarch64_vdupq_laneq_s64 (__a
, __b
);
18322 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
18323 vdupq_laneq_u8 (uint8x16_t __a
, const int __b
)
18325 return __aarch64_vdupq_laneq_u8 (__a
, __b
);
18328 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
18329 vdupq_laneq_u16 (uint16x8_t __a
, const int __b
)
18331 return __aarch64_vdupq_laneq_u16 (__a
, __b
);
18334 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18335 vdupq_laneq_u32 (uint32x4_t __a
, const int __b
)
18337 return __aarch64_vdupq_laneq_u32 (__a
, __b
);
18340 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18341 vdupq_laneq_u64 (uint64x2_t __a
, const int __b
)
18343 return __aarch64_vdupq_laneq_u64 (__a
, __b
);
18347 __extension__
static __inline poly8_t
__attribute__ ((__always_inline__
))
18348 vdupb_lane_p8 (poly8x8_t __a
, const int __b
)
18350 return __aarch64_vget_lane_p8 (__a
, __b
);
18353 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
18354 vdupb_lane_s8 (int8x8_t __a
, const int __b
)
18356 return __aarch64_vget_lane_s8 (__a
, __b
);
18359 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
18360 vdupb_lane_u8 (uint8x8_t __a
, const int __b
)
18362 return __aarch64_vget_lane_u8 (__a
, __b
);
18366 __extension__
static __inline poly16_t
__attribute__ ((__always_inline__
))
18367 vduph_lane_p16 (poly16x4_t __a
, const int __b
)
18369 return __aarch64_vget_lane_p16 (__a
, __b
);
18372 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
18373 vduph_lane_s16 (int16x4_t __a
, const int __b
)
18375 return __aarch64_vget_lane_s16 (__a
, __b
);
18378 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
18379 vduph_lane_u16 (uint16x4_t __a
, const int __b
)
18381 return __aarch64_vget_lane_u16 (__a
, __b
);
18385 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
18386 vdups_lane_f32 (float32x2_t __a
, const int __b
)
18388 return __aarch64_vget_lane_f32 (__a
, __b
);
18391 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
18392 vdups_lane_s32 (int32x2_t __a
, const int __b
)
18394 return __aarch64_vget_lane_s32 (__a
, __b
);
18397 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
18398 vdups_lane_u32 (uint32x2_t __a
, const int __b
)
18400 return __aarch64_vget_lane_u32 (__a
, __b
);
18404 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
18405 vdupd_lane_f64 (float64x1_t __a
, const int __attribute__ ((unused
)) __b
)
18410 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
18411 vdupd_lane_s64 (int64x1_t __a
, const int __attribute__ ((unused
)) __b
)
18416 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
18417 vdupd_lane_u64 (uint64x1_t __a
, const int __attribute__ ((unused
)) __b
)
18423 __extension__
static __inline poly8_t
__attribute__ ((__always_inline__
))
18424 vdupb_laneq_p8 (poly8x16_t __a
, const int __b
)
18426 return __aarch64_vgetq_lane_p8 (__a
, __b
);
18429 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
18430 vdupb_laneq_s8 (int8x16_t __a
, const int __attribute__ ((unused
)) __b
)
18432 return __aarch64_vgetq_lane_s8 (__a
, __b
);
18435 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
18436 vdupb_laneq_u8 (uint8x16_t __a
, const int __b
)
18438 return __aarch64_vgetq_lane_u8 (__a
, __b
);
18442 __extension__
static __inline poly16_t
__attribute__ ((__always_inline__
))
18443 vduph_laneq_p16 (poly16x8_t __a
, const int __b
)
18445 return __aarch64_vgetq_lane_p16 (__a
, __b
);
18448 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
18449 vduph_laneq_s16 (int16x8_t __a
, const int __b
)
18451 return __aarch64_vgetq_lane_s16 (__a
, __b
);
18454 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
18455 vduph_laneq_u16 (uint16x8_t __a
, const int __b
)
18457 return __aarch64_vgetq_lane_u16 (__a
, __b
);
18461 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
18462 vdups_laneq_f32 (float32x4_t __a
, const int __b
)
18464 return __aarch64_vgetq_lane_f32 (__a
, __b
);
18467 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
18468 vdups_laneq_s32 (int32x4_t __a
, const int __b
)
18470 return __aarch64_vgetq_lane_s32 (__a
, __b
);
18473 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
18474 vdups_laneq_u32 (uint32x4_t __a
, const int __b
)
18476 return __aarch64_vgetq_lane_u32 (__a
, __b
);
18480 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
18481 vdupd_laneq_f64 (float64x2_t __a
, const int __b
)
18483 return __aarch64_vgetq_lane_f64 (__a
, __b
);
18486 __extension__
static __inline
int64_t __attribute__ ((__always_inline__
))
18487 vdupd_laneq_s64 (int64x2_t __a
, const int __b
)
18489 return __aarch64_vgetq_lane_s64 (__a
, __b
);
18492 __extension__
static __inline
uint64_t __attribute__ ((__always_inline__
))
18493 vdupd_laneq_u64 (uint64x2_t __a
, const int __b
)
18495 return __aarch64_vgetq_lane_u64 (__a
, __b
);
18500 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
18501 vfma_lane_f32 (float32x2_t __a
, float32x2_t __b
,
18502 float32x2_t __c
, const int __lane
)
18504 return __builtin_aarch64_fmav2sf (__b
,
18505 __aarch64_vdup_lane_f32 (__c
, __lane
),
18509 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
18510 vfma_lane_f64 (float64_t __a
, float64_t __b
,
18511 float64_t __c
, const int __lane
)
18513 return __builtin_fma (__b
, __c
, __a
);
18516 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
18517 vfmad_lane_f64 (float64_t __a
, float64_t __b
,
18518 float64_t __c
, const int __lane
)
18520 return __builtin_fma (__b
, __c
, __a
);
18523 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
18524 vfmas_lane_f32 (float32_t __a
, float32_t __b
,
18525 float32x2_t __c
, const int __lane
)
18527 return __builtin_fmaf (__b
, __aarch64_vget_lane_f32 (__c
, __lane
), __a
);
18532 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
18533 vfma_laneq_f32 (float32x2_t __a
, float32x2_t __b
,
18534 float32x4_t __c
, const int __lane
)
18536 return __builtin_aarch64_fmav2sf (__b
,
18537 __aarch64_vdup_laneq_f32 (__c
, __lane
),
18541 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
18542 vfma_laneq_f64 (float64_t __a
, float64_t __b
,
18543 float64x2_t __c
, const int __lane
)
18545 return __builtin_fma (__b
, __aarch64_vgetq_lane_f64 (__c
, __lane
), __a
);
18548 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
18549 vfmad_laneq_f64 (float64_t __a
, float64_t __b
,
18550 float64x2_t __c
, const int __lane
)
18552 return __builtin_fma (__b
, __aarch64_vgetq_lane_f64 (__c
, __lane
), __a
);
18555 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
18556 vfmas_laneq_f32 (float32_t __a
, float32_t __b
,
18557 float32x4_t __c
, const int __lane
)
18559 return __builtin_fmaf (__b
, __aarch64_vgetq_lane_f32 (__c
, __lane
), __a
);
18564 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
18565 vfmaq_lane_f32 (float32x4_t __a
, float32x4_t __b
,
18566 float32x2_t __c
, const int __lane
)
18568 return __builtin_aarch64_fmav4sf (__b
,
18569 __aarch64_vdupq_lane_f32 (__c
, __lane
),
18573 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
18574 vfmaq_lane_f64 (float64x2_t __a
, float64x2_t __b
,
18575 float64_t __c
, const int __lane
)
18577 return __builtin_aarch64_fmav2df (__b
, vdupq_n_f64 (__c
), __a
);
18582 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
18583 vfmaq_laneq_f32 (float32x4_t __a
, float32x4_t __b
,
18584 float32x4_t __c
, const int __lane
)
18586 return __builtin_aarch64_fmav4sf (__b
,
18587 __aarch64_vdupq_laneq_f32 (__c
, __lane
),
18591 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
18592 vfmaq_laneq_f64 (float64x2_t __a
, float64x2_t __b
,
18593 float64x2_t __c
, const int __lane
)
18595 return __builtin_aarch64_fmav2df (__b
,
18596 __aarch64_vdupq_laneq_f64 (__c
, __lane
),
18602 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
18603 vfms_lane_f32 (float32x2_t __a
, float32x2_t __b
,
18604 float32x2_t __c
, const int __lane
)
18606 return __builtin_aarch64_fmav2sf (-__b
,
18607 __aarch64_vdup_lane_f32 (__c
, __lane
),
18611 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
18612 vfms_lane_f64 (float64_t __a
, float64_t __b
,
18613 float64_t __c
, const int __lane
)
18615 return __builtin_fma (-__b
, __c
, __a
);
18618 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
18619 vfmsd_lane_f64 (float64_t __a
, float64_t __b
,
18620 float64_t __c
, const int __lane
)
18622 return __builtin_fma (-__b
, __c
, __a
);
18625 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
18626 vfmss_lane_f32 (float32_t __a
, float32_t __b
,
18627 float32x2_t __c
, const int __lane
)
18629 return __builtin_fmaf (-__b
, __aarch64_vget_lane_f32 (__c
, __lane
), __a
);
18634 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
18635 vfms_laneq_f32 (float32x2_t __a
, float32x2_t __b
,
18636 float32x4_t __c
, const int __lane
)
18638 return __builtin_aarch64_fmav2sf (-__b
,
18639 __aarch64_vdup_laneq_f32 (__c
, __lane
),
18643 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
18644 vfms_laneq_f64 (float64_t __a
, float64_t __b
,
18645 float64x2_t __c
, const int __lane
)
18647 return __builtin_fma (-__b
, __aarch64_vgetq_lane_f64 (__c
, __lane
), __a
);
18650 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
18651 vfmsd_laneq_f64 (float64_t __a
, float64_t __b
,
18652 float64x2_t __c
, const int __lane
)
18654 return __builtin_fma (-__b
, __aarch64_vgetq_lane_f64 (__c
, __lane
), __a
);
18657 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
18658 vfmss_laneq_f32 (float32_t __a
, float32_t __b
,
18659 float32x4_t __c
, const int __lane
)
18661 return __builtin_fmaf (-__b
, __aarch64_vgetq_lane_f32 (__c
, __lane
), __a
);
18666 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
18667 vfmsq_lane_f32 (float32x4_t __a
, float32x4_t __b
,
18668 float32x2_t __c
, const int __lane
)
18670 return __builtin_aarch64_fmav4sf (-__b
,
18671 __aarch64_vdupq_lane_f32 (__c
, __lane
),
18675 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
18676 vfmsq_lane_f64 (float64x2_t __a
, float64x2_t __b
,
18677 float64_t __c
, const int __lane
)
18679 return __builtin_aarch64_fmav2df (-__b
, vdupq_n_f64 (__c
), __a
);
18684 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
18685 vfmsq_laneq_f32 (float32x4_t __a
, float32x4_t __b
,
18686 float32x4_t __c
, const int __lane
)
18688 return __builtin_aarch64_fmav4sf (-__b
,
18689 __aarch64_vdupq_laneq_f32 (__c
, __lane
),
18693 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
18694 vfmsq_laneq_f64 (float64x2_t __a
, float64x2_t __b
,
18695 float64x2_t __c
, const int __lane
)
18697 return __builtin_aarch64_fmav2df (-__b
,
18698 __aarch64_vdupq_laneq_f64 (__c
, __lane
),
18704 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
18705 vld1_f32 (const float32_t
*a
)
18707 return __builtin_aarch64_ld1v2sf ((const __builtin_aarch64_simd_sf
*) a
);
18710 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
18711 vld1_f64 (const float64_t
*a
)
18716 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
18717 vld1_p8 (const poly8_t
*a
)
18720 __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi
*) a
);
18723 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
18724 vld1_p16 (const poly16_t
*a
)
18726 return (poly16x4_t
)
18727 __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi
*) a
);
18730 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
18731 vld1_s8 (const int8_t *a
)
18733 return __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi
*) a
);
18736 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
18737 vld1_s16 (const int16_t *a
)
18739 return __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi
*) a
);
18742 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
18743 vld1_s32 (const int32_t *a
)
18745 return __builtin_aarch64_ld1v2si ((const __builtin_aarch64_simd_si
*) a
);
18748 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
18749 vld1_s64 (const int64_t *a
)
18754 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
18755 vld1_u8 (const uint8_t *a
)
18758 __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi
*) a
);
18761 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
18762 vld1_u16 (const uint16_t *a
)
18764 return (uint16x4_t
)
18765 __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi
*) a
);
18768 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
18769 vld1_u32 (const uint32_t *a
)
18771 return (uint32x2_t
)
18772 __builtin_aarch64_ld1v2si ((const __builtin_aarch64_simd_si
*) a
);
18775 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
18776 vld1_u64 (const uint64_t *a
)
18783 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
18784 vld1q_f32 (const float32_t
*a
)
18786 return __builtin_aarch64_ld1v4sf ((const __builtin_aarch64_simd_sf
*) a
);
18789 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
18790 vld1q_f64 (const float64_t
*a
)
18792 return __builtin_aarch64_ld1v2df ((const __builtin_aarch64_simd_df
*) a
);
18795 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
18796 vld1q_p8 (const poly8_t
*a
)
18798 return (poly8x16_t
)
18799 __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi
*) a
);
18802 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
18803 vld1q_p16 (const poly16_t
*a
)
18805 return (poly16x8_t
)
18806 __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi
*) a
);
18809 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
18810 vld1q_s8 (const int8_t *a
)
18812 return __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi
*) a
);
18815 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
18816 vld1q_s16 (const int16_t *a
)
18818 return __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi
*) a
);
18821 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
18822 vld1q_s32 (const int32_t *a
)
18824 return __builtin_aarch64_ld1v4si ((const __builtin_aarch64_simd_si
*) a
);
18827 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
18828 vld1q_s64 (const int64_t *a
)
18830 return __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di
*) a
);
18833 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
18834 vld1q_u8 (const uint8_t *a
)
18836 return (uint8x16_t
)
18837 __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi
*) a
);
18840 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
18841 vld1q_u16 (const uint16_t *a
)
18843 return (uint16x8_t
)
18844 __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi
*) a
);
18847 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
18848 vld1q_u32 (const uint32_t *a
)
18850 return (uint32x4_t
)
18851 __builtin_aarch64_ld1v4si ((const __builtin_aarch64_simd_si
*) a
);
18854 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
18855 vld1q_u64 (const uint64_t *a
)
18857 return (uint64x2_t
)
18858 __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di
*) a
);
18863 __extension__
static __inline int64x1x2_t
__attribute__ ((__always_inline__
))
18864 vld2_s64 (const int64_t * __a
)
18867 __builtin_aarch64_simd_oi __o
;
18868 __o
= __builtin_aarch64_ld2di ((const __builtin_aarch64_simd_di
*) __a
);
18869 ret
.val
[0] = (int64x1_t
) __builtin_aarch64_get_dregoidi (__o
, 0);
18870 ret
.val
[1] = (int64x1_t
) __builtin_aarch64_get_dregoidi (__o
, 1);
18874 __extension__
static __inline uint64x1x2_t
__attribute__ ((__always_inline__
))
18875 vld2_u64 (const uint64_t * __a
)
18878 __builtin_aarch64_simd_oi __o
;
18879 __o
= __builtin_aarch64_ld2di ((const __builtin_aarch64_simd_di
*) __a
);
18880 ret
.val
[0] = (uint64x1_t
) __builtin_aarch64_get_dregoidi (__o
, 0);
18881 ret
.val
[1] = (uint64x1_t
) __builtin_aarch64_get_dregoidi (__o
, 1);
18885 __extension__
static __inline float64x1x2_t
__attribute__ ((__always_inline__
))
18886 vld2_f64 (const float64_t
* __a
)
18889 __builtin_aarch64_simd_oi __o
;
18890 __o
= __builtin_aarch64_ld2df ((const __builtin_aarch64_simd_df
*) __a
);
18891 ret
.val
[0] = (float64x1_t
) __builtin_aarch64_get_dregoidf (__o
, 0);
18892 ret
.val
[1] = (float64x1_t
) __builtin_aarch64_get_dregoidf (__o
, 1);
18896 __extension__
static __inline int8x8x2_t
__attribute__ ((__always_inline__
))
18897 vld2_s8 (const int8_t * __a
)
18900 __builtin_aarch64_simd_oi __o
;
18901 __o
= __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
18902 ret
.val
[0] = (int8x8_t
) __builtin_aarch64_get_dregoiv8qi (__o
, 0);
18903 ret
.val
[1] = (int8x8_t
) __builtin_aarch64_get_dregoiv8qi (__o
, 1);
18907 __extension__
static __inline poly8x8x2_t
__attribute__ ((__always_inline__
))
18908 vld2_p8 (const poly8_t
* __a
)
18911 __builtin_aarch64_simd_oi __o
;
18912 __o
= __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
18913 ret
.val
[0] = (poly8x8_t
) __builtin_aarch64_get_dregoiv8qi (__o
, 0);
18914 ret
.val
[1] = (poly8x8_t
) __builtin_aarch64_get_dregoiv8qi (__o
, 1);
18918 __extension__
static __inline int16x4x2_t
__attribute__ ((__always_inline__
))
18919 vld2_s16 (const int16_t * __a
)
18922 __builtin_aarch64_simd_oi __o
;
18923 __o
= __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
18924 ret
.val
[0] = (int16x4_t
) __builtin_aarch64_get_dregoiv4hi (__o
, 0);
18925 ret
.val
[1] = (int16x4_t
) __builtin_aarch64_get_dregoiv4hi (__o
, 1);
18929 __extension__
static __inline poly16x4x2_t
__attribute__ ((__always_inline__
))
18930 vld2_p16 (const poly16_t
* __a
)
18933 __builtin_aarch64_simd_oi __o
;
18934 __o
= __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
18935 ret
.val
[0] = (poly16x4_t
) __builtin_aarch64_get_dregoiv4hi (__o
, 0);
18936 ret
.val
[1] = (poly16x4_t
) __builtin_aarch64_get_dregoiv4hi (__o
, 1);
18940 __extension__
static __inline int32x2x2_t
__attribute__ ((__always_inline__
))
18941 vld2_s32 (const int32_t * __a
)
18944 __builtin_aarch64_simd_oi __o
;
18945 __o
= __builtin_aarch64_ld2v2si ((const __builtin_aarch64_simd_si
*) __a
);
18946 ret
.val
[0] = (int32x2_t
) __builtin_aarch64_get_dregoiv2si (__o
, 0);
18947 ret
.val
[1] = (int32x2_t
) __builtin_aarch64_get_dregoiv2si (__o
, 1);
18951 __extension__
static __inline uint8x8x2_t
__attribute__ ((__always_inline__
))
18952 vld2_u8 (const uint8_t * __a
)
18955 __builtin_aarch64_simd_oi __o
;
18956 __o
= __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
18957 ret
.val
[0] = (uint8x8_t
) __builtin_aarch64_get_dregoiv8qi (__o
, 0);
18958 ret
.val
[1] = (uint8x8_t
) __builtin_aarch64_get_dregoiv8qi (__o
, 1);
18962 __extension__
static __inline uint16x4x2_t
__attribute__ ((__always_inline__
))
18963 vld2_u16 (const uint16_t * __a
)
18966 __builtin_aarch64_simd_oi __o
;
18967 __o
= __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
18968 ret
.val
[0] = (uint16x4_t
) __builtin_aarch64_get_dregoiv4hi (__o
, 0);
18969 ret
.val
[1] = (uint16x4_t
) __builtin_aarch64_get_dregoiv4hi (__o
, 1);
18973 __extension__
static __inline uint32x2x2_t
__attribute__ ((__always_inline__
))
18974 vld2_u32 (const uint32_t * __a
)
18977 __builtin_aarch64_simd_oi __o
;
18978 __o
= __builtin_aarch64_ld2v2si ((const __builtin_aarch64_simd_si
*) __a
);
18979 ret
.val
[0] = (uint32x2_t
) __builtin_aarch64_get_dregoiv2si (__o
, 0);
18980 ret
.val
[1] = (uint32x2_t
) __builtin_aarch64_get_dregoiv2si (__o
, 1);
18984 __extension__
static __inline float32x2x2_t
__attribute__ ((__always_inline__
))
18985 vld2_f32 (const float32_t
* __a
)
18988 __builtin_aarch64_simd_oi __o
;
18989 __o
= __builtin_aarch64_ld2v2sf ((const __builtin_aarch64_simd_sf
*) __a
);
18990 ret
.val
[0] = (float32x2_t
) __builtin_aarch64_get_dregoiv2sf (__o
, 0);
18991 ret
.val
[1] = (float32x2_t
) __builtin_aarch64_get_dregoiv2sf (__o
, 1);
18995 __extension__
static __inline int8x16x2_t
__attribute__ ((__always_inline__
))
18996 vld2q_s8 (const int8_t * __a
)
18999 __builtin_aarch64_simd_oi __o
;
19000 __o
= __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
19001 ret
.val
[0] = (int8x16_t
) __builtin_aarch64_get_qregoiv16qi (__o
, 0);
19002 ret
.val
[1] = (int8x16_t
) __builtin_aarch64_get_qregoiv16qi (__o
, 1);
19006 __extension__
static __inline poly8x16x2_t
__attribute__ ((__always_inline__
))
19007 vld2q_p8 (const poly8_t
* __a
)
19010 __builtin_aarch64_simd_oi __o
;
19011 __o
= __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
19012 ret
.val
[0] = (poly8x16_t
) __builtin_aarch64_get_qregoiv16qi (__o
, 0);
19013 ret
.val
[1] = (poly8x16_t
) __builtin_aarch64_get_qregoiv16qi (__o
, 1);
19017 __extension__
static __inline int16x8x2_t
__attribute__ ((__always_inline__
))
19018 vld2q_s16 (const int16_t * __a
)
19021 __builtin_aarch64_simd_oi __o
;
19022 __o
= __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
19023 ret
.val
[0] = (int16x8_t
) __builtin_aarch64_get_qregoiv8hi (__o
, 0);
19024 ret
.val
[1] = (int16x8_t
) __builtin_aarch64_get_qregoiv8hi (__o
, 1);
19028 __extension__
static __inline poly16x8x2_t
__attribute__ ((__always_inline__
))
19029 vld2q_p16 (const poly16_t
* __a
)
19032 __builtin_aarch64_simd_oi __o
;
19033 __o
= __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
19034 ret
.val
[0] = (poly16x8_t
) __builtin_aarch64_get_qregoiv8hi (__o
, 0);
19035 ret
.val
[1] = (poly16x8_t
) __builtin_aarch64_get_qregoiv8hi (__o
, 1);
19039 __extension__
static __inline int32x4x2_t
__attribute__ ((__always_inline__
))
19040 vld2q_s32 (const int32_t * __a
)
19043 __builtin_aarch64_simd_oi __o
;
19044 __o
= __builtin_aarch64_ld2v4si ((const __builtin_aarch64_simd_si
*) __a
);
19045 ret
.val
[0] = (int32x4_t
) __builtin_aarch64_get_qregoiv4si (__o
, 0);
19046 ret
.val
[1] = (int32x4_t
) __builtin_aarch64_get_qregoiv4si (__o
, 1);
19050 __extension__
static __inline int64x2x2_t
__attribute__ ((__always_inline__
))
19051 vld2q_s64 (const int64_t * __a
)
19054 __builtin_aarch64_simd_oi __o
;
19055 __o
= __builtin_aarch64_ld2v2di ((const __builtin_aarch64_simd_di
*) __a
);
19056 ret
.val
[0] = (int64x2_t
) __builtin_aarch64_get_qregoiv2di (__o
, 0);
19057 ret
.val
[1] = (int64x2_t
) __builtin_aarch64_get_qregoiv2di (__o
, 1);
19061 __extension__
static __inline uint8x16x2_t
__attribute__ ((__always_inline__
))
19062 vld2q_u8 (const uint8_t * __a
)
19065 __builtin_aarch64_simd_oi __o
;
19066 __o
= __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
19067 ret
.val
[0] = (uint8x16_t
) __builtin_aarch64_get_qregoiv16qi (__o
, 0);
19068 ret
.val
[1] = (uint8x16_t
) __builtin_aarch64_get_qregoiv16qi (__o
, 1);
19072 __extension__
static __inline uint16x8x2_t
__attribute__ ((__always_inline__
))
19073 vld2q_u16 (const uint16_t * __a
)
19076 __builtin_aarch64_simd_oi __o
;
19077 __o
= __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
19078 ret
.val
[0] = (uint16x8_t
) __builtin_aarch64_get_qregoiv8hi (__o
, 0);
19079 ret
.val
[1] = (uint16x8_t
) __builtin_aarch64_get_qregoiv8hi (__o
, 1);
19083 __extension__
static __inline uint32x4x2_t
__attribute__ ((__always_inline__
))
19084 vld2q_u32 (const uint32_t * __a
)
19087 __builtin_aarch64_simd_oi __o
;
19088 __o
= __builtin_aarch64_ld2v4si ((const __builtin_aarch64_simd_si
*) __a
);
19089 ret
.val
[0] = (uint32x4_t
) __builtin_aarch64_get_qregoiv4si (__o
, 0);
19090 ret
.val
[1] = (uint32x4_t
) __builtin_aarch64_get_qregoiv4si (__o
, 1);
19094 __extension__
static __inline uint64x2x2_t
__attribute__ ((__always_inline__
))
19095 vld2q_u64 (const uint64_t * __a
)
19098 __builtin_aarch64_simd_oi __o
;
19099 __o
= __builtin_aarch64_ld2v2di ((const __builtin_aarch64_simd_di
*) __a
);
19100 ret
.val
[0] = (uint64x2_t
) __builtin_aarch64_get_qregoiv2di (__o
, 0);
19101 ret
.val
[1] = (uint64x2_t
) __builtin_aarch64_get_qregoiv2di (__o
, 1);
19105 __extension__
static __inline float32x4x2_t
__attribute__ ((__always_inline__
))
19106 vld2q_f32 (const float32_t
* __a
)
19109 __builtin_aarch64_simd_oi __o
;
19110 __o
= __builtin_aarch64_ld2v4sf ((const __builtin_aarch64_simd_sf
*) __a
);
19111 ret
.val
[0] = (float32x4_t
) __builtin_aarch64_get_qregoiv4sf (__o
, 0);
19112 ret
.val
[1] = (float32x4_t
) __builtin_aarch64_get_qregoiv4sf (__o
, 1);
19116 __extension__
static __inline float64x2x2_t
__attribute__ ((__always_inline__
))
19117 vld2q_f64 (const float64_t
* __a
)
19120 __builtin_aarch64_simd_oi __o
;
19121 __o
= __builtin_aarch64_ld2v2df ((const __builtin_aarch64_simd_df
*) __a
);
19122 ret
.val
[0] = (float64x2_t
) __builtin_aarch64_get_qregoiv2df (__o
, 0);
19123 ret
.val
[1] = (float64x2_t
) __builtin_aarch64_get_qregoiv2df (__o
, 1);
19127 __extension__
static __inline int64x1x3_t
__attribute__ ((__always_inline__
))
19128 vld3_s64 (const int64_t * __a
)
19131 __builtin_aarch64_simd_ci __o
;
19132 __o
= __builtin_aarch64_ld3di ((const __builtin_aarch64_simd_di
*) __a
);
19133 ret
.val
[0] = (int64x1_t
) __builtin_aarch64_get_dregcidi (__o
, 0);
19134 ret
.val
[1] = (int64x1_t
) __builtin_aarch64_get_dregcidi (__o
, 1);
19135 ret
.val
[2] = (int64x1_t
) __builtin_aarch64_get_dregcidi (__o
, 2);
19139 __extension__
static __inline uint64x1x3_t
__attribute__ ((__always_inline__
))
19140 vld3_u64 (const uint64_t * __a
)
19143 __builtin_aarch64_simd_ci __o
;
19144 __o
= __builtin_aarch64_ld3di ((const __builtin_aarch64_simd_di
*) __a
);
19145 ret
.val
[0] = (uint64x1_t
) __builtin_aarch64_get_dregcidi (__o
, 0);
19146 ret
.val
[1] = (uint64x1_t
) __builtin_aarch64_get_dregcidi (__o
, 1);
19147 ret
.val
[2] = (uint64x1_t
) __builtin_aarch64_get_dregcidi (__o
, 2);
19151 __extension__
static __inline float64x1x3_t
__attribute__ ((__always_inline__
))
19152 vld3_f64 (const float64_t
* __a
)
19155 __builtin_aarch64_simd_ci __o
;
19156 __o
= __builtin_aarch64_ld3df ((const __builtin_aarch64_simd_df
*) __a
);
19157 ret
.val
[0] = (float64x1_t
) __builtin_aarch64_get_dregcidf (__o
, 0);
19158 ret
.val
[1] = (float64x1_t
) __builtin_aarch64_get_dregcidf (__o
, 1);
19159 ret
.val
[2] = (float64x1_t
) __builtin_aarch64_get_dregcidf (__o
, 2);
19163 __extension__
static __inline int8x8x3_t
__attribute__ ((__always_inline__
))
19164 vld3_s8 (const int8_t * __a
)
19167 __builtin_aarch64_simd_ci __o
;
19168 __o
= __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
19169 ret
.val
[0] = (int8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 0);
19170 ret
.val
[1] = (int8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 1);
19171 ret
.val
[2] = (int8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 2);
19175 __extension__
static __inline poly8x8x3_t
__attribute__ ((__always_inline__
))
19176 vld3_p8 (const poly8_t
* __a
)
19179 __builtin_aarch64_simd_ci __o
;
19180 __o
= __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
19181 ret
.val
[0] = (poly8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 0);
19182 ret
.val
[1] = (poly8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 1);
19183 ret
.val
[2] = (poly8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 2);
19187 __extension__
static __inline int16x4x3_t
__attribute__ ((__always_inline__
))
19188 vld3_s16 (const int16_t * __a
)
19191 __builtin_aarch64_simd_ci __o
;
19192 __o
= __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
19193 ret
.val
[0] = (int16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 0);
19194 ret
.val
[1] = (int16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 1);
19195 ret
.val
[2] = (int16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 2);
19199 __extension__
static __inline poly16x4x3_t
__attribute__ ((__always_inline__
))
19200 vld3_p16 (const poly16_t
* __a
)
19203 __builtin_aarch64_simd_ci __o
;
19204 __o
= __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
19205 ret
.val
[0] = (poly16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 0);
19206 ret
.val
[1] = (poly16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 1);
19207 ret
.val
[2] = (poly16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 2);
19211 __extension__
static __inline int32x2x3_t
__attribute__ ((__always_inline__
))
19212 vld3_s32 (const int32_t * __a
)
19215 __builtin_aarch64_simd_ci __o
;
19216 __o
= __builtin_aarch64_ld3v2si ((const __builtin_aarch64_simd_si
*) __a
);
19217 ret
.val
[0] = (int32x2_t
) __builtin_aarch64_get_dregciv2si (__o
, 0);
19218 ret
.val
[1] = (int32x2_t
) __builtin_aarch64_get_dregciv2si (__o
, 1);
19219 ret
.val
[2] = (int32x2_t
) __builtin_aarch64_get_dregciv2si (__o
, 2);
19223 __extension__
static __inline uint8x8x3_t
__attribute__ ((__always_inline__
))
19224 vld3_u8 (const uint8_t * __a
)
19227 __builtin_aarch64_simd_ci __o
;
19228 __o
= __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
19229 ret
.val
[0] = (uint8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 0);
19230 ret
.val
[1] = (uint8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 1);
19231 ret
.val
[2] = (uint8x8_t
) __builtin_aarch64_get_dregciv8qi (__o
, 2);
19235 __extension__
static __inline uint16x4x3_t
__attribute__ ((__always_inline__
))
19236 vld3_u16 (const uint16_t * __a
)
19239 __builtin_aarch64_simd_ci __o
;
19240 __o
= __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
19241 ret
.val
[0] = (uint16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 0);
19242 ret
.val
[1] = (uint16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 1);
19243 ret
.val
[2] = (uint16x4_t
) __builtin_aarch64_get_dregciv4hi (__o
, 2);
19247 __extension__
static __inline uint32x2x3_t
__attribute__ ((__always_inline__
))
19248 vld3_u32 (const uint32_t * __a
)
19251 __builtin_aarch64_simd_ci __o
;
19252 __o
= __builtin_aarch64_ld3v2si ((const __builtin_aarch64_simd_si
*) __a
);
19253 ret
.val
[0] = (uint32x2_t
) __builtin_aarch64_get_dregciv2si (__o
, 0);
19254 ret
.val
[1] = (uint32x2_t
) __builtin_aarch64_get_dregciv2si (__o
, 1);
19255 ret
.val
[2] = (uint32x2_t
) __builtin_aarch64_get_dregciv2si (__o
, 2);
19259 __extension__
static __inline float32x2x3_t
__attribute__ ((__always_inline__
))
19260 vld3_f32 (const float32_t
* __a
)
19263 __builtin_aarch64_simd_ci __o
;
19264 __o
= __builtin_aarch64_ld3v2sf ((const __builtin_aarch64_simd_sf
*) __a
);
19265 ret
.val
[0] = (float32x2_t
) __builtin_aarch64_get_dregciv2sf (__o
, 0);
19266 ret
.val
[1] = (float32x2_t
) __builtin_aarch64_get_dregciv2sf (__o
, 1);
19267 ret
.val
[2] = (float32x2_t
) __builtin_aarch64_get_dregciv2sf (__o
, 2);
19271 __extension__
static __inline int8x16x3_t
__attribute__ ((__always_inline__
))
19272 vld3q_s8 (const int8_t * __a
)
19275 __builtin_aarch64_simd_ci __o
;
19276 __o
= __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
19277 ret
.val
[0] = (int8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 0);
19278 ret
.val
[1] = (int8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 1);
19279 ret
.val
[2] = (int8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 2);
19283 __extension__
static __inline poly8x16x3_t
__attribute__ ((__always_inline__
))
19284 vld3q_p8 (const poly8_t
* __a
)
19287 __builtin_aarch64_simd_ci __o
;
19288 __o
= __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
19289 ret
.val
[0] = (poly8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 0);
19290 ret
.val
[1] = (poly8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 1);
19291 ret
.val
[2] = (poly8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 2);
19295 __extension__
static __inline int16x8x3_t
__attribute__ ((__always_inline__
))
19296 vld3q_s16 (const int16_t * __a
)
19299 __builtin_aarch64_simd_ci __o
;
19300 __o
= __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
19301 ret
.val
[0] = (int16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 0);
19302 ret
.val
[1] = (int16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 1);
19303 ret
.val
[2] = (int16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 2);
19307 __extension__
static __inline poly16x8x3_t
__attribute__ ((__always_inline__
))
19308 vld3q_p16 (const poly16_t
* __a
)
19311 __builtin_aarch64_simd_ci __o
;
19312 __o
= __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
19313 ret
.val
[0] = (poly16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 0);
19314 ret
.val
[1] = (poly16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 1);
19315 ret
.val
[2] = (poly16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 2);
19319 __extension__
static __inline int32x4x3_t
__attribute__ ((__always_inline__
))
19320 vld3q_s32 (const int32_t * __a
)
19323 __builtin_aarch64_simd_ci __o
;
19324 __o
= __builtin_aarch64_ld3v4si ((const __builtin_aarch64_simd_si
*) __a
);
19325 ret
.val
[0] = (int32x4_t
) __builtin_aarch64_get_qregciv4si (__o
, 0);
19326 ret
.val
[1] = (int32x4_t
) __builtin_aarch64_get_qregciv4si (__o
, 1);
19327 ret
.val
[2] = (int32x4_t
) __builtin_aarch64_get_qregciv4si (__o
, 2);
19331 __extension__
static __inline int64x2x3_t
__attribute__ ((__always_inline__
))
19332 vld3q_s64 (const int64_t * __a
)
19335 __builtin_aarch64_simd_ci __o
;
19336 __o
= __builtin_aarch64_ld3v2di ((const __builtin_aarch64_simd_di
*) __a
);
19337 ret
.val
[0] = (int64x2_t
) __builtin_aarch64_get_qregciv2di (__o
, 0);
19338 ret
.val
[1] = (int64x2_t
) __builtin_aarch64_get_qregciv2di (__o
, 1);
19339 ret
.val
[2] = (int64x2_t
) __builtin_aarch64_get_qregciv2di (__o
, 2);
19343 __extension__
static __inline uint8x16x3_t
__attribute__ ((__always_inline__
))
19344 vld3q_u8 (const uint8_t * __a
)
19347 __builtin_aarch64_simd_ci __o
;
19348 __o
= __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
19349 ret
.val
[0] = (uint8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 0);
19350 ret
.val
[1] = (uint8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 1);
19351 ret
.val
[2] = (uint8x16_t
) __builtin_aarch64_get_qregciv16qi (__o
, 2);
19355 __extension__
static __inline uint16x8x3_t
__attribute__ ((__always_inline__
))
19356 vld3q_u16 (const uint16_t * __a
)
19359 __builtin_aarch64_simd_ci __o
;
19360 __o
= __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
19361 ret
.val
[0] = (uint16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 0);
19362 ret
.val
[1] = (uint16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 1);
19363 ret
.val
[2] = (uint16x8_t
) __builtin_aarch64_get_qregciv8hi (__o
, 2);
19367 __extension__
static __inline uint32x4x3_t
__attribute__ ((__always_inline__
))
19368 vld3q_u32 (const uint32_t * __a
)
19371 __builtin_aarch64_simd_ci __o
;
19372 __o
= __builtin_aarch64_ld3v4si ((const __builtin_aarch64_simd_si
*) __a
);
19373 ret
.val
[0] = (uint32x4_t
) __builtin_aarch64_get_qregciv4si (__o
, 0);
19374 ret
.val
[1] = (uint32x4_t
) __builtin_aarch64_get_qregciv4si (__o
, 1);
19375 ret
.val
[2] = (uint32x4_t
) __builtin_aarch64_get_qregciv4si (__o
, 2);
19379 __extension__
static __inline uint64x2x3_t
__attribute__ ((__always_inline__
))
19380 vld3q_u64 (const uint64_t * __a
)
19383 __builtin_aarch64_simd_ci __o
;
19384 __o
= __builtin_aarch64_ld3v2di ((const __builtin_aarch64_simd_di
*) __a
);
19385 ret
.val
[0] = (uint64x2_t
) __builtin_aarch64_get_qregciv2di (__o
, 0);
19386 ret
.val
[1] = (uint64x2_t
) __builtin_aarch64_get_qregciv2di (__o
, 1);
19387 ret
.val
[2] = (uint64x2_t
) __builtin_aarch64_get_qregciv2di (__o
, 2);
19391 __extension__
static __inline float32x4x3_t
__attribute__ ((__always_inline__
))
19392 vld3q_f32 (const float32_t
* __a
)
19395 __builtin_aarch64_simd_ci __o
;
19396 __o
= __builtin_aarch64_ld3v4sf ((const __builtin_aarch64_simd_sf
*) __a
);
19397 ret
.val
[0] = (float32x4_t
) __builtin_aarch64_get_qregciv4sf (__o
, 0);
19398 ret
.val
[1] = (float32x4_t
) __builtin_aarch64_get_qregciv4sf (__o
, 1);
19399 ret
.val
[2] = (float32x4_t
) __builtin_aarch64_get_qregciv4sf (__o
, 2);
19403 __extension__
static __inline float64x2x3_t
__attribute__ ((__always_inline__
))
19404 vld3q_f64 (const float64_t
* __a
)
19407 __builtin_aarch64_simd_ci __o
;
19408 __o
= __builtin_aarch64_ld3v2df ((const __builtin_aarch64_simd_df
*) __a
);
19409 ret
.val
[0] = (float64x2_t
) __builtin_aarch64_get_qregciv2df (__o
, 0);
19410 ret
.val
[1] = (float64x2_t
) __builtin_aarch64_get_qregciv2df (__o
, 1);
19411 ret
.val
[2] = (float64x2_t
) __builtin_aarch64_get_qregciv2df (__o
, 2);
19415 __extension__
static __inline int64x1x4_t
__attribute__ ((__always_inline__
))
19416 vld4_s64 (const int64_t * __a
)
19419 __builtin_aarch64_simd_xi __o
;
19420 __o
= __builtin_aarch64_ld4di ((const __builtin_aarch64_simd_di
*) __a
);
19421 ret
.val
[0] = (int64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 0);
19422 ret
.val
[1] = (int64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 1);
19423 ret
.val
[2] = (int64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 2);
19424 ret
.val
[3] = (int64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 3);
19428 __extension__
static __inline uint64x1x4_t
__attribute__ ((__always_inline__
))
19429 vld4_u64 (const uint64_t * __a
)
19432 __builtin_aarch64_simd_xi __o
;
19433 __o
= __builtin_aarch64_ld4di ((const __builtin_aarch64_simd_di
*) __a
);
19434 ret
.val
[0] = (uint64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 0);
19435 ret
.val
[1] = (uint64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 1);
19436 ret
.val
[2] = (uint64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 2);
19437 ret
.val
[3] = (uint64x1_t
) __builtin_aarch64_get_dregxidi (__o
, 3);
19441 __extension__
static __inline float64x1x4_t
__attribute__ ((__always_inline__
))
19442 vld4_f64 (const float64_t
* __a
)
19445 __builtin_aarch64_simd_xi __o
;
19446 __o
= __builtin_aarch64_ld4df ((const __builtin_aarch64_simd_df
*) __a
);
19447 ret
.val
[0] = (float64x1_t
) __builtin_aarch64_get_dregxidf (__o
, 0);
19448 ret
.val
[1] = (float64x1_t
) __builtin_aarch64_get_dregxidf (__o
, 1);
19449 ret
.val
[2] = (float64x1_t
) __builtin_aarch64_get_dregxidf (__o
, 2);
19450 ret
.val
[3] = (float64x1_t
) __builtin_aarch64_get_dregxidf (__o
, 3);
19454 __extension__
static __inline int8x8x4_t
__attribute__ ((__always_inline__
))
19455 vld4_s8 (const int8_t * __a
)
19458 __builtin_aarch64_simd_xi __o
;
19459 __o
= __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
19460 ret
.val
[0] = (int8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 0);
19461 ret
.val
[1] = (int8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 1);
19462 ret
.val
[2] = (int8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 2);
19463 ret
.val
[3] = (int8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 3);
19467 __extension__
static __inline poly8x8x4_t
__attribute__ ((__always_inline__
))
19468 vld4_p8 (const poly8_t
* __a
)
19471 __builtin_aarch64_simd_xi __o
;
19472 __o
= __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
19473 ret
.val
[0] = (poly8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 0);
19474 ret
.val
[1] = (poly8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 1);
19475 ret
.val
[2] = (poly8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 2);
19476 ret
.val
[3] = (poly8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 3);
19480 __extension__
static __inline int16x4x4_t
__attribute__ ((__always_inline__
))
19481 vld4_s16 (const int16_t * __a
)
19484 __builtin_aarch64_simd_xi __o
;
19485 __o
= __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
19486 ret
.val
[0] = (int16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 0);
19487 ret
.val
[1] = (int16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 1);
19488 ret
.val
[2] = (int16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 2);
19489 ret
.val
[3] = (int16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 3);
19493 __extension__
static __inline poly16x4x4_t
__attribute__ ((__always_inline__
))
19494 vld4_p16 (const poly16_t
* __a
)
19497 __builtin_aarch64_simd_xi __o
;
19498 __o
= __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
19499 ret
.val
[0] = (poly16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 0);
19500 ret
.val
[1] = (poly16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 1);
19501 ret
.val
[2] = (poly16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 2);
19502 ret
.val
[3] = (poly16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 3);
19506 __extension__
static __inline int32x2x4_t
__attribute__ ((__always_inline__
))
19507 vld4_s32 (const int32_t * __a
)
19510 __builtin_aarch64_simd_xi __o
;
19511 __o
= __builtin_aarch64_ld4v2si ((const __builtin_aarch64_simd_si
*) __a
);
19512 ret
.val
[0] = (int32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 0);
19513 ret
.val
[1] = (int32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 1);
19514 ret
.val
[2] = (int32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 2);
19515 ret
.val
[3] = (int32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 3);
19519 __extension__
static __inline uint8x8x4_t
__attribute__ ((__always_inline__
))
19520 vld4_u8 (const uint8_t * __a
)
19523 __builtin_aarch64_simd_xi __o
;
19524 __o
= __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi
*) __a
);
19525 ret
.val
[0] = (uint8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 0);
19526 ret
.val
[1] = (uint8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 1);
19527 ret
.val
[2] = (uint8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 2);
19528 ret
.val
[3] = (uint8x8_t
) __builtin_aarch64_get_dregxiv8qi (__o
, 3);
19532 __extension__
static __inline uint16x4x4_t
__attribute__ ((__always_inline__
))
19533 vld4_u16 (const uint16_t * __a
)
19536 __builtin_aarch64_simd_xi __o
;
19537 __o
= __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi
*) __a
);
19538 ret
.val
[0] = (uint16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 0);
19539 ret
.val
[1] = (uint16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 1);
19540 ret
.val
[2] = (uint16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 2);
19541 ret
.val
[3] = (uint16x4_t
) __builtin_aarch64_get_dregxiv4hi (__o
, 3);
19545 __extension__
static __inline uint32x2x4_t
__attribute__ ((__always_inline__
))
19546 vld4_u32 (const uint32_t * __a
)
19549 __builtin_aarch64_simd_xi __o
;
19550 __o
= __builtin_aarch64_ld4v2si ((const __builtin_aarch64_simd_si
*) __a
);
19551 ret
.val
[0] = (uint32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 0);
19552 ret
.val
[1] = (uint32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 1);
19553 ret
.val
[2] = (uint32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 2);
19554 ret
.val
[3] = (uint32x2_t
) __builtin_aarch64_get_dregxiv2si (__o
, 3);
19558 __extension__
static __inline float32x2x4_t
__attribute__ ((__always_inline__
))
19559 vld4_f32 (const float32_t
* __a
)
19562 __builtin_aarch64_simd_xi __o
;
19563 __o
= __builtin_aarch64_ld4v2sf ((const __builtin_aarch64_simd_sf
*) __a
);
19564 ret
.val
[0] = (float32x2_t
) __builtin_aarch64_get_dregxiv2sf (__o
, 0);
19565 ret
.val
[1] = (float32x2_t
) __builtin_aarch64_get_dregxiv2sf (__o
, 1);
19566 ret
.val
[2] = (float32x2_t
) __builtin_aarch64_get_dregxiv2sf (__o
, 2);
19567 ret
.val
[3] = (float32x2_t
) __builtin_aarch64_get_dregxiv2sf (__o
, 3);
19571 __extension__
static __inline int8x16x4_t
__attribute__ ((__always_inline__
))
19572 vld4q_s8 (const int8_t * __a
)
19575 __builtin_aarch64_simd_xi __o
;
19576 __o
= __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
19577 ret
.val
[0] = (int8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 0);
19578 ret
.val
[1] = (int8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 1);
19579 ret
.val
[2] = (int8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 2);
19580 ret
.val
[3] = (int8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 3);
19584 __extension__
static __inline poly8x16x4_t
__attribute__ ((__always_inline__
))
19585 vld4q_p8 (const poly8_t
* __a
)
19588 __builtin_aarch64_simd_xi __o
;
19589 __o
= __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
19590 ret
.val
[0] = (poly8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 0);
19591 ret
.val
[1] = (poly8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 1);
19592 ret
.val
[2] = (poly8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 2);
19593 ret
.val
[3] = (poly8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 3);
19597 __extension__
static __inline int16x8x4_t
__attribute__ ((__always_inline__
))
19598 vld4q_s16 (const int16_t * __a
)
19601 __builtin_aarch64_simd_xi __o
;
19602 __o
= __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
19603 ret
.val
[0] = (int16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 0);
19604 ret
.val
[1] = (int16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 1);
19605 ret
.val
[2] = (int16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 2);
19606 ret
.val
[3] = (int16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 3);
19610 __extension__
static __inline poly16x8x4_t
__attribute__ ((__always_inline__
))
19611 vld4q_p16 (const poly16_t
* __a
)
19614 __builtin_aarch64_simd_xi __o
;
19615 __o
= __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
19616 ret
.val
[0] = (poly16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 0);
19617 ret
.val
[1] = (poly16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 1);
19618 ret
.val
[2] = (poly16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 2);
19619 ret
.val
[3] = (poly16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 3);
19623 __extension__
static __inline int32x4x4_t
__attribute__ ((__always_inline__
))
19624 vld4q_s32 (const int32_t * __a
)
19627 __builtin_aarch64_simd_xi __o
;
19628 __o
= __builtin_aarch64_ld4v4si ((const __builtin_aarch64_simd_si
*) __a
);
19629 ret
.val
[0] = (int32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 0);
19630 ret
.val
[1] = (int32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 1);
19631 ret
.val
[2] = (int32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 2);
19632 ret
.val
[3] = (int32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 3);
19636 __extension__
static __inline int64x2x4_t
__attribute__ ((__always_inline__
))
19637 vld4q_s64 (const int64_t * __a
)
19640 __builtin_aarch64_simd_xi __o
;
19641 __o
= __builtin_aarch64_ld4v2di ((const __builtin_aarch64_simd_di
*) __a
);
19642 ret
.val
[0] = (int64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 0);
19643 ret
.val
[1] = (int64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 1);
19644 ret
.val
[2] = (int64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 2);
19645 ret
.val
[3] = (int64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 3);
19649 __extension__
static __inline uint8x16x4_t
__attribute__ ((__always_inline__
))
19650 vld4q_u8 (const uint8_t * __a
)
19653 __builtin_aarch64_simd_xi __o
;
19654 __o
= __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi
*) __a
);
19655 ret
.val
[0] = (uint8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 0);
19656 ret
.val
[1] = (uint8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 1);
19657 ret
.val
[2] = (uint8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 2);
19658 ret
.val
[3] = (uint8x16_t
) __builtin_aarch64_get_qregxiv16qi (__o
, 3);
19662 __extension__
static __inline uint16x8x4_t
__attribute__ ((__always_inline__
))
19663 vld4q_u16 (const uint16_t * __a
)
19666 __builtin_aarch64_simd_xi __o
;
19667 __o
= __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi
*) __a
);
19668 ret
.val
[0] = (uint16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 0);
19669 ret
.val
[1] = (uint16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 1);
19670 ret
.val
[2] = (uint16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 2);
19671 ret
.val
[3] = (uint16x8_t
) __builtin_aarch64_get_qregxiv8hi (__o
, 3);
19675 __extension__
static __inline uint32x4x4_t
__attribute__ ((__always_inline__
))
19676 vld4q_u32 (const uint32_t * __a
)
19679 __builtin_aarch64_simd_xi __o
;
19680 __o
= __builtin_aarch64_ld4v4si ((const __builtin_aarch64_simd_si
*) __a
);
19681 ret
.val
[0] = (uint32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 0);
19682 ret
.val
[1] = (uint32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 1);
19683 ret
.val
[2] = (uint32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 2);
19684 ret
.val
[3] = (uint32x4_t
) __builtin_aarch64_get_qregxiv4si (__o
, 3);
19688 __extension__
static __inline uint64x2x4_t
__attribute__ ((__always_inline__
))
19689 vld4q_u64 (const uint64_t * __a
)
19692 __builtin_aarch64_simd_xi __o
;
19693 __o
= __builtin_aarch64_ld4v2di ((const __builtin_aarch64_simd_di
*) __a
);
19694 ret
.val
[0] = (uint64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 0);
19695 ret
.val
[1] = (uint64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 1);
19696 ret
.val
[2] = (uint64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 2);
19697 ret
.val
[3] = (uint64x2_t
) __builtin_aarch64_get_qregxiv2di (__o
, 3);
19701 __extension__
static __inline float32x4x4_t
__attribute__ ((__always_inline__
))
19702 vld4q_f32 (const float32_t
* __a
)
19705 __builtin_aarch64_simd_xi __o
;
19706 __o
= __builtin_aarch64_ld4v4sf ((const __builtin_aarch64_simd_sf
*) __a
);
19707 ret
.val
[0] = (float32x4_t
) __builtin_aarch64_get_qregxiv4sf (__o
, 0);
19708 ret
.val
[1] = (float32x4_t
) __builtin_aarch64_get_qregxiv4sf (__o
, 1);
19709 ret
.val
[2] = (float32x4_t
) __builtin_aarch64_get_qregxiv4sf (__o
, 2);
19710 ret
.val
[3] = (float32x4_t
) __builtin_aarch64_get_qregxiv4sf (__o
, 3);
19714 __extension__
static __inline float64x2x4_t
__attribute__ ((__always_inline__
))
19715 vld4q_f64 (const float64_t
* __a
)
19718 __builtin_aarch64_simd_xi __o
;
19719 __o
= __builtin_aarch64_ld4v2df ((const __builtin_aarch64_simd_df
*) __a
);
19720 ret
.val
[0] = (float64x2_t
) __builtin_aarch64_get_qregxiv2df (__o
, 0);
19721 ret
.val
[1] = (float64x2_t
) __builtin_aarch64_get_qregxiv2df (__o
, 1);
19722 ret
.val
[2] = (float64x2_t
) __builtin_aarch64_get_qregxiv2df (__o
, 2);
19723 ret
.val
[3] = (float64x2_t
) __builtin_aarch64_get_qregxiv2df (__o
, 3);
19729 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
19730 vmax_f32 (float32x2_t __a
, float32x2_t __b
)
19732 return __builtin_aarch64_smax_nanv2sf (__a
, __b
);
19735 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
19736 vmax_s8 (int8x8_t __a
, int8x8_t __b
)
19738 return __builtin_aarch64_smaxv8qi (__a
, __b
);
19741 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
19742 vmax_s16 (int16x4_t __a
, int16x4_t __b
)
19744 return __builtin_aarch64_smaxv4hi (__a
, __b
);
19747 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
19748 vmax_s32 (int32x2_t __a
, int32x2_t __b
)
19750 return __builtin_aarch64_smaxv2si (__a
, __b
);
19753 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
19754 vmax_u8 (uint8x8_t __a
, uint8x8_t __b
)
19756 return (uint8x8_t
) __builtin_aarch64_umaxv8qi ((int8x8_t
) __a
,
19760 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
19761 vmax_u16 (uint16x4_t __a
, uint16x4_t __b
)
19763 return (uint16x4_t
) __builtin_aarch64_umaxv4hi ((int16x4_t
) __a
,
19767 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
19768 vmax_u32 (uint32x2_t __a
, uint32x2_t __b
)
19770 return (uint32x2_t
) __builtin_aarch64_umaxv2si ((int32x2_t
) __a
,
19774 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
19775 vmaxq_f32 (float32x4_t __a
, float32x4_t __b
)
19777 return __builtin_aarch64_smax_nanv4sf (__a
, __b
);
19780 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
19781 vmaxq_f64 (float64x2_t __a
, float64x2_t __b
)
19783 return __builtin_aarch64_smax_nanv2df (__a
, __b
);
19786 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
19787 vmaxq_s8 (int8x16_t __a
, int8x16_t __b
)
19789 return __builtin_aarch64_smaxv16qi (__a
, __b
);
19792 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
19793 vmaxq_s16 (int16x8_t __a
, int16x8_t __b
)
19795 return __builtin_aarch64_smaxv8hi (__a
, __b
);
19798 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
19799 vmaxq_s32 (int32x4_t __a
, int32x4_t __b
)
19801 return __builtin_aarch64_smaxv4si (__a
, __b
);
19804 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
19805 vmaxq_u8 (uint8x16_t __a
, uint8x16_t __b
)
19807 return (uint8x16_t
) __builtin_aarch64_umaxv16qi ((int8x16_t
) __a
,
19811 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
19812 vmaxq_u16 (uint16x8_t __a
, uint16x8_t __b
)
19814 return (uint16x8_t
) __builtin_aarch64_umaxv8hi ((int16x8_t
) __a
,
19818 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
19819 vmaxq_u32 (uint32x4_t __a
, uint32x4_t __b
)
19821 return (uint32x4_t
) __builtin_aarch64_umaxv4si ((int32x4_t
) __a
,
19827 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
19828 vmaxnm_f32 (float32x2_t __a
, float32x2_t __b
)
19830 return __builtin_aarch64_smaxv2sf (__a
, __b
);
19833 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
19834 vmaxnmq_f32 (float32x4_t __a
, float32x4_t __b
)
19836 return __builtin_aarch64_smaxv4sf (__a
, __b
);
19839 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
19840 vmaxnmq_f64 (float64x2_t __a
, float64x2_t __b
)
19842 return __builtin_aarch64_smaxv2df (__a
, __b
);
19847 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
19848 vmaxv_f32 (float32x2_t __a
)
19850 return vget_lane_f32 (__builtin_aarch64_reduc_smax_nan_v2sf (__a
),
19854 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
19855 vmaxv_s8 (int8x8_t __a
)
19857 return vget_lane_s8 (__builtin_aarch64_reduc_smax_v8qi (__a
), __LANE0 (8));
19860 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
19861 vmaxv_s16 (int16x4_t __a
)
19863 return vget_lane_s16 (__builtin_aarch64_reduc_smax_v4hi (__a
), __LANE0 (4));
19866 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
19867 vmaxv_s32 (int32x2_t __a
)
19869 return vget_lane_s32 (__builtin_aarch64_reduc_smax_v2si (__a
), __LANE0 (2));
19872 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
19873 vmaxv_u8 (uint8x8_t __a
)
19875 return vget_lane_u8 ((uint8x8_t
)
19876 __builtin_aarch64_reduc_umax_v8qi ((int8x8_t
) __a
),
19880 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
19881 vmaxv_u16 (uint16x4_t __a
)
19883 return vget_lane_u16 ((uint16x4_t
)
19884 __builtin_aarch64_reduc_umax_v4hi ((int16x4_t
) __a
),
19888 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
19889 vmaxv_u32 (uint32x2_t __a
)
19891 return vget_lane_u32 ((uint32x2_t
)
19892 __builtin_aarch64_reduc_umax_v2si ((int32x2_t
) __a
),
19896 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
19897 vmaxvq_f32 (float32x4_t __a
)
19899 return vgetq_lane_f32 (__builtin_aarch64_reduc_smax_nan_v4sf (__a
),
19903 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
19904 vmaxvq_f64 (float64x2_t __a
)
19906 return vgetq_lane_f64 (__builtin_aarch64_reduc_smax_nan_v2df (__a
),
19910 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
19911 vmaxvq_s8 (int8x16_t __a
)
19913 return vgetq_lane_s8 (__builtin_aarch64_reduc_smax_v16qi (__a
), __LANE0 (16));
19916 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
19917 vmaxvq_s16 (int16x8_t __a
)
19919 return vgetq_lane_s16 (__builtin_aarch64_reduc_smax_v8hi (__a
), __LANE0 (8));
19922 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
19923 vmaxvq_s32 (int32x4_t __a
)
19925 return vgetq_lane_s32 (__builtin_aarch64_reduc_smax_v4si (__a
), __LANE0 (4));
19928 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
19929 vmaxvq_u8 (uint8x16_t __a
)
19931 return vgetq_lane_u8 ((uint8x16_t
)
19932 __builtin_aarch64_reduc_umax_v16qi ((int8x16_t
) __a
),
19936 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
19937 vmaxvq_u16 (uint16x8_t __a
)
19939 return vgetq_lane_u16 ((uint16x8_t
)
19940 __builtin_aarch64_reduc_umax_v8hi ((int16x8_t
) __a
),
19944 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
19945 vmaxvq_u32 (uint32x4_t __a
)
19947 return vgetq_lane_u32 ((uint32x4_t
)
19948 __builtin_aarch64_reduc_umax_v4si ((int32x4_t
) __a
),
19954 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
19955 vmaxnmv_f32 (float32x2_t __a
)
19957 return vget_lane_f32 (__builtin_aarch64_reduc_smax_v2sf (__a
),
19961 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
19962 vmaxnmvq_f32 (float32x4_t __a
)
19964 return vgetq_lane_f32 (__builtin_aarch64_reduc_smax_v4sf (__a
), __LANE0 (4));
19967 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
19968 vmaxnmvq_f64 (float64x2_t __a
)
19970 return vgetq_lane_f64 (__builtin_aarch64_reduc_smax_v2df (__a
), __LANE0 (2));
19975 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
19976 vmin_f32 (float32x2_t __a
, float32x2_t __b
)
19978 return __builtin_aarch64_smin_nanv2sf (__a
, __b
);
19981 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
19982 vmin_s8 (int8x8_t __a
, int8x8_t __b
)
19984 return __builtin_aarch64_sminv8qi (__a
, __b
);
19987 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
19988 vmin_s16 (int16x4_t __a
, int16x4_t __b
)
19990 return __builtin_aarch64_sminv4hi (__a
, __b
);
19993 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
19994 vmin_s32 (int32x2_t __a
, int32x2_t __b
)
19996 return __builtin_aarch64_sminv2si (__a
, __b
);
19999 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
20000 vmin_u8 (uint8x8_t __a
, uint8x8_t __b
)
20002 return (uint8x8_t
) __builtin_aarch64_uminv8qi ((int8x8_t
) __a
,
20006 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
20007 vmin_u16 (uint16x4_t __a
, uint16x4_t __b
)
20009 return (uint16x4_t
) __builtin_aarch64_uminv4hi ((int16x4_t
) __a
,
20013 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
20014 vmin_u32 (uint32x2_t __a
, uint32x2_t __b
)
20016 return (uint32x2_t
) __builtin_aarch64_uminv2si ((int32x2_t
) __a
,
20020 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20021 vminq_f32 (float32x4_t __a
, float32x4_t __b
)
20023 return __builtin_aarch64_smin_nanv4sf (__a
, __b
);
20026 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
20027 vminq_f64 (float64x2_t __a
, float64x2_t __b
)
20029 return __builtin_aarch64_smin_nanv2df (__a
, __b
);
20032 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
20033 vminq_s8 (int8x16_t __a
, int8x16_t __b
)
20035 return __builtin_aarch64_sminv16qi (__a
, __b
);
20038 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
20039 vminq_s16 (int16x8_t __a
, int16x8_t __b
)
20041 return __builtin_aarch64_sminv8hi (__a
, __b
);
20044 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
20045 vminq_s32 (int32x4_t __a
, int32x4_t __b
)
20047 return __builtin_aarch64_sminv4si (__a
, __b
);
20050 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
20051 vminq_u8 (uint8x16_t __a
, uint8x16_t __b
)
20053 return (uint8x16_t
) __builtin_aarch64_uminv16qi ((int8x16_t
) __a
,
20057 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
20058 vminq_u16 (uint16x8_t __a
, uint16x8_t __b
)
20060 return (uint16x8_t
) __builtin_aarch64_uminv8hi ((int16x8_t
) __a
,
20064 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
20065 vminq_u32 (uint32x4_t __a
, uint32x4_t __b
)
20067 return (uint32x4_t
) __builtin_aarch64_uminv4si ((int32x4_t
) __a
,
20073 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20074 vminnm_f32 (float32x2_t __a
, float32x2_t __b
)
20076 return __builtin_aarch64_sminv2sf (__a
, __b
);
20079 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20080 vminnmq_f32 (float32x4_t __a
, float32x4_t __b
)
20082 return __builtin_aarch64_sminv4sf (__a
, __b
);
20085 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
20086 vminnmq_f64 (float64x2_t __a
, float64x2_t __b
)
20088 return __builtin_aarch64_sminv2df (__a
, __b
);
20093 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
20094 vminv_f32 (float32x2_t __a
)
20096 return vget_lane_f32 (__builtin_aarch64_reduc_smin_nan_v2sf (__a
),
20100 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
20101 vminv_s8 (int8x8_t __a
)
20103 return vget_lane_s8 (__builtin_aarch64_reduc_smin_v8qi (__a
),
20107 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
20108 vminv_s16 (int16x4_t __a
)
20110 return vget_lane_s16 (__builtin_aarch64_reduc_smin_v4hi (__a
), __LANE0 (4));
20113 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
20114 vminv_s32 (int32x2_t __a
)
20116 return vget_lane_s32 (__builtin_aarch64_reduc_smin_v2si (__a
), __LANE0 (2));
20119 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
20120 vminv_u8 (uint8x8_t __a
)
20122 return vget_lane_u8 ((uint8x8_t
)
20123 __builtin_aarch64_reduc_umin_v8qi ((int8x8_t
) __a
),
20127 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
20128 vminv_u16 (uint16x4_t __a
)
20130 return vget_lane_u16 ((uint16x4_t
)
20131 __builtin_aarch64_reduc_umin_v4hi ((int16x4_t
) __a
),
20135 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
20136 vminv_u32 (uint32x2_t __a
)
20138 return vget_lane_u32 ((uint32x2_t
)
20139 __builtin_aarch64_reduc_umin_v2si ((int32x2_t
) __a
),
20143 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
20144 vminvq_f32 (float32x4_t __a
)
20146 return vgetq_lane_f32 (__builtin_aarch64_reduc_smin_nan_v4sf (__a
),
20150 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
20151 vminvq_f64 (float64x2_t __a
)
20153 return vgetq_lane_f64 (__builtin_aarch64_reduc_smin_nan_v2df (__a
),
20157 __extension__
static __inline
int8_t __attribute__ ((__always_inline__
))
20158 vminvq_s8 (int8x16_t __a
)
20160 return vgetq_lane_s8 (__builtin_aarch64_reduc_smin_v16qi (__a
), __LANE0 (16));
20163 __extension__
static __inline
int16_t __attribute__ ((__always_inline__
))
20164 vminvq_s16 (int16x8_t __a
)
20166 return vgetq_lane_s16 (__builtin_aarch64_reduc_smin_v8hi (__a
), __LANE0 (8));
20169 __extension__
static __inline
int32_t __attribute__ ((__always_inline__
))
20170 vminvq_s32 (int32x4_t __a
)
20172 return vgetq_lane_s32 (__builtin_aarch64_reduc_smin_v4si (__a
), __LANE0 (4));
20175 __extension__
static __inline
uint8_t __attribute__ ((__always_inline__
))
20176 vminvq_u8 (uint8x16_t __a
)
20178 return vgetq_lane_u8 ((uint8x16_t
)
20179 __builtin_aarch64_reduc_umin_v16qi ((int8x16_t
) __a
),
20183 __extension__
static __inline
uint16_t __attribute__ ((__always_inline__
))
20184 vminvq_u16 (uint16x8_t __a
)
20186 return vgetq_lane_u16 ((uint16x8_t
)
20187 __builtin_aarch64_reduc_umin_v8hi ((int16x8_t
) __a
),
20191 __extension__
static __inline
uint32_t __attribute__ ((__always_inline__
))
20192 vminvq_u32 (uint32x4_t __a
)
20194 return vgetq_lane_u32 ((uint32x4_t
)
20195 __builtin_aarch64_reduc_umin_v4si ((int32x4_t
) __a
),
20201 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
20202 vminnmv_f32 (float32x2_t __a
)
20204 return vget_lane_f32 (__builtin_aarch64_reduc_smin_v2sf (__a
), __LANE0 (2));
20207 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
20208 vminnmvq_f32 (float32x4_t __a
)
20210 return vgetq_lane_f32 (__builtin_aarch64_reduc_smin_v4sf (__a
), __LANE0 (4));
20213 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
20214 vminnmvq_f64 (float64x2_t __a
)
20216 return vgetq_lane_f64 (__builtin_aarch64_reduc_smin_v2df (__a
), __LANE0 (2));
20221 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20222 vmla_f32 (float32x2_t a
, float32x2_t b
, float32x2_t c
)
20227 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20228 vmlaq_f32 (float32x4_t a
, float32x4_t b
, float32x4_t c
)
20233 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
20234 vmlaq_f64 (float64x2_t a
, float64x2_t b
, float64x2_t c
)
20241 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20242 vmla_lane_f32 (float32x2_t __a
, float32x2_t __b
,
20243 float32x2_t __c
, const int __lane
)
20245 return (__a
+ (__b
* __aarch64_vget_lane_f32 (__c
, __lane
)));
20248 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
20249 vmla_lane_s16 (int16x4_t __a
, int16x4_t __b
,
20250 int16x4_t __c
, const int __lane
)
20252 return (__a
+ (__b
* __aarch64_vget_lane_s16 (__c
, __lane
)));
20255 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
20256 vmla_lane_s32 (int32x2_t __a
, int32x2_t __b
,
20257 int32x2_t __c
, const int __lane
)
20259 return (__a
+ (__b
* __aarch64_vget_lane_s32 (__c
, __lane
)));
20262 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
20263 vmla_lane_u16 (uint16x4_t __a
, uint16x4_t __b
,
20264 uint16x4_t __c
, const int __lane
)
20266 return (__a
+ (__b
* __aarch64_vget_lane_u16 (__c
, __lane
)));
20269 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
20270 vmla_lane_u32 (uint32x2_t __a
, uint32x2_t __b
,
20271 uint32x2_t __c
, const int __lane
)
20273 return (__a
+ (__b
* __aarch64_vget_lane_u32 (__c
, __lane
)));
20278 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20279 vmla_laneq_f32 (float32x2_t __a
, float32x2_t __b
,
20280 float32x4_t __c
, const int __lane
)
20282 return (__a
+ (__b
* __aarch64_vgetq_lane_f32 (__c
, __lane
)));
20285 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
20286 vmla_laneq_s16 (int16x4_t __a
, int16x4_t __b
,
20287 int16x8_t __c
, const int __lane
)
20289 return (__a
+ (__b
* __aarch64_vgetq_lane_s16 (__c
, __lane
)));
20292 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
20293 vmla_laneq_s32 (int32x2_t __a
, int32x2_t __b
,
20294 int32x4_t __c
, const int __lane
)
20296 return (__a
+ (__b
* __aarch64_vgetq_lane_s32 (__c
, __lane
)));
20299 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
20300 vmla_laneq_u16 (uint16x4_t __a
, uint16x4_t __b
,
20301 uint16x8_t __c
, const int __lane
)
20303 return (__a
+ (__b
* __aarch64_vgetq_lane_u16 (__c
, __lane
)));
20306 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
20307 vmla_laneq_u32 (uint32x2_t __a
, uint32x2_t __b
,
20308 uint32x4_t __c
, const int __lane
)
20310 return (__a
+ (__b
* __aarch64_vgetq_lane_u32 (__c
, __lane
)));
20315 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20316 vmlaq_lane_f32 (float32x4_t __a
, float32x4_t __b
,
20317 float32x2_t __c
, const int __lane
)
20319 return (__a
+ (__b
* __aarch64_vget_lane_f32 (__c
, __lane
)));
20322 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
20323 vmlaq_lane_s16 (int16x8_t __a
, int16x8_t __b
,
20324 int16x4_t __c
, const int __lane
)
20326 return (__a
+ (__b
* __aarch64_vget_lane_s16 (__c
, __lane
)));
20329 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
20330 vmlaq_lane_s32 (int32x4_t __a
, int32x4_t __b
,
20331 int32x2_t __c
, const int __lane
)
20333 return (__a
+ (__b
* __aarch64_vget_lane_s32 (__c
, __lane
)));
20336 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
20337 vmlaq_lane_u16 (uint16x8_t __a
, uint16x8_t __b
,
20338 uint16x4_t __c
, const int __lane
)
20340 return (__a
+ (__b
* __aarch64_vget_lane_u16 (__c
, __lane
)));
20343 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
20344 vmlaq_lane_u32 (uint32x4_t __a
, uint32x4_t __b
,
20345 uint32x2_t __c
, const int __lane
)
20347 return (__a
+ (__b
* __aarch64_vget_lane_u32 (__c
, __lane
)));
20352 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20353 vmlaq_laneq_f32 (float32x4_t __a
, float32x4_t __b
,
20354 float32x4_t __c
, const int __lane
)
20356 return (__a
+ (__b
* __aarch64_vgetq_lane_f32 (__c
, __lane
)));
20359 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
20360 vmlaq_laneq_s16 (int16x8_t __a
, int16x8_t __b
,
20361 int16x8_t __c
, const int __lane
)
20363 return (__a
+ (__b
* __aarch64_vgetq_lane_s16 (__c
, __lane
)));
20366 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
20367 vmlaq_laneq_s32 (int32x4_t __a
, int32x4_t __b
,
20368 int32x4_t __c
, const int __lane
)
20370 return (__a
+ (__b
* __aarch64_vgetq_lane_s32 (__c
, __lane
)));
20373 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
20374 vmlaq_laneq_u16 (uint16x8_t __a
, uint16x8_t __b
,
20375 uint16x8_t __c
, const int __lane
)
20377 return (__a
+ (__b
* __aarch64_vgetq_lane_u16 (__c
, __lane
)));
20380 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
20381 vmlaq_laneq_u32 (uint32x4_t __a
, uint32x4_t __b
,
20382 uint32x4_t __c
, const int __lane
)
20384 return (__a
+ (__b
* __aarch64_vgetq_lane_u32 (__c
, __lane
)));
20389 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20390 vmls_f32 (float32x2_t a
, float32x2_t b
, float32x2_t c
)
20395 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20396 vmlsq_f32 (float32x4_t a
, float32x4_t b
, float32x4_t c
)
20401 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
20402 vmlsq_f64 (float64x2_t a
, float64x2_t b
, float64x2_t c
)
20409 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20410 vmls_lane_f32 (float32x2_t __a
, float32x2_t __b
,
20411 float32x2_t __c
, const int __lane
)
20413 return (__a
- (__b
* __aarch64_vget_lane_f32 (__c
, __lane
)));
20416 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
20417 vmls_lane_s16 (int16x4_t __a
, int16x4_t __b
,
20418 int16x4_t __c
, const int __lane
)
20420 return (__a
- (__b
* __aarch64_vget_lane_s16 (__c
, __lane
)));
20423 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
20424 vmls_lane_s32 (int32x2_t __a
, int32x2_t __b
,
20425 int32x2_t __c
, const int __lane
)
20427 return (__a
- (__b
* __aarch64_vget_lane_s32 (__c
, __lane
)));
20430 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
20431 vmls_lane_u16 (uint16x4_t __a
, uint16x4_t __b
,
20432 uint16x4_t __c
, const int __lane
)
20434 return (__a
- (__b
* __aarch64_vget_lane_u16 (__c
, __lane
)));
20437 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
20438 vmls_lane_u32 (uint32x2_t __a
, uint32x2_t __b
,
20439 uint32x2_t __c
, const int __lane
)
20441 return (__a
- (__b
* __aarch64_vget_lane_u32 (__c
, __lane
)));
20446 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20447 vmls_laneq_f32 (float32x2_t __a
, float32x2_t __b
,
20448 float32x4_t __c
, const int __lane
)
20450 return (__a
- (__b
* __aarch64_vgetq_lane_f32 (__c
, __lane
)));
20453 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
20454 vmls_laneq_s16 (int16x4_t __a
, int16x4_t __b
,
20455 int16x8_t __c
, const int __lane
)
20457 return (__a
- (__b
* __aarch64_vgetq_lane_s16 (__c
, __lane
)));
20460 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
20461 vmls_laneq_s32 (int32x2_t __a
, int32x2_t __b
,
20462 int32x4_t __c
, const int __lane
)
20464 return (__a
- (__b
* __aarch64_vgetq_lane_s32 (__c
, __lane
)));
20467 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
20468 vmls_laneq_u16 (uint16x4_t __a
, uint16x4_t __b
,
20469 uint16x8_t __c
, const int __lane
)
20471 return (__a
- (__b
* __aarch64_vgetq_lane_u16 (__c
, __lane
)));
20474 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
20475 vmls_laneq_u32 (uint32x2_t __a
, uint32x2_t __b
,
20476 uint32x4_t __c
, const int __lane
)
20478 return (__a
- (__b
* __aarch64_vgetq_lane_u32 (__c
, __lane
)));
20483 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20484 vmlsq_lane_f32 (float32x4_t __a
, float32x4_t __b
,
20485 float32x2_t __c
, const int __lane
)
20487 return (__a
- (__b
* __aarch64_vget_lane_f32 (__c
, __lane
)));
20490 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
20491 vmlsq_lane_s16 (int16x8_t __a
, int16x8_t __b
,
20492 int16x4_t __c
, const int __lane
)
20494 return (__a
- (__b
* __aarch64_vget_lane_s16 (__c
, __lane
)));
20497 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
20498 vmlsq_lane_s32 (int32x4_t __a
, int32x4_t __b
,
20499 int32x2_t __c
, const int __lane
)
20501 return (__a
- (__b
* __aarch64_vget_lane_s32 (__c
, __lane
)));
20504 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
20505 vmlsq_lane_u16 (uint16x8_t __a
, uint16x8_t __b
,
20506 uint16x4_t __c
, const int __lane
)
20508 return (__a
- (__b
* __aarch64_vget_lane_u16 (__c
, __lane
)));
20511 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
20512 vmlsq_lane_u32 (uint32x4_t __a
, uint32x4_t __b
,
20513 uint32x2_t __c
, const int __lane
)
20515 return (__a
- (__b
* __aarch64_vget_lane_u32 (__c
, __lane
)));
20520 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20521 vmlsq_laneq_f32 (float32x4_t __a
, float32x4_t __b
,
20522 float32x4_t __c
, const int __lane
)
20524 return (__a
- (__b
* __aarch64_vgetq_lane_f32 (__c
, __lane
)));
20527 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
20528 vmlsq_laneq_s16 (int16x8_t __a
, int16x8_t __b
,
20529 int16x8_t __c
, const int __lane
)
20531 return (__a
- (__b
* __aarch64_vgetq_lane_s16 (__c
, __lane
)));
20534 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
20535 vmlsq_laneq_s32 (int32x4_t __a
, int32x4_t __b
,
20536 int32x4_t __c
, const int __lane
)
20538 return (__a
- (__b
* __aarch64_vgetq_lane_s32 (__c
, __lane
)));
20540 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
20541 vmlsq_laneq_u16 (uint16x8_t __a
, uint16x8_t __b
,
20542 uint16x8_t __c
, const int __lane
)
20544 return (__a
- (__b
* __aarch64_vgetq_lane_u16 (__c
, __lane
)));
20547 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
20548 vmlsq_laneq_u32 (uint32x4_t __a
, uint32x4_t __b
,
20549 uint32x4_t __c
, const int __lane
)
20551 return (__a
- (__b
* __aarch64_vgetq_lane_u32 (__c
, __lane
)));
20556 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20557 vmov_n_f32 (float32_t __a
)
20559 return vdup_n_f32 (__a
);
20562 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
20563 vmov_n_f64 (float64_t __a
)
20568 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
20569 vmov_n_p8 (poly8_t __a
)
20571 return vdup_n_p8 (__a
);
20574 __extension__
static __inline poly16x4_t
__attribute__ ((__always_inline__
))
20575 vmov_n_p16 (poly16_t __a
)
20577 return vdup_n_p16 (__a
);
20580 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
20581 vmov_n_s8 (int8_t __a
)
20583 return vdup_n_s8 (__a
);
20586 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
20587 vmov_n_s16 (int16_t __a
)
20589 return vdup_n_s16 (__a
);
20592 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
20593 vmov_n_s32 (int32_t __a
)
20595 return vdup_n_s32 (__a
);
20598 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
20599 vmov_n_s64 (int64_t __a
)
20604 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
20605 vmov_n_u8 (uint8_t __a
)
20607 return vdup_n_u8 (__a
);
20610 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
20611 vmov_n_u16 (uint16_t __a
)
20613 return vdup_n_u16 (__a
);
20616 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
20617 vmov_n_u32 (uint32_t __a
)
20619 return vdup_n_u32 (__a
);
20622 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
20623 vmov_n_u64 (uint64_t __a
)
20628 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20629 vmovq_n_f32 (float32_t __a
)
20631 return vdupq_n_f32 (__a
);
20634 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
20635 vmovq_n_f64 (float64_t __a
)
20637 return vdupq_n_f64 (__a
);
20640 __extension__
static __inline poly8x16_t
__attribute__ ((__always_inline__
))
20641 vmovq_n_p8 (poly8_t __a
)
20643 return vdupq_n_p8 (__a
);
20646 __extension__
static __inline poly16x8_t
__attribute__ ((__always_inline__
))
20647 vmovq_n_p16 (poly16_t __a
)
20649 return vdupq_n_p16 (__a
);
20652 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
20653 vmovq_n_s8 (int8_t __a
)
20655 return vdupq_n_s8 (__a
);
20658 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
20659 vmovq_n_s16 (int16_t __a
)
20661 return vdupq_n_s16 (__a
);
20664 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
20665 vmovq_n_s32 (int32_t __a
)
20667 return vdupq_n_s32 (__a
);
20670 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
20671 vmovq_n_s64 (int64_t __a
)
20673 return vdupq_n_s64 (__a
);
20676 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
20677 vmovq_n_u8 (uint8_t __a
)
20679 return vdupq_n_u8 (__a
);
20682 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
20683 vmovq_n_u16 (uint16_t __a
)
20685 return vdupq_n_u16 (__a
);
20688 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
20689 vmovq_n_u32 (uint32_t __a
)
20691 return vdupq_n_u32 (__a
);
20694 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
20695 vmovq_n_u64 (uint64_t __a
)
20697 return vdupq_n_u64 (__a
);
20702 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20703 vmul_lane_f32 (float32x2_t __a
, float32x2_t __b
, const int __lane
)
20705 return __a
* __aarch64_vget_lane_f32 (__b
, __lane
);
20708 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
20709 vmul_lane_f64 (float64x1_t __a
, float64x1_t __b
, const int __lane
)
20714 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
20715 vmul_lane_s16 (int16x4_t __a
, int16x4_t __b
, const int __lane
)
20717 return __a
* __aarch64_vget_lane_s16 (__b
, __lane
);
20720 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
20721 vmul_lane_s32 (int32x2_t __a
, int32x2_t __b
, const int __lane
)
20723 return __a
* __aarch64_vget_lane_s32 (__b
, __lane
);
20726 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
20727 vmul_lane_u16 (uint16x4_t __a
, uint16x4_t __b
, const int __lane
)
20729 return __a
* __aarch64_vget_lane_u16 (__b
, __lane
);
20732 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
20733 vmul_lane_u32 (uint32x2_t __a
, uint32x2_t __b
, const int __lane
)
20735 return __a
* __aarch64_vget_lane_u32 (__b
, __lane
);
20740 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20741 vmul_laneq_f32 (float32x2_t __a
, float32x4_t __b
, const int __lane
)
20743 return __a
* __aarch64_vgetq_lane_f32 (__b
, __lane
);
20746 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
20747 vmul_laneq_f64 (float64x1_t __a
, float64x2_t __b
, const int __lane
)
20749 return __a
* __aarch64_vgetq_lane_f64 (__b
, __lane
);
20752 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
20753 vmul_laneq_s16 (int16x4_t __a
, int16x8_t __b
, const int __lane
)
20755 return __a
* __aarch64_vgetq_lane_s16 (__b
, __lane
);
20758 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
20759 vmul_laneq_s32 (int32x2_t __a
, int32x4_t __b
, const int __lane
)
20761 return __a
* __aarch64_vgetq_lane_s32 (__b
, __lane
);
20764 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
20765 vmul_laneq_u16 (uint16x4_t __a
, uint16x8_t __b
, const int __lane
)
20767 return __a
* __aarch64_vgetq_lane_u16 (__b
, __lane
);
20770 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
20771 vmul_laneq_u32 (uint32x2_t __a
, uint32x4_t __b
, const int __lane
)
20773 return __a
* __aarch64_vgetq_lane_u32 (__b
, __lane
);
20778 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20779 vmulq_lane_f32 (float32x4_t __a
, float32x2_t __b
, const int __lane
)
20781 return __a
* __aarch64_vget_lane_f32 (__b
, __lane
);
20784 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
20785 vmulq_lane_f64 (float64x2_t __a
, float64x1_t __b
, const int __lane
)
20790 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
20791 vmulq_lane_s16 (int16x8_t __a
, int16x4_t __b
, const int __lane
)
20793 return __a
* __aarch64_vget_lane_s16 (__b
, __lane
);
20796 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
20797 vmulq_lane_s32 (int32x4_t __a
, int32x2_t __b
, const int __lane
)
20799 return __a
* __aarch64_vget_lane_s32 (__b
, __lane
);
20802 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
20803 vmulq_lane_u16 (uint16x8_t __a
, uint16x4_t __b
, const int __lane
)
20805 return __a
* __aarch64_vget_lane_u16 (__b
, __lane
);
20808 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
20809 vmulq_lane_u32 (uint32x4_t __a
, uint32x2_t __b
, const int __lane
)
20811 return __a
* __aarch64_vget_lane_u32 (__b
, __lane
);
20816 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20817 vmulq_laneq_f32 (float32x4_t __a
, float32x4_t __b
, const int __lane
)
20819 return __a
* __aarch64_vgetq_lane_f32 (__b
, __lane
);
20822 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
20823 vmulq_laneq_f64 (float64x2_t __a
, float64x2_t __b
, const int __lane
)
20825 return __a
* __aarch64_vgetq_lane_f64 (__b
, __lane
);
20828 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
20829 vmulq_laneq_s16 (int16x8_t __a
, int16x8_t __b
, const int __lane
)
20831 return __a
* __aarch64_vgetq_lane_s16 (__b
, __lane
);
20834 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
20835 vmulq_laneq_s32 (int32x4_t __a
, int32x4_t __b
, const int __lane
)
20837 return __a
* __aarch64_vgetq_lane_s32 (__b
, __lane
);
20840 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
20841 vmulq_laneq_u16 (uint16x8_t __a
, uint16x8_t __b
, const int __lane
)
20843 return __a
* __aarch64_vgetq_lane_u16 (__b
, __lane
);
20846 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
20847 vmulq_laneq_u32 (uint32x4_t __a
, uint32x4_t __b
, const int __lane
)
20849 return __a
* __aarch64_vgetq_lane_u32 (__b
, __lane
);
20854 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
20855 vneg_f32 (float32x2_t __a
)
20860 __extension__
static __inline float64x1_t
__attribute__ ((__always_inline__
))
20861 vneg_f64 (float64x1_t __a
)
20866 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
20867 vneg_s8 (int8x8_t __a
)
20872 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
20873 vneg_s16 (int16x4_t __a
)
20878 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
20879 vneg_s32 (int32x2_t __a
)
20884 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
20885 vneg_s64 (int64x1_t __a
)
20890 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
20891 vnegq_f32 (float32x4_t __a
)
20896 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
20897 vnegq_f64 (float64x2_t __a
)
20902 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
20903 vnegq_s8 (int8x16_t __a
)
20908 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
20909 vnegq_s16 (int16x8_t __a
)
20914 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
20915 vnegq_s32 (int32x4_t __a
)
20920 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
20921 vnegq_s64 (int64x2_t __a
)
20928 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
20929 vqabsq_s64 (int64x2_t __a
)
20931 return (int64x2_t
) __builtin_aarch64_sqabsv2di (__a
);
20934 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
20935 vqabsb_s8 (int8x1_t __a
)
20937 return (int8x1_t
) __builtin_aarch64_sqabsqi (__a
);
20940 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
20941 vqabsh_s16 (int16x1_t __a
)
20943 return (int16x1_t
) __builtin_aarch64_sqabshi (__a
);
20946 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
20947 vqabss_s32 (int32x1_t __a
)
20949 return (int32x1_t
) __builtin_aarch64_sqabssi (__a
);
20954 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
20955 vqaddb_s8 (int8x1_t __a
, int8x1_t __b
)
20957 return (int8x1_t
) __builtin_aarch64_sqaddqi (__a
, __b
);
20960 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
20961 vqaddh_s16 (int16x1_t __a
, int16x1_t __b
)
20963 return (int16x1_t
) __builtin_aarch64_sqaddhi (__a
, __b
);
20966 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
20967 vqadds_s32 (int32x1_t __a
, int32x1_t __b
)
20969 return (int32x1_t
) __builtin_aarch64_sqaddsi (__a
, __b
);
20972 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
20973 vqaddd_s64 (int64x1_t __a
, int64x1_t __b
)
20975 return (int64x1_t
) __builtin_aarch64_sqadddi (__a
, __b
);
20978 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
20979 vqaddb_u8 (uint8x1_t __a
, uint8x1_t __b
)
20981 return (uint8x1_t
) __builtin_aarch64_uqaddqi (__a
, __b
);
20984 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
20985 vqaddh_u16 (uint16x1_t __a
, uint16x1_t __b
)
20987 return (uint16x1_t
) __builtin_aarch64_uqaddhi (__a
, __b
);
20990 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
20991 vqadds_u32 (uint32x1_t __a
, uint32x1_t __b
)
20993 return (uint32x1_t
) __builtin_aarch64_uqaddsi (__a
, __b
);
20996 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
20997 vqaddd_u64 (uint64x1_t __a
, uint64x1_t __b
)
20999 return (uint64x1_t
) __builtin_aarch64_uqadddi (__a
, __b
);
21004 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21005 vqdmlal_s16 (int32x4_t __a
, int16x4_t __b
, int16x4_t __c
)
21007 return __builtin_aarch64_sqdmlalv4hi (__a
, __b
, __c
);
21010 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21011 vqdmlal_high_s16 (int32x4_t __a
, int16x8_t __b
, int16x8_t __c
)
21013 return __builtin_aarch64_sqdmlal2v8hi (__a
, __b
, __c
);
21016 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21017 vqdmlal_high_lane_s16 (int32x4_t __a
, int16x8_t __b
, int16x8_t __c
,
21020 return __builtin_aarch64_sqdmlal2_lanev8hi (__a
, __b
, __c
, __d
);
21023 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21024 vqdmlal_high_laneq_s16 (int32x4_t __a
, int16x8_t __b
, int16x8_t __c
,
21027 return __builtin_aarch64_sqdmlal2_laneqv8hi (__a
, __b
, __c
, __d
);
21030 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21031 vqdmlal_high_n_s16 (int32x4_t __a
, int16x8_t __b
, int16_t __c
)
21033 return __builtin_aarch64_sqdmlal2_nv8hi (__a
, __b
, __c
);
21036 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21037 vqdmlal_lane_s16 (int32x4_t __a
, int16x4_t __b
, int16x4_t __c
, int const __d
)
21039 int16x8_t __tmp
= vcombine_s16 (__c
, vcreate_s16 (__AARCH64_INT64_C (0)));
21040 return __builtin_aarch64_sqdmlal_lanev4hi (__a
, __b
, __tmp
, __d
);
21043 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21044 vqdmlal_laneq_s16 (int32x4_t __a
, int16x4_t __b
, int16x8_t __c
, int const __d
)
21046 return __builtin_aarch64_sqdmlal_laneqv4hi (__a
, __b
, __c
, __d
);
21049 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21050 vqdmlal_n_s16 (int32x4_t __a
, int16x4_t __b
, int16_t __c
)
21052 return __builtin_aarch64_sqdmlal_nv4hi (__a
, __b
, __c
);
21055 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21056 vqdmlal_s32 (int64x2_t __a
, int32x2_t __b
, int32x2_t __c
)
21058 return __builtin_aarch64_sqdmlalv2si (__a
, __b
, __c
);
21061 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21062 vqdmlal_high_s32 (int64x2_t __a
, int32x4_t __b
, int32x4_t __c
)
21064 return __builtin_aarch64_sqdmlal2v4si (__a
, __b
, __c
);
21067 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21068 vqdmlal_high_lane_s32 (int64x2_t __a
, int32x4_t __b
, int32x4_t __c
,
21071 return __builtin_aarch64_sqdmlal2_lanev4si (__a
, __b
, __c
, __d
);
21074 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21075 vqdmlal_high_laneq_s32 (int64x2_t __a
, int32x4_t __b
, int32x4_t __c
,
21078 return __builtin_aarch64_sqdmlal2_laneqv4si (__a
, __b
, __c
, __d
);
21081 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21082 vqdmlal_high_n_s32 (int64x2_t __a
, int32x4_t __b
, int32_t __c
)
21084 return __builtin_aarch64_sqdmlal2_nv4si (__a
, __b
, __c
);
21087 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21088 vqdmlal_lane_s32 (int64x2_t __a
, int32x2_t __b
, int32x2_t __c
, int const __d
)
21090 int32x4_t __tmp
= vcombine_s32 (__c
, vcreate_s32 (__AARCH64_INT64_C (0)));
21091 return __builtin_aarch64_sqdmlal_lanev2si (__a
, __b
, __tmp
, __d
);
21094 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21095 vqdmlal_laneq_s32 (int64x2_t __a
, int32x2_t __b
, int32x4_t __c
, int const __d
)
21097 return __builtin_aarch64_sqdmlal_laneqv2si (__a
, __b
, __c
, __d
);
21100 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21101 vqdmlal_n_s32 (int64x2_t __a
, int32x2_t __b
, int32_t __c
)
21103 return __builtin_aarch64_sqdmlal_nv2si (__a
, __b
, __c
);
21106 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21107 vqdmlalh_s16 (int32x1_t __a
, int16x1_t __b
, int16x1_t __c
)
21109 return __builtin_aarch64_sqdmlalhi (__a
, __b
, __c
);
21112 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21113 vqdmlalh_lane_s16 (int32x1_t __a
, int16x1_t __b
, int16x8_t __c
, const int __d
)
21115 return __builtin_aarch64_sqdmlal_lanehi (__a
, __b
, __c
, __d
);
21118 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21119 vqdmlals_s32 (int64x1_t __a
, int32x1_t __b
, int32x1_t __c
)
21121 return __builtin_aarch64_sqdmlalsi (__a
, __b
, __c
);
21124 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21125 vqdmlals_lane_s32 (int64x1_t __a
, int32x1_t __b
, int32x4_t __c
, const int __d
)
21127 return __builtin_aarch64_sqdmlal_lanesi (__a
, __b
, __c
, __d
);
21132 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21133 vqdmlsl_s16 (int32x4_t __a
, int16x4_t __b
, int16x4_t __c
)
21135 return __builtin_aarch64_sqdmlslv4hi (__a
, __b
, __c
);
21138 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21139 vqdmlsl_high_s16 (int32x4_t __a
, int16x8_t __b
, int16x8_t __c
)
21141 return __builtin_aarch64_sqdmlsl2v8hi (__a
, __b
, __c
);
21144 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21145 vqdmlsl_high_lane_s16 (int32x4_t __a
, int16x8_t __b
, int16x8_t __c
,
21148 return __builtin_aarch64_sqdmlsl2_lanev8hi (__a
, __b
, __c
, __d
);
21151 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21152 vqdmlsl_high_laneq_s16 (int32x4_t __a
, int16x8_t __b
, int16x8_t __c
,
21155 return __builtin_aarch64_sqdmlsl2_laneqv8hi (__a
, __b
, __c
, __d
);
21158 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21159 vqdmlsl_high_n_s16 (int32x4_t __a
, int16x8_t __b
, int16_t __c
)
21161 return __builtin_aarch64_sqdmlsl2_nv8hi (__a
, __b
, __c
);
21164 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21165 vqdmlsl_lane_s16 (int32x4_t __a
, int16x4_t __b
, int16x4_t __c
, int const __d
)
21167 int16x8_t __tmp
= vcombine_s16 (__c
, vcreate_s16 (__AARCH64_INT64_C (0)));
21168 return __builtin_aarch64_sqdmlsl_lanev4hi (__a
, __b
, __tmp
, __d
);
21171 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21172 vqdmlsl_laneq_s16 (int32x4_t __a
, int16x4_t __b
, int16x8_t __c
, int const __d
)
21174 return __builtin_aarch64_sqdmlsl_laneqv4hi (__a
, __b
, __c
, __d
);
21177 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21178 vqdmlsl_n_s16 (int32x4_t __a
, int16x4_t __b
, int16_t __c
)
21180 return __builtin_aarch64_sqdmlsl_nv4hi (__a
, __b
, __c
);
21183 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21184 vqdmlsl_s32 (int64x2_t __a
, int32x2_t __b
, int32x2_t __c
)
21186 return __builtin_aarch64_sqdmlslv2si (__a
, __b
, __c
);
21189 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21190 vqdmlsl_high_s32 (int64x2_t __a
, int32x4_t __b
, int32x4_t __c
)
21192 return __builtin_aarch64_sqdmlsl2v4si (__a
, __b
, __c
);
21195 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21196 vqdmlsl_high_lane_s32 (int64x2_t __a
, int32x4_t __b
, int32x4_t __c
,
21199 return __builtin_aarch64_sqdmlsl2_lanev4si (__a
, __b
, __c
, __d
);
21202 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21203 vqdmlsl_high_laneq_s32 (int64x2_t __a
, int32x4_t __b
, int32x4_t __c
,
21206 return __builtin_aarch64_sqdmlsl2_laneqv4si (__a
, __b
, __c
, __d
);
21209 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21210 vqdmlsl_high_n_s32 (int64x2_t __a
, int32x4_t __b
, int32_t __c
)
21212 return __builtin_aarch64_sqdmlsl2_nv4si (__a
, __b
, __c
);
21215 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21216 vqdmlsl_lane_s32 (int64x2_t __a
, int32x2_t __b
, int32x2_t __c
, int const __d
)
21218 int32x4_t __tmp
= vcombine_s32 (__c
, vcreate_s32 (__AARCH64_INT64_C (0)));
21219 return __builtin_aarch64_sqdmlsl_lanev2si (__a
, __b
, __tmp
, __d
);
21222 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21223 vqdmlsl_laneq_s32 (int64x2_t __a
, int32x2_t __b
, int32x4_t __c
, int const __d
)
21225 return __builtin_aarch64_sqdmlsl_laneqv2si (__a
, __b
, __c
, __d
);
21228 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21229 vqdmlsl_n_s32 (int64x2_t __a
, int32x2_t __b
, int32_t __c
)
21231 return __builtin_aarch64_sqdmlsl_nv2si (__a
, __b
, __c
);
21234 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21235 vqdmlslh_s16 (int32x1_t __a
, int16x1_t __b
, int16x1_t __c
)
21237 return __builtin_aarch64_sqdmlslhi (__a
, __b
, __c
);
21240 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21241 vqdmlslh_lane_s16 (int32x1_t __a
, int16x1_t __b
, int16x8_t __c
, const int __d
)
21243 return __builtin_aarch64_sqdmlsl_lanehi (__a
, __b
, __c
, __d
);
21246 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21247 vqdmlsls_s32 (int64x1_t __a
, int32x1_t __b
, int32x1_t __c
)
21249 return __builtin_aarch64_sqdmlslsi (__a
, __b
, __c
);
21252 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21253 vqdmlsls_lane_s32 (int64x1_t __a
, int32x1_t __b
, int32x4_t __c
, const int __d
)
21255 return __builtin_aarch64_sqdmlsl_lanesi (__a
, __b
, __c
, __d
);
21260 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
21261 vqdmulh_lane_s16 (int16x4_t __a
, int16x4_t __b
, const int __c
)
21263 return __builtin_aarch64_sqdmulh_lanev4hi (__a
, __b
, __c
);
21266 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
21267 vqdmulh_lane_s32 (int32x2_t __a
, int32x2_t __b
, const int __c
)
21269 return __builtin_aarch64_sqdmulh_lanev2si (__a
, __b
, __c
);
21272 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
21273 vqdmulhq_lane_s16 (int16x8_t __a
, int16x4_t __b
, const int __c
)
21275 return __builtin_aarch64_sqdmulh_lanev8hi (__a
, __b
, __c
);
21278 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21279 vqdmulhq_lane_s32 (int32x4_t __a
, int32x2_t __b
, const int __c
)
21281 return __builtin_aarch64_sqdmulh_lanev4si (__a
, __b
, __c
);
21284 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21285 vqdmulhh_s16 (int16x1_t __a
, int16x1_t __b
)
21287 return (int16x1_t
) __builtin_aarch64_sqdmulhhi (__a
, __b
);
21290 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21291 vqdmulhh_lane_s16 (int16x1_t __a
, int16x8_t __b
, const int __c
)
21293 return __builtin_aarch64_sqdmulh_lanehi (__a
, __b
, __c
);
21296 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21297 vqdmulhs_s32 (int32x1_t __a
, int32x1_t __b
)
21299 return (int32x1_t
) __builtin_aarch64_sqdmulhsi (__a
, __b
);
21302 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21303 vqdmulhs_lane_s32 (int32x1_t __a
, int32x4_t __b
, const int __c
)
21305 return __builtin_aarch64_sqdmulh_lanesi (__a
, __b
, __c
);
21310 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21311 vqdmull_s16 (int16x4_t __a
, int16x4_t __b
)
21313 return __builtin_aarch64_sqdmullv4hi (__a
, __b
);
21316 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21317 vqdmull_high_s16 (int16x8_t __a
, int16x8_t __b
)
21319 return __builtin_aarch64_sqdmull2v8hi (__a
, __b
);
21322 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21323 vqdmull_high_lane_s16 (int16x8_t __a
, int16x8_t __b
, int const __c
)
21325 return __builtin_aarch64_sqdmull2_lanev8hi (__a
, __b
,__c
);
21328 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21329 vqdmull_high_laneq_s16 (int16x8_t __a
, int16x8_t __b
, int const __c
)
21331 return __builtin_aarch64_sqdmull2_laneqv8hi (__a
, __b
,__c
);
21334 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21335 vqdmull_high_n_s16 (int16x8_t __a
, int16_t __b
)
21337 return __builtin_aarch64_sqdmull2_nv8hi (__a
, __b
);
21340 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21341 vqdmull_lane_s16 (int16x4_t __a
, int16x4_t __b
, int const __c
)
21343 int16x8_t __tmp
= vcombine_s16 (__b
, vcreate_s16 (__AARCH64_INT64_C (0)));
21344 return __builtin_aarch64_sqdmull_lanev4hi (__a
, __tmp
, __c
);
21347 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21348 vqdmull_laneq_s16 (int16x4_t __a
, int16x8_t __b
, int const __c
)
21350 return __builtin_aarch64_sqdmull_laneqv4hi (__a
, __b
, __c
);
21353 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21354 vqdmull_n_s16 (int16x4_t __a
, int16_t __b
)
21356 return __builtin_aarch64_sqdmull_nv4hi (__a
, __b
);
21359 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21360 vqdmull_s32 (int32x2_t __a
, int32x2_t __b
)
21362 return __builtin_aarch64_sqdmullv2si (__a
, __b
);
21365 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21366 vqdmull_high_s32 (int32x4_t __a
, int32x4_t __b
)
21368 return __builtin_aarch64_sqdmull2v4si (__a
, __b
);
21371 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21372 vqdmull_high_lane_s32 (int32x4_t __a
, int32x4_t __b
, int const __c
)
21374 return __builtin_aarch64_sqdmull2_lanev4si (__a
, __b
, __c
);
21377 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21378 vqdmull_high_laneq_s32 (int32x4_t __a
, int32x4_t __b
, int const __c
)
21380 return __builtin_aarch64_sqdmull2_laneqv4si (__a
, __b
, __c
);
21383 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21384 vqdmull_high_n_s32 (int32x4_t __a
, int32_t __b
)
21386 return __builtin_aarch64_sqdmull2_nv4si (__a
, __b
);
21389 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21390 vqdmull_lane_s32 (int32x2_t __a
, int32x2_t __b
, int const __c
)
21392 int32x4_t __tmp
= vcombine_s32 (__b
, vcreate_s32 (__AARCH64_INT64_C (0)));
21393 return __builtin_aarch64_sqdmull_lanev2si (__a
, __tmp
, __c
);
21396 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21397 vqdmull_laneq_s32 (int32x2_t __a
, int32x4_t __b
, int const __c
)
21399 return __builtin_aarch64_sqdmull_laneqv2si (__a
, __b
, __c
);
21402 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21403 vqdmull_n_s32 (int32x2_t __a
, int32_t __b
)
21405 return __builtin_aarch64_sqdmull_nv2si (__a
, __b
);
21408 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21409 vqdmullh_s16 (int16x1_t __a
, int16x1_t __b
)
21411 return (int32x1_t
) __builtin_aarch64_sqdmullhi (__a
, __b
);
21414 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21415 vqdmullh_lane_s16 (int16x1_t __a
, int16x8_t __b
, const int __c
)
21417 return __builtin_aarch64_sqdmull_lanehi (__a
, __b
, __c
);
21420 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21421 vqdmulls_s32 (int32x1_t __a
, int32x1_t __b
)
21423 return (int64x1_t
) __builtin_aarch64_sqdmullsi (__a
, __b
);
21426 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21427 vqdmulls_lane_s32 (int32x1_t __a
, int32x4_t __b
, const int __c
)
21429 return __builtin_aarch64_sqdmull_lanesi (__a
, __b
, __c
);
21434 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
21435 vqmovn_s16 (int16x8_t __a
)
21437 return (int8x8_t
) __builtin_aarch64_sqmovnv8hi (__a
);
21440 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
21441 vqmovn_s32 (int32x4_t __a
)
21443 return (int16x4_t
) __builtin_aarch64_sqmovnv4si (__a
);
21446 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
21447 vqmovn_s64 (int64x2_t __a
)
21449 return (int32x2_t
) __builtin_aarch64_sqmovnv2di (__a
);
21452 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
21453 vqmovn_u16 (uint16x8_t __a
)
21455 return (uint8x8_t
) __builtin_aarch64_uqmovnv8hi ((int16x8_t
) __a
);
21458 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
21459 vqmovn_u32 (uint32x4_t __a
)
21461 return (uint16x4_t
) __builtin_aarch64_uqmovnv4si ((int32x4_t
) __a
);
21464 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
21465 vqmovn_u64 (uint64x2_t __a
)
21467 return (uint32x2_t
) __builtin_aarch64_uqmovnv2di ((int64x2_t
) __a
);
21470 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
21471 vqmovnh_s16 (int16x1_t __a
)
21473 return (int8x1_t
) __builtin_aarch64_sqmovnhi (__a
);
21476 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21477 vqmovns_s32 (int32x1_t __a
)
21479 return (int16x1_t
) __builtin_aarch64_sqmovnsi (__a
);
21482 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21483 vqmovnd_s64 (int64x1_t __a
)
21485 return (int32x1_t
) __builtin_aarch64_sqmovndi (__a
);
21488 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
21489 vqmovnh_u16 (uint16x1_t __a
)
21491 return (uint8x1_t
) __builtin_aarch64_uqmovnhi (__a
);
21494 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
21495 vqmovns_u32 (uint32x1_t __a
)
21497 return (uint16x1_t
) __builtin_aarch64_uqmovnsi (__a
);
21500 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
21501 vqmovnd_u64 (uint64x1_t __a
)
21503 return (uint32x1_t
) __builtin_aarch64_uqmovndi (__a
);
21508 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
21509 vqmovun_s16 (int16x8_t __a
)
21511 return (uint8x8_t
) __builtin_aarch64_sqmovunv8hi (__a
);
21514 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
21515 vqmovun_s32 (int32x4_t __a
)
21517 return (uint16x4_t
) __builtin_aarch64_sqmovunv4si (__a
);
21520 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
21521 vqmovun_s64 (int64x2_t __a
)
21523 return (uint32x2_t
) __builtin_aarch64_sqmovunv2di (__a
);
21526 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
21527 vqmovunh_s16 (int16x1_t __a
)
21529 return (int8x1_t
) __builtin_aarch64_sqmovunhi (__a
);
21532 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21533 vqmovuns_s32 (int32x1_t __a
)
21535 return (int16x1_t
) __builtin_aarch64_sqmovunsi (__a
);
21538 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21539 vqmovund_s64 (int64x1_t __a
)
21541 return (int32x1_t
) __builtin_aarch64_sqmovundi (__a
);
21546 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21547 vqnegq_s64 (int64x2_t __a
)
21549 return (int64x2_t
) __builtin_aarch64_sqnegv2di (__a
);
21552 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
21553 vqnegb_s8 (int8x1_t __a
)
21555 return (int8x1_t
) __builtin_aarch64_sqnegqi (__a
);
21558 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21559 vqnegh_s16 (int16x1_t __a
)
21561 return (int16x1_t
) __builtin_aarch64_sqneghi (__a
);
21564 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21565 vqnegs_s32 (int32x1_t __a
)
21567 return (int32x1_t
) __builtin_aarch64_sqnegsi (__a
);
21572 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
21573 vqrdmulh_lane_s16 (int16x4_t __a
, int16x4_t __b
, const int __c
)
21575 return __builtin_aarch64_sqrdmulh_lanev4hi (__a
, __b
, __c
);
21578 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
21579 vqrdmulh_lane_s32 (int32x2_t __a
, int32x2_t __b
, const int __c
)
21581 return __builtin_aarch64_sqrdmulh_lanev2si (__a
, __b
, __c
);
21584 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
21585 vqrdmulhq_lane_s16 (int16x8_t __a
, int16x4_t __b
, const int __c
)
21587 return __builtin_aarch64_sqrdmulh_lanev8hi (__a
, __b
, __c
);
21590 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21591 vqrdmulhq_lane_s32 (int32x4_t __a
, int32x2_t __b
, const int __c
)
21593 return __builtin_aarch64_sqrdmulh_lanev4si (__a
, __b
, __c
);
21596 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21597 vqrdmulhh_s16 (int16x1_t __a
, int16x1_t __b
)
21599 return (int16x1_t
) __builtin_aarch64_sqrdmulhhi (__a
, __b
);
21602 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21603 vqrdmulhh_lane_s16 (int16x1_t __a
, int16x8_t __b
, const int __c
)
21605 return __builtin_aarch64_sqrdmulh_lanehi (__a
, __b
, __c
);
21608 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21609 vqrdmulhs_s32 (int32x1_t __a
, int32x1_t __b
)
21611 return (int32x1_t
) __builtin_aarch64_sqrdmulhsi (__a
, __b
);
21614 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21615 vqrdmulhs_lane_s32 (int32x1_t __a
, int32x4_t __b
, const int __c
)
21617 return __builtin_aarch64_sqrdmulh_lanesi (__a
, __b
, __c
);
21622 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
21623 vqrshl_s8 (int8x8_t __a
, int8x8_t __b
)
21625 return __builtin_aarch64_sqrshlv8qi (__a
, __b
);
21628 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
21629 vqrshl_s16 (int16x4_t __a
, int16x4_t __b
)
21631 return __builtin_aarch64_sqrshlv4hi (__a
, __b
);
21634 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
21635 vqrshl_s32 (int32x2_t __a
, int32x2_t __b
)
21637 return __builtin_aarch64_sqrshlv2si (__a
, __b
);
21640 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21641 vqrshl_s64 (int64x1_t __a
, int64x1_t __b
)
21643 return __builtin_aarch64_sqrshldi (__a
, __b
);
21646 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
21647 vqrshl_u8 (uint8x8_t __a
, int8x8_t __b
)
21649 return (uint8x8_t
) __builtin_aarch64_uqrshlv8qi ((int8x8_t
) __a
, __b
);
21652 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
21653 vqrshl_u16 (uint16x4_t __a
, int16x4_t __b
)
21655 return (uint16x4_t
) __builtin_aarch64_uqrshlv4hi ((int16x4_t
) __a
, __b
);
21658 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
21659 vqrshl_u32 (uint32x2_t __a
, int32x2_t __b
)
21661 return (uint32x2_t
) __builtin_aarch64_uqrshlv2si ((int32x2_t
) __a
, __b
);
21664 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
21665 vqrshl_u64 (uint64x1_t __a
, int64x1_t __b
)
21667 return (uint64x1_t
) __builtin_aarch64_uqrshldi ((int64x1_t
) __a
, __b
);
21670 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
21671 vqrshlq_s8 (int8x16_t __a
, int8x16_t __b
)
21673 return __builtin_aarch64_sqrshlv16qi (__a
, __b
);
21676 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
21677 vqrshlq_s16 (int16x8_t __a
, int16x8_t __b
)
21679 return __builtin_aarch64_sqrshlv8hi (__a
, __b
);
21682 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21683 vqrshlq_s32 (int32x4_t __a
, int32x4_t __b
)
21685 return __builtin_aarch64_sqrshlv4si (__a
, __b
);
21688 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21689 vqrshlq_s64 (int64x2_t __a
, int64x2_t __b
)
21691 return __builtin_aarch64_sqrshlv2di (__a
, __b
);
21694 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
21695 vqrshlq_u8 (uint8x16_t __a
, int8x16_t __b
)
21697 return (uint8x16_t
) __builtin_aarch64_uqrshlv16qi ((int8x16_t
) __a
, __b
);
21700 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
21701 vqrshlq_u16 (uint16x8_t __a
, int16x8_t __b
)
21703 return (uint16x8_t
) __builtin_aarch64_uqrshlv8hi ((int16x8_t
) __a
, __b
);
21706 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
21707 vqrshlq_u32 (uint32x4_t __a
, int32x4_t __b
)
21709 return (uint32x4_t
) __builtin_aarch64_uqrshlv4si ((int32x4_t
) __a
, __b
);
21712 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
21713 vqrshlq_u64 (uint64x2_t __a
, int64x2_t __b
)
21715 return (uint64x2_t
) __builtin_aarch64_uqrshlv2di ((int64x2_t
) __a
, __b
);
21718 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
21719 vqrshlb_s8 (int8x1_t __a
, int8x1_t __b
)
21721 return __builtin_aarch64_sqrshlqi (__a
, __b
);
21724 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21725 vqrshlh_s16 (int16x1_t __a
, int16x1_t __b
)
21727 return __builtin_aarch64_sqrshlhi (__a
, __b
);
21730 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21731 vqrshls_s32 (int32x1_t __a
, int32x1_t __b
)
21733 return __builtin_aarch64_sqrshlsi (__a
, __b
);
21736 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21737 vqrshld_s64 (int64x1_t __a
, int64x1_t __b
)
21739 return __builtin_aarch64_sqrshldi (__a
, __b
);
21742 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
21743 vqrshlb_u8 (uint8x1_t __a
, uint8x1_t __b
)
21745 return (uint8x1_t
) __builtin_aarch64_uqrshlqi (__a
, __b
);
21748 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
21749 vqrshlh_u16 (uint16x1_t __a
, uint16x1_t __b
)
21751 return (uint16x1_t
) __builtin_aarch64_uqrshlhi (__a
, __b
);
21754 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
21755 vqrshls_u32 (uint32x1_t __a
, uint32x1_t __b
)
21757 return (uint32x1_t
) __builtin_aarch64_uqrshlsi (__a
, __b
);
21760 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
21761 vqrshld_u64 (uint64x1_t __a
, uint64x1_t __b
)
21763 return (uint64x1_t
) __builtin_aarch64_uqrshldi (__a
, __b
);
21768 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
21769 vqrshrn_n_s16 (int16x8_t __a
, const int __b
)
21771 return (int8x8_t
) __builtin_aarch64_sqrshrn_nv8hi (__a
, __b
);
21774 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
21775 vqrshrn_n_s32 (int32x4_t __a
, const int __b
)
21777 return (int16x4_t
) __builtin_aarch64_sqrshrn_nv4si (__a
, __b
);
21780 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
21781 vqrshrn_n_s64 (int64x2_t __a
, const int __b
)
21783 return (int32x2_t
) __builtin_aarch64_sqrshrn_nv2di (__a
, __b
);
21786 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
21787 vqrshrn_n_u16 (uint16x8_t __a
, const int __b
)
21789 return (uint8x8_t
) __builtin_aarch64_uqrshrn_nv8hi ((int16x8_t
) __a
, __b
);
21792 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
21793 vqrshrn_n_u32 (uint32x4_t __a
, const int __b
)
21795 return (uint16x4_t
) __builtin_aarch64_uqrshrn_nv4si ((int32x4_t
) __a
, __b
);
21798 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
21799 vqrshrn_n_u64 (uint64x2_t __a
, const int __b
)
21801 return (uint32x2_t
) __builtin_aarch64_uqrshrn_nv2di ((int64x2_t
) __a
, __b
);
21804 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
21805 vqrshrnh_n_s16 (int16x1_t __a
, const int __b
)
21807 return (int8x1_t
) __builtin_aarch64_sqrshrn_nhi (__a
, __b
);
21810 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21811 vqrshrns_n_s32 (int32x1_t __a
, const int __b
)
21813 return (int16x1_t
) __builtin_aarch64_sqrshrn_nsi (__a
, __b
);
21816 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21817 vqrshrnd_n_s64 (int64x1_t __a
, const int __b
)
21819 return (int32x1_t
) __builtin_aarch64_sqrshrn_ndi (__a
, __b
);
21822 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
21823 vqrshrnh_n_u16 (uint16x1_t __a
, const int __b
)
21825 return (uint8x1_t
) __builtin_aarch64_uqrshrn_nhi (__a
, __b
);
21828 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
21829 vqrshrns_n_u32 (uint32x1_t __a
, const int __b
)
21831 return (uint16x1_t
) __builtin_aarch64_uqrshrn_nsi (__a
, __b
);
21834 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
21835 vqrshrnd_n_u64 (uint64x1_t __a
, const int __b
)
21837 return (uint32x1_t
) __builtin_aarch64_uqrshrn_ndi (__a
, __b
);
21842 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
21843 vqrshrun_n_s16 (int16x8_t __a
, const int __b
)
21845 return (uint8x8_t
) __builtin_aarch64_sqrshrun_nv8hi (__a
, __b
);
21848 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
21849 vqrshrun_n_s32 (int32x4_t __a
, const int __b
)
21851 return (uint16x4_t
) __builtin_aarch64_sqrshrun_nv4si (__a
, __b
);
21854 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
21855 vqrshrun_n_s64 (int64x2_t __a
, const int __b
)
21857 return (uint32x2_t
) __builtin_aarch64_sqrshrun_nv2di (__a
, __b
);
21860 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
21861 vqrshrunh_n_s16 (int16x1_t __a
, const int __b
)
21863 return (int8x1_t
) __builtin_aarch64_sqrshrun_nhi (__a
, __b
);
21866 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21867 vqrshruns_n_s32 (int32x1_t __a
, const int __b
)
21869 return (int16x1_t
) __builtin_aarch64_sqrshrun_nsi (__a
, __b
);
21872 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21873 vqrshrund_n_s64 (int64x1_t __a
, const int __b
)
21875 return (int32x1_t
) __builtin_aarch64_sqrshrun_ndi (__a
, __b
);
21880 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
21881 vqshl_s8 (int8x8_t __a
, int8x8_t __b
)
21883 return __builtin_aarch64_sqshlv8qi (__a
, __b
);
21886 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
21887 vqshl_s16 (int16x4_t __a
, int16x4_t __b
)
21889 return __builtin_aarch64_sqshlv4hi (__a
, __b
);
21892 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
21893 vqshl_s32 (int32x2_t __a
, int32x2_t __b
)
21895 return __builtin_aarch64_sqshlv2si (__a
, __b
);
21898 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21899 vqshl_s64 (int64x1_t __a
, int64x1_t __b
)
21901 return __builtin_aarch64_sqshldi (__a
, __b
);
21904 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
21905 vqshl_u8 (uint8x8_t __a
, int8x8_t __b
)
21907 return (uint8x8_t
) __builtin_aarch64_uqshlv8qi ((int8x8_t
) __a
, __b
);
21910 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
21911 vqshl_u16 (uint16x4_t __a
, int16x4_t __b
)
21913 return (uint16x4_t
) __builtin_aarch64_uqshlv4hi ((int16x4_t
) __a
, __b
);
21916 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
21917 vqshl_u32 (uint32x2_t __a
, int32x2_t __b
)
21919 return (uint32x2_t
) __builtin_aarch64_uqshlv2si ((int32x2_t
) __a
, __b
);
21922 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
21923 vqshl_u64 (uint64x1_t __a
, int64x1_t __b
)
21925 return (uint64x1_t
) __builtin_aarch64_uqshldi ((int64x1_t
) __a
, __b
);
21928 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
21929 vqshlq_s8 (int8x16_t __a
, int8x16_t __b
)
21931 return __builtin_aarch64_sqshlv16qi (__a
, __b
);
21934 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
21935 vqshlq_s16 (int16x8_t __a
, int16x8_t __b
)
21937 return __builtin_aarch64_sqshlv8hi (__a
, __b
);
21940 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
21941 vqshlq_s32 (int32x4_t __a
, int32x4_t __b
)
21943 return __builtin_aarch64_sqshlv4si (__a
, __b
);
21946 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
21947 vqshlq_s64 (int64x2_t __a
, int64x2_t __b
)
21949 return __builtin_aarch64_sqshlv2di (__a
, __b
);
21952 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
21953 vqshlq_u8 (uint8x16_t __a
, int8x16_t __b
)
21955 return (uint8x16_t
) __builtin_aarch64_uqshlv16qi ((int8x16_t
) __a
, __b
);
21958 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
21959 vqshlq_u16 (uint16x8_t __a
, int16x8_t __b
)
21961 return (uint16x8_t
) __builtin_aarch64_uqshlv8hi ((int16x8_t
) __a
, __b
);
21964 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
21965 vqshlq_u32 (uint32x4_t __a
, int32x4_t __b
)
21967 return (uint32x4_t
) __builtin_aarch64_uqshlv4si ((int32x4_t
) __a
, __b
);
21970 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
21971 vqshlq_u64 (uint64x2_t __a
, int64x2_t __b
)
21973 return (uint64x2_t
) __builtin_aarch64_uqshlv2di ((int64x2_t
) __a
, __b
);
21976 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
21977 vqshlb_s8 (int8x1_t __a
, int8x1_t __b
)
21979 return __builtin_aarch64_sqshlqi (__a
, __b
);
21982 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
21983 vqshlh_s16 (int16x1_t __a
, int16x1_t __b
)
21985 return __builtin_aarch64_sqshlhi (__a
, __b
);
21988 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
21989 vqshls_s32 (int32x1_t __a
, int32x1_t __b
)
21991 return __builtin_aarch64_sqshlsi (__a
, __b
);
21994 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
21995 vqshld_s64 (int64x1_t __a
, int64x1_t __b
)
21997 return __builtin_aarch64_sqshldi (__a
, __b
);
22000 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
22001 vqshlb_u8 (uint8x1_t __a
, uint8x1_t __b
)
22003 return (uint8x1_t
) __builtin_aarch64_uqshlqi (__a
, __b
);
22006 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
22007 vqshlh_u16 (uint16x1_t __a
, uint16x1_t __b
)
22009 return (uint16x1_t
) __builtin_aarch64_uqshlhi (__a
, __b
);
22012 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
22013 vqshls_u32 (uint32x1_t __a
, uint32x1_t __b
)
22015 return (uint32x1_t
) __builtin_aarch64_uqshlsi (__a
, __b
);
22018 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22019 vqshld_u64 (uint64x1_t __a
, uint64x1_t __b
)
22021 return (uint64x1_t
) __builtin_aarch64_uqshldi (__a
, __b
);
22024 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
22025 vqshl_n_s8 (int8x8_t __a
, const int __b
)
22027 return (int8x8_t
) __builtin_aarch64_sqshl_nv8qi (__a
, __b
);
22030 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
22031 vqshl_n_s16 (int16x4_t __a
, const int __b
)
22033 return (int16x4_t
) __builtin_aarch64_sqshl_nv4hi (__a
, __b
);
22036 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
22037 vqshl_n_s32 (int32x2_t __a
, const int __b
)
22039 return (int32x2_t
) __builtin_aarch64_sqshl_nv2si (__a
, __b
);
22042 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22043 vqshl_n_s64 (int64x1_t __a
, const int __b
)
22045 return (int64x1_t
) __builtin_aarch64_sqshl_ndi (__a
, __b
);
22048 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22049 vqshl_n_u8 (uint8x8_t __a
, const int __b
)
22051 return (uint8x8_t
) __builtin_aarch64_uqshl_nv8qi ((int8x8_t
) __a
, __b
);
22054 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22055 vqshl_n_u16 (uint16x4_t __a
, const int __b
)
22057 return (uint16x4_t
) __builtin_aarch64_uqshl_nv4hi ((int16x4_t
) __a
, __b
);
22060 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22061 vqshl_n_u32 (uint32x2_t __a
, const int __b
)
22063 return (uint32x2_t
) __builtin_aarch64_uqshl_nv2si ((int32x2_t
) __a
, __b
);
22066 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22067 vqshl_n_u64 (uint64x1_t __a
, const int __b
)
22069 return (uint64x1_t
) __builtin_aarch64_uqshl_ndi ((int64x1_t
) __a
, __b
);
22072 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
22073 vqshlq_n_s8 (int8x16_t __a
, const int __b
)
22075 return (int8x16_t
) __builtin_aarch64_sqshl_nv16qi (__a
, __b
);
22078 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
22079 vqshlq_n_s16 (int16x8_t __a
, const int __b
)
22081 return (int16x8_t
) __builtin_aarch64_sqshl_nv8hi (__a
, __b
);
22084 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
22085 vqshlq_n_s32 (int32x4_t __a
, const int __b
)
22087 return (int32x4_t
) __builtin_aarch64_sqshl_nv4si (__a
, __b
);
22090 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
22091 vqshlq_n_s64 (int64x2_t __a
, const int __b
)
22093 return (int64x2_t
) __builtin_aarch64_sqshl_nv2di (__a
, __b
);
22096 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
22097 vqshlq_n_u8 (uint8x16_t __a
, const int __b
)
22099 return (uint8x16_t
) __builtin_aarch64_uqshl_nv16qi ((int8x16_t
) __a
, __b
);
22102 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
22103 vqshlq_n_u16 (uint16x8_t __a
, const int __b
)
22105 return (uint16x8_t
) __builtin_aarch64_uqshl_nv8hi ((int16x8_t
) __a
, __b
);
22108 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
22109 vqshlq_n_u32 (uint32x4_t __a
, const int __b
)
22111 return (uint32x4_t
) __builtin_aarch64_uqshl_nv4si ((int32x4_t
) __a
, __b
);
22114 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
22115 vqshlq_n_u64 (uint64x2_t __a
, const int __b
)
22117 return (uint64x2_t
) __builtin_aarch64_uqshl_nv2di ((int64x2_t
) __a
, __b
);
22120 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
22121 vqshlb_n_s8 (int8x1_t __a
, const int __b
)
22123 return (int8x1_t
) __builtin_aarch64_sqshl_nqi (__a
, __b
);
22126 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
22127 vqshlh_n_s16 (int16x1_t __a
, const int __b
)
22129 return (int16x1_t
) __builtin_aarch64_sqshl_nhi (__a
, __b
);
22132 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
22133 vqshls_n_s32 (int32x1_t __a
, const int __b
)
22135 return (int32x1_t
) __builtin_aarch64_sqshl_nsi (__a
, __b
);
22138 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22139 vqshld_n_s64 (int64x1_t __a
, const int __b
)
22141 return (int64x1_t
) __builtin_aarch64_sqshl_ndi (__a
, __b
);
22144 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
22145 vqshlb_n_u8 (uint8x1_t __a
, const int __b
)
22147 return (uint8x1_t
) __builtin_aarch64_uqshl_nqi (__a
, __b
);
22150 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
22151 vqshlh_n_u16 (uint16x1_t __a
, const int __b
)
22153 return (uint16x1_t
) __builtin_aarch64_uqshl_nhi (__a
, __b
);
22156 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
22157 vqshls_n_u32 (uint32x1_t __a
, const int __b
)
22159 return (uint32x1_t
) __builtin_aarch64_uqshl_nsi (__a
, __b
);
22162 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22163 vqshld_n_u64 (uint64x1_t __a
, const int __b
)
22165 return (uint64x1_t
) __builtin_aarch64_uqshl_ndi (__a
, __b
);
22170 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22171 vqshlu_n_s8 (int8x8_t __a
, const int __b
)
22173 return (uint8x8_t
) __builtin_aarch64_sqshlu_nv8qi (__a
, __b
);
22176 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22177 vqshlu_n_s16 (int16x4_t __a
, const int __b
)
22179 return (uint16x4_t
) __builtin_aarch64_sqshlu_nv4hi (__a
, __b
);
22182 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22183 vqshlu_n_s32 (int32x2_t __a
, const int __b
)
22185 return (uint32x2_t
) __builtin_aarch64_sqshlu_nv2si (__a
, __b
);
22188 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22189 vqshlu_n_s64 (int64x1_t __a
, const int __b
)
22191 return (uint64x1_t
) __builtin_aarch64_sqshlu_ndi (__a
, __b
);
22194 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
22195 vqshluq_n_s8 (int8x16_t __a
, const int __b
)
22197 return (uint8x16_t
) __builtin_aarch64_sqshlu_nv16qi (__a
, __b
);
22200 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
22201 vqshluq_n_s16 (int16x8_t __a
, const int __b
)
22203 return (uint16x8_t
) __builtin_aarch64_sqshlu_nv8hi (__a
, __b
);
22206 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
22207 vqshluq_n_s32 (int32x4_t __a
, const int __b
)
22209 return (uint32x4_t
) __builtin_aarch64_sqshlu_nv4si (__a
, __b
);
22212 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
22213 vqshluq_n_s64 (int64x2_t __a
, const int __b
)
22215 return (uint64x2_t
) __builtin_aarch64_sqshlu_nv2di (__a
, __b
);
22218 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
22219 vqshlub_n_s8 (int8x1_t __a
, const int __b
)
22221 return (int8x1_t
) __builtin_aarch64_sqshlu_nqi (__a
, __b
);
22224 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
22225 vqshluh_n_s16 (int16x1_t __a
, const int __b
)
22227 return (int16x1_t
) __builtin_aarch64_sqshlu_nhi (__a
, __b
);
22230 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
22231 vqshlus_n_s32 (int32x1_t __a
, const int __b
)
22233 return (int32x1_t
) __builtin_aarch64_sqshlu_nsi (__a
, __b
);
22236 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22237 vqshlud_n_s64 (int64x1_t __a
, const int __b
)
22239 return (int64x1_t
) __builtin_aarch64_sqshlu_ndi (__a
, __b
);
22244 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
22245 vqshrn_n_s16 (int16x8_t __a
, const int __b
)
22247 return (int8x8_t
) __builtin_aarch64_sqshrn_nv8hi (__a
, __b
);
22250 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
22251 vqshrn_n_s32 (int32x4_t __a
, const int __b
)
22253 return (int16x4_t
) __builtin_aarch64_sqshrn_nv4si (__a
, __b
);
22256 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
22257 vqshrn_n_s64 (int64x2_t __a
, const int __b
)
22259 return (int32x2_t
) __builtin_aarch64_sqshrn_nv2di (__a
, __b
);
22262 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22263 vqshrn_n_u16 (uint16x8_t __a
, const int __b
)
22265 return (uint8x8_t
) __builtin_aarch64_uqshrn_nv8hi ((int16x8_t
) __a
, __b
);
22268 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22269 vqshrn_n_u32 (uint32x4_t __a
, const int __b
)
22271 return (uint16x4_t
) __builtin_aarch64_uqshrn_nv4si ((int32x4_t
) __a
, __b
);
22274 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22275 vqshrn_n_u64 (uint64x2_t __a
, const int __b
)
22277 return (uint32x2_t
) __builtin_aarch64_uqshrn_nv2di ((int64x2_t
) __a
, __b
);
22280 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
22281 vqshrnh_n_s16 (int16x1_t __a
, const int __b
)
22283 return (int8x1_t
) __builtin_aarch64_sqshrn_nhi (__a
, __b
);
22286 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
22287 vqshrns_n_s32 (int32x1_t __a
, const int __b
)
22289 return (int16x1_t
) __builtin_aarch64_sqshrn_nsi (__a
, __b
);
22292 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
22293 vqshrnd_n_s64 (int64x1_t __a
, const int __b
)
22295 return (int32x1_t
) __builtin_aarch64_sqshrn_ndi (__a
, __b
);
22298 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
22299 vqshrnh_n_u16 (uint16x1_t __a
, const int __b
)
22301 return (uint8x1_t
) __builtin_aarch64_uqshrn_nhi (__a
, __b
);
22304 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
22305 vqshrns_n_u32 (uint32x1_t __a
, const int __b
)
22307 return (uint16x1_t
) __builtin_aarch64_uqshrn_nsi (__a
, __b
);
22310 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
22311 vqshrnd_n_u64 (uint64x1_t __a
, const int __b
)
22313 return (uint32x1_t
) __builtin_aarch64_uqshrn_ndi (__a
, __b
);
22318 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22319 vqshrun_n_s16 (int16x8_t __a
, const int __b
)
22321 return (uint8x8_t
) __builtin_aarch64_sqshrun_nv8hi (__a
, __b
);
22324 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22325 vqshrun_n_s32 (int32x4_t __a
, const int __b
)
22327 return (uint16x4_t
) __builtin_aarch64_sqshrun_nv4si (__a
, __b
);
22330 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22331 vqshrun_n_s64 (int64x2_t __a
, const int __b
)
22333 return (uint32x2_t
) __builtin_aarch64_sqshrun_nv2di (__a
, __b
);
22336 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
22337 vqshrunh_n_s16 (int16x1_t __a
, const int __b
)
22339 return (int8x1_t
) __builtin_aarch64_sqshrun_nhi (__a
, __b
);
22342 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
22343 vqshruns_n_s32 (int32x1_t __a
, const int __b
)
22345 return (int16x1_t
) __builtin_aarch64_sqshrun_nsi (__a
, __b
);
22348 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
22349 vqshrund_n_s64 (int64x1_t __a
, const int __b
)
22351 return (int32x1_t
) __builtin_aarch64_sqshrun_ndi (__a
, __b
);
22356 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
22357 vqsubb_s8 (int8x1_t __a
, int8x1_t __b
)
22359 return (int8x1_t
) __builtin_aarch64_sqsubqi (__a
, __b
);
22362 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
22363 vqsubh_s16 (int16x1_t __a
, int16x1_t __b
)
22365 return (int16x1_t
) __builtin_aarch64_sqsubhi (__a
, __b
);
22368 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
22369 vqsubs_s32 (int32x1_t __a
, int32x1_t __b
)
22371 return (int32x1_t
) __builtin_aarch64_sqsubsi (__a
, __b
);
22374 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22375 vqsubd_s64 (int64x1_t __a
, int64x1_t __b
)
22377 return (int64x1_t
) __builtin_aarch64_sqsubdi (__a
, __b
);
22380 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
22381 vqsubb_u8 (uint8x1_t __a
, uint8x1_t __b
)
22383 return (uint8x1_t
) __builtin_aarch64_uqsubqi (__a
, __b
);
22386 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
22387 vqsubh_u16 (uint16x1_t __a
, uint16x1_t __b
)
22389 return (uint16x1_t
) __builtin_aarch64_uqsubhi (__a
, __b
);
22392 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
22393 vqsubs_u32 (uint32x1_t __a
, uint32x1_t __b
)
22395 return (uint32x1_t
) __builtin_aarch64_uqsubsi (__a
, __b
);
22398 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22399 vqsubd_u64 (uint64x1_t __a
, uint64x1_t __b
)
22401 return (uint64x1_t
) __builtin_aarch64_uqsubdi (__a
, __b
);
22406 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
22407 vrecpes_f32 (float32_t __a
)
22409 return __builtin_aarch64_frecpesf (__a
);
22412 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
22413 vrecped_f64 (float64_t __a
)
22415 return __builtin_aarch64_frecpedf (__a
);
22418 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22419 vrecpe_f32 (float32x2_t __a
)
22421 return __builtin_aarch64_frecpev2sf (__a
);
22424 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22425 vrecpeq_f32 (float32x4_t __a
)
22427 return __builtin_aarch64_frecpev4sf (__a
);
22430 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22431 vrecpeq_f64 (float64x2_t __a
)
22433 return __builtin_aarch64_frecpev2df (__a
);
22438 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
22439 vrecpss_f32 (float32_t __a
, float32_t __b
)
22441 return __builtin_aarch64_frecpssf (__a
, __b
);
22444 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
22445 vrecpsd_f64 (float64_t __a
, float64_t __b
)
22447 return __builtin_aarch64_frecpsdf (__a
, __b
);
22450 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22451 vrecps_f32 (float32x2_t __a
, float32x2_t __b
)
22453 return __builtin_aarch64_frecpsv2sf (__a
, __b
);
22456 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22457 vrecpsq_f32 (float32x4_t __a
, float32x4_t __b
)
22459 return __builtin_aarch64_frecpsv4sf (__a
, __b
);
22462 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22463 vrecpsq_f64 (float64x2_t __a
, float64x2_t __b
)
22465 return __builtin_aarch64_frecpsv2df (__a
, __b
);
22470 __extension__
static __inline float32_t
__attribute__ ((__always_inline__
))
22471 vrecpxs_f32 (float32_t __a
)
22473 return __builtin_aarch64_frecpxsf (__a
);
22476 __extension__
static __inline float64_t
__attribute__ ((__always_inline__
))
22477 vrecpxd_f64 (float64_t __a
)
22479 return __builtin_aarch64_frecpxdf (__a
);
22484 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22485 vrnd_f32 (float32x2_t __a
)
22487 return __builtin_aarch64_btruncv2sf (__a
);
22490 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22491 vrndq_f32 (float32x4_t __a
)
22493 return __builtin_aarch64_btruncv4sf (__a
);
22496 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22497 vrndq_f64 (float64x2_t __a
)
22499 return __builtin_aarch64_btruncv2df (__a
);
22504 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22505 vrnda_f32 (float32x2_t __a
)
22507 return __builtin_aarch64_roundv2sf (__a
);
22510 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22511 vrndaq_f32 (float32x4_t __a
)
22513 return __builtin_aarch64_roundv4sf (__a
);
22516 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22517 vrndaq_f64 (float64x2_t __a
)
22519 return __builtin_aarch64_roundv2df (__a
);
22524 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22525 vrndi_f32 (float32x2_t __a
)
22527 return __builtin_aarch64_nearbyintv2sf (__a
);
22530 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22531 vrndiq_f32 (float32x4_t __a
)
22533 return __builtin_aarch64_nearbyintv4sf (__a
);
22536 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22537 vrndiq_f64 (float64x2_t __a
)
22539 return __builtin_aarch64_nearbyintv2df (__a
);
22544 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22545 vrndm_f32 (float32x2_t __a
)
22547 return __builtin_aarch64_floorv2sf (__a
);
22550 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22551 vrndmq_f32 (float32x4_t __a
)
22553 return __builtin_aarch64_floorv4sf (__a
);
22556 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22557 vrndmq_f64 (float64x2_t __a
)
22559 return __builtin_aarch64_floorv2df (__a
);
22564 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22565 vrndn_f32 (float32x2_t __a
)
22567 return __builtin_aarch64_frintnv2sf (__a
);
22569 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22570 vrndnq_f32 (float32x4_t __a
)
22572 return __builtin_aarch64_frintnv4sf (__a
);
22575 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22576 vrndnq_f64 (float64x2_t __a
)
22578 return __builtin_aarch64_frintnv2df (__a
);
22583 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22584 vrndp_f32 (float32x2_t __a
)
22586 return __builtin_aarch64_ceilv2sf (__a
);
22589 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22590 vrndpq_f32 (float32x4_t __a
)
22592 return __builtin_aarch64_ceilv4sf (__a
);
22595 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22596 vrndpq_f64 (float64x2_t __a
)
22598 return __builtin_aarch64_ceilv2df (__a
);
22603 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
22604 vrndx_f32 (float32x2_t __a
)
22606 return __builtin_aarch64_rintv2sf (__a
);
22609 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
22610 vrndxq_f32 (float32x4_t __a
)
22612 return __builtin_aarch64_rintv4sf (__a
);
22615 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
22616 vrndxq_f64 (float64x2_t __a
)
22618 return __builtin_aarch64_rintv2df (__a
);
22623 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
22624 vrshl_s8 (int8x8_t __a
, int8x8_t __b
)
22626 return (int8x8_t
) __builtin_aarch64_srshlv8qi (__a
, __b
);
22629 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
22630 vrshl_s16 (int16x4_t __a
, int16x4_t __b
)
22632 return (int16x4_t
) __builtin_aarch64_srshlv4hi (__a
, __b
);
22635 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
22636 vrshl_s32 (int32x2_t __a
, int32x2_t __b
)
22638 return (int32x2_t
) __builtin_aarch64_srshlv2si (__a
, __b
);
22641 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22642 vrshl_s64 (int64x1_t __a
, int64x1_t __b
)
22644 return (int64x1_t
) __builtin_aarch64_srshldi (__a
, __b
);
22647 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22648 vrshl_u8 (uint8x8_t __a
, int8x8_t __b
)
22650 return (uint8x8_t
) __builtin_aarch64_urshlv8qi ((int8x8_t
) __a
, __b
);
22653 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22654 vrshl_u16 (uint16x4_t __a
, int16x4_t __b
)
22656 return (uint16x4_t
) __builtin_aarch64_urshlv4hi ((int16x4_t
) __a
, __b
);
22659 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22660 vrshl_u32 (uint32x2_t __a
, int32x2_t __b
)
22662 return (uint32x2_t
) __builtin_aarch64_urshlv2si ((int32x2_t
) __a
, __b
);
22665 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22666 vrshl_u64 (uint64x1_t __a
, int64x1_t __b
)
22668 return (uint64x1_t
) __builtin_aarch64_urshldi ((int64x1_t
) __a
, __b
);
22671 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
22672 vrshlq_s8 (int8x16_t __a
, int8x16_t __b
)
22674 return (int8x16_t
) __builtin_aarch64_srshlv16qi (__a
, __b
);
22677 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
22678 vrshlq_s16 (int16x8_t __a
, int16x8_t __b
)
22680 return (int16x8_t
) __builtin_aarch64_srshlv8hi (__a
, __b
);
22683 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
22684 vrshlq_s32 (int32x4_t __a
, int32x4_t __b
)
22686 return (int32x4_t
) __builtin_aarch64_srshlv4si (__a
, __b
);
22689 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
22690 vrshlq_s64 (int64x2_t __a
, int64x2_t __b
)
22692 return (int64x2_t
) __builtin_aarch64_srshlv2di (__a
, __b
);
22695 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
22696 vrshlq_u8 (uint8x16_t __a
, int8x16_t __b
)
22698 return (uint8x16_t
) __builtin_aarch64_urshlv16qi ((int8x16_t
) __a
, __b
);
22701 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
22702 vrshlq_u16 (uint16x8_t __a
, int16x8_t __b
)
22704 return (uint16x8_t
) __builtin_aarch64_urshlv8hi ((int16x8_t
) __a
, __b
);
22707 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
22708 vrshlq_u32 (uint32x4_t __a
, int32x4_t __b
)
22710 return (uint32x4_t
) __builtin_aarch64_urshlv4si ((int32x4_t
) __a
, __b
);
22713 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
22714 vrshlq_u64 (uint64x2_t __a
, int64x2_t __b
)
22716 return (uint64x2_t
) __builtin_aarch64_urshlv2di ((int64x2_t
) __a
, __b
);
22719 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22720 vrshld_s64 (int64x1_t __a
, int64x1_t __b
)
22722 return (int64x1_t
) __builtin_aarch64_srshldi (__a
, __b
);
22725 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22726 vrshld_u64 (uint64x1_t __a
, uint64x1_t __b
)
22728 return (uint64x1_t
) __builtin_aarch64_urshldi (__a
, __b
);
22733 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
22734 vrshr_n_s8 (int8x8_t __a
, const int __b
)
22736 return (int8x8_t
) __builtin_aarch64_srshr_nv8qi (__a
, __b
);
22739 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
22740 vrshr_n_s16 (int16x4_t __a
, const int __b
)
22742 return (int16x4_t
) __builtin_aarch64_srshr_nv4hi (__a
, __b
);
22745 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
22746 vrshr_n_s32 (int32x2_t __a
, const int __b
)
22748 return (int32x2_t
) __builtin_aarch64_srshr_nv2si (__a
, __b
);
22751 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22752 vrshr_n_s64 (int64x1_t __a
, const int __b
)
22754 return (int64x1_t
) __builtin_aarch64_srshr_ndi (__a
, __b
);
22757 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22758 vrshr_n_u8 (uint8x8_t __a
, const int __b
)
22760 return (uint8x8_t
) __builtin_aarch64_urshr_nv8qi ((int8x8_t
) __a
, __b
);
22763 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22764 vrshr_n_u16 (uint16x4_t __a
, const int __b
)
22766 return (uint16x4_t
) __builtin_aarch64_urshr_nv4hi ((int16x4_t
) __a
, __b
);
22769 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22770 vrshr_n_u32 (uint32x2_t __a
, const int __b
)
22772 return (uint32x2_t
) __builtin_aarch64_urshr_nv2si ((int32x2_t
) __a
, __b
);
22775 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22776 vrshr_n_u64 (uint64x1_t __a
, const int __b
)
22778 return (uint64x1_t
) __builtin_aarch64_urshr_ndi ((int64x1_t
) __a
, __b
);
22781 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
22782 vrshrq_n_s8 (int8x16_t __a
, const int __b
)
22784 return (int8x16_t
) __builtin_aarch64_srshr_nv16qi (__a
, __b
);
22787 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
22788 vrshrq_n_s16 (int16x8_t __a
, const int __b
)
22790 return (int16x8_t
) __builtin_aarch64_srshr_nv8hi (__a
, __b
);
22793 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
22794 vrshrq_n_s32 (int32x4_t __a
, const int __b
)
22796 return (int32x4_t
) __builtin_aarch64_srshr_nv4si (__a
, __b
);
22799 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
22800 vrshrq_n_s64 (int64x2_t __a
, const int __b
)
22802 return (int64x2_t
) __builtin_aarch64_srshr_nv2di (__a
, __b
);
22805 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
22806 vrshrq_n_u8 (uint8x16_t __a
, const int __b
)
22808 return (uint8x16_t
) __builtin_aarch64_urshr_nv16qi ((int8x16_t
) __a
, __b
);
22811 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
22812 vrshrq_n_u16 (uint16x8_t __a
, const int __b
)
22814 return (uint16x8_t
) __builtin_aarch64_urshr_nv8hi ((int16x8_t
) __a
, __b
);
22817 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
22818 vrshrq_n_u32 (uint32x4_t __a
, const int __b
)
22820 return (uint32x4_t
) __builtin_aarch64_urshr_nv4si ((int32x4_t
) __a
, __b
);
22823 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
22824 vrshrq_n_u64 (uint64x2_t __a
, const int __b
)
22826 return (uint64x2_t
) __builtin_aarch64_urshr_nv2di ((int64x2_t
) __a
, __b
);
22829 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22830 vrshrd_n_s64 (int64x1_t __a
, const int __b
)
22832 return (int64x1_t
) __builtin_aarch64_srshr_ndi (__a
, __b
);
22835 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22836 vrshrd_n_u64 (uint64x1_t __a
, const int __b
)
22838 return (uint64x1_t
) __builtin_aarch64_urshr_ndi (__a
, __b
);
22843 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
22844 vrsra_n_s8 (int8x8_t __a
, int8x8_t __b
, const int __c
)
22846 return (int8x8_t
) __builtin_aarch64_srsra_nv8qi (__a
, __b
, __c
);
22849 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
22850 vrsra_n_s16 (int16x4_t __a
, int16x4_t __b
, const int __c
)
22852 return (int16x4_t
) __builtin_aarch64_srsra_nv4hi (__a
, __b
, __c
);
22855 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
22856 vrsra_n_s32 (int32x2_t __a
, int32x2_t __b
, const int __c
)
22858 return (int32x2_t
) __builtin_aarch64_srsra_nv2si (__a
, __b
, __c
);
22861 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22862 vrsra_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
22864 return (int64x1_t
) __builtin_aarch64_srsra_ndi (__a
, __b
, __c
);
22867 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
22868 vrsra_n_u8 (uint8x8_t __a
, uint8x8_t __b
, const int __c
)
22870 return (uint8x8_t
) __builtin_aarch64_ursra_nv8qi ((int8x8_t
) __a
,
22871 (int8x8_t
) __b
, __c
);
22874 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
22875 vrsra_n_u16 (uint16x4_t __a
, uint16x4_t __b
, const int __c
)
22877 return (uint16x4_t
) __builtin_aarch64_ursra_nv4hi ((int16x4_t
) __a
,
22878 (int16x4_t
) __b
, __c
);
22881 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
22882 vrsra_n_u32 (uint32x2_t __a
, uint32x2_t __b
, const int __c
)
22884 return (uint32x2_t
) __builtin_aarch64_ursra_nv2si ((int32x2_t
) __a
,
22885 (int32x2_t
) __b
, __c
);
22888 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22889 vrsra_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
22891 return (uint64x1_t
) __builtin_aarch64_ursra_ndi ((int64x1_t
) __a
,
22892 (int64x1_t
) __b
, __c
);
22895 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
22896 vrsraq_n_s8 (int8x16_t __a
, int8x16_t __b
, const int __c
)
22898 return (int8x16_t
) __builtin_aarch64_srsra_nv16qi (__a
, __b
, __c
);
22901 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
22902 vrsraq_n_s16 (int16x8_t __a
, int16x8_t __b
, const int __c
)
22904 return (int16x8_t
) __builtin_aarch64_srsra_nv8hi (__a
, __b
, __c
);
22907 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
22908 vrsraq_n_s32 (int32x4_t __a
, int32x4_t __b
, const int __c
)
22910 return (int32x4_t
) __builtin_aarch64_srsra_nv4si (__a
, __b
, __c
);
22913 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
22914 vrsraq_n_s64 (int64x2_t __a
, int64x2_t __b
, const int __c
)
22916 return (int64x2_t
) __builtin_aarch64_srsra_nv2di (__a
, __b
, __c
);
22919 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
22920 vrsraq_n_u8 (uint8x16_t __a
, uint8x16_t __b
, const int __c
)
22922 return (uint8x16_t
) __builtin_aarch64_ursra_nv16qi ((int8x16_t
) __a
,
22923 (int8x16_t
) __b
, __c
);
22926 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
22927 vrsraq_n_u16 (uint16x8_t __a
, uint16x8_t __b
, const int __c
)
22929 return (uint16x8_t
) __builtin_aarch64_ursra_nv8hi ((int16x8_t
) __a
,
22930 (int16x8_t
) __b
, __c
);
22933 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
22934 vrsraq_n_u32 (uint32x4_t __a
, uint32x4_t __b
, const int __c
)
22936 return (uint32x4_t
) __builtin_aarch64_ursra_nv4si ((int32x4_t
) __a
,
22937 (int32x4_t
) __b
, __c
);
22940 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
22941 vrsraq_n_u64 (uint64x2_t __a
, uint64x2_t __b
, const int __c
)
22943 return (uint64x2_t
) __builtin_aarch64_ursra_nv2di ((int64x2_t
) __a
,
22944 (int64x2_t
) __b
, __c
);
22947 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
22948 vrsrad_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
22950 return (int64x1_t
) __builtin_aarch64_srsra_ndi (__a
, __b
, __c
);
22953 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
22954 vrsrad_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
22956 return (uint64x1_t
) __builtin_aarch64_ursra_ndi (__a
, __b
, __c
);
22959 #ifdef __ARM_FEATURE_CRYPTO
22963 static __inline uint32x4_t
22964 vsha1cq_u32 (uint32x4_t hash_abcd
, uint32_t hash_e
, uint32x4_t wk
)
22966 return __builtin_aarch64_crypto_sha1cv4si_uuuu (hash_abcd
, hash_e
, wk
);
22968 static __inline uint32x4_t
22969 vsha1mq_u32 (uint32x4_t hash_abcd
, uint32_t hash_e
, uint32x4_t wk
)
22971 return __builtin_aarch64_crypto_sha1mv4si_uuuu (hash_abcd
, hash_e
, wk
);
22973 static __inline uint32x4_t
22974 vsha1pq_u32 (uint32x4_t hash_abcd
, uint32_t hash_e
, uint32x4_t wk
)
22976 return __builtin_aarch64_crypto_sha1pv4si_uuuu (hash_abcd
, hash_e
, wk
);
22979 static __inline
uint32_t
22980 vsha1h_u32 (uint32_t hash_e
)
22982 return __builtin_aarch64_crypto_sha1hsi_uu (hash_e
);
22985 static __inline uint32x4_t
22986 vsha1su0q_u32 (uint32x4_t w0_3
, uint32x4_t w4_7
, uint32x4_t w8_11
)
22988 return __builtin_aarch64_crypto_sha1su0v4si_uuuu (w0_3
, w4_7
, w8_11
);
22991 static __inline uint32x4_t
22992 vsha1su1q_u32 (uint32x4_t tw0_3
, uint32x4_t w12_15
)
22994 return __builtin_aarch64_crypto_sha1su1v4si_uuu (tw0_3
, w12_15
);
22997 static __inline uint32x4_t
22998 vsha256hq_u32 (uint32x4_t hash_abcd
, uint32x4_t hash_efgh
, uint32x4_t wk
)
23000 return __builtin_aarch64_crypto_sha256hv4si_uuuu (hash_abcd
, hash_efgh
, wk
);
23003 static __inline uint32x4_t
23004 vsha256h2q_u32 (uint32x4_t hash_efgh
, uint32x4_t hash_abcd
, uint32x4_t wk
)
23006 return __builtin_aarch64_crypto_sha256h2v4si_uuuu (hash_efgh
, hash_abcd
, wk
);
23009 static __inline uint32x4_t
23010 vsha256su0q_u32 (uint32x4_t w0_3
, uint32x4_t w4_7
)
23012 return __builtin_aarch64_crypto_sha256su0v4si_uuu (w0_3
, w4_7
);
23015 static __inline uint32x4_t
23016 vsha256su1q_u32 (uint32x4_t tw0_3
, uint32x4_t w8_11
, uint32x4_t w12_15
)
23018 return __builtin_aarch64_crypto_sha256su1v4si_uuuu (tw0_3
, w8_11
, w12_15
);
23021 static __inline poly128_t
23022 vmull_p64 (poly64_t a
, poly64_t b
)
23025 __builtin_aarch64_crypto_pmulldi_ppp (a
, b
);
23028 static __inline poly128_t
23029 vmull_high_p64 (poly64x2_t a
, poly64x2_t b
)
23031 return __builtin_aarch64_crypto_pmullv2di_ppp (a
, b
);
23038 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
23039 vshl_n_s8 (int8x8_t __a
, const int __b
)
23041 return (int8x8_t
) __builtin_aarch64_ashlv8qi (__a
, __b
);
23044 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
23045 vshl_n_s16 (int16x4_t __a
, const int __b
)
23047 return (int16x4_t
) __builtin_aarch64_ashlv4hi (__a
, __b
);
23050 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
23051 vshl_n_s32 (int32x2_t __a
, const int __b
)
23053 return (int32x2_t
) __builtin_aarch64_ashlv2si (__a
, __b
);
23056 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23057 vshl_n_s64 (int64x1_t __a
, const int __b
)
23059 return (int64x1_t
) __builtin_aarch64_ashldi (__a
, __b
);
23062 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23063 vshl_n_u8 (uint8x8_t __a
, const int __b
)
23065 return (uint8x8_t
) __builtin_aarch64_ashlv8qi ((int8x8_t
) __a
, __b
);
23068 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23069 vshl_n_u16 (uint16x4_t __a
, const int __b
)
23071 return (uint16x4_t
) __builtin_aarch64_ashlv4hi ((int16x4_t
) __a
, __b
);
23074 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23075 vshl_n_u32 (uint32x2_t __a
, const int __b
)
23077 return (uint32x2_t
) __builtin_aarch64_ashlv2si ((int32x2_t
) __a
, __b
);
23080 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23081 vshl_n_u64 (uint64x1_t __a
, const int __b
)
23083 return (uint64x1_t
) __builtin_aarch64_ashldi ((int64x1_t
) __a
, __b
);
23086 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
23087 vshlq_n_s8 (int8x16_t __a
, const int __b
)
23089 return (int8x16_t
) __builtin_aarch64_ashlv16qi (__a
, __b
);
23092 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23093 vshlq_n_s16 (int16x8_t __a
, const int __b
)
23095 return (int16x8_t
) __builtin_aarch64_ashlv8hi (__a
, __b
);
23098 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23099 vshlq_n_s32 (int32x4_t __a
, const int __b
)
23101 return (int32x4_t
) __builtin_aarch64_ashlv4si (__a
, __b
);
23104 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23105 vshlq_n_s64 (int64x2_t __a
, const int __b
)
23107 return (int64x2_t
) __builtin_aarch64_ashlv2di (__a
, __b
);
23110 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23111 vshlq_n_u8 (uint8x16_t __a
, const int __b
)
23113 return (uint8x16_t
) __builtin_aarch64_ashlv16qi ((int8x16_t
) __a
, __b
);
23116 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23117 vshlq_n_u16 (uint16x8_t __a
, const int __b
)
23119 return (uint16x8_t
) __builtin_aarch64_ashlv8hi ((int16x8_t
) __a
, __b
);
23122 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23123 vshlq_n_u32 (uint32x4_t __a
, const int __b
)
23125 return (uint32x4_t
) __builtin_aarch64_ashlv4si ((int32x4_t
) __a
, __b
);
23128 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23129 vshlq_n_u64 (uint64x2_t __a
, const int __b
)
23131 return (uint64x2_t
) __builtin_aarch64_ashlv2di ((int64x2_t
) __a
, __b
);
23134 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23135 vshld_n_s64 (int64x1_t __a
, const int __b
)
23137 return (int64x1_t
) __builtin_aarch64_ashldi (__a
, __b
);
23140 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23141 vshld_n_u64 (uint64x1_t __a
, const int __b
)
23143 return (uint64x1_t
) __builtin_aarch64_ashldi (__a
, __b
);
23146 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
23147 vshl_s8 (int8x8_t __a
, int8x8_t __b
)
23149 return (int8x8_t
) __builtin_aarch64_sshlv8qi (__a
, __b
);
23152 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
23153 vshl_s16 (int16x4_t __a
, int16x4_t __b
)
23155 return (int16x4_t
) __builtin_aarch64_sshlv4hi (__a
, __b
);
23158 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
23159 vshl_s32 (int32x2_t __a
, int32x2_t __b
)
23161 return (int32x2_t
) __builtin_aarch64_sshlv2si (__a
, __b
);
23164 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23165 vshl_s64 (int64x1_t __a
, int64x1_t __b
)
23167 return (int64x1_t
) __builtin_aarch64_sshldi (__a
, __b
);
23170 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23171 vshl_u8 (uint8x8_t __a
, int8x8_t __b
)
23173 return (uint8x8_t
) __builtin_aarch64_ushlv8qi ((int8x8_t
) __a
, __b
);
23176 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23177 vshl_u16 (uint16x4_t __a
, int16x4_t __b
)
23179 return (uint16x4_t
) __builtin_aarch64_ushlv4hi ((int16x4_t
) __a
, __b
);
23182 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23183 vshl_u32 (uint32x2_t __a
, int32x2_t __b
)
23185 return (uint32x2_t
) __builtin_aarch64_ushlv2si ((int32x2_t
) __a
, __b
);
23188 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23189 vshl_u64 (uint64x1_t __a
, int64x1_t __b
)
23191 return (uint64x1_t
) __builtin_aarch64_ushldi ((int64x1_t
) __a
, __b
);
23194 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
23195 vshlq_s8 (int8x16_t __a
, int8x16_t __b
)
23197 return (int8x16_t
) __builtin_aarch64_sshlv16qi (__a
, __b
);
23200 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23201 vshlq_s16 (int16x8_t __a
, int16x8_t __b
)
23203 return (int16x8_t
) __builtin_aarch64_sshlv8hi (__a
, __b
);
23206 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23207 vshlq_s32 (int32x4_t __a
, int32x4_t __b
)
23209 return (int32x4_t
) __builtin_aarch64_sshlv4si (__a
, __b
);
23212 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23213 vshlq_s64 (int64x2_t __a
, int64x2_t __b
)
23215 return (int64x2_t
) __builtin_aarch64_sshlv2di (__a
, __b
);
23218 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23219 vshlq_u8 (uint8x16_t __a
, int8x16_t __b
)
23221 return (uint8x16_t
) __builtin_aarch64_ushlv16qi ((int8x16_t
) __a
, __b
);
23224 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23225 vshlq_u16 (uint16x8_t __a
, int16x8_t __b
)
23227 return (uint16x8_t
) __builtin_aarch64_ushlv8hi ((int16x8_t
) __a
, __b
);
23230 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23231 vshlq_u32 (uint32x4_t __a
, int32x4_t __b
)
23233 return (uint32x4_t
) __builtin_aarch64_ushlv4si ((int32x4_t
) __a
, __b
);
23236 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23237 vshlq_u64 (uint64x2_t __a
, int64x2_t __b
)
23239 return (uint64x2_t
) __builtin_aarch64_ushlv2di ((int64x2_t
) __a
, __b
);
23242 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23243 vshld_s64 (int64x1_t __a
, int64x1_t __b
)
23245 return (int64x1_t
) __builtin_aarch64_sshldi (__a
, __b
);
23248 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23249 vshld_u64 (uint64x1_t __a
, uint64x1_t __b
)
23251 return (uint64x1_t
) __builtin_aarch64_ushldi (__a
, __b
);
23254 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23255 vshll_high_n_s8 (int8x16_t __a
, const int __b
)
23257 return __builtin_aarch64_sshll2_nv16qi (__a
, __b
);
23260 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23261 vshll_high_n_s16 (int16x8_t __a
, const int __b
)
23263 return __builtin_aarch64_sshll2_nv8hi (__a
, __b
);
23266 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23267 vshll_high_n_s32 (int32x4_t __a
, const int __b
)
23269 return __builtin_aarch64_sshll2_nv4si (__a
, __b
);
23272 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23273 vshll_high_n_u8 (uint8x16_t __a
, const int __b
)
23275 return (uint16x8_t
) __builtin_aarch64_ushll2_nv16qi ((int8x16_t
) __a
, __b
);
23278 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23279 vshll_high_n_u16 (uint16x8_t __a
, const int __b
)
23281 return (uint32x4_t
) __builtin_aarch64_ushll2_nv8hi ((int16x8_t
) __a
, __b
);
23284 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23285 vshll_high_n_u32 (uint32x4_t __a
, const int __b
)
23287 return (uint64x2_t
) __builtin_aarch64_ushll2_nv4si ((int32x4_t
) __a
, __b
);
23290 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23291 vshll_n_s8 (int8x8_t __a
, const int __b
)
23293 return __builtin_aarch64_sshll_nv8qi (__a
, __b
);
23296 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23297 vshll_n_s16 (int16x4_t __a
, const int __b
)
23299 return __builtin_aarch64_sshll_nv4hi (__a
, __b
);
23302 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23303 vshll_n_s32 (int32x2_t __a
, const int __b
)
23305 return __builtin_aarch64_sshll_nv2si (__a
, __b
);
23308 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23309 vshll_n_u8 (uint8x8_t __a
, const int __b
)
23311 return (uint16x8_t
) __builtin_aarch64_ushll_nv8qi ((int8x8_t
) __a
, __b
);
23314 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23315 vshll_n_u16 (uint16x4_t __a
, const int __b
)
23317 return (uint32x4_t
) __builtin_aarch64_ushll_nv4hi ((int16x4_t
) __a
, __b
);
23320 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23321 vshll_n_u32 (uint32x2_t __a
, const int __b
)
23323 return (uint64x2_t
) __builtin_aarch64_ushll_nv2si ((int32x2_t
) __a
, __b
);
23328 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
23329 vshr_n_s8 (int8x8_t __a
, const int __b
)
23331 return (int8x8_t
) __builtin_aarch64_ashrv8qi (__a
, __b
);
23334 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
23335 vshr_n_s16 (int16x4_t __a
, const int __b
)
23337 return (int16x4_t
) __builtin_aarch64_ashrv4hi (__a
, __b
);
23340 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
23341 vshr_n_s32 (int32x2_t __a
, const int __b
)
23343 return (int32x2_t
) __builtin_aarch64_ashrv2si (__a
, __b
);
23346 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23347 vshr_n_s64 (int64x1_t __a
, const int __b
)
23349 return (int64x1_t
) __builtin_aarch64_ashrdi (__a
, __b
);
23352 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23353 vshr_n_u8 (uint8x8_t __a
, const int __b
)
23355 return (uint8x8_t
) __builtin_aarch64_lshrv8qi ((int8x8_t
) __a
, __b
);
23358 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23359 vshr_n_u16 (uint16x4_t __a
, const int __b
)
23361 return (uint16x4_t
) __builtin_aarch64_lshrv4hi ((int16x4_t
) __a
, __b
);
23364 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23365 vshr_n_u32 (uint32x2_t __a
, const int __b
)
23367 return (uint32x2_t
) __builtin_aarch64_lshrv2si ((int32x2_t
) __a
, __b
);
23370 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23371 vshr_n_u64 (uint64x1_t __a
, const int __b
)
23373 return (uint64x1_t
) __builtin_aarch64_lshrdi ((int64x1_t
) __a
, __b
);
23376 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
23377 vshrq_n_s8 (int8x16_t __a
, const int __b
)
23379 return (int8x16_t
) __builtin_aarch64_ashrv16qi (__a
, __b
);
23382 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23383 vshrq_n_s16 (int16x8_t __a
, const int __b
)
23385 return (int16x8_t
) __builtin_aarch64_ashrv8hi (__a
, __b
);
23388 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23389 vshrq_n_s32 (int32x4_t __a
, const int __b
)
23391 return (int32x4_t
) __builtin_aarch64_ashrv4si (__a
, __b
);
23394 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23395 vshrq_n_s64 (int64x2_t __a
, const int __b
)
23397 return (int64x2_t
) __builtin_aarch64_ashrv2di (__a
, __b
);
23400 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23401 vshrq_n_u8 (uint8x16_t __a
, const int __b
)
23403 return (uint8x16_t
) __builtin_aarch64_lshrv16qi ((int8x16_t
) __a
, __b
);
23406 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23407 vshrq_n_u16 (uint16x8_t __a
, const int __b
)
23409 return (uint16x8_t
) __builtin_aarch64_lshrv8hi ((int16x8_t
) __a
, __b
);
23412 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23413 vshrq_n_u32 (uint32x4_t __a
, const int __b
)
23415 return (uint32x4_t
) __builtin_aarch64_lshrv4si ((int32x4_t
) __a
, __b
);
23418 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23419 vshrq_n_u64 (uint64x2_t __a
, const int __b
)
23421 return (uint64x2_t
) __builtin_aarch64_lshrv2di ((int64x2_t
) __a
, __b
);
23424 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23425 vshrd_n_s64 (int64x1_t __a
, const int __b
)
23427 return (int64x1_t
) __builtin_aarch64_ashrdi (__a
, __b
);
23430 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23431 vshrd_n_u64 (uint64x1_t __a
, const int __b
)
23433 return (uint64x1_t
) __builtin_aarch64_lshrdi (__a
, __b
);
23438 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
23439 vsli_n_s8 (int8x8_t __a
, int8x8_t __b
, const int __c
)
23441 return (int8x8_t
) __builtin_aarch64_ssli_nv8qi (__a
, __b
, __c
);
23444 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
23445 vsli_n_s16 (int16x4_t __a
, int16x4_t __b
, const int __c
)
23447 return (int16x4_t
) __builtin_aarch64_ssli_nv4hi (__a
, __b
, __c
);
23450 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
23451 vsli_n_s32 (int32x2_t __a
, int32x2_t __b
, const int __c
)
23453 return (int32x2_t
) __builtin_aarch64_ssli_nv2si (__a
, __b
, __c
);
23456 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23457 vsli_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
23459 return (int64x1_t
) __builtin_aarch64_ssli_ndi (__a
, __b
, __c
);
23462 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23463 vsli_n_u8 (uint8x8_t __a
, uint8x8_t __b
, const int __c
)
23465 return (uint8x8_t
) __builtin_aarch64_usli_nv8qi ((int8x8_t
) __a
,
23466 (int8x8_t
) __b
, __c
);
23469 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23470 vsli_n_u16 (uint16x4_t __a
, uint16x4_t __b
, const int __c
)
23472 return (uint16x4_t
) __builtin_aarch64_usli_nv4hi ((int16x4_t
) __a
,
23473 (int16x4_t
) __b
, __c
);
23476 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23477 vsli_n_u32 (uint32x2_t __a
, uint32x2_t __b
, const int __c
)
23479 return (uint32x2_t
) __builtin_aarch64_usli_nv2si ((int32x2_t
) __a
,
23480 (int32x2_t
) __b
, __c
);
23483 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23484 vsli_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
23486 return (uint64x1_t
) __builtin_aarch64_usli_ndi ((int64x1_t
) __a
,
23487 (int64x1_t
) __b
, __c
);
23490 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
23491 vsliq_n_s8 (int8x16_t __a
, int8x16_t __b
, const int __c
)
23493 return (int8x16_t
) __builtin_aarch64_ssli_nv16qi (__a
, __b
, __c
);
23496 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23497 vsliq_n_s16 (int16x8_t __a
, int16x8_t __b
, const int __c
)
23499 return (int16x8_t
) __builtin_aarch64_ssli_nv8hi (__a
, __b
, __c
);
23502 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23503 vsliq_n_s32 (int32x4_t __a
, int32x4_t __b
, const int __c
)
23505 return (int32x4_t
) __builtin_aarch64_ssli_nv4si (__a
, __b
, __c
);
23508 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23509 vsliq_n_s64 (int64x2_t __a
, int64x2_t __b
, const int __c
)
23511 return (int64x2_t
) __builtin_aarch64_ssli_nv2di (__a
, __b
, __c
);
23514 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23515 vsliq_n_u8 (uint8x16_t __a
, uint8x16_t __b
, const int __c
)
23517 return (uint8x16_t
) __builtin_aarch64_usli_nv16qi ((int8x16_t
) __a
,
23518 (int8x16_t
) __b
, __c
);
23521 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23522 vsliq_n_u16 (uint16x8_t __a
, uint16x8_t __b
, const int __c
)
23524 return (uint16x8_t
) __builtin_aarch64_usli_nv8hi ((int16x8_t
) __a
,
23525 (int16x8_t
) __b
, __c
);
23528 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23529 vsliq_n_u32 (uint32x4_t __a
, uint32x4_t __b
, const int __c
)
23531 return (uint32x4_t
) __builtin_aarch64_usli_nv4si ((int32x4_t
) __a
,
23532 (int32x4_t
) __b
, __c
);
23535 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23536 vsliq_n_u64 (uint64x2_t __a
, uint64x2_t __b
, const int __c
)
23538 return (uint64x2_t
) __builtin_aarch64_usli_nv2di ((int64x2_t
) __a
,
23539 (int64x2_t
) __b
, __c
);
23542 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23543 vslid_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
23545 return (int64x1_t
) __builtin_aarch64_ssli_ndi (__a
, __b
, __c
);
23548 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23549 vslid_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
23551 return (uint64x1_t
) __builtin_aarch64_usli_ndi (__a
, __b
, __c
);
23556 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23557 vsqadd_u8 (uint8x8_t __a
, int8x8_t __b
)
23559 return (uint8x8_t
) __builtin_aarch64_usqaddv8qi ((int8x8_t
) __a
,
23563 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23564 vsqadd_u16 (uint16x4_t __a
, int16x4_t __b
)
23566 return (uint16x4_t
) __builtin_aarch64_usqaddv4hi ((int16x4_t
) __a
,
23570 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23571 vsqadd_u32 (uint32x2_t __a
, int32x2_t __b
)
23573 return (uint32x2_t
) __builtin_aarch64_usqaddv2si ((int32x2_t
) __a
,
23577 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23578 vsqadd_u64 (uint64x1_t __a
, int64x1_t __b
)
23580 return (uint64x1_t
) __builtin_aarch64_usqadddi ((int64x1_t
) __a
, __b
);
23583 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23584 vsqaddq_u8 (uint8x16_t __a
, int8x16_t __b
)
23586 return (uint8x16_t
) __builtin_aarch64_usqaddv16qi ((int8x16_t
) __a
,
23590 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23591 vsqaddq_u16 (uint16x8_t __a
, int16x8_t __b
)
23593 return (uint16x8_t
) __builtin_aarch64_usqaddv8hi ((int16x8_t
) __a
,
23597 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23598 vsqaddq_u32 (uint32x4_t __a
, int32x4_t __b
)
23600 return (uint32x4_t
) __builtin_aarch64_usqaddv4si ((int32x4_t
) __a
,
23604 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23605 vsqaddq_u64 (uint64x2_t __a
, int64x2_t __b
)
23607 return (uint64x2_t
) __builtin_aarch64_usqaddv2di ((int64x2_t
) __a
,
23611 __extension__
static __inline uint8x1_t
__attribute__ ((__always_inline__
))
23612 vsqaddb_u8 (uint8x1_t __a
, int8x1_t __b
)
23614 return (uint8x1_t
) __builtin_aarch64_usqaddqi ((int8x1_t
) __a
, __b
);
23617 __extension__
static __inline uint16x1_t
__attribute__ ((__always_inline__
))
23618 vsqaddh_u16 (uint16x1_t __a
, int16x1_t __b
)
23620 return (uint16x1_t
) __builtin_aarch64_usqaddhi ((int16x1_t
) __a
, __b
);
23623 __extension__
static __inline uint32x1_t
__attribute__ ((__always_inline__
))
23624 vsqadds_u32 (uint32x1_t __a
, int32x1_t __b
)
23626 return (uint32x1_t
) __builtin_aarch64_usqaddsi ((int32x1_t
) __a
, __b
);
23629 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23630 vsqaddd_u64 (uint64x1_t __a
, int64x1_t __b
)
23632 return (uint64x1_t
) __builtin_aarch64_usqadddi ((int64x1_t
) __a
, __b
);
23636 __extension__
static __inline float32x2_t
__attribute__ ((__always_inline__
))
23637 vsqrt_f32 (float32x2_t a
)
23639 return __builtin_aarch64_sqrtv2sf (a
);
23642 __extension__
static __inline float32x4_t
__attribute__ ((__always_inline__
))
23643 vsqrtq_f32 (float32x4_t a
)
23645 return __builtin_aarch64_sqrtv4sf (a
);
23648 __extension__
static __inline float64x2_t
__attribute__ ((__always_inline__
))
23649 vsqrtq_f64 (float64x2_t a
)
23651 return __builtin_aarch64_sqrtv2df (a
);
23656 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
23657 vsra_n_s8 (int8x8_t __a
, int8x8_t __b
, const int __c
)
23659 return (int8x8_t
) __builtin_aarch64_ssra_nv8qi (__a
, __b
, __c
);
23662 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
23663 vsra_n_s16 (int16x4_t __a
, int16x4_t __b
, const int __c
)
23665 return (int16x4_t
) __builtin_aarch64_ssra_nv4hi (__a
, __b
, __c
);
23668 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
23669 vsra_n_s32 (int32x2_t __a
, int32x2_t __b
, const int __c
)
23671 return (int32x2_t
) __builtin_aarch64_ssra_nv2si (__a
, __b
, __c
);
23674 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23675 vsra_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
23677 return (int64x1_t
) __builtin_aarch64_ssra_ndi (__a
, __b
, __c
);
23680 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23681 vsra_n_u8 (uint8x8_t __a
, uint8x8_t __b
, const int __c
)
23683 return (uint8x8_t
) __builtin_aarch64_usra_nv8qi ((int8x8_t
) __a
,
23684 (int8x8_t
) __b
, __c
);
23687 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23688 vsra_n_u16 (uint16x4_t __a
, uint16x4_t __b
, const int __c
)
23690 return (uint16x4_t
) __builtin_aarch64_usra_nv4hi ((int16x4_t
) __a
,
23691 (int16x4_t
) __b
, __c
);
23694 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23695 vsra_n_u32 (uint32x2_t __a
, uint32x2_t __b
, const int __c
)
23697 return (uint32x2_t
) __builtin_aarch64_usra_nv2si ((int32x2_t
) __a
,
23698 (int32x2_t
) __b
, __c
);
23701 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23702 vsra_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
23704 return (uint64x1_t
) __builtin_aarch64_usra_ndi ((int64x1_t
) __a
,
23705 (int64x1_t
) __b
, __c
);
23708 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
23709 vsraq_n_s8 (int8x16_t __a
, int8x16_t __b
, const int __c
)
23711 return (int8x16_t
) __builtin_aarch64_ssra_nv16qi (__a
, __b
, __c
);
23714 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23715 vsraq_n_s16 (int16x8_t __a
, int16x8_t __b
, const int __c
)
23717 return (int16x8_t
) __builtin_aarch64_ssra_nv8hi (__a
, __b
, __c
);
23720 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23721 vsraq_n_s32 (int32x4_t __a
, int32x4_t __b
, const int __c
)
23723 return (int32x4_t
) __builtin_aarch64_ssra_nv4si (__a
, __b
, __c
);
23726 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23727 vsraq_n_s64 (int64x2_t __a
, int64x2_t __b
, const int __c
)
23729 return (int64x2_t
) __builtin_aarch64_ssra_nv2di (__a
, __b
, __c
);
23732 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23733 vsraq_n_u8 (uint8x16_t __a
, uint8x16_t __b
, const int __c
)
23735 return (uint8x16_t
) __builtin_aarch64_usra_nv16qi ((int8x16_t
) __a
,
23736 (int8x16_t
) __b
, __c
);
23739 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23740 vsraq_n_u16 (uint16x8_t __a
, uint16x8_t __b
, const int __c
)
23742 return (uint16x8_t
) __builtin_aarch64_usra_nv8hi ((int16x8_t
) __a
,
23743 (int16x8_t
) __b
, __c
);
23746 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23747 vsraq_n_u32 (uint32x4_t __a
, uint32x4_t __b
, const int __c
)
23749 return (uint32x4_t
) __builtin_aarch64_usra_nv4si ((int32x4_t
) __a
,
23750 (int32x4_t
) __b
, __c
);
23753 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23754 vsraq_n_u64 (uint64x2_t __a
, uint64x2_t __b
, const int __c
)
23756 return (uint64x2_t
) __builtin_aarch64_usra_nv2di ((int64x2_t
) __a
,
23757 (int64x2_t
) __b
, __c
);
23760 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23761 vsrad_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
23763 return (int64x1_t
) __builtin_aarch64_ssra_ndi (__a
, __b
, __c
);
23766 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23767 vsrad_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
23769 return (uint64x1_t
) __builtin_aarch64_usra_ndi (__a
, __b
, __c
);
23774 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
23775 vsri_n_s8 (int8x8_t __a
, int8x8_t __b
, const int __c
)
23777 return (int8x8_t
) __builtin_aarch64_ssri_nv8qi (__a
, __b
, __c
);
23780 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
23781 vsri_n_s16 (int16x4_t __a
, int16x4_t __b
, const int __c
)
23783 return (int16x4_t
) __builtin_aarch64_ssri_nv4hi (__a
, __b
, __c
);
23786 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
23787 vsri_n_s32 (int32x2_t __a
, int32x2_t __b
, const int __c
)
23789 return (int32x2_t
) __builtin_aarch64_ssri_nv2si (__a
, __b
, __c
);
23792 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23793 vsri_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
23795 return (int64x1_t
) __builtin_aarch64_ssri_ndi (__a
, __b
, __c
);
23798 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
23799 vsri_n_u8 (uint8x8_t __a
, uint8x8_t __b
, const int __c
)
23801 return (uint8x8_t
) __builtin_aarch64_usri_nv8qi ((int8x8_t
) __a
,
23802 (int8x8_t
) __b
, __c
);
23805 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
23806 vsri_n_u16 (uint16x4_t __a
, uint16x4_t __b
, const int __c
)
23808 return (uint16x4_t
) __builtin_aarch64_usri_nv4hi ((int16x4_t
) __a
,
23809 (int16x4_t
) __b
, __c
);
23812 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
23813 vsri_n_u32 (uint32x2_t __a
, uint32x2_t __b
, const int __c
)
23815 return (uint32x2_t
) __builtin_aarch64_usri_nv2si ((int32x2_t
) __a
,
23816 (int32x2_t
) __b
, __c
);
23819 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23820 vsri_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
23822 return (uint64x1_t
) __builtin_aarch64_usri_ndi ((int64x1_t
) __a
,
23823 (int64x1_t
) __b
, __c
);
23826 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
23827 vsriq_n_s8 (int8x16_t __a
, int8x16_t __b
, const int __c
)
23829 return (int8x16_t
) __builtin_aarch64_ssri_nv16qi (__a
, __b
, __c
);
23832 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
23833 vsriq_n_s16 (int16x8_t __a
, int16x8_t __b
, const int __c
)
23835 return (int16x8_t
) __builtin_aarch64_ssri_nv8hi (__a
, __b
, __c
);
23838 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
23839 vsriq_n_s32 (int32x4_t __a
, int32x4_t __b
, const int __c
)
23841 return (int32x4_t
) __builtin_aarch64_ssri_nv4si (__a
, __b
, __c
);
23844 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
23845 vsriq_n_s64 (int64x2_t __a
, int64x2_t __b
, const int __c
)
23847 return (int64x2_t
) __builtin_aarch64_ssri_nv2di (__a
, __b
, __c
);
23850 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
23851 vsriq_n_u8 (uint8x16_t __a
, uint8x16_t __b
, const int __c
)
23853 return (uint8x16_t
) __builtin_aarch64_usri_nv16qi ((int8x16_t
) __a
,
23854 (int8x16_t
) __b
, __c
);
23857 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
23858 vsriq_n_u16 (uint16x8_t __a
, uint16x8_t __b
, const int __c
)
23860 return (uint16x8_t
) __builtin_aarch64_usri_nv8hi ((int16x8_t
) __a
,
23861 (int16x8_t
) __b
, __c
);
23864 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
23865 vsriq_n_u32 (uint32x4_t __a
, uint32x4_t __b
, const int __c
)
23867 return (uint32x4_t
) __builtin_aarch64_usri_nv4si ((int32x4_t
) __a
,
23868 (int32x4_t
) __b
, __c
);
23871 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
23872 vsriq_n_u64 (uint64x2_t __a
, uint64x2_t __b
, const int __c
)
23874 return (uint64x2_t
) __builtin_aarch64_usri_nv2di ((int64x2_t
) __a
,
23875 (int64x2_t
) __b
, __c
);
23878 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
23879 vsrid_n_s64 (int64x1_t __a
, int64x1_t __b
, const int __c
)
23881 return (int64x1_t
) __builtin_aarch64_ssri_ndi (__a
, __b
, __c
);
23884 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
23885 vsrid_n_u64 (uint64x1_t __a
, uint64x1_t __b
, const int __c
)
23887 return (uint64x1_t
) __builtin_aarch64_usri_ndi (__a
, __b
, __c
);
23892 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23893 vst1_f32 (float32_t
*a
, float32x2_t b
)
23895 __builtin_aarch64_st1v2sf ((__builtin_aarch64_simd_sf
*) a
, b
);
23898 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23899 vst1_f64 (float64_t
*a
, float64x1_t b
)
23904 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23905 vst1_p8 (poly8_t
*a
, poly8x8_t b
)
23907 __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi
*) a
,
23911 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23912 vst1_p16 (poly16_t
*a
, poly16x4_t b
)
23914 __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi
*) a
,
23918 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23919 vst1_s8 (int8_t *a
, int8x8_t b
)
23921 __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi
*) a
, b
);
23924 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23925 vst1_s16 (int16_t *a
, int16x4_t b
)
23927 __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi
*) a
, b
);
23930 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23931 vst1_s32 (int32_t *a
, int32x2_t b
)
23933 __builtin_aarch64_st1v2si ((__builtin_aarch64_simd_si
*) a
, b
);
23936 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23937 vst1_s64 (int64_t *a
, int64x1_t b
)
23942 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23943 vst1_u8 (uint8_t *a
, uint8x8_t b
)
23945 __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi
*) a
,
23949 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23950 vst1_u16 (uint16_t *a
, uint16x4_t b
)
23952 __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi
*) a
,
23956 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23957 vst1_u32 (uint32_t *a
, uint32x2_t b
)
23959 __builtin_aarch64_st1v2si ((__builtin_aarch64_simd_si
*) a
,
23963 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23964 vst1_u64 (uint64_t *a
, uint64x1_t b
)
23969 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23970 vst1q_f32 (float32_t
*a
, float32x4_t b
)
23972 __builtin_aarch64_st1v4sf ((__builtin_aarch64_simd_sf
*) a
, b
);
23975 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23976 vst1q_f64 (float64_t
*a
, float64x2_t b
)
23978 __builtin_aarch64_st1v2df ((__builtin_aarch64_simd_df
*) a
, b
);
23983 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23984 vst1q_p8 (poly8_t
*a
, poly8x16_t b
)
23986 __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi
*) a
,
23990 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23991 vst1q_p16 (poly16_t
*a
, poly16x8_t b
)
23993 __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi
*) a
,
23997 __extension__
static __inline
void __attribute__ ((__always_inline__
))
23998 vst1q_s8 (int8_t *a
, int8x16_t b
)
24000 __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi
*) a
, b
);
24003 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24004 vst1q_s16 (int16_t *a
, int16x8_t b
)
24006 __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi
*) a
, b
);
24009 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24010 vst1q_s32 (int32_t *a
, int32x4_t b
)
24012 __builtin_aarch64_st1v4si ((__builtin_aarch64_simd_si
*) a
, b
);
24015 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24016 vst1q_s64 (int64_t *a
, int64x2_t b
)
24018 __builtin_aarch64_st1v2di ((__builtin_aarch64_simd_di
*) a
, b
);
24021 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24022 vst1q_u8 (uint8_t *a
, uint8x16_t b
)
24024 __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi
*) a
,
24028 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24029 vst1q_u16 (uint16_t *a
, uint16x8_t b
)
24031 __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi
*) a
,
24035 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24036 vst1q_u32 (uint32_t *a
, uint32x4_t b
)
24038 __builtin_aarch64_st1v4si ((__builtin_aarch64_simd_si
*) a
,
24042 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24043 vst1q_u64 (uint64_t *a
, uint64x2_t b
)
24045 __builtin_aarch64_st1v2di ((__builtin_aarch64_simd_di
*) a
,
24051 __extension__
static __inline
void
24052 vst2_s64 (int64_t * __a
, int64x1x2_t val
)
24054 __builtin_aarch64_simd_oi __o
;
24056 temp
.val
[0] = vcombine_s64 (val
.val
[0], vcreate_s64 (__AARCH64_INT64_C (0)));
24057 temp
.val
[1] = vcombine_s64 (val
.val
[1], vcreate_s64 (__AARCH64_INT64_C (0)));
24058 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) temp
.val
[0], 0);
24059 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) temp
.val
[1], 1);
24060 __builtin_aarch64_st2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24063 __extension__
static __inline
void
24064 vst2_u64 (uint64_t * __a
, uint64x1x2_t val
)
24066 __builtin_aarch64_simd_oi __o
;
24068 temp
.val
[0] = vcombine_u64 (val
.val
[0], vcreate_u64 (__AARCH64_UINT64_C (0)));
24069 temp
.val
[1] = vcombine_u64 (val
.val
[1], vcreate_u64 (__AARCH64_UINT64_C (0)));
24070 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) temp
.val
[0], 0);
24071 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) temp
.val
[1], 1);
24072 __builtin_aarch64_st2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24075 __extension__
static __inline
void
24076 vst2_f64 (float64_t
* __a
, float64x1x2_t val
)
24078 __builtin_aarch64_simd_oi __o
;
24079 float64x2x2_t temp
;
24080 temp
.val
[0] = vcombine_f64 (val
.val
[0], vcreate_f64 (__AARCH64_UINT64_C (0)));
24081 temp
.val
[1] = vcombine_f64 (val
.val
[1], vcreate_f64 (__AARCH64_UINT64_C (0)));
24082 __o
= __builtin_aarch64_set_qregoiv2df (__o
, (float64x2_t
) temp
.val
[0], 0);
24083 __o
= __builtin_aarch64_set_qregoiv2df (__o
, (float64x2_t
) temp
.val
[1], 1);
24084 __builtin_aarch64_st2df ((__builtin_aarch64_simd_df
*) __a
, __o
);
24087 __extension__
static __inline
void
24088 vst2_s8 (int8_t * __a
, int8x8x2_t val
)
24090 __builtin_aarch64_simd_oi __o
;
24092 temp
.val
[0] = vcombine_s8 (val
.val
[0], vcreate_s8 (__AARCH64_INT64_C (0)));
24093 temp
.val
[1] = vcombine_s8 (val
.val
[1], vcreate_s8 (__AARCH64_INT64_C (0)));
24094 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24095 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24096 __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24099 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24100 vst2_p8 (poly8_t
* __a
, poly8x8x2_t val
)
24102 __builtin_aarch64_simd_oi __o
;
24104 temp
.val
[0] = vcombine_p8 (val
.val
[0], vcreate_p8 (__AARCH64_UINT64_C (0)));
24105 temp
.val
[1] = vcombine_p8 (val
.val
[1], vcreate_p8 (__AARCH64_UINT64_C (0)));
24106 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24107 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24108 __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24111 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24112 vst2_s16 (int16_t * __a
, int16x4x2_t val
)
24114 __builtin_aarch64_simd_oi __o
;
24116 temp
.val
[0] = vcombine_s16 (val
.val
[0], vcreate_s16 (__AARCH64_INT64_C (0)));
24117 temp
.val
[1] = vcombine_s16 (val
.val
[1], vcreate_s16 (__AARCH64_INT64_C (0)));
24118 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24119 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24120 __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24123 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24124 vst2_p16 (poly16_t
* __a
, poly16x4x2_t val
)
24126 __builtin_aarch64_simd_oi __o
;
24128 temp
.val
[0] = vcombine_p16 (val
.val
[0], vcreate_p16 (__AARCH64_UINT64_C (0)));
24129 temp
.val
[1] = vcombine_p16 (val
.val
[1], vcreate_p16 (__AARCH64_UINT64_C (0)));
24130 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24131 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24132 __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24135 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24136 vst2_s32 (int32_t * __a
, int32x2x2_t val
)
24138 __builtin_aarch64_simd_oi __o
;
24140 temp
.val
[0] = vcombine_s32 (val
.val
[0], vcreate_s32 (__AARCH64_INT64_C (0)));
24141 temp
.val
[1] = vcombine_s32 (val
.val
[1], vcreate_s32 (__AARCH64_INT64_C (0)));
24142 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) temp
.val
[0], 0);
24143 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) temp
.val
[1], 1);
24144 __builtin_aarch64_st2v2si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24147 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24148 vst2_u8 (uint8_t * __a
, uint8x8x2_t val
)
24150 __builtin_aarch64_simd_oi __o
;
24152 temp
.val
[0] = vcombine_u8 (val
.val
[0], vcreate_u8 (__AARCH64_UINT64_C (0)));
24153 temp
.val
[1] = vcombine_u8 (val
.val
[1], vcreate_u8 (__AARCH64_UINT64_C (0)));
24154 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24155 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24156 __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24159 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24160 vst2_u16 (uint16_t * __a
, uint16x4x2_t val
)
24162 __builtin_aarch64_simd_oi __o
;
24164 temp
.val
[0] = vcombine_u16 (val
.val
[0], vcreate_u16 (__AARCH64_UINT64_C (0)));
24165 temp
.val
[1] = vcombine_u16 (val
.val
[1], vcreate_u16 (__AARCH64_UINT64_C (0)));
24166 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24167 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24168 __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24171 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24172 vst2_u32 (uint32_t * __a
, uint32x2x2_t val
)
24174 __builtin_aarch64_simd_oi __o
;
24176 temp
.val
[0] = vcombine_u32 (val
.val
[0], vcreate_u32 (__AARCH64_UINT64_C (0)));
24177 temp
.val
[1] = vcombine_u32 (val
.val
[1], vcreate_u32 (__AARCH64_UINT64_C (0)));
24178 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) temp
.val
[0], 0);
24179 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) temp
.val
[1], 1);
24180 __builtin_aarch64_st2v2si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24183 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24184 vst2_f32 (float32_t
* __a
, float32x2x2_t val
)
24186 __builtin_aarch64_simd_oi __o
;
24187 float32x4x2_t temp
;
24188 temp
.val
[0] = vcombine_f32 (val
.val
[0], vcreate_f32 (__AARCH64_UINT64_C (0)));
24189 temp
.val
[1] = vcombine_f32 (val
.val
[1], vcreate_f32 (__AARCH64_UINT64_C (0)));
24190 __o
= __builtin_aarch64_set_qregoiv4sf (__o
, (float32x4_t
) temp
.val
[0], 0);
24191 __o
= __builtin_aarch64_set_qregoiv4sf (__o
, (float32x4_t
) temp
.val
[1], 1);
24192 __builtin_aarch64_st2v2sf ((__builtin_aarch64_simd_sf
*) __a
, __o
);
24195 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24196 vst2q_s8 (int8_t * __a
, int8x16x2_t val
)
24198 __builtin_aarch64_simd_oi __o
;
24199 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24200 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24201 __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24204 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24205 vst2q_p8 (poly8_t
* __a
, poly8x16x2_t val
)
24207 __builtin_aarch64_simd_oi __o
;
24208 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24209 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24210 __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24213 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24214 vst2q_s16 (int16_t * __a
, int16x8x2_t val
)
24216 __builtin_aarch64_simd_oi __o
;
24217 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24218 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24219 __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24222 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24223 vst2q_p16 (poly16_t
* __a
, poly16x8x2_t val
)
24225 __builtin_aarch64_simd_oi __o
;
24226 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24227 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24228 __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24231 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24232 vst2q_s32 (int32_t * __a
, int32x4x2_t val
)
24234 __builtin_aarch64_simd_oi __o
;
24235 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) val
.val
[0], 0);
24236 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) val
.val
[1], 1);
24237 __builtin_aarch64_st2v4si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24240 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24241 vst2q_s64 (int64_t * __a
, int64x2x2_t val
)
24243 __builtin_aarch64_simd_oi __o
;
24244 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) val
.val
[0], 0);
24245 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) val
.val
[1], 1);
24246 __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24249 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24250 vst2q_u8 (uint8_t * __a
, uint8x16x2_t val
)
24252 __builtin_aarch64_simd_oi __o
;
24253 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24254 __o
= __builtin_aarch64_set_qregoiv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24255 __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24258 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24259 vst2q_u16 (uint16_t * __a
, uint16x8x2_t val
)
24261 __builtin_aarch64_simd_oi __o
;
24262 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24263 __o
= __builtin_aarch64_set_qregoiv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24264 __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24267 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24268 vst2q_u32 (uint32_t * __a
, uint32x4x2_t val
)
24270 __builtin_aarch64_simd_oi __o
;
24271 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) val
.val
[0], 0);
24272 __o
= __builtin_aarch64_set_qregoiv4si (__o
, (int32x4_t
) val
.val
[1], 1);
24273 __builtin_aarch64_st2v4si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24276 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24277 vst2q_u64 (uint64_t * __a
, uint64x2x2_t val
)
24279 __builtin_aarch64_simd_oi __o
;
24280 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) val
.val
[0], 0);
24281 __o
= __builtin_aarch64_set_qregoiv2di (__o
, (int64x2_t
) val
.val
[1], 1);
24282 __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24285 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24286 vst2q_f32 (float32_t
* __a
, float32x4x2_t val
)
24288 __builtin_aarch64_simd_oi __o
;
24289 __o
= __builtin_aarch64_set_qregoiv4sf (__o
, (float32x4_t
) val
.val
[0], 0);
24290 __o
= __builtin_aarch64_set_qregoiv4sf (__o
, (float32x4_t
) val
.val
[1], 1);
24291 __builtin_aarch64_st2v4sf ((__builtin_aarch64_simd_sf
*) __a
, __o
);
24294 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24295 vst2q_f64 (float64_t
* __a
, float64x2x2_t val
)
24297 __builtin_aarch64_simd_oi __o
;
24298 __o
= __builtin_aarch64_set_qregoiv2df (__o
, (float64x2_t
) val
.val
[0], 0);
24299 __o
= __builtin_aarch64_set_qregoiv2df (__o
, (float64x2_t
) val
.val
[1], 1);
24300 __builtin_aarch64_st2v2df ((__builtin_aarch64_simd_df
*) __a
, __o
);
24303 __extension__
static __inline
void
24304 vst3_s64 (int64_t * __a
, int64x1x3_t val
)
24306 __builtin_aarch64_simd_ci __o
;
24308 temp
.val
[0] = vcombine_s64 (val
.val
[0], vcreate_s64 (__AARCH64_INT64_C (0)));
24309 temp
.val
[1] = vcombine_s64 (val
.val
[1], vcreate_s64 (__AARCH64_INT64_C (0)));
24310 temp
.val
[2] = vcombine_s64 (val
.val
[2], vcreate_s64 (__AARCH64_INT64_C (0)));
24311 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) temp
.val
[0], 0);
24312 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) temp
.val
[1], 1);
24313 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) temp
.val
[2], 2);
24314 __builtin_aarch64_st3di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24317 __extension__
static __inline
void
24318 vst3_u64 (uint64_t * __a
, uint64x1x3_t val
)
24320 __builtin_aarch64_simd_ci __o
;
24322 temp
.val
[0] = vcombine_u64 (val
.val
[0], vcreate_u64 (__AARCH64_UINT64_C (0)));
24323 temp
.val
[1] = vcombine_u64 (val
.val
[1], vcreate_u64 (__AARCH64_UINT64_C (0)));
24324 temp
.val
[2] = vcombine_u64 (val
.val
[2], vcreate_u64 (__AARCH64_UINT64_C (0)));
24325 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) temp
.val
[0], 0);
24326 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) temp
.val
[1], 1);
24327 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) temp
.val
[2], 2);
24328 __builtin_aarch64_st3di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24331 __extension__
static __inline
void
24332 vst3_f64 (float64_t
* __a
, float64x1x3_t val
)
24334 __builtin_aarch64_simd_ci __o
;
24335 float64x2x3_t temp
;
24336 temp
.val
[0] = vcombine_f64 (val
.val
[0], vcreate_f64 (__AARCH64_UINT64_C (0)));
24337 temp
.val
[1] = vcombine_f64 (val
.val
[1], vcreate_f64 (__AARCH64_UINT64_C (0)));
24338 temp
.val
[2] = vcombine_f64 (val
.val
[2], vcreate_f64 (__AARCH64_UINT64_C (0)));
24339 __o
= __builtin_aarch64_set_qregciv2df (__o
, (float64x2_t
) temp
.val
[0], 0);
24340 __o
= __builtin_aarch64_set_qregciv2df (__o
, (float64x2_t
) temp
.val
[1], 1);
24341 __o
= __builtin_aarch64_set_qregciv2df (__o
, (float64x2_t
) temp
.val
[2], 2);
24342 __builtin_aarch64_st3df ((__builtin_aarch64_simd_df
*) __a
, __o
);
24345 __extension__
static __inline
void
24346 vst3_s8 (int8_t * __a
, int8x8x3_t val
)
24348 __builtin_aarch64_simd_ci __o
;
24350 temp
.val
[0] = vcombine_s8 (val
.val
[0], vcreate_s8 (__AARCH64_INT64_C (0)));
24351 temp
.val
[1] = vcombine_s8 (val
.val
[1], vcreate_s8 (__AARCH64_INT64_C (0)));
24352 temp
.val
[2] = vcombine_s8 (val
.val
[2], vcreate_s8 (__AARCH64_INT64_C (0)));
24353 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24354 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24355 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[2], 2);
24356 __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24359 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24360 vst3_p8 (poly8_t
* __a
, poly8x8x3_t val
)
24362 __builtin_aarch64_simd_ci __o
;
24364 temp
.val
[0] = vcombine_p8 (val
.val
[0], vcreate_p8 (__AARCH64_UINT64_C (0)));
24365 temp
.val
[1] = vcombine_p8 (val
.val
[1], vcreate_p8 (__AARCH64_UINT64_C (0)));
24366 temp
.val
[2] = vcombine_p8 (val
.val
[2], vcreate_p8 (__AARCH64_UINT64_C (0)));
24367 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24368 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24369 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[2], 2);
24370 __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24373 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24374 vst3_s16 (int16_t * __a
, int16x4x3_t val
)
24376 __builtin_aarch64_simd_ci __o
;
24378 temp
.val
[0] = vcombine_s16 (val
.val
[0], vcreate_s16 (__AARCH64_INT64_C (0)));
24379 temp
.val
[1] = vcombine_s16 (val
.val
[1], vcreate_s16 (__AARCH64_INT64_C (0)));
24380 temp
.val
[2] = vcombine_s16 (val
.val
[2], vcreate_s16 (__AARCH64_INT64_C (0)));
24381 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24382 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24383 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[2], 2);
24384 __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24387 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24388 vst3_p16 (poly16_t
* __a
, poly16x4x3_t val
)
24390 __builtin_aarch64_simd_ci __o
;
24392 temp
.val
[0] = vcombine_p16 (val
.val
[0], vcreate_p16 (__AARCH64_UINT64_C (0)));
24393 temp
.val
[1] = vcombine_p16 (val
.val
[1], vcreate_p16 (__AARCH64_UINT64_C (0)));
24394 temp
.val
[2] = vcombine_p16 (val
.val
[2], vcreate_p16 (__AARCH64_UINT64_C (0)));
24395 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24396 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24397 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[2], 2);
24398 __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24401 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24402 vst3_s32 (int32_t * __a
, int32x2x3_t val
)
24404 __builtin_aarch64_simd_ci __o
;
24406 temp
.val
[0] = vcombine_s32 (val
.val
[0], vcreate_s32 (__AARCH64_INT64_C (0)));
24407 temp
.val
[1] = vcombine_s32 (val
.val
[1], vcreate_s32 (__AARCH64_INT64_C (0)));
24408 temp
.val
[2] = vcombine_s32 (val
.val
[2], vcreate_s32 (__AARCH64_INT64_C (0)));
24409 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) temp
.val
[0], 0);
24410 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) temp
.val
[1], 1);
24411 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) temp
.val
[2], 2);
24412 __builtin_aarch64_st3v2si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24415 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24416 vst3_u8 (uint8_t * __a
, uint8x8x3_t val
)
24418 __builtin_aarch64_simd_ci __o
;
24420 temp
.val
[0] = vcombine_u8 (val
.val
[0], vcreate_u8 (__AARCH64_UINT64_C (0)));
24421 temp
.val
[1] = vcombine_u8 (val
.val
[1], vcreate_u8 (__AARCH64_UINT64_C (0)));
24422 temp
.val
[2] = vcombine_u8 (val
.val
[2], vcreate_u8 (__AARCH64_UINT64_C (0)));
24423 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24424 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24425 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) temp
.val
[2], 2);
24426 __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24429 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24430 vst3_u16 (uint16_t * __a
, uint16x4x3_t val
)
24432 __builtin_aarch64_simd_ci __o
;
24434 temp
.val
[0] = vcombine_u16 (val
.val
[0], vcreate_u16 (__AARCH64_UINT64_C (0)));
24435 temp
.val
[1] = vcombine_u16 (val
.val
[1], vcreate_u16 (__AARCH64_UINT64_C (0)));
24436 temp
.val
[2] = vcombine_u16 (val
.val
[2], vcreate_u16 (__AARCH64_UINT64_C (0)));
24437 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24438 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24439 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) temp
.val
[2], 2);
24440 __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24443 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24444 vst3_u32 (uint32_t * __a
, uint32x2x3_t val
)
24446 __builtin_aarch64_simd_ci __o
;
24448 temp
.val
[0] = vcombine_u32 (val
.val
[0], vcreate_u32 (__AARCH64_UINT64_C (0)));
24449 temp
.val
[1] = vcombine_u32 (val
.val
[1], vcreate_u32 (__AARCH64_UINT64_C (0)));
24450 temp
.val
[2] = vcombine_u32 (val
.val
[2], vcreate_u32 (__AARCH64_UINT64_C (0)));
24451 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) temp
.val
[0], 0);
24452 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) temp
.val
[1], 1);
24453 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) temp
.val
[2], 2);
24454 __builtin_aarch64_st3v2si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24457 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24458 vst3_f32 (float32_t
* __a
, float32x2x3_t val
)
24460 __builtin_aarch64_simd_ci __o
;
24461 float32x4x3_t temp
;
24462 temp
.val
[0] = vcombine_f32 (val
.val
[0], vcreate_f32 (__AARCH64_UINT64_C (0)));
24463 temp
.val
[1] = vcombine_f32 (val
.val
[1], vcreate_f32 (__AARCH64_UINT64_C (0)));
24464 temp
.val
[2] = vcombine_f32 (val
.val
[2], vcreate_f32 (__AARCH64_UINT64_C (0)));
24465 __o
= __builtin_aarch64_set_qregciv4sf (__o
, (float32x4_t
) temp
.val
[0], 0);
24466 __o
= __builtin_aarch64_set_qregciv4sf (__o
, (float32x4_t
) temp
.val
[1], 1);
24467 __o
= __builtin_aarch64_set_qregciv4sf (__o
, (float32x4_t
) temp
.val
[2], 2);
24468 __builtin_aarch64_st3v2sf ((__builtin_aarch64_simd_sf
*) __a
, __o
);
24471 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24472 vst3q_s8 (int8_t * __a
, int8x16x3_t val
)
24474 __builtin_aarch64_simd_ci __o
;
24475 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24476 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24477 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[2], 2);
24478 __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24481 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24482 vst3q_p8 (poly8_t
* __a
, poly8x16x3_t val
)
24484 __builtin_aarch64_simd_ci __o
;
24485 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24486 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24487 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[2], 2);
24488 __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24491 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24492 vst3q_s16 (int16_t * __a
, int16x8x3_t val
)
24494 __builtin_aarch64_simd_ci __o
;
24495 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24496 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24497 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[2], 2);
24498 __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24501 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24502 vst3q_p16 (poly16_t
* __a
, poly16x8x3_t val
)
24504 __builtin_aarch64_simd_ci __o
;
24505 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24506 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24507 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[2], 2);
24508 __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24511 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24512 vst3q_s32 (int32_t * __a
, int32x4x3_t val
)
24514 __builtin_aarch64_simd_ci __o
;
24515 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) val
.val
[0], 0);
24516 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) val
.val
[1], 1);
24517 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) val
.val
[2], 2);
24518 __builtin_aarch64_st3v4si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24521 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24522 vst3q_s64 (int64_t * __a
, int64x2x3_t val
)
24524 __builtin_aarch64_simd_ci __o
;
24525 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) val
.val
[0], 0);
24526 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) val
.val
[1], 1);
24527 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) val
.val
[2], 2);
24528 __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24531 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24532 vst3q_u8 (uint8_t * __a
, uint8x16x3_t val
)
24534 __builtin_aarch64_simd_ci __o
;
24535 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24536 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24537 __o
= __builtin_aarch64_set_qregciv16qi (__o
, (int8x16_t
) val
.val
[2], 2);
24538 __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24541 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24542 vst3q_u16 (uint16_t * __a
, uint16x8x3_t val
)
24544 __builtin_aarch64_simd_ci __o
;
24545 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24546 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24547 __o
= __builtin_aarch64_set_qregciv8hi (__o
, (int16x8_t
) val
.val
[2], 2);
24548 __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24551 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24552 vst3q_u32 (uint32_t * __a
, uint32x4x3_t val
)
24554 __builtin_aarch64_simd_ci __o
;
24555 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) val
.val
[0], 0);
24556 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) val
.val
[1], 1);
24557 __o
= __builtin_aarch64_set_qregciv4si (__o
, (int32x4_t
) val
.val
[2], 2);
24558 __builtin_aarch64_st3v4si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24561 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24562 vst3q_u64 (uint64_t * __a
, uint64x2x3_t val
)
24564 __builtin_aarch64_simd_ci __o
;
24565 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) val
.val
[0], 0);
24566 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) val
.val
[1], 1);
24567 __o
= __builtin_aarch64_set_qregciv2di (__o
, (int64x2_t
) val
.val
[2], 2);
24568 __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24571 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24572 vst3q_f32 (float32_t
* __a
, float32x4x3_t val
)
24574 __builtin_aarch64_simd_ci __o
;
24575 __o
= __builtin_aarch64_set_qregciv4sf (__o
, (float32x4_t
) val
.val
[0], 0);
24576 __o
= __builtin_aarch64_set_qregciv4sf (__o
, (float32x4_t
) val
.val
[1], 1);
24577 __o
= __builtin_aarch64_set_qregciv4sf (__o
, (float32x4_t
) val
.val
[2], 2);
24578 __builtin_aarch64_st3v4sf ((__builtin_aarch64_simd_sf
*) __a
, __o
);
24581 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24582 vst3q_f64 (float64_t
* __a
, float64x2x3_t val
)
24584 __builtin_aarch64_simd_ci __o
;
24585 __o
= __builtin_aarch64_set_qregciv2df (__o
, (float64x2_t
) val
.val
[0], 0);
24586 __o
= __builtin_aarch64_set_qregciv2df (__o
, (float64x2_t
) val
.val
[1], 1);
24587 __o
= __builtin_aarch64_set_qregciv2df (__o
, (float64x2_t
) val
.val
[2], 2);
24588 __builtin_aarch64_st3v2df ((__builtin_aarch64_simd_df
*) __a
, __o
);
24591 __extension__
static __inline
void
24592 vst4_s64 (int64_t * __a
, int64x1x4_t val
)
24594 __builtin_aarch64_simd_xi __o
;
24596 temp
.val
[0] = vcombine_s64 (val
.val
[0], vcreate_s64 (__AARCH64_INT64_C (0)));
24597 temp
.val
[1] = vcombine_s64 (val
.val
[1], vcreate_s64 (__AARCH64_INT64_C (0)));
24598 temp
.val
[2] = vcombine_s64 (val
.val
[2], vcreate_s64 (__AARCH64_INT64_C (0)));
24599 temp
.val
[3] = vcombine_s64 (val
.val
[3], vcreate_s64 (__AARCH64_INT64_C (0)));
24600 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[0], 0);
24601 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[1], 1);
24602 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[2], 2);
24603 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[3], 3);
24604 __builtin_aarch64_st4di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24607 __extension__
static __inline
void
24608 vst4_u64 (uint64_t * __a
, uint64x1x4_t val
)
24610 __builtin_aarch64_simd_xi __o
;
24612 temp
.val
[0] = vcombine_u64 (val
.val
[0], vcreate_u64 (__AARCH64_UINT64_C (0)));
24613 temp
.val
[1] = vcombine_u64 (val
.val
[1], vcreate_u64 (__AARCH64_UINT64_C (0)));
24614 temp
.val
[2] = vcombine_u64 (val
.val
[2], vcreate_u64 (__AARCH64_UINT64_C (0)));
24615 temp
.val
[3] = vcombine_u64 (val
.val
[3], vcreate_u64 (__AARCH64_UINT64_C (0)));
24616 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[0], 0);
24617 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[1], 1);
24618 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[2], 2);
24619 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) temp
.val
[3], 3);
24620 __builtin_aarch64_st4di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24623 __extension__
static __inline
void
24624 vst4_f64 (float64_t
* __a
, float64x1x4_t val
)
24626 __builtin_aarch64_simd_xi __o
;
24627 float64x2x4_t temp
;
24628 temp
.val
[0] = vcombine_f64 (val
.val
[0], vcreate_f64 (__AARCH64_UINT64_C (0)));
24629 temp
.val
[1] = vcombine_f64 (val
.val
[1], vcreate_f64 (__AARCH64_UINT64_C (0)));
24630 temp
.val
[2] = vcombine_f64 (val
.val
[2], vcreate_f64 (__AARCH64_UINT64_C (0)));
24631 temp
.val
[3] = vcombine_f64 (val
.val
[3], vcreate_f64 (__AARCH64_UINT64_C (0)));
24632 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) temp
.val
[0], 0);
24633 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) temp
.val
[1], 1);
24634 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) temp
.val
[2], 2);
24635 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) temp
.val
[3], 3);
24636 __builtin_aarch64_st4df ((__builtin_aarch64_simd_df
*) __a
, __o
);
24639 __extension__
static __inline
void
24640 vst4_s8 (int8_t * __a
, int8x8x4_t val
)
24642 __builtin_aarch64_simd_xi __o
;
24644 temp
.val
[0] = vcombine_s8 (val
.val
[0], vcreate_s8 (__AARCH64_INT64_C (0)));
24645 temp
.val
[1] = vcombine_s8 (val
.val
[1], vcreate_s8 (__AARCH64_INT64_C (0)));
24646 temp
.val
[2] = vcombine_s8 (val
.val
[2], vcreate_s8 (__AARCH64_INT64_C (0)));
24647 temp
.val
[3] = vcombine_s8 (val
.val
[3], vcreate_s8 (__AARCH64_INT64_C (0)));
24648 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24649 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24650 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[2], 2);
24651 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[3], 3);
24652 __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24655 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24656 vst4_p8 (poly8_t
* __a
, poly8x8x4_t val
)
24658 __builtin_aarch64_simd_xi __o
;
24660 temp
.val
[0] = vcombine_p8 (val
.val
[0], vcreate_p8 (__AARCH64_UINT64_C (0)));
24661 temp
.val
[1] = vcombine_p8 (val
.val
[1], vcreate_p8 (__AARCH64_UINT64_C (0)));
24662 temp
.val
[2] = vcombine_p8 (val
.val
[2], vcreate_p8 (__AARCH64_UINT64_C (0)));
24663 temp
.val
[3] = vcombine_p8 (val
.val
[3], vcreate_p8 (__AARCH64_UINT64_C (0)));
24664 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24665 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24666 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[2], 2);
24667 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[3], 3);
24668 __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24671 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24672 vst4_s16 (int16_t * __a
, int16x4x4_t val
)
24674 __builtin_aarch64_simd_xi __o
;
24676 temp
.val
[0] = vcombine_s16 (val
.val
[0], vcreate_s16 (__AARCH64_INT64_C (0)));
24677 temp
.val
[1] = vcombine_s16 (val
.val
[1], vcreate_s16 (__AARCH64_INT64_C (0)));
24678 temp
.val
[2] = vcombine_s16 (val
.val
[2], vcreate_s16 (__AARCH64_INT64_C (0)));
24679 temp
.val
[3] = vcombine_s16 (val
.val
[3], vcreate_s16 (__AARCH64_INT64_C (0)));
24680 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24681 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24682 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[2], 2);
24683 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[3], 3);
24684 __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24687 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24688 vst4_p16 (poly16_t
* __a
, poly16x4x4_t val
)
24690 __builtin_aarch64_simd_xi __o
;
24692 temp
.val
[0] = vcombine_p16 (val
.val
[0], vcreate_p16 (__AARCH64_UINT64_C (0)));
24693 temp
.val
[1] = vcombine_p16 (val
.val
[1], vcreate_p16 (__AARCH64_UINT64_C (0)));
24694 temp
.val
[2] = vcombine_p16 (val
.val
[2], vcreate_p16 (__AARCH64_UINT64_C (0)));
24695 temp
.val
[3] = vcombine_p16 (val
.val
[3], vcreate_p16 (__AARCH64_UINT64_C (0)));
24696 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24697 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24698 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[2], 2);
24699 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[3], 3);
24700 __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24703 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24704 vst4_s32 (int32_t * __a
, int32x2x4_t val
)
24706 __builtin_aarch64_simd_xi __o
;
24708 temp
.val
[0] = vcombine_s32 (val
.val
[0], vcreate_s32 (__AARCH64_INT64_C (0)));
24709 temp
.val
[1] = vcombine_s32 (val
.val
[1], vcreate_s32 (__AARCH64_INT64_C (0)));
24710 temp
.val
[2] = vcombine_s32 (val
.val
[2], vcreate_s32 (__AARCH64_INT64_C (0)));
24711 temp
.val
[3] = vcombine_s32 (val
.val
[3], vcreate_s32 (__AARCH64_INT64_C (0)));
24712 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[0], 0);
24713 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[1], 1);
24714 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[2], 2);
24715 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[3], 3);
24716 __builtin_aarch64_st4v2si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24719 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24720 vst4_u8 (uint8_t * __a
, uint8x8x4_t val
)
24722 __builtin_aarch64_simd_xi __o
;
24724 temp
.val
[0] = vcombine_u8 (val
.val
[0], vcreate_u8 (__AARCH64_UINT64_C (0)));
24725 temp
.val
[1] = vcombine_u8 (val
.val
[1], vcreate_u8 (__AARCH64_UINT64_C (0)));
24726 temp
.val
[2] = vcombine_u8 (val
.val
[2], vcreate_u8 (__AARCH64_UINT64_C (0)));
24727 temp
.val
[3] = vcombine_u8 (val
.val
[3], vcreate_u8 (__AARCH64_UINT64_C (0)));
24728 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[0], 0);
24729 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[1], 1);
24730 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[2], 2);
24731 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) temp
.val
[3], 3);
24732 __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24735 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24736 vst4_u16 (uint16_t * __a
, uint16x4x4_t val
)
24738 __builtin_aarch64_simd_xi __o
;
24740 temp
.val
[0] = vcombine_u16 (val
.val
[0], vcreate_u16 (__AARCH64_UINT64_C (0)));
24741 temp
.val
[1] = vcombine_u16 (val
.val
[1], vcreate_u16 (__AARCH64_UINT64_C (0)));
24742 temp
.val
[2] = vcombine_u16 (val
.val
[2], vcreate_u16 (__AARCH64_UINT64_C (0)));
24743 temp
.val
[3] = vcombine_u16 (val
.val
[3], vcreate_u16 (__AARCH64_UINT64_C (0)));
24744 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[0], 0);
24745 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[1], 1);
24746 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[2], 2);
24747 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) temp
.val
[3], 3);
24748 __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24751 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24752 vst4_u32 (uint32_t * __a
, uint32x2x4_t val
)
24754 __builtin_aarch64_simd_xi __o
;
24756 temp
.val
[0] = vcombine_u32 (val
.val
[0], vcreate_u32 (__AARCH64_UINT64_C (0)));
24757 temp
.val
[1] = vcombine_u32 (val
.val
[1], vcreate_u32 (__AARCH64_UINT64_C (0)));
24758 temp
.val
[2] = vcombine_u32 (val
.val
[2], vcreate_u32 (__AARCH64_UINT64_C (0)));
24759 temp
.val
[3] = vcombine_u32 (val
.val
[3], vcreate_u32 (__AARCH64_UINT64_C (0)));
24760 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[0], 0);
24761 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[1], 1);
24762 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[2], 2);
24763 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) temp
.val
[3], 3);
24764 __builtin_aarch64_st4v2si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24767 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24768 vst4_f32 (float32_t
* __a
, float32x2x4_t val
)
24770 __builtin_aarch64_simd_xi __o
;
24771 float32x4x4_t temp
;
24772 temp
.val
[0] = vcombine_f32 (val
.val
[0], vcreate_f32 (__AARCH64_UINT64_C (0)));
24773 temp
.val
[1] = vcombine_f32 (val
.val
[1], vcreate_f32 (__AARCH64_UINT64_C (0)));
24774 temp
.val
[2] = vcombine_f32 (val
.val
[2], vcreate_f32 (__AARCH64_UINT64_C (0)));
24775 temp
.val
[3] = vcombine_f32 (val
.val
[3], vcreate_f32 (__AARCH64_UINT64_C (0)));
24776 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) temp
.val
[0], 0);
24777 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) temp
.val
[1], 1);
24778 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) temp
.val
[2], 2);
24779 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) temp
.val
[3], 3);
24780 __builtin_aarch64_st4v2sf ((__builtin_aarch64_simd_sf
*) __a
, __o
);
24783 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24784 vst4q_s8 (int8_t * __a
, int8x16x4_t val
)
24786 __builtin_aarch64_simd_xi __o
;
24787 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24788 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24789 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[2], 2);
24790 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[3], 3);
24791 __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24794 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24795 vst4q_p8 (poly8_t
* __a
, poly8x16x4_t val
)
24797 __builtin_aarch64_simd_xi __o
;
24798 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24799 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24800 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[2], 2);
24801 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[3], 3);
24802 __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24805 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24806 vst4q_s16 (int16_t * __a
, int16x8x4_t val
)
24808 __builtin_aarch64_simd_xi __o
;
24809 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24810 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24811 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[2], 2);
24812 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[3], 3);
24813 __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24816 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24817 vst4q_p16 (poly16_t
* __a
, poly16x8x4_t val
)
24819 __builtin_aarch64_simd_xi __o
;
24820 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24821 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24822 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[2], 2);
24823 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[3], 3);
24824 __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24827 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24828 vst4q_s32 (int32_t * __a
, int32x4x4_t val
)
24830 __builtin_aarch64_simd_xi __o
;
24831 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[0], 0);
24832 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[1], 1);
24833 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[2], 2);
24834 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[3], 3);
24835 __builtin_aarch64_st4v4si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24838 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24839 vst4q_s64 (int64_t * __a
, int64x2x4_t val
)
24841 __builtin_aarch64_simd_xi __o
;
24842 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[0], 0);
24843 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[1], 1);
24844 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[2], 2);
24845 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[3], 3);
24846 __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24849 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24850 vst4q_u8 (uint8_t * __a
, uint8x16x4_t val
)
24852 __builtin_aarch64_simd_xi __o
;
24853 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[0], 0);
24854 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[1], 1);
24855 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[2], 2);
24856 __o
= __builtin_aarch64_set_qregxiv16qi (__o
, (int8x16_t
) val
.val
[3], 3);
24857 __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi
*) __a
, __o
);
24860 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24861 vst4q_u16 (uint16_t * __a
, uint16x8x4_t val
)
24863 __builtin_aarch64_simd_xi __o
;
24864 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[0], 0);
24865 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[1], 1);
24866 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[2], 2);
24867 __o
= __builtin_aarch64_set_qregxiv8hi (__o
, (int16x8_t
) val
.val
[3], 3);
24868 __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi
*) __a
, __o
);
24871 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24872 vst4q_u32 (uint32_t * __a
, uint32x4x4_t val
)
24874 __builtin_aarch64_simd_xi __o
;
24875 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[0], 0);
24876 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[1], 1);
24877 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[2], 2);
24878 __o
= __builtin_aarch64_set_qregxiv4si (__o
, (int32x4_t
) val
.val
[3], 3);
24879 __builtin_aarch64_st4v4si ((__builtin_aarch64_simd_si
*) __a
, __o
);
24882 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24883 vst4q_u64 (uint64_t * __a
, uint64x2x4_t val
)
24885 __builtin_aarch64_simd_xi __o
;
24886 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[0], 0);
24887 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[1], 1);
24888 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[2], 2);
24889 __o
= __builtin_aarch64_set_qregxiv2di (__o
, (int64x2_t
) val
.val
[3], 3);
24890 __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di
*) __a
, __o
);
24893 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24894 vst4q_f32 (float32_t
* __a
, float32x4x4_t val
)
24896 __builtin_aarch64_simd_xi __o
;
24897 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) val
.val
[0], 0);
24898 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) val
.val
[1], 1);
24899 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) val
.val
[2], 2);
24900 __o
= __builtin_aarch64_set_qregxiv4sf (__o
, (float32x4_t
) val
.val
[3], 3);
24901 __builtin_aarch64_st4v4sf ((__builtin_aarch64_simd_sf
*) __a
, __o
);
24904 __extension__
static __inline
void __attribute__ ((__always_inline__
))
24905 vst4q_f64 (float64_t
* __a
, float64x2x4_t val
)
24907 __builtin_aarch64_simd_xi __o
;
24908 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) val
.val
[0], 0);
24909 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) val
.val
[1], 1);
24910 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) val
.val
[2], 2);
24911 __o
= __builtin_aarch64_set_qregxiv2df (__o
, (float64x2_t
) val
.val
[3], 3);
24912 __builtin_aarch64_st4v2df ((__builtin_aarch64_simd_df
*) __a
, __o
);
24917 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
24918 vsubd_s64 (int64x1_t __a
, int64x1_t __b
)
24923 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
24924 vsubd_u64 (uint64x1_t __a
, uint64x1_t __b
)
24931 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
24932 vtbx1_s8 (int8x8_t __r
, int8x8_t __tab
, int8x8_t __idx
)
24934 uint8x8_t __mask
= vclt_u8 (vreinterpret_u8_s8 (__idx
),
24936 int8x8_t __tbl
= vtbl1_s8 (__tab
, __idx
);
24938 return vbsl_s8 (__mask
, __tbl
, __r
);
24941 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
24942 vtbx1_u8 (uint8x8_t __r
, uint8x8_t __tab
, uint8x8_t __idx
)
24944 uint8x8_t __mask
= vclt_u8 (__idx
, vmov_n_u8 (8));
24945 uint8x8_t __tbl
= vtbl1_u8 (__tab
, __idx
);
24947 return vbsl_u8 (__mask
, __tbl
, __r
);
24950 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
24951 vtbx1_p8 (poly8x8_t __r
, poly8x8_t __tab
, uint8x8_t __idx
)
24953 uint8x8_t __mask
= vclt_u8 (__idx
, vmov_n_u8 (8));
24954 poly8x8_t __tbl
= vtbl1_p8 (__tab
, __idx
);
24956 return vbsl_p8 (__mask
, __tbl
, __r
);
24961 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
24962 vtbx3_s8 (int8x8_t __r
, int8x8x3_t __tab
, int8x8_t __idx
)
24964 uint8x8_t __mask
= vclt_u8 (vreinterpret_u8_s8 (__idx
),
24966 int8x8_t __tbl
= vtbl3_s8 (__tab
, __idx
);
24968 return vbsl_s8 (__mask
, __tbl
, __r
);
24971 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
24972 vtbx3_u8 (uint8x8_t __r
, uint8x8x3_t __tab
, uint8x8_t __idx
)
24974 uint8x8_t __mask
= vclt_u8 (__idx
, vmov_n_u8 (24));
24975 uint8x8_t __tbl
= vtbl3_u8 (__tab
, __idx
);
24977 return vbsl_u8 (__mask
, __tbl
, __r
);
24980 __extension__
static __inline poly8x8_t
__attribute__ ((__always_inline__
))
24981 vtbx3_p8 (poly8x8_t __r
, poly8x8x3_t __tab
, uint8x8_t __idx
)
24983 uint8x8_t __mask
= vclt_u8 (__idx
, vmov_n_u8 (24));
24984 poly8x8_t __tbl
= vtbl3_p8 (__tab
, __idx
);
24986 return vbsl_p8 (__mask
, __tbl
, __r
);
24991 __extension__
static __inline float32x2x2_t
__attribute__ ((__always_inline__
))
24992 vtrn_f32 (float32x2_t a
, float32x2_t b
)
24994 return (float32x2x2_t
) {vtrn1_f32 (a
, b
), vtrn2_f32 (a
, b
)};
24997 __extension__
static __inline poly8x8x2_t
__attribute__ ((__always_inline__
))
24998 vtrn_p8 (poly8x8_t a
, poly8x8_t b
)
25000 return (poly8x8x2_t
) {vtrn1_p8 (a
, b
), vtrn2_p8 (a
, b
)};
25003 __extension__
static __inline poly16x4x2_t
__attribute__ ((__always_inline__
))
25004 vtrn_p16 (poly16x4_t a
, poly16x4_t b
)
25006 return (poly16x4x2_t
) {vtrn1_p16 (a
, b
), vtrn2_p16 (a
, b
)};
25009 __extension__
static __inline int8x8x2_t
__attribute__ ((__always_inline__
))
25010 vtrn_s8 (int8x8_t a
, int8x8_t b
)
25012 return (int8x8x2_t
) {vtrn1_s8 (a
, b
), vtrn2_s8 (a
, b
)};
25015 __extension__
static __inline int16x4x2_t
__attribute__ ((__always_inline__
))
25016 vtrn_s16 (int16x4_t a
, int16x4_t b
)
25018 return (int16x4x2_t
) {vtrn1_s16 (a
, b
), vtrn2_s16 (a
, b
)};
25021 __extension__
static __inline int32x2x2_t
__attribute__ ((__always_inline__
))
25022 vtrn_s32 (int32x2_t a
, int32x2_t b
)
25024 return (int32x2x2_t
) {vtrn1_s32 (a
, b
), vtrn2_s32 (a
, b
)};
25027 __extension__
static __inline uint8x8x2_t
__attribute__ ((__always_inline__
))
25028 vtrn_u8 (uint8x8_t a
, uint8x8_t b
)
25030 return (uint8x8x2_t
) {vtrn1_u8 (a
, b
), vtrn2_u8 (a
, b
)};
25033 __extension__
static __inline uint16x4x2_t
__attribute__ ((__always_inline__
))
25034 vtrn_u16 (uint16x4_t a
, uint16x4_t b
)
25036 return (uint16x4x2_t
) {vtrn1_u16 (a
, b
), vtrn2_u16 (a
, b
)};
25039 __extension__
static __inline uint32x2x2_t
__attribute__ ((__always_inline__
))
25040 vtrn_u32 (uint32x2_t a
, uint32x2_t b
)
25042 return (uint32x2x2_t
) {vtrn1_u32 (a
, b
), vtrn2_u32 (a
, b
)};
25045 __extension__
static __inline float32x4x2_t
__attribute__ ((__always_inline__
))
25046 vtrnq_f32 (float32x4_t a
, float32x4_t b
)
25048 return (float32x4x2_t
) {vtrn1q_f32 (a
, b
), vtrn2q_f32 (a
, b
)};
25051 __extension__
static __inline poly8x16x2_t
__attribute__ ((__always_inline__
))
25052 vtrnq_p8 (poly8x16_t a
, poly8x16_t b
)
25054 return (poly8x16x2_t
) {vtrn1q_p8 (a
, b
), vtrn2q_p8 (a
, b
)};
25057 __extension__
static __inline poly16x8x2_t
__attribute__ ((__always_inline__
))
25058 vtrnq_p16 (poly16x8_t a
, poly16x8_t b
)
25060 return (poly16x8x2_t
) {vtrn1q_p16 (a
, b
), vtrn2q_p16 (a
, b
)};
25063 __extension__
static __inline int8x16x2_t
__attribute__ ((__always_inline__
))
25064 vtrnq_s8 (int8x16_t a
, int8x16_t b
)
25066 return (int8x16x2_t
) {vtrn1q_s8 (a
, b
), vtrn2q_s8 (a
, b
)};
25069 __extension__
static __inline int16x8x2_t
__attribute__ ((__always_inline__
))
25070 vtrnq_s16 (int16x8_t a
, int16x8_t b
)
25072 return (int16x8x2_t
) {vtrn1q_s16 (a
, b
), vtrn2q_s16 (a
, b
)};
25075 __extension__
static __inline int32x4x2_t
__attribute__ ((__always_inline__
))
25076 vtrnq_s32 (int32x4_t a
, int32x4_t b
)
25078 return (int32x4x2_t
) {vtrn1q_s32 (a
, b
), vtrn2q_s32 (a
, b
)};
25081 __extension__
static __inline uint8x16x2_t
__attribute__ ((__always_inline__
))
25082 vtrnq_u8 (uint8x16_t a
, uint8x16_t b
)
25084 return (uint8x16x2_t
) {vtrn1q_u8 (a
, b
), vtrn2q_u8 (a
, b
)};
25087 __extension__
static __inline uint16x8x2_t
__attribute__ ((__always_inline__
))
25088 vtrnq_u16 (uint16x8_t a
, uint16x8_t b
)
25090 return (uint16x8x2_t
) {vtrn1q_u16 (a
, b
), vtrn2q_u16 (a
, b
)};
25093 __extension__
static __inline uint32x4x2_t
__attribute__ ((__always_inline__
))
25094 vtrnq_u32 (uint32x4_t a
, uint32x4_t b
)
25096 return (uint32x4x2_t
) {vtrn1q_u32 (a
, b
), vtrn2q_u32 (a
, b
)};
25101 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
25102 vtst_s8 (int8x8_t __a
, int8x8_t __b
)
25104 return (uint8x8_t
) __builtin_aarch64_cmtstv8qi (__a
, __b
);
25107 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
25108 vtst_s16 (int16x4_t __a
, int16x4_t __b
)
25110 return (uint16x4_t
) __builtin_aarch64_cmtstv4hi (__a
, __b
);
25113 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
25114 vtst_s32 (int32x2_t __a
, int32x2_t __b
)
25116 return (uint32x2_t
) __builtin_aarch64_cmtstv2si (__a
, __b
);
25119 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
25120 vtst_s64 (int64x1_t __a
, int64x1_t __b
)
25122 return (__a
& __b
) ? -1ll : 0ll;
25125 __extension__
static __inline uint8x8_t
__attribute__ ((__always_inline__
))
25126 vtst_u8 (uint8x8_t __a
, uint8x8_t __b
)
25128 return (uint8x8_t
) __builtin_aarch64_cmtstv8qi ((int8x8_t
) __a
,
25132 __extension__
static __inline uint16x4_t
__attribute__ ((__always_inline__
))
25133 vtst_u16 (uint16x4_t __a
, uint16x4_t __b
)
25135 return (uint16x4_t
) __builtin_aarch64_cmtstv4hi ((int16x4_t
) __a
,
25139 __extension__
static __inline uint32x2_t
__attribute__ ((__always_inline__
))
25140 vtst_u32 (uint32x2_t __a
, uint32x2_t __b
)
25142 return (uint32x2_t
) __builtin_aarch64_cmtstv2si ((int32x2_t
) __a
,
25146 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
25147 vtst_u64 (uint64x1_t __a
, uint64x1_t __b
)
25149 return (__a
& __b
) ? -1ll : 0ll;
25152 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
25153 vtstq_s8 (int8x16_t __a
, int8x16_t __b
)
25155 return (uint8x16_t
) __builtin_aarch64_cmtstv16qi (__a
, __b
);
25158 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
25159 vtstq_s16 (int16x8_t __a
, int16x8_t __b
)
25161 return (uint16x8_t
) __builtin_aarch64_cmtstv8hi (__a
, __b
);
25164 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
25165 vtstq_s32 (int32x4_t __a
, int32x4_t __b
)
25167 return (uint32x4_t
) __builtin_aarch64_cmtstv4si (__a
, __b
);
25170 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
25171 vtstq_s64 (int64x2_t __a
, int64x2_t __b
)
25173 return (uint64x2_t
) __builtin_aarch64_cmtstv2di (__a
, __b
);
25176 __extension__
static __inline uint8x16_t
__attribute__ ((__always_inline__
))
25177 vtstq_u8 (uint8x16_t __a
, uint8x16_t __b
)
25179 return (uint8x16_t
) __builtin_aarch64_cmtstv16qi ((int8x16_t
) __a
,
25183 __extension__
static __inline uint16x8_t
__attribute__ ((__always_inline__
))
25184 vtstq_u16 (uint16x8_t __a
, uint16x8_t __b
)
25186 return (uint16x8_t
) __builtin_aarch64_cmtstv8hi ((int16x8_t
) __a
,
25190 __extension__
static __inline uint32x4_t
__attribute__ ((__always_inline__
))
25191 vtstq_u32 (uint32x4_t __a
, uint32x4_t __b
)
25193 return (uint32x4_t
) __builtin_aarch64_cmtstv4si ((int32x4_t
) __a
,
25197 __extension__
static __inline uint64x2_t
__attribute__ ((__always_inline__
))
25198 vtstq_u64 (uint64x2_t __a
, uint64x2_t __b
)
25200 return (uint64x2_t
) __builtin_aarch64_cmtstv2di ((int64x2_t
) __a
,
25204 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
25205 vtstd_s64 (int64x1_t __a
, int64x1_t __b
)
25207 return (__a
& __b
) ? -1ll : 0ll;
25210 __extension__
static __inline uint64x1_t
__attribute__ ((__always_inline__
))
25211 vtstd_u64 (uint64x1_t __a
, uint64x1_t __b
)
25213 return (__a
& __b
) ? -1ll : 0ll;
25218 __extension__
static __inline int8x8_t
__attribute__ ((__always_inline__
))
25219 vuqadd_s8 (int8x8_t __a
, uint8x8_t __b
)
25221 return (int8x8_t
) __builtin_aarch64_suqaddv8qi (__a
, (int8x8_t
) __b
);
25224 __extension__
static __inline int16x4_t
__attribute__ ((__always_inline__
))
25225 vuqadd_s16 (int16x4_t __a
, uint16x4_t __b
)
25227 return (int16x4_t
) __builtin_aarch64_suqaddv4hi (__a
, (int16x4_t
) __b
);
25230 __extension__
static __inline int32x2_t
__attribute__ ((__always_inline__
))
25231 vuqadd_s32 (int32x2_t __a
, uint32x2_t __b
)
25233 return (int32x2_t
) __builtin_aarch64_suqaddv2si (__a
, (int32x2_t
) __b
);
25236 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
25237 vuqadd_s64 (int64x1_t __a
, uint64x1_t __b
)
25239 return (int64x1_t
) __builtin_aarch64_suqadddi (__a
, (int64x1_t
) __b
);
25242 __extension__
static __inline int8x16_t
__attribute__ ((__always_inline__
))
25243 vuqaddq_s8 (int8x16_t __a
, uint8x16_t __b
)
25245 return (int8x16_t
) __builtin_aarch64_suqaddv16qi (__a
, (int8x16_t
) __b
);
25248 __extension__
static __inline int16x8_t
__attribute__ ((__always_inline__
))
25249 vuqaddq_s16 (int16x8_t __a
, uint16x8_t __b
)
25251 return (int16x8_t
) __builtin_aarch64_suqaddv8hi (__a
, (int16x8_t
) __b
);
25254 __extension__
static __inline int32x4_t
__attribute__ ((__always_inline__
))
25255 vuqaddq_s32 (int32x4_t __a
, uint32x4_t __b
)
25257 return (int32x4_t
) __builtin_aarch64_suqaddv4si (__a
, (int32x4_t
) __b
);
25260 __extension__
static __inline int64x2_t
__attribute__ ((__always_inline__
))
25261 vuqaddq_s64 (int64x2_t __a
, uint64x2_t __b
)
25263 return (int64x2_t
) __builtin_aarch64_suqaddv2di (__a
, (int64x2_t
) __b
);
25266 __extension__
static __inline int8x1_t
__attribute__ ((__always_inline__
))
25267 vuqaddb_s8 (int8x1_t __a
, uint8x1_t __b
)
25269 return (int8x1_t
) __builtin_aarch64_suqaddqi (__a
, (int8x1_t
) __b
);
25272 __extension__
static __inline int16x1_t
__attribute__ ((__always_inline__
))
25273 vuqaddh_s16 (int16x1_t __a
, uint16x1_t __b
)
25275 return (int16x1_t
) __builtin_aarch64_suqaddhi (__a
, (int16x1_t
) __b
);
25278 __extension__
static __inline int32x1_t
__attribute__ ((__always_inline__
))
25279 vuqadds_s32 (int32x1_t __a
, uint32x1_t __b
)
25281 return (int32x1_t
) __builtin_aarch64_suqaddsi (__a
, (int32x1_t
) __b
);
25284 __extension__
static __inline int64x1_t
__attribute__ ((__always_inline__
))
25285 vuqaddd_s64 (int64x1_t __a
, uint64x1_t __b
)
25287 return (int64x1_t
) __builtin_aarch64_suqadddi (__a
, (int64x1_t
) __b
);
25290 #define __DEFINTERLEAVE(op, rettype, intype, funcsuffix, Q) \
25291 __extension__ static __inline rettype \
25292 __attribute__ ((__always_inline__)) \
25293 v ## op ## Q ## _ ## funcsuffix (intype a, intype b) \
25295 return (rettype) {v ## op ## 1 ## Q ## _ ## funcsuffix (a, b), \
25296 v ## op ## 2 ## Q ## _ ## funcsuffix (a, b)}; \
25299 #define __INTERLEAVE_LIST(op) \
25300 __DEFINTERLEAVE (op, float32x2x2_t, float32x2_t, f32,) \
25301 __DEFINTERLEAVE (op, poly8x8x2_t, poly8x8_t, p8,) \
25302 __DEFINTERLEAVE (op, poly16x4x2_t, poly16x4_t, p16,) \
25303 __DEFINTERLEAVE (op, int8x8x2_t, int8x8_t, s8,) \
25304 __DEFINTERLEAVE (op, int16x4x2_t, int16x4_t, s16,) \
25305 __DEFINTERLEAVE (op, int32x2x2_t, int32x2_t, s32,) \
25306 __DEFINTERLEAVE (op, uint8x8x2_t, uint8x8_t, u8,) \
25307 __DEFINTERLEAVE (op, uint16x4x2_t, uint16x4_t, u16,) \
25308 __DEFINTERLEAVE (op, uint32x2x2_t, uint32x2_t, u32,) \
25309 __DEFINTERLEAVE (op, float32x4x2_t, float32x4_t, f32, q) \
25310 __DEFINTERLEAVE (op, poly8x16x2_t, poly8x16_t, p8, q) \
25311 __DEFINTERLEAVE (op, poly16x8x2_t, poly16x8_t, p16, q) \
25312 __DEFINTERLEAVE (op, int8x16x2_t, int8x16_t, s8, q) \
25313 __DEFINTERLEAVE (op, int16x8x2_t, int16x8_t, s16, q) \
25314 __DEFINTERLEAVE (op, int32x4x2_t, int32x4_t, s32, q) \
25315 __DEFINTERLEAVE (op, uint8x16x2_t, uint8x16_t, u8, q) \
25316 __DEFINTERLEAVE (op, uint16x8x2_t, uint16x8_t, u16, q) \
25317 __DEFINTERLEAVE (op, uint32x4x2_t, uint32x4_t, u32, q)
25321 __INTERLEAVE_LIST (uzp
)
25325 __INTERLEAVE_LIST (zip
)
25327 #undef __INTERLEAVE_LIST
25328 #undef __DEFINTERLEAVE
25330 /* End of optimal implementations in approved order. */
25334 #undef __aarch64_vget_lane_any
25335 #undef __aarch64_vget_lane_f32
25336 #undef __aarch64_vget_lane_f64
25337 #undef __aarch64_vget_lane_p8
25338 #undef __aarch64_vget_lane_p16
25339 #undef __aarch64_vget_lane_s8
25340 #undef __aarch64_vget_lane_s16
25341 #undef __aarch64_vget_lane_s32
25342 #undef __aarch64_vget_lane_s64
25343 #undef __aarch64_vget_lane_u8
25344 #undef __aarch64_vget_lane_u16
25345 #undef __aarch64_vget_lane_u32
25346 #undef __aarch64_vget_lane_u64
25348 #undef __aarch64_vgetq_lane_f32
25349 #undef __aarch64_vgetq_lane_f64
25350 #undef __aarch64_vgetq_lane_p8
25351 #undef __aarch64_vgetq_lane_p16
25352 #undef __aarch64_vgetq_lane_s8
25353 #undef __aarch64_vgetq_lane_s16
25354 #undef __aarch64_vgetq_lane_s32
25355 #undef __aarch64_vgetq_lane_s64
25356 #undef __aarch64_vgetq_lane_u8
25357 #undef __aarch64_vgetq_lane_u16
25358 #undef __aarch64_vgetq_lane_u32
25359 #undef __aarch64_vgetq_lane_u64
25361 #undef __aarch64_vdup_lane_any
25362 #undef __aarch64_vdup_lane_f32
25363 #undef __aarch64_vdup_lane_f64
25364 #undef __aarch64_vdup_lane_p8
25365 #undef __aarch64_vdup_lane_p16
25366 #undef __aarch64_vdup_lane_s8
25367 #undef __aarch64_vdup_lane_s16
25368 #undef __aarch64_vdup_lane_s32
25369 #undef __aarch64_vdup_lane_s64
25370 #undef __aarch64_vdup_lane_u8
25371 #undef __aarch64_vdup_lane_u16
25372 #undef __aarch64_vdup_lane_u32
25373 #undef __aarch64_vdup_lane_u64
25374 #undef __aarch64_vdup_laneq_f32
25375 #undef __aarch64_vdup_laneq_f64
25376 #undef __aarch64_vdup_laneq_p8
25377 #undef __aarch64_vdup_laneq_p16
25378 #undef __aarch64_vdup_laneq_s8
25379 #undef __aarch64_vdup_laneq_s16
25380 #undef __aarch64_vdup_laneq_s32
25381 #undef __aarch64_vdup_laneq_s64
25382 #undef __aarch64_vdup_laneq_u8
25383 #undef __aarch64_vdup_laneq_u16
25384 #undef __aarch64_vdup_laneq_u32
25385 #undef __aarch64_vdup_laneq_u64
25386 #undef __aarch64_vdupq_lane_f32
25387 #undef __aarch64_vdupq_lane_f64
25388 #undef __aarch64_vdupq_lane_p8
25389 #undef __aarch64_vdupq_lane_p16
25390 #undef __aarch64_vdupq_lane_s8
25391 #undef __aarch64_vdupq_lane_s16
25392 #undef __aarch64_vdupq_lane_s32
25393 #undef __aarch64_vdupq_lane_s64
25394 #undef __aarch64_vdupq_lane_u8
25395 #undef __aarch64_vdupq_lane_u16
25396 #undef __aarch64_vdupq_lane_u32
25397 #undef __aarch64_vdupq_lane_u64
25398 #undef __aarch64_vdupq_laneq_f32
25399 #undef __aarch64_vdupq_laneq_f64
25400 #undef __aarch64_vdupq_laneq_p8
25401 #undef __aarch64_vdupq_laneq_p16
25402 #undef __aarch64_vdupq_laneq_s8
25403 #undef __aarch64_vdupq_laneq_s16
25404 #undef __aarch64_vdupq_laneq_s32
25405 #undef __aarch64_vdupq_laneq_s64
25406 #undef __aarch64_vdupq_laneq_u8
25407 #undef __aarch64_vdupq_laneq_u16
25408 #undef __aarch64_vdupq_laneq_u32
25409 #undef __aarch64_vdupq_laneq_u64