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:
Joe Ramsay 2020-10-02 15:28:29 +01:00 committed by Srinath Parvathaneni
parent c8c77ed747
commit 251950d899
53 changed files with 500 additions and 140 deletions

View file

@ -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); \

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */

View file

@ -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 } } */