aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorSaurabh Jha <saurabh.jha@arm.com>2025-01-21 15:59:39 +0000
committerSaurabh Jha <saurabh.jha@arm.com>2025-01-24 11:18:12 +0000
commit8bdf10fc2e9ac16a296f76a442c068216469b3a3 (patch)
tree0efc65eab76b790a683ddd39a8db9993df8b0806 /gcc/config
parent91fa9c15cc4fb9947e7e2f7990f7d5a58845d5cf (diff)
downloadgcc-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.md2
-rw-r--r--gcc/config/aarch64/aarch64.h1
-rw-r--r--gcc/config/aarch64/iterators.md8
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])