@@ -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>]>>;
@@ -6016,7 +6011,7 @@ def : Pat<(v2f64 (AArch64frsqrts (v2f64 FPR128:$Rn), (v2f64 FPR128:$Rm))),
6016
6011
// Some float -> int -> float conversion patterns for which we want to keep the
6017
6012
// int values in FP registers using the corresponding NEON instructions to
6018
6013
// avoid more costly int <-> fp register transfers.
6019
- let Predicates = [HasNEON ] in {
6014
+ let Predicates = [HasNEONorSME ] in {
6020
6015
def : Pat<(f64 (any_sint_to_fp (i64 (any_fp_to_sint f64:$Rn)))),
6021
6016
(SCVTFv1i64 (i64 (FCVTZSv1i64 f64:$Rn)))>;
6022
6017
def : Pat<(f32 (any_sint_to_fp (i32 (any_fp_to_sint f32:$Rn)))),
@@ -8379,7 +8374,7 @@ def : Ld1Lane64IdxOpPat<extloadi8, VectorIndexH, v4i16, i32, LD1i8, VectorIndexH
8379
8374
8380
8375
// Same as above, but the first element is populated using
8381
8376
// scalar_to_vector + insert_subvector instead of insert_vector_elt.
8382
- let Predicates = [IsNeonAvailable ] in {
8377
+ let Predicates = [HasNeonOrSME ] in {
8383
8378
class Ld1Lane128FirstElm<ValueType ResultTy, ValueType VecTy,
8384
8379
SDPatternOperator ExtLoad, Instruction LD1>
8385
8380
: Pat<(ResultTy (scalar_to_vector (i32 (ExtLoad GPR64sp:$Rn)))),
0 commit comments