@@ -46,9 +46,6 @@
VAR1 (UNOP, addp, 0, di)
BUILTIN_VDQ_BHSI (UNOP, clz, 2)
- /* be_checked_get_lane does its own lane swapping, so not a lane index. */
- BUILTIN_VALL (GETREG, be_checked_get_lane, 0)
-
/* Implemented by aarch64_<sur>q<r>shl<mode>. */
BUILTIN_VSDQ_I (BINOP, sqshl, 0)
BUILTIN_VSDQ_I (BINOP_UUS, uqshl, 0)
@@ -2391,22 +2391,9 @@
[(set_attr "type" "neon_to_gp<q>")]
)
-(define_expand "aarch64_be_checked_get_lane<mode>"
- [(match_operand:<VEL> 0 "aarch64_simd_nonimmediate_operand")
- (match_operand:VALL 1 "register_operand")
- (match_operand:SI 2 "immediate_operand")]
- "TARGET_SIMD"
- {
- operands[2] = GEN_INT (ENDIAN_LANE_N (<MODE>mode, INTVAL (operands[2])));
- emit_insn (gen_aarch64_get_lane<mode> (operands[0],
- operands[1],
- operands[2]));
- DONE;
- }
-)
-
;; Lane extraction of a value, neither sign nor zero extension
;; is guaranteed so upper bits should be considered undefined.
+;; RTL uses GCC vector extension indices throughout so flip only for assembly.
(define_insn "aarch64_get_lane<mode>"
[(set (match_operand:<VEL> 0 "aarch64_simd_nonimmediate_operand" "=r, w, Utv")
(vec_select:<VEL>
@@ -426,183 +426,112 @@ typedef struct poly16x8x4_t
poly16x8_t val[4];
} poly16x8x4_t;
-/* vget_lane internal macros. */
-
-#define __aarch64_vget_lane_any(__size, __cast_ret, __cast_a, __a, __b) \
- (__cast_ret \
- __builtin_aarch64_be_checked_get_lane##__size (__cast_a __a, __b))
-
-#define __aarch64_vget_lane_f32(__a, __b) \
- __aarch64_vget_lane_any (v2sf, , , __a, __b)
-#define __aarch64_vget_lane_f64(__a, __b) __extension__ \
- ({ \
- __AARCH64_LANE_CHECK (__a, __b); \
- __a[0]; \
- })
-
-#define __aarch64_vget_lane_p8(__a, __b) \
- __aarch64_vget_lane_any (v8qi, (poly8_t), (int8x8_t), __a, __b)
-#define __aarch64_vget_lane_p16(__a, __b) \
- __aarch64_vget_lane_any (v4hi, (poly16_t), (int16x4_t), __a, __b)
-
-#define __aarch64_vget_lane_s8(__a, __b) \
- __aarch64_vget_lane_any (v8qi, , ,__a, __b)
-#define __aarch64_vget_lane_s16(__a, __b) \
- __aarch64_vget_lane_any (v4hi, , ,__a, __b)
-#define __aarch64_vget_lane_s32(__a, __b) \
- __aarch64_vget_lane_any (v2si, , ,__a, __b)
-#define __aarch64_vget_lane_s64(__a, __b) __extension__ \
- ({ \
- __AARCH64_LANE_CHECK (__a, __b); \
- __a[0]; \
- })
-
-#define __aarch64_vget_lane_u8(__a, __b) \
- __aarch64_vget_lane_any (v8qi, (uint8_t), (int8x8_t), __a, __b)
-#define __aarch64_vget_lane_u16(__a, __b) \
- __aarch64_vget_lane_any (v4hi, (uint16_t), (int16x4_t), __a, __b)
-#define __aarch64_vget_lane_u32(__a, __b) \
- __aarch64_vget_lane_any (v2si, (uint32_t), (int32x2_t), __a, __b)
-#define __aarch64_vget_lane_u64(__a, __b) __extension__ \
- ({ \
- __AARCH64_LANE_CHECK (__a, __b); \
- __a[0]; \
- })
-
-#define __aarch64_vgetq_lane_f32(__a, __b) \
- __aarch64_vget_lane_any (v4sf, , , __a, __b)
-#define __aarch64_vgetq_lane_f64(__a, __b) \
- __aarch64_vget_lane_any (v2df, , , __a, __b)
-
-#define __aarch64_vgetq_lane_p8(__a, __b) \
- __aarch64_vget_lane_any (v16qi, (poly8_t), (int8x16_t), __a, __b)
-#define __aarch64_vgetq_lane_p16(__a, __b) \
- __aarch64_vget_lane_any (v8hi, (poly16_t), (int16x8_t), __a, __b)
-
-#define __aarch64_vgetq_lane_s8(__a, __b) \
- __aarch64_vget_lane_any (v16qi, , ,__a, __b)
-#define __aarch64_vgetq_lane_s16(__a, __b) \
- __aarch64_vget_lane_any (v8hi, , ,__a, __b)
-#define __aarch64_vgetq_lane_s32(__a, __b) \
- __aarch64_vget_lane_any (v4si, , ,__a, __b)
-#define __aarch64_vgetq_lane_s64(__a, __b) \
- __aarch64_vget_lane_any (v2di, , ,__a, __b)
-
-#define __aarch64_vgetq_lane_u8(__a, __b) \
- __aarch64_vget_lane_any (v16qi, (uint8_t), (int8x16_t), __a, __b)
-#define __aarch64_vgetq_lane_u16(__a, __b) \
- __aarch64_vget_lane_any (v8hi, (uint16_t), (int16x8_t), __a, __b)
-#define __aarch64_vgetq_lane_u32(__a, __b) \
- __aarch64_vget_lane_any (v4si, (uint32_t), (int32x4_t), __a, __b)
-#define __aarch64_vgetq_lane_u64(__a, __b) \
- __aarch64_vget_lane_any (v2di, (uint64_t), (int64x2_t), __a, __b)
-
/* __aarch64_vdup_lane internal macros. */
-#define __aarch64_vdup_lane_any(__size, __q1, __q2, __a, __b) \
- vdup##__q1##_n_##__size (__aarch64_vget##__q2##_lane_##__size (__a, __b))
+#define __aarch64_vdup_lane_any(__size, __q, __a, __b) \
+ vdup##__q##_n_##__size (__aarch64_vget_lane_any (__a, __b))
#define __aarch64_vdup_lane_f32(__a, __b) \
- __aarch64_vdup_lane_any (f32, , , __a, __b)
+ __aarch64_vdup_lane_any (f32, , __a, __b)
#define __aarch64_vdup_lane_f64(__a, __b) \
- __aarch64_vdup_lane_any (f64, , , __a, __b)
+ __aarch64_vdup_lane_any (f64, , __a, __b)
#define __aarch64_vdup_lane_p8(__a, __b) \
- __aarch64_vdup_lane_any (p8, , , __a, __b)
+ __aarch64_vdup_lane_any (p8, , __a, __b)
#define __aarch64_vdup_lane_p16(__a, __b) \
- __aarch64_vdup_lane_any (p16, , , __a, __b)
+ __aarch64_vdup_lane_any (p16, , __a, __b)
#define __aarch64_vdup_lane_s8(__a, __b) \
- __aarch64_vdup_lane_any (s8, , , __a, __b)
+ __aarch64_vdup_lane_any (s8, , __a, __b)
#define __aarch64_vdup_lane_s16(__a, __b) \
- __aarch64_vdup_lane_any (s16, , , __a, __b)
+ __aarch64_vdup_lane_any (s16, , __a, __b)
#define __aarch64_vdup_lane_s32(__a, __b) \
- __aarch64_vdup_lane_any (s32, , , __a, __b)
+ __aarch64_vdup_lane_any (s32, , __a, __b)
#define __aarch64_vdup_lane_s64(__a, __b) \
- __aarch64_vdup_lane_any (s64, , , __a, __b)
+ __aarch64_vdup_lane_any (s64, , __a, __b)
#define __aarch64_vdup_lane_u8(__a, __b) \
- __aarch64_vdup_lane_any (u8, , , __a, __b)
+ __aarch64_vdup_lane_any (u8, , __a, __b)
#define __aarch64_vdup_lane_u16(__a, __b) \
- __aarch64_vdup_lane_any (u16, , , __a, __b)
+ __aarch64_vdup_lane_any (u16, , __a, __b)
#define __aarch64_vdup_lane_u32(__a, __b) \
- __aarch64_vdup_lane_any (u32, , , __a, __b)
+ __aarch64_vdup_lane_any (u32, , __a, __b)
#define __aarch64_vdup_lane_u64(__a, __b) \
- __aarch64_vdup_lane_any (u64, , , __a, __b)
+ __aarch64_vdup_lane_any (u64, , __a, __b)
/* __aarch64_vdup_laneq internal macros. */
#define __aarch64_vdup_laneq_f32(__a, __b) \
- __aarch64_vdup_lane_any (f32, , q, __a, __b)
+ __aarch64_vdup_lane_any (f32, , __a, __b)
#define __aarch64_vdup_laneq_f64(__a, __b) \
- __aarch64_vdup_lane_any (f64, , q, __a, __b)
+ __aarch64_vdup_lane_any (f64, , __a, __b)
#define __aarch64_vdup_laneq_p8(__a, __b) \
- __aarch64_vdup_lane_any (p8, , q, __a, __b)
+ __aarch64_vdup_lane_any (p8, , __a, __b)
#define __aarch64_vdup_laneq_p16(__a, __b) \
- __aarch64_vdup_lane_any (p16, , q, __a, __b)
+ __aarch64_vdup_lane_any (p16, , __a, __b)
#define __aarch64_vdup_laneq_s8(__a, __b) \
- __aarch64_vdup_lane_any (s8, , q, __a, __b)
+ __aarch64_vdup_lane_any (s8, , __a, __b)
#define __aarch64_vdup_laneq_s16(__a, __b) \
- __aarch64_vdup_lane_any (s16, , q, __a, __b)
+ __aarch64_vdup_lane_any (s16, , __a, __b)
#define __aarch64_vdup_laneq_s32(__a, __b) \
- __aarch64_vdup_lane_any (s32, , q, __a, __b)
+ __aarch64_vdup_lane_any (s32, , __a, __b)
#define __aarch64_vdup_laneq_s64(__a, __b) \
- __aarch64_vdup_lane_any (s64, , q, __a, __b)
+ __aarch64_vdup_lane_any (s64, , __a, __b)
#define __aarch64_vdup_laneq_u8(__a, __b) \
- __aarch64_vdup_lane_any (u8, , q, __a, __b)
+ __aarch64_vdup_lane_any (u8, , __a, __b)
#define __aarch64_vdup_laneq_u16(__a, __b) \
- __aarch64_vdup_lane_any (u16, , q, __a, __b)
+ __aarch64_vdup_lane_any (u16, , __a, __b)
#define __aarch64_vdup_laneq_u32(__a, __b) \
- __aarch64_vdup_lane_any (u32, , q, __a, __b)
+ __aarch64_vdup_lane_any (u32, , __a, __b)
#define __aarch64_vdup_laneq_u64(__a, __b) \
- __aarch64_vdup_lane_any (u64, , q, __a, __b)
+ __aarch64_vdup_lane_any (u64, , __a, __b)
/* __aarch64_vdupq_lane internal macros. */
#define __aarch64_vdupq_lane_f32(__a, __b) \
- __aarch64_vdup_lane_any (f32, q, , __a, __b)
+ __aarch64_vdup_lane_any (f32, q, __a, __b)
#define __aarch64_vdupq_lane_f64(__a, __b) \
- __aarch64_vdup_lane_any (f64, q, , __a, __b)
+ __aarch64_vdup_lane_any (f64, q, __a, __b)
#define __aarch64_vdupq_lane_p8(__a, __b) \
- __aarch64_vdup_lane_any (p8, q, , __a, __b)
+ __aarch64_vdup_lane_any (p8, q, __a, __b)
#define __aarch64_vdupq_lane_p16(__a, __b) \
- __aarch64_vdup_lane_any (p16, q, , __a, __b)
+ __aarch64_vdup_lane_any (p16, q, __a, __b)
#define __aarch64_vdupq_lane_s8(__a, __b) \
- __aarch64_vdup_lane_any (s8, q, , __a, __b)
+ __aarch64_vdup_lane_any (s8, q, __a, __b)
#define __aarch64_vdupq_lane_s16(__a, __b) \
- __aarch64_vdup_lane_any (s16, q, , __a, __b)
+ __aarch64_vdup_lane_any (s16, q, __a, __b)
#define __aarch64_vdupq_lane_s32(__a, __b) \
- __aarch64_vdup_lane_any (s32, q, , __a, __b)
+ __aarch64_vdup_lane_any (s32, q, __a, __b)
#define __aarch64_vdupq_lane_s64(__a, __b) \
- __aarch64_vdup_lane_any (s64, q, , __a, __b)
+ __aarch64_vdup_lane_any (s64, q, __a, __b)
#define __aarch64_vdupq_lane_u8(__a, __b) \
- __aarch64_vdup_lane_any (u8, q, , __a, __b)
+ __aarch64_vdup_lane_any (u8, q, __a, __b)
#define __aarch64_vdupq_lane_u16(__a, __b) \
- __aarch64_vdup_lane_any (u16, q, , __a, __b)
+ __aarch64_vdup_lane_any (u16, q, __a, __b)
#define __aarch64_vdupq_lane_u32(__a, __b) \
- __aarch64_vdup_lane_any (u32, q, , __a, __b)
+ __aarch64_vdup_lane_any (u32, q, __a, __b)
#define __aarch64_vdupq_lane_u64(__a, __b) \
- __aarch64_vdup_lane_any (u64, q, , __a, __b)
+ __aarch64_vdup_lane_any (u64, q, __a, __b)
/* __aarch64_vdupq_laneq internal macros. */
#define __aarch64_vdupq_laneq_f32(__a, __b) \
- __aarch64_vdup_lane_any (f32, q, q, __a, __b)
+ __aarch64_vdup_lane_any (f32, q, __a, __b)
#define __aarch64_vdupq_laneq_f64(__a, __b) \
- __aarch64_vdup_lane_any (f64, q, q, __a, __b)
+ __aarch64_vdup_lane_any (f64, q, __a, __b)
#define __aarch64_vdupq_laneq_p8(__a, __b) \
- __aarch64_vdup_lane_any (p8, q, q, __a, __b)
+ __aarch64_vdup_lane_any (p8, q, __a, __b)
#define __aarch64_vdupq_laneq_p16(__a, __b) \
- __aarch64_vdup_lane_any (p16, q, q, __a, __b)
+ __aarch64_vdup_lane_any (p16, q, __a, __b)
#define __aarch64_vdupq_laneq_s8(__a, __b) \
- __aarch64_vdup_lane_any (s8, q, q, __a, __b)
+ __aarch64_vdup_lane_any (s8, q, __a, __b)
#define __aarch64_vdupq_laneq_s16(__a, __b) \
- __aarch64_vdup_lane_any (s16, q, q, __a, __b)
+ __aarch64_vdup_lane_any (s16, q, __a, __b)
#define __aarch64_vdupq_laneq_s32(__a, __b) \
- __aarch64_vdup_lane_any (s32, q, q, __a, __b)
+ __aarch64_vdup_lane_any (s32, q, __a, __b)
#define __aarch64_vdupq_laneq_s64(__a, __b) \
- __aarch64_vdup_lane_any (s64, q, q, __a, __b)
+ __aarch64_vdup_lane_any (s64, q, __a, __b)
#define __aarch64_vdupq_laneq_u8(__a, __b) \
- __aarch64_vdup_lane_any (u8, q, q, __a, __b)
+ __aarch64_vdup_lane_any (u8, q, __a, __b)
#define __aarch64_vdupq_laneq_u16(__a, __b) \
- __aarch64_vdup_lane_any (u16, q, q, __a, __b)
+ __aarch64_vdup_lane_any (u16, q, __a, __b)
#define __aarch64_vdupq_laneq_u32(__a, __b) \
- __aarch64_vdup_lane_any (u32, q, q, __a, __b)
+ __aarch64_vdup_lane_any (u32, q, __a, __b)
#define __aarch64_vdupq_laneq_u64(__a, __b) \
- __aarch64_vdup_lane_any (u64, q, q, __a, __b)
+ __aarch64_vdup_lane_any (u64, q, __a, __b)
/* Internal macro for lane indices. */
@@ -618,8 +547,15 @@ typedef struct poly16x8x4_t
#define __aarch64_lane(__vec, __idx) __idx
#endif
-/* vset_lane and vld1_lane internal macro. */
+/* vget_lane internal macro. */
+#define __aarch64_vget_lane_any(__vec, __index) \
+ __extension__ \
+ ({ \
+ __AARCH64_LANE_CHECK (__vec, __index); \
+ __vec[__aarch64_lane (__vec, __index)]; \
+ })
+/* vset_lane and vld1_lane internal macro. */
#define __aarch64_vset_lane_any(__elem, __vec, __index) \
__extension__ \
({ \
@@ -2514,73 +2450,73 @@ vcreate_p16 (uint64_t __a)
__extension__ static __inline float32_t __attribute__ ((__always_inline__))
vget_lane_f32 (float32x2_t __a, const int __b)
{
- return __aarch64_vget_lane_f32 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline float64_t __attribute__ ((__always_inline__))
vget_lane_f64 (float64x1_t __a, const int __b)
{
- return __aarch64_vget_lane_f64 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline poly8_t __attribute__ ((__always_inline__))
vget_lane_p8 (poly8x8_t __a, const int __b)
{
- return __aarch64_vget_lane_p8 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline poly16_t __attribute__ ((__always_inline__))
vget_lane_p16 (poly16x4_t __a, const int __b)
{
- return __aarch64_vget_lane_p16 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int8_t __attribute__ ((__always_inline__))
vget_lane_s8 (int8x8_t __a, const int __b)
{
- return __aarch64_vget_lane_s8 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int16_t __attribute__ ((__always_inline__))
vget_lane_s16 (int16x4_t __a, const int __b)
{
- return __aarch64_vget_lane_s16 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int32_t __attribute__ ((__always_inline__))
vget_lane_s32 (int32x2_t __a, const int __b)
{
- return __aarch64_vget_lane_s32 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int64_t __attribute__ ((__always_inline__))
vget_lane_s64 (int64x1_t __a, const int __b)
{
- return __aarch64_vget_lane_s64 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint8_t __attribute__ ((__always_inline__))
vget_lane_u8 (uint8x8_t __a, const int __b)
{
- return __aarch64_vget_lane_u8 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint16_t __attribute__ ((__always_inline__))
vget_lane_u16 (uint16x4_t __a, const int __b)
{
- return __aarch64_vget_lane_u16 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint32_t __attribute__ ((__always_inline__))
vget_lane_u32 (uint32x2_t __a, const int __b)
{
- return __aarch64_vget_lane_u32 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint64_t __attribute__ ((__always_inline__))
vget_lane_u64 (uint64x1_t __a, const int __b)
{
- return __aarch64_vget_lane_u64 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
/* vgetq_lane */
@@ -2588,73 +2524,73 @@ vget_lane_u64 (uint64x1_t __a, const int __b)
__extension__ static __inline float32_t __attribute__ ((__always_inline__))
vgetq_lane_f32 (float32x4_t __a, const int __b)
{
- return __aarch64_vgetq_lane_f32 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline float64_t __attribute__ ((__always_inline__))
vgetq_lane_f64 (float64x2_t __a, const int __b)
{
- return __aarch64_vgetq_lane_f64 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline poly8_t __attribute__ ((__always_inline__))
vgetq_lane_p8 (poly8x16_t __a, const int __b)
{
- return __aarch64_vgetq_lane_p8 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline poly16_t __attribute__ ((__always_inline__))
vgetq_lane_p16 (poly16x8_t __a, const int __b)
{
- return __aarch64_vgetq_lane_p16 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int8_t __attribute__ ((__always_inline__))
vgetq_lane_s8 (int8x16_t __a, const int __b)
{
- return __aarch64_vgetq_lane_s8 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int16_t __attribute__ ((__always_inline__))
vgetq_lane_s16 (int16x8_t __a, const int __b)
{
- return __aarch64_vgetq_lane_s16 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int32_t __attribute__ ((__always_inline__))
vgetq_lane_s32 (int32x4_t __a, const int __b)
{
- return __aarch64_vgetq_lane_s32 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int64_t __attribute__ ((__always_inline__))
vgetq_lane_s64 (int64x2_t __a, const int __b)
{
- return __aarch64_vgetq_lane_s64 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint8_t __attribute__ ((__always_inline__))
vgetq_lane_u8 (uint8x16_t __a, const int __b)
{
- return __aarch64_vgetq_lane_u8 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint16_t __attribute__ ((__always_inline__))
vgetq_lane_u16 (uint16x8_t __a, const int __b)
{
- return __aarch64_vgetq_lane_u16 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint32_t __attribute__ ((__always_inline__))
vgetq_lane_u32 (uint32x4_t __a, const int __b)
{
- return __aarch64_vgetq_lane_u32 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint64_t __attribute__ ((__always_inline__))
vgetq_lane_u64 (uint64x2_t __a, const int __b)
{
- return __aarch64_vgetq_lane_u64 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
/* vreinterpret */
@@ -15040,57 +14976,57 @@ vdupq_laneq_u64 (uint64x2_t __a, const int __b)
__extension__ static __inline poly8_t __attribute__ ((__always_inline__))
vdupb_lane_p8 (poly8x8_t __a, const int __b)
{
- return __aarch64_vget_lane_p8 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int8_t __attribute__ ((__always_inline__))
vdupb_lane_s8 (int8x8_t __a, const int __b)
{
- return __aarch64_vget_lane_s8 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint8_t __attribute__ ((__always_inline__))
vdupb_lane_u8 (uint8x8_t __a, const int __b)
{
- return __aarch64_vget_lane_u8 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
/* vduph_lane */
__extension__ static __inline poly16_t __attribute__ ((__always_inline__))
vduph_lane_p16 (poly16x4_t __a, const int __b)
{
- return __aarch64_vget_lane_p16 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int16_t __attribute__ ((__always_inline__))
vduph_lane_s16 (int16x4_t __a, const int __b)
{
- return __aarch64_vget_lane_s16 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint16_t __attribute__ ((__always_inline__))
vduph_lane_u16 (uint16x4_t __a, const int __b)
{
- return __aarch64_vget_lane_u16 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
/* vdups_lane */
__extension__ static __inline float32_t __attribute__ ((__always_inline__))
vdups_lane_f32 (float32x2_t __a, const int __b)
{
- return __aarch64_vget_lane_f32 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int32_t __attribute__ ((__always_inline__))
vdups_lane_s32 (int32x2_t __a, const int __b)
{
- return __aarch64_vget_lane_s32 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint32_t __attribute__ ((__always_inline__))
vdups_lane_u32 (uint32x2_t __a, const int __b)
{
- return __aarch64_vget_lane_u32 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
/* vdupd_lane */
@@ -15119,76 +15055,76 @@ vdupd_lane_u64 (uint64x1_t __a, const int __b)
__extension__ static __inline poly8_t __attribute__ ((__always_inline__))
vdupb_laneq_p8 (poly8x16_t __a, const int __b)
{
- return __aarch64_vgetq_lane_p8 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int8_t __attribute__ ((__always_inline__))
vdupb_laneq_s8 (int8x16_t __a, const int __attribute__ ((unused)) __b)
{
- return __aarch64_vgetq_lane_s8 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint8_t __attribute__ ((__always_inline__))
vdupb_laneq_u8 (uint8x16_t __a, const int __b)
{
- return __aarch64_vgetq_lane_u8 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
/* vduph_laneq */
__extension__ static __inline poly16_t __attribute__ ((__always_inline__))
vduph_laneq_p16 (poly16x8_t __a, const int __b)
{
- return __aarch64_vgetq_lane_p16 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int16_t __attribute__ ((__always_inline__))
vduph_laneq_s16 (int16x8_t __a, const int __b)
{
- return __aarch64_vgetq_lane_s16 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint16_t __attribute__ ((__always_inline__))
vduph_laneq_u16 (uint16x8_t __a, const int __b)
{
- return __aarch64_vgetq_lane_u16 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
/* vdups_laneq */
__extension__ static __inline float32_t __attribute__ ((__always_inline__))
vdups_laneq_f32 (float32x4_t __a, const int __b)
{
- return __aarch64_vgetq_lane_f32 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int32_t __attribute__ ((__always_inline__))
vdups_laneq_s32 (int32x4_t __a, const int __b)
{
- return __aarch64_vgetq_lane_s32 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint32_t __attribute__ ((__always_inline__))
vdups_laneq_u32 (uint32x4_t __a, const int __b)
{
- return __aarch64_vgetq_lane_u32 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
/* vdupd_laneq */
__extension__ static __inline float64_t __attribute__ ((__always_inline__))
vdupd_laneq_f64 (float64x2_t __a, const int __b)
{
- return __aarch64_vgetq_lane_f64 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline int64_t __attribute__ ((__always_inline__))
vdupd_laneq_s64 (int64x2_t __a, const int __b)
{
- return __aarch64_vgetq_lane_s64 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
__extension__ static __inline uint64_t __attribute__ ((__always_inline__))
vdupd_laneq_u64 (uint64x2_t __a, const int __b)
{
- return __aarch64_vgetq_lane_u64 (__a, __b);
+ return __aarch64_vget_lane_any (__a, __b);
}
/* vext */
@@ -15514,7 +15450,7 @@ __extension__ static __inline float32_t __attribute__ ((__always_inline__))
vfmas_lane_f32 (float32_t __a, float32_t __b,
float32x2_t __c, const int __lane)
{
- return __builtin_fmaf (__b, __aarch64_vget_lane_f32 (__c, __lane), __a);
+ return __builtin_fmaf (__b, __aarch64_vget_lane_any (__c, __lane), __a);
}
/* vfma_laneq */
@@ -15532,7 +15468,7 @@ __extension__ static __inline float64x1_t __attribute__ ((__always_inline__))
vfma_laneq_f64 (float64x1_t __a, float64x1_t __b,
float64x2_t __c, const int __lane)
{
- float64_t __c0 = __aarch64_vgetq_lane_f64 (__c, __lane);
+ float64_t __c0 = __aarch64_vget_lane_any (__c, __lane);
return (float64x1_t) {__builtin_fma (__b[0], __c0, __a[0])};
}
@@ -15540,14 +15476,14 @@ __extension__ static __inline float64_t __attribute__ ((__always_inline__))
vfmad_laneq_f64 (float64_t __a, float64_t __b,
float64x2_t __c, const int __lane)
{
- return __builtin_fma (__b, __aarch64_vgetq_lane_f64 (__c, __lane), __a);
+ return __builtin_fma (__b, __aarch64_vget_lane_any (__c, __lane), __a);
}
__extension__ static __inline float32_t __attribute__ ((__always_inline__))
vfmas_laneq_f32 (float32_t __a, float32_t __b,
float32x4_t __c, const int __lane)
{
- return __builtin_fmaf (__b, __aarch64_vgetq_lane_f32 (__c, __lane), __a);
+ return __builtin_fmaf (__b, __aarch64_vget_lane_any (__c, __lane), __a);
}
/* vfmaq_lane */
@@ -15625,7 +15561,7 @@ __extension__ static __inline float32_t __attribute__ ((__always_inline__))
vfmss_lane_f32 (float32_t __a, float32_t __b,
float32x2_t __c, const int __lane)
{
- return __builtin_fmaf (-__b, __aarch64_vget_lane_f32 (__c, __lane), __a);
+ return __builtin_fmaf (-__b, __aarch64_vget_lane_any (__c, __lane), __a);
}
/* vfms_laneq */
@@ -15643,7 +15579,7 @@ __extension__ static __inline float64x1_t __attribute__ ((__always_inline__))
vfms_laneq_f64 (float64x1_t __a, float64x1_t __b,
float64x2_t __c, const int __lane)
{
- float64_t __c0 = __aarch64_vgetq_lane_f64 (__c, __lane);
+ float64_t __c0 = __aarch64_vget_lane_any (__c, __lane);
return (float64x1_t) {__builtin_fma (-__b[0], __c0, __a[0])};
}
@@ -15651,14 +15587,14 @@ __extension__ static __inline float64_t __attribute__ ((__always_inline__))
vfmsd_laneq_f64 (float64_t __a, float64_t __b,
float64x2_t __c, const int __lane)
{
- return __builtin_fma (-__b, __aarch64_vgetq_lane_f64 (__c, __lane), __a);
+ return __builtin_fma (-__b, __aarch64_vget_lane_any (__c, __lane), __a);
}
__extension__ static __inline float32_t __attribute__ ((__always_inline__))
vfmss_laneq_f32 (float32_t __a, float32_t __b,
float32x4_t __c, const int __lane)
{
- return __builtin_fmaf (-__b, __aarch64_vgetq_lane_f32 (__c, __lane), __a);
+ return __builtin_fmaf (-__b, __aarch64_vget_lane_any (__c, __lane), __a);
}
/* vfmsq_lane */
@@ -18659,35 +18595,35 @@ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
vmla_lane_f32 (float32x2_t __a, float32x2_t __b,
float32x2_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vget_lane_f32 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
vmla_lane_s16 (int16x4_t __a, int16x4_t __b,
int16x4_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vget_lane_s16 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
vmla_lane_s32 (int32x2_t __a, int32x2_t __b,
int32x2_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vget_lane_s32 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
vmla_lane_u16 (uint16x4_t __a, uint16x4_t __b,
uint16x4_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vget_lane_u16 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
vmla_lane_u32 (uint32x2_t __a, uint32x2_t __b,
uint32x2_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vget_lane_u32 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
/* vmla_laneq */
@@ -18696,35 +18632,35 @@ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
vmla_laneq_f32 (float32x2_t __a, float32x2_t __b,
float32x4_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vgetq_lane_f32 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
vmla_laneq_s16 (int16x4_t __a, int16x4_t __b,
int16x8_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vgetq_lane_s16 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
vmla_laneq_s32 (int32x2_t __a, int32x2_t __b,
int32x4_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vgetq_lane_s32 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
vmla_laneq_u16 (uint16x4_t __a, uint16x4_t __b,
uint16x8_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vgetq_lane_u16 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
vmla_laneq_u32 (uint32x2_t __a, uint32x2_t __b,
uint32x4_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vgetq_lane_u32 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
/* vmlaq_lane */
@@ -18733,35 +18669,35 @@ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
vmlaq_lane_f32 (float32x4_t __a, float32x4_t __b,
float32x2_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vget_lane_f32 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int16x8_t __attribute__ ((__always_inline__))
vmlaq_lane_s16 (int16x8_t __a, int16x8_t __b,
int16x4_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vget_lane_s16 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int32x4_t __attribute__ ((__always_inline__))
vmlaq_lane_s32 (int32x4_t __a, int32x4_t __b,
int32x2_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vget_lane_s32 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
vmlaq_lane_u16 (uint16x8_t __a, uint16x8_t __b,
uint16x4_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vget_lane_u16 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
vmlaq_lane_u32 (uint32x4_t __a, uint32x4_t __b,
uint32x2_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vget_lane_u32 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
/* vmlaq_laneq */
@@ -18770,35 +18706,35 @@ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
vmlaq_laneq_f32 (float32x4_t __a, float32x4_t __b,
float32x4_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vgetq_lane_f32 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int16x8_t __attribute__ ((__always_inline__))
vmlaq_laneq_s16 (int16x8_t __a, int16x8_t __b,
int16x8_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vgetq_lane_s16 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int32x4_t __attribute__ ((__always_inline__))
vmlaq_laneq_s32 (int32x4_t __a, int32x4_t __b,
int32x4_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vgetq_lane_s32 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
vmlaq_laneq_u16 (uint16x8_t __a, uint16x8_t __b,
uint16x8_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vgetq_lane_u16 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
vmlaq_laneq_u32 (uint32x4_t __a, uint32x4_t __b,
uint32x4_t __c, const int __lane)
{
- return (__a + (__b * __aarch64_vgetq_lane_u32 (__c, __lane)));
+ return (__a + (__b * __aarch64_vget_lane_any (__c, __lane)));
}
/* vmls */
@@ -18833,35 +18769,35 @@ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
vmls_lane_f32 (float32x2_t __a, float32x2_t __b,
float32x2_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vget_lane_f32 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
vmls_lane_s16 (int16x4_t __a, int16x4_t __b,
int16x4_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vget_lane_s16 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
vmls_lane_s32 (int32x2_t __a, int32x2_t __b,
int32x2_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vget_lane_s32 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
vmls_lane_u16 (uint16x4_t __a, uint16x4_t __b,
uint16x4_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vget_lane_u16 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
vmls_lane_u32 (uint32x2_t __a, uint32x2_t __b,
uint32x2_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vget_lane_u32 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
/* vmls_laneq */
@@ -18870,35 +18806,35 @@ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
vmls_laneq_f32 (float32x2_t __a, float32x2_t __b,
float32x4_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vgetq_lane_f32 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
vmls_laneq_s16 (int16x4_t __a, int16x4_t __b,
int16x8_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vgetq_lane_s16 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
vmls_laneq_s32 (int32x2_t __a, int32x2_t __b,
int32x4_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vgetq_lane_s32 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
vmls_laneq_u16 (uint16x4_t __a, uint16x4_t __b,
uint16x8_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vgetq_lane_u16 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
vmls_laneq_u32 (uint32x2_t __a, uint32x2_t __b,
uint32x4_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vgetq_lane_u32 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
/* vmlsq_lane */
@@ -18907,35 +18843,35 @@ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
vmlsq_lane_f32 (float32x4_t __a, float32x4_t __b,
float32x2_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vget_lane_f32 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int16x8_t __attribute__ ((__always_inline__))
vmlsq_lane_s16 (int16x8_t __a, int16x8_t __b,
int16x4_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vget_lane_s16 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int32x4_t __attribute__ ((__always_inline__))
vmlsq_lane_s32 (int32x4_t __a, int32x4_t __b,
int32x2_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vget_lane_s32 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
vmlsq_lane_u16 (uint16x8_t __a, uint16x8_t __b,
uint16x4_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vget_lane_u16 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
vmlsq_lane_u32 (uint32x4_t __a, uint32x4_t __b,
uint32x2_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vget_lane_u32 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
/* vmlsq_laneq */
@@ -18944,34 +18880,34 @@ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
vmlsq_laneq_f32 (float32x4_t __a, float32x4_t __b,
float32x4_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vgetq_lane_f32 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int16x8_t __attribute__ ((__always_inline__))
vmlsq_laneq_s16 (int16x8_t __a, int16x8_t __b,
int16x8_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vgetq_lane_s16 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline int32x4_t __attribute__ ((__always_inline__))
vmlsq_laneq_s32 (int32x4_t __a, int32x4_t __b,
int32x4_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vgetq_lane_s32 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
vmlsq_laneq_u16 (uint16x8_t __a, uint16x8_t __b,
uint16x8_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vgetq_lane_u16 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
vmlsq_laneq_u32 (uint32x4_t __a, uint32x4_t __b,
uint32x4_t __c, const int __lane)
{
- return (__a - (__b * __aarch64_vgetq_lane_u32 (__c, __lane)));
+ return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));
}
/* vmov_n_ */
@@ -19125,7 +19061,7 @@ vmovq_n_u64 (uint64_t __a)
__extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
vmul_lane_f32 (float32x2_t __a, float32x2_t __b, const int __lane)
{
- return __a * __aarch64_vget_lane_f32 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline float64x1_t __attribute__ ((__always_inline__))
@@ -19137,25 +19073,25 @@ vmul_lane_f64 (float64x1_t __a, float64x1_t __b, const int __lane)
__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
vmul_lane_s16 (int16x4_t __a, int16x4_t __b, const int __lane)
{
- return __a * __aarch64_vget_lane_s16 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
vmul_lane_s32 (int32x2_t __a, int32x2_t __b, const int __lane)
{
- return __a * __aarch64_vget_lane_s32 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
vmul_lane_u16 (uint16x4_t __a, uint16x4_t __b, const int __lane)
{
- return __a * __aarch64_vget_lane_u16 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
vmul_lane_u32 (uint32x2_t __a, uint32x2_t __b, const int __lane)
{
- return __a * __aarch64_vget_lane_u32 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
/* vmuld_lane */
@@ -19163,13 +19099,13 @@ vmul_lane_u32 (uint32x2_t __a, uint32x2_t __b, const int __lane)
__extension__ static __inline float64_t __attribute__ ((__always_inline__))
vmuld_lane_f64 (float64_t __a, float64x1_t __b, const int __lane)
{
- return __a * __aarch64_vget_lane_f64 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline float64_t __attribute__ ((__always_inline__))
vmuld_laneq_f64 (float64_t __a, float64x2_t __b, const int __lane)
{
- return __a * __aarch64_vgetq_lane_f64 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
/* vmuls_lane */
@@ -19177,13 +19113,13 @@ vmuld_laneq_f64 (float64_t __a, float64x2_t __b, const int __lane)
__extension__ static __inline float32_t __attribute__ ((__always_inline__))
vmuls_lane_f32 (float32_t __a, float32x2_t __b, const int __lane)
{
- return __a * __aarch64_vget_lane_f32 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline float32_t __attribute__ ((__always_inline__))
vmuls_laneq_f32 (float32_t __a, float32x4_t __b, const int __lane)
{
- return __a * __aarch64_vgetq_lane_f32 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
/* vmul_laneq */
@@ -19191,37 +19127,37 @@ vmuls_laneq_f32 (float32_t __a, float32x4_t __b, const int __lane)
__extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
vmul_laneq_f32 (float32x2_t __a, float32x4_t __b, const int __lane)
{
- return __a * __aarch64_vgetq_lane_f32 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline float64x1_t __attribute__ ((__always_inline__))
vmul_laneq_f64 (float64x1_t __a, float64x2_t __b, const int __lane)
{
- return __a * __aarch64_vgetq_lane_f64 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
vmul_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __lane)
{
- return __a * __aarch64_vgetq_lane_s16 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
vmul_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __lane)
{
- return __a * __aarch64_vgetq_lane_s32 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
vmul_laneq_u16 (uint16x4_t __a, uint16x8_t __b, const int __lane)
{
- return __a * __aarch64_vgetq_lane_u16 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
vmul_laneq_u32 (uint32x2_t __a, uint32x4_t __b, const int __lane)
{
- return __a * __aarch64_vgetq_lane_u32 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
/* vmul_n */
@@ -19237,7 +19173,7 @@ vmul_n_f64 (float64x1_t __a, float64_t __b)
__extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
vmulq_lane_f32 (float32x4_t __a, float32x2_t __b, const int __lane)
{
- return __a * __aarch64_vget_lane_f32 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline float64x2_t __attribute__ ((__always_inline__))
@@ -19250,25 +19186,25 @@ vmulq_lane_f64 (float64x2_t __a, float64x1_t __b, const int __lane)
__extension__ static __inline int16x8_t __attribute__ ((__always_inline__))
vmulq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __lane)
{
- return __a * __aarch64_vget_lane_s16 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline int32x4_t __attribute__ ((__always_inline__))
vmulq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __lane)
{
- return __a * __aarch64_vget_lane_s32 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
vmulq_lane_u16 (uint16x8_t __a, uint16x4_t __b, const int __lane)
{
- return __a * __aarch64_vget_lane_u16 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
vmulq_lane_u32 (uint32x4_t __a, uint32x2_t __b, const int __lane)
{
- return __a * __aarch64_vget_lane_u32 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
/* vmulq_laneq */
@@ -19276,37 +19212,37 @@ vmulq_lane_u32 (uint32x4_t __a, uint32x2_t __b, const int __lane)
__extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
vmulq_laneq_f32 (float32x4_t __a, float32x4_t __b, const int __lane)
{
- return __a * __aarch64_vgetq_lane_f32 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline float64x2_t __attribute__ ((__always_inline__))
vmulq_laneq_f64 (float64x2_t __a, float64x2_t __b, const int __lane)
{
- return __a * __aarch64_vgetq_lane_f64 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline int16x8_t __attribute__ ((__always_inline__))
vmulq_laneq_s16 (int16x8_t __a, int16x8_t __b, const int __lane)
{
- return __a * __aarch64_vgetq_lane_s16 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline int32x4_t __attribute__ ((__always_inline__))
vmulq_laneq_s32 (int32x4_t __a, int32x4_t __b, const int __lane)
{
- return __a * __aarch64_vgetq_lane_s32 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
vmulq_laneq_u16 (uint16x8_t __a, uint16x8_t __b, const int __lane)
{
- return __a * __aarch64_vgetq_lane_u16 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
vmulq_laneq_u32 (uint32x4_t __a, uint32x4_t __b, const int __lane)
{
- return __a * __aarch64_vgetq_lane_u32 (__b, __lane);
+ return __a * __aarch64_vget_lane_any (__b, __lane);
}
/* vneg */
@@ -25480,31 +25416,6 @@ __INTERLEAVE_LIST (zip)
/* End of optimal implementations in approved order. */
#undef __aarch64_vget_lane_any
-#undef __aarch64_vget_lane_f32
-#undef __aarch64_vget_lane_f64
-#undef __aarch64_vget_lane_p8
-#undef __aarch64_vget_lane_p16
-#undef __aarch64_vget_lane_s8
-#undef __aarch64_vget_lane_s16
-#undef __aarch64_vget_lane_s32
-#undef __aarch64_vget_lane_s64
-#undef __aarch64_vget_lane_u8
-#undef __aarch64_vget_lane_u16
-#undef __aarch64_vget_lane_u32
-#undef __aarch64_vget_lane_u64
-
-#undef __aarch64_vgetq_lane_f32
-#undef __aarch64_vgetq_lane_f64
-#undef __aarch64_vgetq_lane_p8
-#undef __aarch64_vgetq_lane_p16
-#undef __aarch64_vgetq_lane_s8
-#undef __aarch64_vgetq_lane_s16
-#undef __aarch64_vgetq_lane_s32
-#undef __aarch64_vgetq_lane_s64
-#undef __aarch64_vgetq_lane_u8
-#undef __aarch64_vgetq_lane_u16
-#undef __aarch64_vgetq_lane_u32
-#undef __aarch64_vgetq_lane_u64
#undef __aarch64_vdup_lane_any
#undef __aarch64_vdup_lane_f32
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+float32_t
+test_vget_lane_f32_before (float32x2_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 1" "" {target *-*-*} 0 } */
+ return vget_lane_f32 (in, -1);
+}
+
+float32_t
+test_vget_lane_f32_beyond (float32x2_t in)
+{
+ /* { dg-error "lane 2 out of range 0 - 1" "" {target *-*-*} 0 } */
+ return vget_lane_f32 (in, 2);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+float64_t
+test_vget_lane_f64_before (float64x1_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 0" "" {target *-*-*} 0 } */
+ return vget_lane_f64 (in, -1);
+}
+
+float64_t
+test_vget_lane_f64_beyond (float64x1_t in)
+{
+ /* { dg-error "lane 1 out of range 0 - 0" "" {target *-*-*} 0 } */
+ return vget_lane_f64 (in, 1);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+poly16_t
+test_vget_lane_p16_before (poly16x4_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 3" "" {target *-*-*} 0 } */
+ return vget_lane_p16 (in, -1);
+}
+
+poly16_t
+test_vget_lane_p16_beyond (poly16x4_t in)
+{
+ /* { dg-error "lane 4 out of range 0 - 3" "" {target *-*-*} 0 } */
+ return vget_lane_p16 (in, 4);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+poly8_t
+test_vget_lane_p8_before (poly8x8_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 7" "" {target *-*-*} 0 } */
+ return vget_lane_p8 (in, -1);
+}
+
+poly8_t
+test_vget_lane_p8_beyond (poly8x8_t in)
+{
+ /* { dg-error "lane 8 out of range 0 - 7" "" {target *-*-*} 0 } */
+ return vget_lane_p8 (in, 8);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+int16_t
+test_vget_lane_s16_before (int16x4_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 3" "" {target *-*-*} 0 } */
+ return vget_lane_s16 (in, -1);
+}
+
+int16_t
+test_vget_lane_s16_beyond (int16x4_t in)
+{
+ /* { dg-error "lane 4 out of range 0 - 3" "" {target *-*-*} 0 } */
+ return vget_lane_s16 (in, 4);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+int32_t
+test_vget_lane_s32_before (int32x2_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 1" "" {target *-*-*} 0 } */
+ return vget_lane_s32 (in, -1);
+}
+
+int32_t
+test_vget_lane_s32_beyond (int32x2_t in)
+{
+ /* { dg-error "lane 2 out of range 0 - 1" "" {target *-*-*} 0 } */
+ return vget_lane_s32 (in, 2);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+int64_t
+test_vget_lane_s64_before (int64x1_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 0" "" {target *-*-*} 0 } */
+ return vget_lane_s64 (in, -1);
+}
+
+int64_t
+test_vget_lane_s64_beyond (int64x1_t in)
+{
+ /* { dg-error "lane 1 out of range 0 - 0" "" {target *-*-*} 0 } */
+ return vget_lane_s64 (in, 1);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+int8_t
+test_vget_lane_s8_before (int8x8_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 7" "" {target *-*-*} 0 } */
+ return vget_lane_s8 (in, -1);
+}
+
+int8_t
+test_vget_lane_s8_beyond (int8x8_t in)
+{
+ /* { dg-error "lane 8 out of range 0 - 7" "" {target *-*-*} 0 } */
+ return vget_lane_s8 (in, 8);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+uint16_t
+test_vget_lane_u16_before (uint16x4_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 3" "" {target *-*-*} 0 } */
+ return vget_lane_u16 (in, -1);
+}
+
+uint16_t
+test_vget_lane_u16_beyond (uint16x4_t in)
+{
+ /* { dg-error "lane 4 out of range 0 - 3" "" {target *-*-*} 0 } */
+ return vget_lane_u16 (in, 4);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+uint32_t
+test_vget_lane_u32_before (uint32x2_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 1" "" {target *-*-*} 0 } */
+ return vget_lane_u32 (in, -1);
+}
+
+uint32_t
+test_vget_lane_u32_beyond (uint32x2_t in)
+{
+ /* { dg-error "lane 2 out of range 0 - 1" "" {target *-*-*} 0 } */
+ return vget_lane_u32 (in, 2);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+uint64_t
+test_vget_lane_u64_before (uint64x1_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 0" "" {target *-*-*} 0 } */
+ return vget_lane_u64 (in, -1);
+}
+
+uint64_t
+test_vget_lane_u64_beyond (uint64x1_t in)
+{
+ /* { dg-error "lane 1 out of range 0 - 0" "" {target *-*-*} 0 } */
+ return vget_lane_u64 (in, 1);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+uint8_t
+test_vget_lane_u8_before (uint8x8_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 7" "" {target *-*-*} 0 } */
+ return vget_lane_u8 (in, -1);
+}
+
+uint8_t
+test_vget_lane_u8_beyond (uint8x8_t in)
+{
+ /* { dg-error "lane 8 out of range 0 - 7" "" {target *-*-*} 0 } */
+ return vget_lane_u8 (in, 8);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+float32_t
+test_vgetq_lane_f32_before (float32x4_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 3" "" {target *-*-*} 0 } */
+ return vgetq_lane_f32 (in, -1);
+}
+
+float32_t
+test_vgetq_lane_f32_beyond (float32x4_t in)
+{
+ /* { dg-error "lane 4 out of range 0 - 3" "" {target *-*-*} 0 } */
+ return vgetq_lane_f32 (in, 4);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+float64_t
+test_vgetq_lane_f64_before (float64x2_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 1" "" {target *-*-*} 0 } */
+ return vgetq_lane_f64 (in, -1);
+}
+
+float64_t
+test_vgetq_lane_f64_beyond (float64x2_t in)
+{
+ /* { dg-error "lane 2 out of range 0 - 1" "" {target *-*-*} 0 } */
+ return vgetq_lane_f64 (in, 2);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+poly16_t
+test_vgetq_lane_p16_before (poly16x8_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 7" "" {target *-*-*} 0 } */
+ return vgetq_lane_p16 (in, -1);
+}
+
+poly16_t
+test_vgetq_lane_p16_beyond (poly16x8_t in)
+{
+ /* { dg-error "lane 8 out of range 0 - 7" "" {target *-*-*} 0 } */
+ return vgetq_lane_p16 (in, 8);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+poly8_t
+test_vgetq_lane_p8_before (poly8x16_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 15" "" {target *-*-*} 0 } */
+ return vgetq_lane_p8 (in, -1);
+}
+
+poly8_t
+test_vgetq_lane_p8_beyond (poly8x16_t in)
+{
+ /* { dg-error "lane 16 out of range 0 - 15" "" {target *-*-*} 0 } */
+ return vgetq_lane_p8 (in, 16);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+int16_t
+test_vgetq_lane_s16_before (int16x8_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 7" "" {target *-*-*} 0 } */
+ return vgetq_lane_s16 (in, -1);
+}
+
+int16_t
+test_vgetq_lane_s16_beyond (int16x8_t in)
+{
+ /* { dg-error "lane 8 out of range 0 - 7" "" {target *-*-*} 0 } */
+ return vgetq_lane_s16 (in, 8);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+int32_t
+test_vgetq_lane_s32_before (int32x4_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 3" "" {target *-*-*} 0 } */
+ return vgetq_lane_s32 (in, -1);
+}
+
+int32_t
+test_vgetq_lane_s32_beyond (int32x4_t in)
+{
+ /* { dg-error "lane 4 out of range 0 - 3" "" {target *-*-*} 0 } */
+ return vgetq_lane_s32 (in, 4);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+int64_t
+test_vgetq_lane_s64_before (int64x2_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 1" "" {target *-*-*} 0 } */
+ return vgetq_lane_s64 (in, -1);
+}
+
+int64_t
+test_vgetq_lane_s64_beyond (int64x2_t in)
+{
+ /* { dg-error "lane 2 out of range 0 - 1" "" {target *-*-*} 0 } */
+ return vgetq_lane_s64 (in, 2);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+int8_t
+test_vgetq_lane_s8_before (int8x16_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 15" "" {target *-*-*} 0 } */
+ return vgetq_lane_s8 (in, -1);
+}
+
+int8_t
+test_vgetq_lane_s8_beyond (int8x16_t in)
+{
+ /* { dg-error "lane 16 out of range 0 - 15" "" {target *-*-*} 0 } */
+ return vgetq_lane_s8 (in, 16);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+uint16_t
+test_vgetq_lane_u16_before (uint16x8_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 7" "" {target *-*-*} 0 } */
+ return vgetq_lane_u16 (in, -1);
+}
+
+uint16_t
+test_vgetq_lane_u16_beyond (uint16x8_t in)
+{
+ /* { dg-error "lane 8 out of range 0 - 7" "" {target *-*-*} 0 } */
+ return vgetq_lane_u16 (in, 8);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+uint32_t
+test_vgetq_lane_u32_before (uint32x4_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 3" "" {target *-*-*} 0 } */
+ return vgetq_lane_u32 (in, -1);
+}
+
+uint32_t
+test_vgetq_lane_u32_beyond (uint32x4_t in)
+{
+ /* { dg-error "lane 4 out of range 0 - 3" "" {target *-*-*} 0 } */
+ return vgetq_lane_u32 (in, 4);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+uint64_t
+test_vgetq_lane_u64_before (uint64x2_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 1" "" {target *-*-*} 0 } */
+ return vgetq_lane_u64 (in, -1);
+}
+
+uint64_t
+test_vgetq_lane_u64_beyond (uint64x2_t in)
+{
+ /* { dg-error "lane 2 out of range 0 - 1" "" {target *-*-*} 0 } */
+ return vgetq_lane_u64 (in, 2);
+}
new file mode 100644
@@ -0,0 +1,17 @@
+/* { dg-do assemble } */
+
+#include <arm_neon.h>
+
+uint8_t
+test_vgetq_lane_u8_before (uint8x16_t in)
+{
+ /* { dg-error "lane -1 out of range 0 - 15" "" {target *-*-*} 0 } */
+ return vgetq_lane_u8 (in, -1);
+}
+
+uint8_t
+test_vgetq_lane_u8_beyond (uint8x16_t in)
+{
+ /* { dg-error "lane 16 out of range 0 - 15" "" {target *-*-*} 0 } */
+ return vgetq_lane_u8 (in, 16);
+}