@@ -235,8 +235,8 @@ def HasSMEF16F16orSMEF8F16
235
235
"sme-f16f16 or sme-f8f16">;
236
236
237
237
// A subset of NEON instructions are legal in Streaming SVE execution mode,
238
- // so don't need the additional check for 'isStreamingAvailable '.
239
- def HasNEONAndIsStreamingSafe
238
+ // so don't need the additional check for 'isNeonAvailable '.
239
+ def HasNEONandIsStreamingSafe
240
240
: Predicate<"Subtarget->hasNEON()">,
241
241
AssemblerPredicateWithAll<(any_of FeatureNEON), "neon">;
242
242
def HasRCPC : Predicate<"Subtarget->hasRCPC()">,
@@ -1347,7 +1347,7 @@ def : Pat<(v2f32 (int_aarch64_neon_bfdot
1347
1347
VectorIndexS:$idx)>;
1348
1348
}
1349
1349
1350
- let Predicates = [HasNEONAndIsStreamingSafe , HasBF16] in {
1350
+ let Predicates = [HasNEONandIsStreamingSafe , HasBF16] in {
1351
1351
def BFCVT : BF16ToSinglePrecision<"bfcvt">;
1352
1352
// Round FP32 to BF16.
1353
1353
def : Pat<(bf16 (any_fpround (f32 FPR32:$Rn))), (BFCVT $Rn)>;
@@ -5786,9 +5786,9 @@ defm FACGT : SIMDThreeScalarFPCmp<1, 1, 0b101, "facgt",
5786
5786
defm FCMEQ : SIMDThreeScalarFPCmp<0, 0, 0b100, "fcmeq", AArch64fcmeq>;
5787
5787
defm FCMGE : SIMDThreeScalarFPCmp<1, 0, 0b100, "fcmge", AArch64fcmge>;
5788
5788
defm FCMGT : SIMDThreeScalarFPCmp<1, 1, 0b100, "fcmgt", AArch64fcmgt>;
5789
- defm FMULX : SIMDFPThreeScalar<0, 0, 0b011, "fmulx", int_aarch64_neon_fmulx, HasNEONAndIsStreamingSafe >;
5790
- defm FRECPS : SIMDFPThreeScalar<0, 0, 0b111, "frecps", int_aarch64_neon_frecps, HasNEONAndIsStreamingSafe >;
5791
- defm FRSQRTS : SIMDFPThreeScalar<0, 1, 0b111, "frsqrts", int_aarch64_neon_frsqrts, HasNEONAndIsStreamingSafe >;
5789
+ defm FMULX : SIMDFPThreeScalar<0, 0, 0b011, "fmulx", int_aarch64_neon_fmulx, HasNEONandIsStreamingSafe >;
5790
+ defm FRECPS : SIMDFPThreeScalar<0, 0, 0b111, "frecps", int_aarch64_neon_frecps, HasNEONandIsStreamingSafe >;
5791
+ defm FRSQRTS : SIMDFPThreeScalar<0, 1, 0b111, "frsqrts", int_aarch64_neon_frsqrts, HasNEONandIsStreamingSafe >;
5792
5792
defm SQADD : SIMDThreeScalarBHSD<0, 0b00001, "sqadd", int_aarch64_neon_sqadd>;
5793
5793
defm SQDMULH : SIMDThreeScalarHS< 0, 0b10110, "sqdmulh", int_aarch64_neon_sqdmulh>;
5794
5794
defm SQRDMULH : SIMDThreeScalarHS< 1, 0b10110, "sqrdmulh", int_aarch64_neon_sqrdmulh>;
@@ -5817,7 +5817,7 @@ let Predicates = [HasRDM] in {
5817
5817
5818
5818
defm : FMULScalarFromIndexedLane0Patterns<"FMULX", "16", "32", "64",
5819
5819
int_aarch64_neon_fmulx,
5820
- [HasNEONAndIsStreamingSafe ]>;
5820
+ [HasNEONandIsStreamingSafe ]>;
5821
5821
5822
5822
let Predicates = [HasNEON] in {
5823
5823
def : InstAlias<"cmls $dst, $src1, $src2",
@@ -5891,9 +5891,9 @@ defm FCVTPU : SIMDFPTwoScalar< 1, 1, 0b11010, "fcvtpu">;
5891
5891
def FCVTXNv1i64 : SIMDInexactCvtTwoScalar<0b10110, "fcvtxn">;
5892
5892
defm FCVTZS : SIMDFPTwoScalar< 0, 1, 0b11011, "fcvtzs">;
5893
5893
defm FCVTZU : SIMDFPTwoScalar< 1, 1, 0b11011, "fcvtzu">;
5894
- defm FRECPE : SIMDFPTwoScalar< 0, 1, 0b11101, "frecpe", HasNEONAndIsStreamingSafe >;
5895
- defm FRECPX : SIMDFPTwoScalar< 0, 1, 0b11111, "frecpx", HasNEONAndIsStreamingSafe >;
5896
- defm FRSQRTE : SIMDFPTwoScalar< 1, 1, 0b11101, "frsqrte", HasNEONAndIsStreamingSafe >;
5894
+ defm FRECPE : SIMDFPTwoScalar< 0, 1, 0b11101, "frecpe", HasNEONandIsStreamingSafe >;
5895
+ defm FRECPX : SIMDFPTwoScalar< 0, 1, 0b11111, "frecpx", HasNEONandIsStreamingSafe >;
5896
+ defm FRSQRTE : SIMDFPTwoScalar< 1, 1, 0b11101, "frsqrte", HasNEONandIsStreamingSafe >;
5897
5897
defm NEG : SIMDTwoScalarD< 1, 0b01011, "neg",
5898
5898
UnOpFrag<(sub immAllZerosV, node:$LHS)> >;
5899
5899
defm SCVTF : SIMDFPTwoScalarCVT< 0, 0, 0b11101, "scvtf", AArch64sitof>;
@@ -5912,7 +5912,7 @@ def : Pat<(v1i64 (AArch64vashr (v1i64 V64:$Rn), (i32 63))),
5912
5912
(CMLTv1i64rz V64:$Rn)>;
5913
5913
5914
5914
// Round FP64 to BF16.
5915
- let Predicates = [HasNEONAndIsStreamingSafe , HasBF16] in
5915
+ let Predicates = [HasNEONandIsStreamingSafe , HasBF16] in
5916
5916
def : Pat<(bf16 (any_fpround (f64 FPR64:$Rn))),
5917
5917
(BFCVT (FCVTXNv1i64 $Rn))>;
5918
5918
@@ -6013,7 +6013,7 @@ def : Pat<(v2f64 (AArch64frsqrts (v2f64 FPR128:$Rn), (v2f64 FPR128:$Rm))),
6013
6013
// Some float -> int -> float conversion patterns for which we want to keep the
6014
6014
// int values in FP registers using the corresponding NEON instructions to
6015
6015
// avoid more costly int <-> fp register transfers.
6016
- let Predicates = [HasNEONAndIsStreamingSafe ] in {
6016
+ let Predicates = [HasNEONandIsStreamingSafe ] in {
6017
6017
def : Pat<(f64 (any_sint_to_fp (i64 (any_fp_to_sint f64:$Rn)))),
6018
6018
(SCVTFv1i64 (i64 (FCVTZSv1i64 f64:$Rn)))>;
6019
6019
def : Pat<(f32 (any_sint_to_fp (i32 (any_fp_to_sint f32:$Rn)))),
@@ -8376,7 +8376,7 @@ def : Ld1Lane64IdxOpPat<extloadi8, VectorIndexH, v4i16, i32, LD1i8, VectorIndexH
8376
8376
8377
8377
// Same as above, but the first element is populated using
8378
8378
// scalar_to_vector + insert_subvector instead of insert_vector_elt.
8379
- let Predicates = [HasNeonOrSME ] in {
8379
+ let Predicates = [HasNEONandIsStreamingSafe ] in {
8380
8380
class Ld1Lane128FirstElm<ValueType ResultTy, ValueType VecTy,
8381
8381
SDPatternOperator ExtLoad, Instruction LD1>
8382
8382
: Pat<(ResultTy (scalar_to_vector (i32 (ExtLoad GPR64sp:$Rn)))),
0 commit comments