arm: Remove coercion from scalar argument to vmin & vmax intrinsics
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. Bootstrapped and tested on arm-none-eabi, gcc and CMSIS_DSP testsuites are clean. OK for trunk? Thanks, Joe 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.
This commit is contained in:
parent
c8c77ed747
commit
251950d899
53 changed files with 500 additions and 140 deletions
|
@ -41682,16 +41682,16 @@ extern void *__ARM_undef;
|
|||
#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); \
|
||||
|
@ -41706,36 +41706,36 @@ extern void *__ARM_undef;
|
|||
#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); \
|
||||
|
@ -41750,22 +41750,22 @@ extern void *__ARM_undef;
|
|||
#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); \
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint16_t a, int16x8_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint32_t a, int32x4_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint8_t a, int8x16_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint16_t a, int16x8_t b)
|
|||
return vmaxavq_s16 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vmaxav.s16" } } */
|
||||
|
||||
uint16_t
|
||||
foo1 (uint16_t a, int16x8_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint32_t a, int32x4_t b)
|
|||
return vmaxavq_s32 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vmaxav.s32" } } */
|
||||
|
||||
uint32_t
|
||||
foo1 (uint32_t a, int32x4_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint8_t a, int8x16_t b)
|
|||
return vmaxavq_s8 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vmaxav.s8" } } */
|
||||
|
||||
uint8_t
|
||||
foo1 (uint8_t a, int8x16_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float16_t a, float16x8_t b)
|
|||
return vmaxnmavq_f16 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vmaxnmav.f16" } } */
|
||||
|
||||
float16_t
|
||||
foo1 (float16_t a, float16x8_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float32_t a, float32x4_t b)
|
|||
return vmaxnmavq_f32 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vmaxnmav.f32" } } */
|
||||
|
||||
float32_t
|
||||
foo1 (float32_t a, float32x4_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float16_t a, float16x8_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float32_t a, float32x4_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float16_t a, float16x8_t b)
|
|||
return vmaxnmvq_f16 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vmaxnmv.f16" } } */
|
||||
|
||||
float16_t
|
||||
foo1 (float16_t a, float16x8_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float32_t a, float32x4_t b)
|
|||
return vmaxnmvq_f32 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vmaxnmv.f32" } } */
|
||||
|
||||
float32_t
|
||||
foo1 (float32_t a, float32x4_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float16_t a, float16x8_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float32_t a, float32x4_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (int16_t a, int16x8_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (int32_t a, int32x4_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (int8_t a, int8x16_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint16_t a, uint16x8_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint32_t a, uint32x4_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint8_t a, uint8x16_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (int16_t a, int16x8_t b)
|
|||
return vmaxvq_s16 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vmaxv.s16" } } */
|
||||
|
||||
int16_t
|
||||
foo1 (int16_t a, int16x8_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (int32_t a, int32x4_t b)
|
|||
return vmaxvq_s32 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vmaxv.s32" } } */
|
||||
|
||||
int32_t
|
||||
foo1 (int32_t a, int32x4_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (int8_t a, int8x16_t b)
|
|||
return vmaxvq_s8 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vmaxv.s8" } } */
|
||||
|
||||
int8_t
|
||||
foo1 (int8_t a, int8x16_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint16_t a, uint16x8_t b)
|
|||
return vmaxvq_u16 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vmaxv.u16" } } */
|
||||
|
||||
uint16_t
|
||||
foo1 (uint16_t a, uint16x8_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint32_t a, uint32x4_t b)
|
|||
return vmaxvq_u32 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vmaxv.u32" } } */
|
||||
|
||||
uint32_t
|
||||
foo1 (uint32_t a, uint32x4_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint8_t a, uint8x16_t b)
|
|||
return vmaxvq_u8 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vmaxv.u8" } } */
|
||||
|
||||
uint8_t
|
||||
foo1 (uint8_t a, uint8x16_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint16_t a, int16x8_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint32_t a, int32x4_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint8_t a, int8x16_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint16_t a, int16x8_t b)
|
|||
return vminavq_s16 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vminav.s16" } } */
|
||||
|
||||
uint16_t
|
||||
foo1 (uint16_t a, int16x8_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint32_t a, int32x4_t b)
|
|||
return vminavq_s32 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vminav.s32" } } */
|
||||
|
||||
uint32_t
|
||||
foo1 (uint32_t a, int32x4_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint8_t a, int8x16_t b)
|
|||
return vminavq_s8 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vminav.s8" } } */
|
||||
|
||||
uint8_t
|
||||
foo1 (uint8_t a, int8x16_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float16_t a, float16x8_t b)
|
|||
return vminnmavq_f16 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vminnmav.f16" } } */
|
||||
|
||||
float16_t
|
||||
foo1 (float16_t a, float16x8_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float32_t a, float32x4_t b)
|
|||
return vminnmavq_f32 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vminnmav.f32" } } */
|
||||
|
||||
float32_t
|
||||
foo1 (float32_t a, float32x4_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float16_t a, float16x8_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float32_t a, float32x4_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float16_t a, float16x8_t b)
|
|||
return vminnmvq_f16 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vminnmv.f16" } } */
|
||||
|
||||
float16_t
|
||||
foo1 (float16_t a, float16x8_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float32_t a, float32x4_t b)
|
|||
return vminnmvq_f32 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vminnmv.f32" } } */
|
||||
|
||||
float32_t
|
||||
foo1 (float32_t a, float32x4_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float16_t a, float16x8_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (float32_t a, float32x4_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (int16_t a, int16x8_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (int32_t a, int32x4_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (int8_t a, int8x16_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint16_t a, uint16x8_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint32_t a, uint32x4_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint8_t a, uint8x16_t b, mve_pred16_t p)
|
|||
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)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (int16_t a, int16x8_t b)
|
|||
return vminvq_s16 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vminv.s16" } } */
|
||||
|
||||
int16_t
|
||||
foo1 (int16_t a, int16x8_t b)
|
||||
|
@ -18,4 +17,11 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (int32_t a, int32x4_t b)
|
|||
return vminvq_s32 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vminv.s32" } } */
|
||||
|
||||
int32_t
|
||||
foo1 (int32_t a, int32x4_t b)
|
||||
|
@ -18,4 +17,11 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (int8_t a, int8x16_t b)
|
|||
return vminvq_s8 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vminv.s8" } } */
|
||||
|
||||
int8_t
|
||||
foo1 (int8_t a, int8x16_t b)
|
||||
|
@ -18,4 +17,11 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint16_t a, uint16x8_t b)
|
|||
return vminvq_u16 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vminv.u16" } } */
|
||||
|
||||
uint16_t
|
||||
foo1 (uint16_t a, uint16x8_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint32_t a, uint32x4_t b)
|
|||
return vminvq_u32 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vminv.u32" } } */
|
||||
|
||||
uint32_t
|
||||
foo1 (uint32_t a, uint32x4_t b)
|
||||
|
@ -18,4 +17,11 @@ 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 } } */
|
||||
|
|
|
@ -10,7 +10,6 @@ foo (uint8_t a, uint8x16_t b)
|
|||
return vminvq_u8 (a, b);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "vminv.u8" } } */
|
||||
|
||||
uint8_t
|
||||
foo1 (uint8_t a, uint8x16_t b)
|
||||
|
@ -18,4 +17,12 @@ 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 } } */
|
||||
|
|
Loading…
Add table
Reference in a new issue