diff options
author | Saurabh Jha <saurabh.jha@arm.com> | 2025-01-21 15:59:39 +0000 |
---|---|---|
committer | Saurabh Jha <saurabh.jha@arm.com> | 2025-01-24 11:18:12 +0000 |
commit | 8bdf10fc2e9ac16a296f76a442c068216469b3a3 (patch) | |
tree | 0efc65eab76b790a683ddd39a8db9993df8b0806 /gcc/config | |
parent | 91fa9c15cc4fb9947e7e2f7990f7d5a58845d5cf (diff) | |
download | gcc-8bdf10fc2e9ac16a296f76a442c068216469b3a3.zip gcc-8bdf10fc2e9ac16a296f76a442c068216469b3a3.tar.gz gcc-8bdf10fc2e9ac16a296f76a442c068216469b3a3.tar.bz2 |
Fix command flags for SVE2 faminmax
Earlier, we were gating SVE2 faminmax behind sve+faminmax. This was
incorrect and this patch changes it so that it is gated behind
sve2+faminmax.
gcc/ChangeLog:
* config/aarch64/aarch64-sve2.md:
(*aarch64_pred_faminmax_fused): Fix to use the correct flags.
* config/aarch64/aarch64.h
(TARGET_SVE_FAMINMAX): Remove.
* config/aarch64/iterators.md: Fix iterators so that famax and
famin use correct flags.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/sve/faminmax_1.c: Fix test to use the
correct flags.
* gcc.target/aarch64/sve/faminmax_2.c: Fix test to use the
correct flags.
* gcc.target/aarch64/sve/faminmax_3.c: New test.
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/aarch64/aarch64-sve2.md | 2 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.h | 1 | ||||
-rw-r--r-- | gcc/config/aarch64/iterators.md | 8 |
3 files changed, 5 insertions, 6 deletions
diff --git a/gcc/config/aarch64/aarch64-sve2.md b/gcc/config/aarch64/aarch64-sve2.md index 60bc03b..3e08e09 100644 --- a/gcc/config/aarch64/aarch64-sve2.md +++ b/gcc/config/aarch64/aarch64-sve2.md @@ -2950,7 +2950,7 @@ (match_operand:SVE_FULL_F 3 "register_operand")] UNSPEC_COND_FABS)] SVE_COND_SMAXMIN))] - "TARGET_SVE_FAMINMAX" + "TARGET_FAMINMAX && TARGET_SVE2_OR_SME2" {@ [ cons: =0 , 1 , 2 , 3 ; attrs: movprfx ] [ w , Upl , %0 , w ; * ] <faminmax_cond_uns_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype> [ ?&w , Upl , w , w ; yes ] movprfx\t%0, %2\;<faminmax_cond_uns_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype> diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index 5cbf442..1a19b27 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -472,7 +472,6 @@ constexpr auto AARCH64_FL_DEFAULT_ISA_MODE ATTRIBUTE_UNUSED /* Floating Point Absolute Maximum/Minimum extension instructions are enabled through +faminmax. */ #define TARGET_FAMINMAX AARCH64_HAVE_ISA (FAMINMAX) -#define TARGET_SVE_FAMINMAX (TARGET_SVE && TARGET_FAMINMAX) /* Lookup table (LUTI) extension instructions are enabled through +lut. */ #define TARGET_LUT AARCH64_HAVE_ISA (LUT) diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index e843c66..9fbd749 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -3340,8 +3340,8 @@ (define_int_iterator SVE_COND_FP_BINARY [UNSPEC_COND_FADD - (UNSPEC_COND_FAMAX "TARGET_SVE_FAMINMAX") - (UNSPEC_COND_FAMIN "TARGET_SVE_FAMINMAX") + (UNSPEC_COND_FAMAX "TARGET_FAMINMAX && TARGET_SVE2_OR_SME2") + (UNSPEC_COND_FAMIN "TARGET_FAMINMAX && TARGET_SVE2_OR_SME2") UNSPEC_COND_FDIV UNSPEC_COND_FMAX UNSPEC_COND_FMAXNM @@ -3381,8 +3381,8 @@ UNSPEC_COND_SMIN]) (define_int_iterator SVE_COND_FP_BINARY_REG - [(UNSPEC_COND_FAMAX "TARGET_SVE_FAMINMAX") - (UNSPEC_COND_FAMIN "TARGET_SVE_FAMINMAX") + [(UNSPEC_COND_FAMAX "TARGET_FAMINMAX && TARGET_SVE2_OR_SME2") + (UNSPEC_COND_FAMIN "TARGET_FAMINMAX && TARGET_SVE2_OR_SME2") UNSPEC_COND_FDIV UNSPEC_COND_FMULX]) |