Skip to content

Commit 1a85524

Browse files
committed
Fixed missing cases causing build failures, also decapitalised 'and' in HasNEONandIsStreamingSafe
1 parent f48cb9c commit 1a85524

File tree

3 files changed

+19
-19
lines changed

3 files changed

+19
-19
lines changed

llvm/lib/Target/AArch64/AArch64InstrFormats.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7880,7 +7880,7 @@ class SIMDMovAlias<string asm, string size, Instruction inst,
78807880
multiclass SMov {
78817881
// SMOV with vector index of 0 are legal in Scalable Matrix Extension (SME)
78827882
// streaming mode.
7883-
let Predicates = [HasNEONorSME] in {
7883+
let Predicates = [HasNEONandIsStreamingSafe] in {
78847884
def vi8to32_idx0 : SIMDSMov<0, ".b", GPR32, VectorIndex0> {
78857885
let Inst{20-16} = 0b00001;
78867886
}
@@ -7927,7 +7927,7 @@ multiclass SMov {
79277927
multiclass UMov {
79287928
// UMOV with vector index of 0 are legal in Scalable Matrix Extension (SME)
79297929
// streaming mode.
7930-
let Predicates = [HasNEONorSME] in {
7930+
let Predicates = [HasNEONandIsStreamingSafe] in {
79317931
def vi8_idx0 : SIMDUMov<0, ".b", v16i8, GPR32, VectorIndex0> {
79327932
let Inst{20-16} = 0b00001;
79337933
}

llvm/lib/Target/AArch64/AArch64InstrInfo.td

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -235,8 +235,8 @@ def HasSMEF16F16orSMEF8F16
235235
"sme-f16f16 or sme-f8f16">;
236236

237237
// 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
240240
: Predicate<"Subtarget->hasNEON()">,
241241
AssemblerPredicateWithAll<(any_of FeatureNEON), "neon">;
242242
def HasRCPC : Predicate<"Subtarget->hasRCPC()">,
@@ -1347,7 +1347,7 @@ def : Pat<(v2f32 (int_aarch64_neon_bfdot
13471347
VectorIndexS:$idx)>;
13481348
}
13491349

1350-
let Predicates = [HasNEONAndIsStreamingSafe, HasBF16] in {
1350+
let Predicates = [HasNEONandIsStreamingSafe, HasBF16] in {
13511351
def BFCVT : BF16ToSinglePrecision<"bfcvt">;
13521352
// Round FP32 to BF16.
13531353
def : Pat<(bf16 (any_fpround (f32 FPR32:$Rn))), (BFCVT $Rn)>;
@@ -5786,9 +5786,9 @@ defm FACGT : SIMDThreeScalarFPCmp<1, 1, 0b101, "facgt",
57865786
defm FCMEQ : SIMDThreeScalarFPCmp<0, 0, 0b100, "fcmeq", AArch64fcmeq>;
57875787
defm FCMGE : SIMDThreeScalarFPCmp<1, 0, 0b100, "fcmge", AArch64fcmge>;
57885788
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>;
57925792
defm SQADD : SIMDThreeScalarBHSD<0, 0b00001, "sqadd", int_aarch64_neon_sqadd>;
57935793
defm SQDMULH : SIMDThreeScalarHS< 0, 0b10110, "sqdmulh", int_aarch64_neon_sqdmulh>;
57945794
defm SQRDMULH : SIMDThreeScalarHS< 1, 0b10110, "sqrdmulh", int_aarch64_neon_sqrdmulh>;
@@ -5817,7 +5817,7 @@ let Predicates = [HasRDM] in {
58175817

58185818
defm : FMULScalarFromIndexedLane0Patterns<"FMULX", "16", "32", "64",
58195819
int_aarch64_neon_fmulx,
5820-
[HasNEONAndIsStreamingSafe]>;
5820+
[HasNEONandIsStreamingSafe]>;
58215821

58225822
let Predicates = [HasNEON] in {
58235823
def : InstAlias<"cmls $dst, $src1, $src2",
@@ -5891,9 +5891,9 @@ defm FCVTPU : SIMDFPTwoScalar< 1, 1, 0b11010, "fcvtpu">;
58915891
def FCVTXNv1i64 : SIMDInexactCvtTwoScalar<0b10110, "fcvtxn">;
58925892
defm FCVTZS : SIMDFPTwoScalar< 0, 1, 0b11011, "fcvtzs">;
58935893
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>;
58975897
defm NEG : SIMDTwoScalarD< 1, 0b01011, "neg",
58985898
UnOpFrag<(sub immAllZerosV, node:$LHS)> >;
58995899
defm SCVTF : SIMDFPTwoScalarCVT< 0, 0, 0b11101, "scvtf", AArch64sitof>;
@@ -5912,7 +5912,7 @@ def : Pat<(v1i64 (AArch64vashr (v1i64 V64:$Rn), (i32 63))),
59125912
(CMLTv1i64rz V64:$Rn)>;
59135913

59145914
// Round FP64 to BF16.
5915-
let Predicates = [HasNEONAndIsStreamingSafe, HasBF16] in
5915+
let Predicates = [HasNEONandIsStreamingSafe, HasBF16] in
59165916
def : Pat<(bf16 (any_fpround (f64 FPR64:$Rn))),
59175917
(BFCVT (FCVTXNv1i64 $Rn))>;
59185918

@@ -6013,7 +6013,7 @@ def : Pat<(v2f64 (AArch64frsqrts (v2f64 FPR128:$Rn), (v2f64 FPR128:$Rm))),
60136013
// Some float -> int -> float conversion patterns for which we want to keep the
60146014
// int values in FP registers using the corresponding NEON instructions to
60156015
// avoid more costly int <-> fp register transfers.
6016-
let Predicates = [HasNEONAndIsStreamingSafe] in {
6016+
let Predicates = [HasNEONandIsStreamingSafe] in {
60176017
def : Pat<(f64 (any_sint_to_fp (i64 (any_fp_to_sint f64:$Rn)))),
60186018
(SCVTFv1i64 (i64 (FCVTZSv1i64 f64:$Rn)))>;
60196019
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
83768376

83778377
// Same as above, but the first element is populated using
83788378
// scalar_to_vector + insert_subvector instead of insert_vector_elt.
8379-
let Predicates = [HasNeonOrSME] in {
8379+
let Predicates = [HasNEONandIsStreamingSafe] in {
83808380
class Ld1Lane128FirstElm<ValueType ResultTy, ValueType VecTy,
83818381
SDPatternOperator ExtLoad, Instruction LD1>
83828382
: Pat<(ResultTy (scalar_to_vector (i32 (ExtLoad GPR64sp:$Rn)))),

llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3351,7 +3351,7 @@ let Predicates = [HasSVEorSME] in {
33513351
(EXTRACT_SUBREG (DUP_ZZI_D ZPR:$vec, sve_elm_idx_extdup_d:$index), dsub)>;
33523352

33533353
// Extract element from vector with immediate index that's within the bottom 128-bits.
3354-
let Predicates = [IsNeonAvailable], AddedComplexity = 1 in {
3354+
let Predicates = [HasNEONandIsStreamingSafe], AddedComplexity = 1 in {
33553355
def : Pat<(i32 (vector_extract nxv16i8:$vec, VectorIndexB:$index)),
33563356
(UMOVvi8 (v16i8 (EXTRACT_SUBREG ZPR:$vec, zsub)), VectorIndexB:$index)>;
33573357
def : Pat<(i32 (vector_extract nxv8i16:$vec, VectorIndexH:$index)),
@@ -3360,9 +3360,9 @@ let Predicates = [HasSVEorSME] in {
33603360
(UMOVvi32 (v4i32 (EXTRACT_SUBREG ZPR:$vec, zsub)), VectorIndexS:$index)>;
33613361
def : Pat<(i64 (vector_extract nxv2i64:$vec, VectorIndexD:$index)),
33623362
(UMOVvi64 (v2i64 (EXTRACT_SUBREG ZPR:$vec, zsub)), VectorIndexD:$index)>;
3363-
} // End IsNeonAvailable
3363+
} // End HasNEONandIsStreamingSafe
33643364

3365-
let Predicates = [IsNeonAvailable] in {
3365+
let Predicates = [HasNEONandIsStreamingSafe] in {
33663366
def : Pat<(sext_inreg (vector_extract nxv16i8:$vec, VectorIndexB:$index), i8),
33673367
(SMOVvi8to32 (v16i8 (EXTRACT_SUBREG ZPR:$vec, zsub)), VectorIndexB:$index)>;
33683368
def : Pat<(sext_inreg (anyext (i32 (vector_extract nxv16i8:$vec, VectorIndexB:$index))), i8),
@@ -3375,7 +3375,7 @@ let Predicates = [HasSVEorSME] in {
33753375

33763376
def : Pat<(sext (i32 (vector_extract nxv4i32:$vec, VectorIndexS:$index))),
33773377
(SMOVvi32to64 (v4i32 (EXTRACT_SUBREG ZPR:$vec, zsub)), VectorIndexS:$index)>;
3378-
} // End IsNeonAvailable
3378+
} // End HasNEONandIsStreamingSafe
33793379

33803380
// Extract first element from vector.
33813381
let AddedComplexity = 2 in {

0 commit comments

Comments
 (0)