@@ -107,7 +107,7 @@ def HasRCPC_IMMO : Predicate<"Subtarget->hasRCPC_IMMO()">,
107
107
108
108
def HasFPARMv8 : Predicate<"Subtarget->hasFPARMv8()">,
109
109
AssemblerPredicateWithAll<(all_of FeatureFPARMv8), "fp-armv8">;
110
- def HasNEON : Predicate<"Subtarget->hasNEON ()">,
110
+ def HasNEON : Predicate<"Subtarget->isNeonAvailable ()">,
111
111
AssemblerPredicateWithAll<(all_of FeatureNEON), "neon">;
112
112
def HasSM4 : Predicate<"Subtarget->hasSM4()">,
113
113
AssemblerPredicateWithAll<(all_of FeatureSM4), "sm4">;
@@ -234,12 +234,9 @@ def HasSMEF16F16orSMEF8F16
234
234
AssemblerPredicateWithAll<(any_of FeatureSMEF16F16, FeatureSMEF8F16),
235
235
"sme-f16f16 or sme-f8f16">;
236
236
237
- // A subset of NEON instructions are legal in Streaming SVE execution mode,
238
- // they should be enabled if either has been specified.
239
- def HasNEONorSME
240
- : Predicate<"Subtarget->hasNEON() || Subtarget->hasSME()">,
241
- AssemblerPredicateWithAll<(any_of FeatureNEON, FeatureSME),
242
- "neon or sme">;
237
+ // A subset of NEON instructions are legal in Streaming SVE execution mode.
238
+ def HasNEONorSME : Predicate<"Subtarget->hasNEON()">,
239
+ AssemblerPredicateWithAll<(any_of FeatureNEON), "neon">;
243
240
def HasRCPC : Predicate<"Subtarget->hasRCPC()">,
244
241
AssemblerPredicateWithAll<(all_of FeatureRCPC), "rcpc">;
245
242
def HasAltNZCV : Predicate<"Subtarget->hasAlternativeNZCV()">,
@@ -323,8 +320,6 @@ def NoUseScalarIncVL : Predicate<"!Subtarget->useScalarIncVL()">;
323
320
324
321
def UseSVEFPLD1R : Predicate<"!Subtarget->noSVEFPLD1R()">;
325
322
326
- def IsNeonAvailable : Predicate<"Subtarget->isNeonAvailable()">;
327
-
328
323
def AArch64LocalRecover : SDNode<"ISD::LOCAL_RECOVER",
329
324
SDTypeProfile<1, 1, [SDTCisSameAs<0, 1>,
330
325
SDTCisInt<1>]>>;
@@ -5934,7 +5929,7 @@ def : Pat<(v2f64 (AArch64frsqrts (v2f64 FPR128:$Rn), (v2f64 FPR128:$Rm))),
5934
5929
// Some float -> int -> float conversion patterns for which we want to keep the
5935
5930
// int values in FP registers using the corresponding NEON instructions to
5936
5931
// avoid more costly int <-> fp register transfers.
5937
- let Predicates = [HasNEON ] in {
5932
+ let Predicates = [HasNEONorSME ] in {
5938
5933
def : Pat<(f64 (any_sint_to_fp (i64 (any_fp_to_sint f64:$Rn)))),
5939
5934
(SCVTFv1i64 (i64 (FCVTZSv1i64 f64:$Rn)))>;
5940
5935
def : Pat<(f32 (any_sint_to_fp (i32 (any_fp_to_sint f32:$Rn)))),
@@ -8297,7 +8292,7 @@ def : Ld1Lane64IdxOpPat<extloadi8, VectorIndexH, v4i16, i32, LD1i8, VectorIndexH
8297
8292
8298
8293
// Same as above, but the first element is populated using
8299
8294
// scalar_to_vector + insert_subvector instead of insert_vector_elt.
8300
- let Predicates = [IsNeonAvailable ] in {
8295
+ let Predicates = [HasNeonOrSME ] in {
8301
8296
class Ld1Lane128FirstElm<ValueType ResultTy, ValueType VecTy,
8302
8297
SDPatternOperator ExtLoad, Instruction LD1>
8303
8298
: Pat<(ResultTy (scalar_to_vector (i32 (ExtLoad GPR64sp:$Rn)))),
0 commit comments