Skip to content

Commit 7a07641

Browse files
committed
[ARM] Replace hasNoSchedulingInfo with UnsupportedFeatures in the A57 schedule
hasNoSchedulingInfo should be used for Pseudo's and other instructions that are never expected to be scheduled. This removes the flag from new ARM instructions, instead fixing the A57 schedule by marking the related architecture features as unsupported.
1 parent 8807139 commit 7a07641

File tree

2 files changed

+3
-22
lines changed

2 files changed

+3
-22
lines changed

llvm/lib/Target/ARM/ARMInstrNEON.td

+2-21
Original file line numberDiff line numberDiff line change
@@ -4838,15 +4838,6 @@ class VDOT<bit op6, bit op4, bit op23, RegisterClass RegTy, string Asm,
48384838
let Constraints = "$dst = $Vd";
48394839
}
48404840

4841-
4842-
class VUSDOT<bit op6, bit op4, bit op23, RegisterClass RegTy, string Asm,
4843-
string AsmTy, ValueType AccumTy, ValueType InputTy,
4844-
SDPatternOperator OpNode> :
4845-
VDOT<op6, op4, op23, RegTy, Asm, AsmTy, AccumTy, InputTy, OpNode> {
4846-
let hasNoSchedulingInfo = 1;
4847-
4848-
}
4849-
48504841
def VUDOTD : VDOT<0, 1, 0, DPR, "vudot", "u8", v2i32, v8i8, int_arm_neon_udot>;
48514842
def VSDOTD : VDOT<0, 0, 0, DPR, "vsdot", "s8", v2i32, v8i8, int_arm_neon_sdot>;
48524843
def VUDOTQ : VDOT<1, 1, 0, QPR, "vudot", "u8", v4i32, v16i8, int_arm_neon_udot>;
@@ -4897,7 +4888,6 @@ let Predicates = [HasMatMulInt8] in {
48974888
(v16i8 QPR:$Vm)))]> {
48984889
let DecoderNamespace = "VFPV8";
48994890
let Constraints = "$dst = $Vd";
4900-
let hasNoSchedulingInfo = 1;
49014891
}
49024892

49034893
multiclass N3VMixedDotLane<bit Q, bit U, string Asm, string AsmTy, RegisterClass RegTy,
@@ -4908,7 +4898,6 @@ let Predicates = [HasMatMulInt8] in {
49084898
(ins RegTy:$Vd, RegTy:$Vn, DPR_VFP2:$Vm, VectorIndex32:$lane), N3RegFrm,
49094899
NoItinerary, Asm, AsmTy, []> {
49104900
bit lane;
4911-
let hasNoSchedulingInfo = 1;
49124901
let Inst{5} = lane;
49134902
let AsmString = !strconcat(Asm, ".", AsmTy, "\t$Vd, $Vn, $Vm$lane");
49144903
let DecoderNamespace = "VFPV8";
@@ -4939,8 +4928,8 @@ let Predicates = [HasMatMulInt8] in {
49394928
def VSMMLA : N3VMatMul<0, 0, "vsmmla", "s8", int_arm_neon_smmla>;
49404929
def VUMMLA : N3VMatMul<0, 1, "vummla", "u8", int_arm_neon_ummla>;
49414930
def VUSMMLA : N3VMatMul<1, 0, "vusmmla", "s8", int_arm_neon_usmmla>;
4942-
def VUSDOTD : VUSDOT<0, 0, 1, DPR, "vusdot", "s8", v2i32, v8i8, int_arm_neon_usdot>;
4943-
def VUSDOTQ : VUSDOT<1, 0, 1, QPR, "vusdot", "s8", v4i32, v16i8, int_arm_neon_usdot>;
4931+
def VUSDOTD : VDOT<0, 0, 1, DPR, "vusdot", "s8", v2i32, v8i8, int_arm_neon_usdot>;
4932+
def VUSDOTQ : VDOT<1, 0, 1, QPR, "vusdot", "s8", v4i32, v16i8, int_arm_neon_usdot>;
49444933

49454934
defm VUSDOTDI : N3VMixedDotLane<0, 0, "vusdot", "s8", DPR, v2i32, v8i8,
49464935
int_arm_neon_usdot, (v2i32 DPR_VFP2:$Vm)>;
@@ -5295,7 +5284,6 @@ class VFMQ<string opc, string type, bits<2> S>
52955284
let Inst{3} = idx{0};
52965285
}
52975286

5298-
let hasNoSchedulingInfo = 1 in {
52995287
// op1 op2 op3
53005288
def VFMALD : N3VCP8F16Q0<"vfmal", DPR, SPR, SPR, 0b00, 0b10, 1>;
53015289
def VFMSLD : N3VCP8F16Q0<"vfmsl", DPR, SPR, SPR, 0b01, 0b10, 1>;
@@ -5305,7 +5293,6 @@ def VFMALDI : VFMD<"vfmal", "f16", 0b00>;
53055293
def VFMSLDI : VFMD<"vfmsl", "f16", 0b01>;
53065294
def VFMALQI : VFMQ<"vfmal", "f16", 0b00>;
53075295
def VFMSLQI : VFMQ<"vfmsl", "f16", 0b01>;
5308-
}
53095296
} // HasNEON, HasFP16FML
53105297

53115298

@@ -9001,7 +8988,6 @@ class BF16VDOT<bits<5> op27_23, bits<2> op21_20, bit op6,
90018988
dag oops, dag iops>
90028989
: N3Vnp<op27_23, op21_20, 0b1101, op6, 0, oops, iops,
90038990
N3RegFrm, IIC_VDOTPROD, "", "", []> {
9004-
let hasNoSchedulingInfo = 1;
90058991
let DecoderNamespace = "VFPV8";
90068992
}
90078993

@@ -9042,7 +9028,6 @@ class BF16MM<bit Q, RegisterClass RegTy,
90429028
let Constraints = "$dst = $Vd";
90439029
let AsmString = !strconcat(opc, ".bf16", "\t$Vd, $Vn, $Vm");
90449030
let DecoderNamespace = "VFPV8";
9045-
let hasNoSchedulingInfo = 1;
90469031
}
90479032

90489033
def VMMLA : BF16MM<1, QPR, "vmmla">;
@@ -9054,7 +9039,6 @@ class VBF16MALQ<bit T, string suffix>
90549039
[]> { // TODO: Add intrinsics
90559040
let Constraints = "$dst = $Vd";
90569041
let DecoderNamespace = "VFPV8";
9057-
let hasNoSchedulingInfo = 1;
90589042
}
90599043

90609044
def VBF16MALTQ: VBF16MALQ<1, "t">;
@@ -9069,18 +9053,15 @@ multiclass VBF16MALQI<bit T, string suffix> {
90699053
let Inst{3} = idx{0};
90709054
let Constraints = "$dst = $Vd";
90719055
let DecoderNamespace = "VFPV8";
9072-
let hasNoSchedulingInfo = 1;
90739056
}
90749057

90759058
}
90769059

90779060
defm VBF16MALTQI: VBF16MALQI<1, "t">;
90789061
defm VBF16MALBQI: VBF16MALQI<0, "b">;
90799062

9080-
let hasNoSchedulingInfo = 1 in {
90819063
def BF16_VCVT : N2V<0b11, 0b11, 0b01, 0b10, 0b01100, 1, 0,
90829064
(outs DPR:$Vd), (ins QPR:$Vm),
90839065
NoItinerary, "vcvt", "bf16.f32", "$Vd, $Vm", "", []>;
90849066
}
9085-
}
90869067
// End of BFloat16 instructions

llvm/lib/Target/ARM/ARMScheduleA57.td

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def CortexA57Model : SchedMachineModel {
9696
let FullInstRWOverlapCheck = 0;
9797

9898
let UnsupportedFeatures = [HasV8_1MMainline, HasMVEInt, HasMVEFloat,
99-
HasFPRegsV8_1M];
99+
HasFPRegsV8_1M, HasFP16FML, HasMatMulInt8, HasBF16];
100100
}
101101

102102
//===----------------------------------------------------------------------===//

0 commit comments

Comments
 (0)