This patch fixes an issue with vmin* and vmax* intrinsics which accept
a scalar argument. Previously when the scalar was of different width
to the vector elements this would generate __ARM_undef. This change
allows the scalar argument to be implicitly converted to the correct
width. Also tidied up the relevant unit tests, some of which would
have passed even if only one of two or three intrinsic calls had
compiled correctly.
gcc/ChangeLog:
2020-08-10 Joe Ramsay <joe.ramsay@arm.com>
* config/arm/arm_mve.h (__arm_vmaxnmavq): Remove coercion of scalar
argument.
(__arm_vmaxnmvq): Likewise.
(__arm_vminnmavq): Likewise.
(__arm_vminnmvq): Likewise.
(__arm_vmaxnmavq_p): Likewise.
(__arm_vmaxnmvq_p): Likewise (and delete duplicate definition).
(__arm_vminnmavq_p): Likewise.
(__arm_vminnmvq_p): Likewise.
(__arm_vmaxavq): Likewise.
(__arm_vmaxavq_p): Likewise.
(__arm_vmaxvq): Likewise.
(__arm_vmaxvq_p): Likewise.
(__arm_vminavq): Likewise.
(__arm_vminavq_p): Likewise.
(__arm_vminvq): Likewise.
(__arm_vminvq_p): Likewise.
gcc/testsuite/ChangeLog:
* gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c: Add test for mismatched
width of scalar argument.
* gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxavq_s16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxavq_s32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxavq_s8.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxvq_s16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxvq_s32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxvq_s8.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxvq_u16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxvq_u32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxvq_u8.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminavq_p_s16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminavq_p_s32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminavq_p_s8.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminavq_s16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminavq_s32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminavq_s8.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmavq_f16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmavq_f32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmvq_f16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmvq_f32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminvq_p_s16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminvq_p_s32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminvq_p_s8.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminvq_p_u16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminvq_p_u32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminvq_p_u8.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminvq_s16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminvq_s32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminvq_s8.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminvq_u16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminvq_u32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminvq_u8.c: Likewise.
(cherry picked from commit
251950d899bc3c18b5775fe9fe20bebbdc8d15cb)
#define __arm_vmaxavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
__typeof(p1) __p1 = (p1); \
_Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vmaxavq_s8 (__ARM_mve_coerce(__p0, uint8_t), __ARM_mve_coerce(__p1, int8x16_t)), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vmaxavq_s16 (__ARM_mve_coerce(__p0, uint16_t), __ARM_mve_coerce(__p1, int16x8_t)), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vmaxavq_s32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, int32x4_t)));})
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vmaxavq_s8 (__p0, __ARM_mve_coerce(__p1, int8x16_t)), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vmaxavq_s16 (__p0, __ARM_mve_coerce(__p1, int16x8_t)), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vmaxavq_s32 (__p0, __ARM_mve_coerce(__p1, int32x4_t)));})
#define __arm_vmaxavq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
__typeof(p1) __p1 = (p1); \
_Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vmaxavq_p_s8 (__ARM_mve_coerce(__p0, uint8_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vmaxavq_p_s16 (__ARM_mve_coerce(__p0, uint16_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vmaxavq_p_s32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, int32x4_t), p2));})
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vmaxavq_p_s8 (__p0, __ARM_mve_coerce(__p1, int8x16_t), p2), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vmaxavq_p_s16 (__p0, __ARM_mve_coerce(__p1, int16x8_t), p2), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vmaxavq_p_s32 (__p0, __ARM_mve_coerce(__p1, int32x4_t), p2));})
#define __arm_vmaxq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
__typeof(p2) __p2 = (p2); \
#define __arm_vmaxvq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
__typeof(p1) __p1 = (p1); \
_Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vmaxvq_s8 (__ARM_mve_coerce(__p0, int8_t), __ARM_mve_coerce(__p1, int8x16_t)), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vmaxvq_s16 (__ARM_mve_coerce(__p0, int16_t), __ARM_mve_coerce(__p1, int16x8_t)), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vmaxvq_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t)), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vmaxvq_u8 (__ARM_mve_coerce(__p0, uint8_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vmaxvq_u16 (__ARM_mve_coerce(__p0, uint16_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vmaxvq_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t)));})
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vmaxvq_s8 (__p0, __ARM_mve_coerce(__p1, int8x16_t)), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vmaxvq_s16 (__p0, __ARM_mve_coerce(__p1, int16x8_t)), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vmaxvq_s32 (__p0, __ARM_mve_coerce(__p1, int32x4_t)), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vmaxvq_u8 (__p0, __ARM_mve_coerce(__p1, uint8x16_t)), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vmaxvq_u16 (__p0, __ARM_mve_coerce(__p1, uint16x8_t)), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vmaxvq_u32 (__p0,__ARM_mve_coerce(__p1, uint32x4_t)));})
#define __arm_vmaxvq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
__typeof(p1) __p1 = (p1); \
_Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vmaxvq_p_s8 (__ARM_mve_coerce(__p0, int8_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vmaxvq_p_s16 (__ARM_mve_coerce(__p0, int16_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vmaxvq_p_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vmaxvq_p_u8 (__ARM_mve_coerce(__p0, uint8_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vmaxvq_p_u16 (__ARM_mve_coerce(__p0, uint16_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vmaxvq_p_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vmaxvq_p_s8 (__p0, __ARM_mve_coerce(__p1, int8x16_t), p2), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vmaxvq_p_s16 (__p0, __ARM_mve_coerce(__p1, int16x8_t), p2), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vmaxvq_p_s32 (__p0, __ARM_mve_coerce(__p1, int32x4_t), p2), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vmaxvq_p_u8 (__p0, __ARM_mve_coerce(__p1, uint8x16_t), p2), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vmaxvq_p_u16 (__p0, __ARM_mve_coerce(__p1, uint16x8_t), p2), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vmaxvq_p_u32 (__p0, __ARM_mve_coerce(__p1, uint32x4_t), p2));})
#define __arm_vminavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
__typeof(p1) __p1 = (p1); \
_Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vminavq_s8 (__ARM_mve_coerce(__p0, uint8_t), __ARM_mve_coerce(__p1, int8x16_t)), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vminavq_s16 (__ARM_mve_coerce(__p0, uint16_t), __ARM_mve_coerce(__p1, int16x8_t)), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vminavq_s32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, int32x4_t)));})
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vminavq_s8 (__p0, __ARM_mve_coerce(__p1, int8x16_t)), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vminavq_s16 (__p0, __ARM_mve_coerce(__p1, int16x8_t)), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vminavq_s32 (__p0, __ARM_mve_coerce(__p1, int32x4_t)));})
#define __arm_vminavq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
__typeof(p1) __p1 = (p1); \
_Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vminavq_p_s8 (__ARM_mve_coerce(__p0, uint8_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vminavq_p_s16 (__ARM_mve_coerce(__p0, uint16_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vminavq_p_s32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, int32x4_t), p2));})
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vminavq_p_s8 (__p0, __ARM_mve_coerce(__p1, int8x16_t), p2), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vminavq_p_s16 (__p0, __ARM_mve_coerce(__p1, int16x8_t), p2), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vminavq_p_s32 (__p0, __ARM_mve_coerce(__p1, int32x4_t), p2));})
#define __arm_vminq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
__typeof(p2) __p2 = (p2); \
#define __arm_vminvq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
__typeof(p1) __p1 = (p1); \
_Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vminvq_s8 (__ARM_mve_coerce(__p0, int8_t), __ARM_mve_coerce(__p1, int8x16_t)), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vminvq_s16 (__ARM_mve_coerce(__p0, int16_t), __ARM_mve_coerce(__p1, int16x8_t)), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vminvq_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t)), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vminvq_u8 (__ARM_mve_coerce(__p0, uint8_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vminvq_u16 (__ARM_mve_coerce(__p0, uint16_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vminvq_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t)));})
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vminvq_s8 (__p0, __ARM_mve_coerce(__p1, int8x16_t)), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vminvq_s16 (__p0, __ARM_mve_coerce(__p1, int16x8_t)), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vminvq_s32 (__p0, __ARM_mve_coerce(__p1, int32x4_t)), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vminvq_u8 (__p0, __ARM_mve_coerce(__p1, uint8x16_t)), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vminvq_u16 (__p0, __ARM_mve_coerce(__p1, uint16x8_t)), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vminvq_u32 (__p0, __ARM_mve_coerce(__p1, uint32x4_t)));})
#define __arm_vminvq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
__typeof(p1) __p1 = (p1); \
_Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vminvq_p_s8 (__ARM_mve_coerce(__p0, int8_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vminvq_p_s16 (__ARM_mve_coerce(__p0, int16_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vminvq_p_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vminvq_p_u8 (__ARM_mve_coerce(__p0, uint8_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vminvq_p_u16 (__ARM_mve_coerce(__p0, uint16_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
- int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vminvq_p_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vminvq_p_s8 (__p0, __ARM_mve_coerce(__p1, int8x16_t), p2), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vminvq_p_s16 (__p0, __ARM_mve_coerce(__p1, int16x8_t), p2), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vminvq_p_s32 (__p0, __ARM_mve_coerce(__p1, int32x4_t), p2), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vminvq_p_u8 (__p0, __ARM_mve_coerce(__p1, uint8x16_t), p2), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vminvq_p_u16 (__p0, __ARM_mve_coerce(__p1, uint16x8_t), p2), \
+ int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vminvq_p_u32 (__p0, __ARM_mve_coerce(__p1, uint32x4_t), p2));})
#define __arm_vmladavaq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
__typeof(p1) __p1 = (p1); \
return vmaxavq_p_s16 (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxavt.s16" } } */
uint16_t
foo1 (uint16_t a, int16x8_t b, mve_pred16_t p)
return vmaxavq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxavt.s16" } } */
+
+int16_t
+foo2 (uint8_t a, int16x8_t b, mve_pred16_t p)
+{
+ return vmaxavq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxavt.s16" 3 } } */
return vmaxavq_p_s32 (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxavt.s32" } } */
uint32_t
foo1 (uint32_t a, int32x4_t b, mve_pred16_t p)
return vmaxavq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxavt.s32" } } */
+
+int32_t
+foo2 (uint16_t a, int32x4_t b, mve_pred16_t p)
+{
+ return vmaxavq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxavt.s32" 3 } } */
return vmaxavq_p_s8 (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxavt.s8" } } */
uint8_t
foo1 (uint8_t a, int8x16_t b, mve_pred16_t p)
return vmaxavq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxavt.s8" } } */
+
+int8_t
+foo2 (uint32_t a, int8x16_t b, mve_pred16_t p)
+{
+ return vmaxavq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxavt.s8" 3 } } */
return vmaxavq_s16 (a, b);
}
-/* { dg-final { scan-assembler "vmaxav.s16" } } */
uint16_t
foo1 (uint16_t a, int16x8_t b)
return vmaxavq (a, b);
}
-/* { dg-final { scan-assembler "vmaxav.s16" } } */
+
+int16_t
+foo2 (uint8_t a, int16x8_t b)
+{
+ return vmaxavq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxav.s16" 3 } } */
return vmaxavq_s32 (a, b);
}
-/* { dg-final { scan-assembler "vmaxav.s32" } } */
uint32_t
foo1 (uint32_t a, int32x4_t b)
return vmaxavq (a, b);
}
-/* { dg-final { scan-assembler "vmaxav.s32" } } */
+
+int32_t
+foo2 (uint16_t a, int32x4_t b)
+{
+ return vmaxavq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxav.s32" 3 } } */
return vmaxavq_s8 (a, b);
}
-/* { dg-final { scan-assembler "vmaxav.s8" } } */
uint8_t
foo1 (uint8_t a, int8x16_t b)
return vmaxavq (a, b);
}
-/* { dg-final { scan-assembler "vmaxav.s8" } } */
+
+int8_t
+foo2 (uint32_t a, int8x16_t b)
+{
+ return vmaxavq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxav.s8" 3 } } */
return vmaxnmavq_f16 (a, b);
}
-/* { dg-final { scan-assembler "vmaxnmav.f16" } } */
float16_t
foo1 (float16_t a, float16x8_t b)
return vmaxnmavq (a, b);
}
-/* { dg-final { scan-assembler "vmaxnmav.f16" } } */
+
+float16_t
+foo2 (float32_t a, float16x8_t b)
+{
+ return vmaxnmavq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxnmav.f16" 3 } } */
return vmaxnmavq_f32 (a, b);
}
-/* { dg-final { scan-assembler "vmaxnmav.f32" } } */
float32_t
foo1 (float32_t a, float32x4_t b)
return vmaxnmavq (a, b);
}
-/* { dg-final { scan-assembler "vmaxnmav.f32" } } */
+
+float32_t
+foo2 (float16_t a, float32x4_t b)
+{
+ return vmaxnmavq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxnmav.f32" 3 } } */
return vmaxnmavq_p_f16 (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxnmavt.f16" } } */
float16_t
foo1 (float16_t a, float16x8_t b, mve_pred16_t p)
return vmaxnmavq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxnmavt.f16" } } */
+
+float16_t
+foo2 (float32_t a, float16x8_t b, mve_pred16_t p)
+{
+ return vmaxnmavq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxnmavt.f16" 3 } } */
return vmaxnmavq_p_f32 (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxnmavt.f32" } } */
float32_t
foo1 (float32_t a, float32x4_t b, mve_pred16_t p)
return vmaxnmavq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxnmavt.f32" } } */
+
+float32_t
+foo2 (float16_t a, float32x4_t b, mve_pred16_t p)
+{
+ return vmaxnmavq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxnmavt.f32" 3 } } */
return vmaxnmvq_f16 (a, b);
}
-/* { dg-final { scan-assembler "vmaxnmv.f16" } } */
float16_t
foo1 (float16_t a, float16x8_t b)
return vmaxnmvq (a, b);
}
-/* { dg-final { scan-assembler "vmaxnmv.f16" } } */
+
+float16_t
+foo2 (float32_t a, float16x8_t b)
+{
+ return vmaxnmvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxnmv.f16" 3 } } */
return vmaxnmvq_f32 (a, b);
}
-/* { dg-final { scan-assembler "vmaxnmv.f32" } } */
float32_t
foo1 (float32_t a, float32x4_t b)
return vmaxnmvq (a, b);
}
-/* { dg-final { scan-assembler "vmaxnmv.f32" } } */
+
+float32_t
+foo2 (float16_t a, float32x4_t b)
+{
+ return vmaxnmvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxnmv.f32" 3 } } */
return vmaxnmvq_p_f16 (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxnmvt.f16" } } */
float16_t
foo1 (float16_t a, float16x8_t b, mve_pred16_t p)
return vmaxnmvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxnmvt.f16" } } */
+
+float16_t
+foo2 (float32_t a, float16x8_t b, mve_pred16_t p)
+{
+ return vmaxnmvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxnmvt.f16" 3 } } */
return vmaxnmvq_p_f32 (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxnmvt.f32" } } */
float32_t
foo1 (float32_t a, float32x4_t b, mve_pred16_t p)
return vmaxnmvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxnmvt.f32" } } */
+
+float32_t
+foo2 (float16_t a, float32x4_t b, mve_pred16_t p)
+{
+ return vmaxnmvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxnmvt.f32" 3 } } */
return vmaxvq_p_s16 (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxvt.s16" } } */
int16_t
foo1 (int16_t a, int16x8_t b, mve_pred16_t p)
return vmaxvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxvt.s16" } } */
+
+int16_t
+foo2 (int8_t a, int16x8_t b, mve_pred16_t p)
+{
+ return vmaxvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxvt.s16" 3 } } */
return vmaxvq_p_s32 (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxvt.s32" } } */
int32_t
foo1 (int32_t a, int32x4_t b, mve_pred16_t p)
return vmaxvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxvt.s32" } } */
+
+int32_t
+foo2 (int16_t a, int32x4_t b, mve_pred16_t p)
+{
+ return vmaxvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxvt.s32" 3 } } */
return vmaxvq_p_s8 (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxvt.s8" } } */
int8_t
foo1 (int8_t a, int8x16_t b, mve_pred16_t p)
return vmaxvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxvt.s8" } } */
+
+int8_t
+foo2 (int32_t a, int8x16_t b, mve_pred16_t p)
+{
+ return vmaxvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxvt.s8" 3 } } */
return vmaxvq_p_u16 (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxvt.u16" } } */
uint16_t
foo1 (uint16_t a, uint16x8_t b, mve_pred16_t p)
return vmaxvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxvt.u16" } } */
+
+uint16_t
+foo2 (uint32_t a, uint16x8_t b, mve_pred16_t p)
+{
+ return vmaxvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxvt.u16" 3 } } */
return vmaxvq_p_u32 (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxvt.u32" } } */
uint32_t
foo1 (uint32_t a, uint32x4_t b, mve_pred16_t p)
return vmaxvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxvt.u32" } } */
+
+uint32_t
+foo2 (uint8_t a, uint32x4_t b, mve_pred16_t p)
+{
+ return vmaxvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxvt.u32" 3 } } */
return vmaxvq_p_u8 (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxvt.u8" } } */
uint8_t
foo1 (uint8_t a, uint8x16_t b, mve_pred16_t p)
return vmaxvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vmaxvt.u8" } } */
+
+uint8_t
+foo2 (uint16_t a, uint8x16_t b, mve_pred16_t p)
+{
+ return vmaxvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxvt.u8" 3 } } */
return vmaxvq_s16 (a, b);
}
-/* { dg-final { scan-assembler "vmaxv.s16" } } */
int16_t
foo1 (int16_t a, int16x8_t b)
return vmaxvq (a, b);
}
-/* { dg-final { scan-assembler "vmaxv.s16" } } */
+
+int16_t
+foo2 (int8_t a, int16x8_t b)
+{
+ return vmaxvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxv.s16" 3 } } */
return vmaxvq_s32 (a, b);
}
-/* { dg-final { scan-assembler "vmaxv.s32" } } */
int32_t
foo1 (int32_t a, int32x4_t b)
return vmaxvq (a, b);
}
-/* { dg-final { scan-assembler "vmaxv.s32" } } */
+
+int32_t
+foo2 (int16_t a, int32x4_t b)
+{
+ return vmaxvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxv.s32" 3 } } */
return vmaxvq_s8 (a, b);
}
-/* { dg-final { scan-assembler "vmaxv.s8" } } */
int8_t
foo1 (int8_t a, int8x16_t b)
return vmaxvq (a, b);
}
-/* { dg-final { scan-assembler "vmaxv.s8" } } */
+
+int8_t
+foo2 (int32_t a, int8x16_t b)
+{
+ return vmaxvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxv.s8" 3 } } */
return vmaxvq_u16 (a, b);
}
-/* { dg-final { scan-assembler "vmaxv.u16" } } */
uint16_t
foo1 (uint16_t a, uint16x8_t b)
return vmaxvq (a, b);
}
-/* { dg-final { scan-assembler "vmaxv.u16" } } */
+
+uint16_t
+foo2 (uint32_t a, uint16x8_t b)
+{
+ return vmaxvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxv.u16" 3 } } */
return vmaxvq_u32 (a, b);
}
-/* { dg-final { scan-assembler "vmaxv.u32" } } */
uint32_t
foo1 (uint32_t a, uint32x4_t b)
return vmaxvq (a, b);
}
-/* { dg-final { scan-assembler "vmaxv.u32" } } */
+
+uint32_t
+foo2 (uint8_t a, uint32x4_t b)
+{
+ return vmaxvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxv.u32" 3 } } */
return vmaxvq_u8 (a, b);
}
-/* { dg-final { scan-assembler "vmaxv.u8" } } */
uint8_t
foo1 (uint8_t a, uint8x16_t b)
return vmaxvq (a, b);
}
-/* { dg-final { scan-assembler "vmaxv.u8" } } */
+
+uint8_t
+foo2 (uint16_t a, uint8x16_t b)
+{
+ return vmaxvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vmaxv.u8" 3 } } */
return vminavq_p_s16 (a, b, p);
}
-/* { dg-final { scan-assembler "vminavt.s16" } } */
uint16_t
foo1 (uint16_t a, int16x8_t b, mve_pred16_t p)
return vminavq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vminavt.s16" } } */
+
+int16_t
+foo2 (uint8_t a, int16x8_t b, mve_pred16_t p)
+{
+ return vminavq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminavt.s16" 3 } } */
return vminavq_p_s32 (a, b, p);
}
-/* { dg-final { scan-assembler "vminavt.s32" } } */
uint32_t
foo1 (uint32_t a, int32x4_t b, mve_pred16_t p)
return vminavq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vminavt.s32" } } */
+
+int32_t
+foo2 (uint16_t a, int32x4_t b, mve_pred16_t p)
+{
+ return vminavq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminavt.s32" 3 } } */
return vminavq_p_s8 (a, b, p);
}
-/* { dg-final { scan-assembler "vminavt.s8" } } */
uint8_t
foo1 (uint8_t a, int8x16_t b, mve_pred16_t p)
return vminavq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vminavt.s8" } } */
+
+int8_t
+foo2 (uint32_t a, int8x16_t b, mve_pred16_t p)
+{
+ return vminavq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminavt.s8" 3 } } */
return vminavq_s16 (a, b);
}
-/* { dg-final { scan-assembler "vminav.s16" } } */
uint16_t
foo1 (uint16_t a, int16x8_t b)
return vminavq (a, b);
}
-/* { dg-final { scan-assembler "vminav.s16" } } */
+
+int16_t
+foo2 (uint8_t a, int16x8_t b)
+{
+ return vminavq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminav.s16" 3 } } */
return vminavq_s32 (a, b);
}
-/* { dg-final { scan-assembler "vminav.s32" } } */
uint32_t
foo1 (uint32_t a, int32x4_t b)
return vminavq (a, b);
}
-/* { dg-final { scan-assembler "vminav.s32" } } */
+
+int32_t
+foo2 (uint16_t a, int32x4_t b)
+{
+ return vminavq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminav.s32" 3 } } */
return vminavq_s8 (a, b);
}
-/* { dg-final { scan-assembler "vminav.s8" } } */
uint8_t
foo1 (uint8_t a, int8x16_t b)
return vminavq (a, b);
}
-/* { dg-final { scan-assembler "vminav.s8" } } */
+
+int8_t
+foo2 (uint32_t a, int8x16_t b)
+{
+ return vminavq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminav.s8" 3 } } */
return vminnmavq_f16 (a, b);
}
-/* { dg-final { scan-assembler "vminnmav.f16" } } */
float16_t
foo1 (float16_t a, float16x8_t b)
return vminnmavq (a, b);
}
-/* { dg-final { scan-assembler "vminnmav.f16" } } */
+
+float16_t
+foo2 (float32_t a, float16x8_t b)
+{
+ return vminnmavq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminnmav.f16" 3 } } */
return vminnmavq_f32 (a, b);
}
-/* { dg-final { scan-assembler "vminnmav.f32" } } */
float32_t
foo1 (float32_t a, float32x4_t b)
return vminnmavq (a, b);
}
-/* { dg-final { scan-assembler "vminnmav.f32" } } */
+
+float32_t
+foo2 (float16_t a, float32x4_t b)
+{
+ return vminnmavq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminnmav.f32" 3 } } */
return vminnmavq_p_f16 (a, b, p);
}
-/* { dg-final { scan-assembler "vminnmavt.f16" } } */
float16_t
foo1 (float16_t a, float16x8_t b, mve_pred16_t p)
return vminnmavq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vminnmavt.f16" } } */
+
+float16_t
+foo2 (float32_t a, float16x8_t b, mve_pred16_t p)
+{
+ return vminnmavq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminnmavt.f16" 3 } } */
return vminnmavq_p_f32 (a, b, p);
}
-/* { dg-final { scan-assembler "vminnmavt.f32" } } */
float32_t
foo1 (float32_t a, float32x4_t b, mve_pred16_t p)
return vminnmavq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vminnmavt.f32" } } */
+
+float32_t
+foo2 (float16_t a, float32x4_t b, mve_pred16_t p)
+{
+ return vminnmavq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminnmavt.f32" 3 } } */
return vminnmvq_f16 (a, b);
}
-/* { dg-final { scan-assembler "vminnmv.f16" } } */
float16_t
foo1 (float16_t a, float16x8_t b)
return vminnmvq (a, b);
}
-/* { dg-final { scan-assembler "vminnmv.f16" } } */
+
+float16_t
+foo2 (float32_t a, float16x8_t b)
+{
+ return vminnmvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminnmv.f16" 3 } } */
return vminnmvq_f32 (a, b);
}
-/* { dg-final { scan-assembler "vminnmv.f32" } } */
float32_t
foo1 (float32_t a, float32x4_t b)
return vminnmvq (a, b);
}
-/* { dg-final { scan-assembler "vminnmv.f32" } } */
+
+float32_t
+foo2 (float16_t a, float32x4_t b)
+{
+ return vminnmvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminnmv.f32" 3 } } */
return vminnmvq_p_f16 (a, b, p);
}
-/* { dg-final { scan-assembler "vminnmvt.f16" } } */
float16_t
foo1 (float16_t a, float16x8_t b, mve_pred16_t p)
return vminnmvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vminnmvt.f16" } } */
+
+float16_t
+foo2 (float32_t a, float16x8_t b, mve_pred16_t p)
+{
+ return vminnmvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminnmvt.f16" 3 } } */
return vminnmvq_p_f32 (a, b, p);
}
-/* { dg-final { scan-assembler "vminnmvt.f32" } } */
float32_t
foo1 (float32_t a, float32x4_t b, mve_pred16_t p)
return vminnmvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vminnmvt.f32" } } */
+
+float32_t
+foo2 (float16_t a, float32x4_t b, mve_pred16_t p)
+{
+ return vminnmvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminnmvt.f32" 3 } } */
return vminvq_p_s16 (a, b, p);
}
-/* { dg-final { scan-assembler "vminvt.s16" } } */
int16_t
foo1 (int16_t a, int16x8_t b, mve_pred16_t p)
return vminvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vminvt.s16" } } */
+
+int16_t
+foo2 (int8_t a, int16x8_t b, mve_pred16_t p)
+{
+ return vminvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminvt.s16" 3 } } */
return vminvq_p_s32 (a, b, p);
}
-/* { dg-final { scan-assembler "vminvt.s32" } } */
int32_t
foo1 (int32_t a, int32x4_t b, mve_pred16_t p)
return vminvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vminvt.s32" } } */
+
+int32_t
+foo2 (int16_t a, int32x4_t b, mve_pred16_t p)
+{
+ return vminvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminvt.s32" 3 } } */
return vminvq_p_s8 (a, b, p);
}
-/* { dg-final { scan-assembler "vminvt.s8" } } */
int8_t
foo1 (int8_t a, int8x16_t b, mve_pred16_t p)
return vminvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vminvt.s8" } } */
+
+int8_t
+foo2 (int32_t a, int8x16_t b, mve_pred16_t p)
+{
+ return vminvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminvt.s8" 3 } } */
return vminvq_p_u16 (a, b, p);
}
-/* { dg-final { scan-assembler "vminvt.u16" } } */
uint16_t
foo1 (uint16_t a, uint16x8_t b, mve_pred16_t p)
return vminvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vminvt.u16" } } */
+
+uint16_t
+foo2 (uint32_t a, uint16x8_t b, mve_pred16_t p)
+{
+ return vminvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminvt.u16" 3 } } */
return vminvq_p_u32 (a, b, p);
}
-/* { dg-final { scan-assembler "vminvt.u32" } } */
uint32_t
foo1 (uint32_t a, uint32x4_t b, mve_pred16_t p)
return vminvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vminvt.u32" } } */
+
+uint32_t
+foo2 (uint8_t a, uint32x4_t b, mve_pred16_t p)
+{
+ return vminvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminvt.u32" 3 } } */
return vminvq_p_u8 (a, b, p);
}
-/* { dg-final { scan-assembler "vminvt.u8" } } */
uint8_t
foo1 (uint8_t a, uint8x16_t b, mve_pred16_t p)
return vminvq_p (a, b, p);
}
-/* { dg-final { scan-assembler "vminvt.u8" } } */
+
+uint8_t
+foo2 (uint16_t a, uint8x16_t b, mve_pred16_t p)
+{
+ return vminvq_p (a, b, p);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminvt.u8" 3 } } */
return vminvq_s16 (a, b);
}
-/* { dg-final { scan-assembler "vminv.s16" } } */
int16_t
foo1 (int16_t a, int16x8_t b)
return vminvq (a, b);
}
-/* { dg-final { scan-assembler "vminv.s16" } } */
+int16_t
+foo2 (int8_t a, int16x8_t b)
+{
+ return vminvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminv.s16" 3 } } */
return vminvq_s32 (a, b);
}
-/* { dg-final { scan-assembler "vminv.s32" } } */
int32_t
foo1 (int32_t a, int32x4_t b)
return vminvq (a, b);
}
-/* { dg-final { scan-assembler "vminv.s32" } } */
+int32_t
+foo2 (int8_t a, int32x4_t b)
+{
+ return vminvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminv.s32" 3 } } */
return vminvq_s8 (a, b);
}
-/* { dg-final { scan-assembler "vminv.s8" } } */
int8_t
foo1 (int8_t a, int8x16_t b)
return vminvq (a, b);
}
-/* { dg-final { scan-assembler "vminv.s8" } } */
+int8_t
+foo2 (int32_t a, int8x16_t b)
+{
+ return vminvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminv.s8" 3 } } */
return vminvq_u16 (a, b);
}
-/* { dg-final { scan-assembler "vminv.u16" } } */
uint16_t
foo1 (uint16_t a, uint16x8_t b)
return vminvq (a, b);
}
-/* { dg-final { scan-assembler "vminv.u16" } } */
+
+uint8_t
+foo2 (uint32_t a, uint16x8_t b)
+{
+ return vminvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminv.u16" 3 } } */
return vminvq_u32 (a, b);
}
-/* { dg-final { scan-assembler "vminv.u32" } } */
uint32_t
foo1 (uint32_t a, uint32x4_t b)
return vminvq (a, b);
}
-/* { dg-final { scan-assembler "vminv.u32" } } */
+uint32_t
+foo2 (uint16_t a, uint32x4_t b)
+{
+ return vminvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminv.u32" 3 } } */
return vminvq_u8 (a, b);
}
-/* { dg-final { scan-assembler "vminv.u8" } } */
uint8_t
foo1 (uint8_t a, uint8x16_t b)
return vminvq (a, b);
}
-/* { dg-final { scan-assembler "vminv.u8" } } */
+
+uint16_t
+foo2 (uint32_t a, uint8x16_t b)
+{
+ return vminvq (a, b);
+}
+
+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
+/* { dg-final { scan-assembler-times "vminv.u8" 3 } } */