Skip to content

Commit d22c99a

Browse files
committed
Set MicroOpBufferSize and BufferSize to 0
i6400 and i6500 are in-order cores. hence set BufferSize and MicroBufferSize to 0
1 parent cd46d4b commit d22c99a

File tree

2 files changed

+15
-20
lines changed

2 files changed

+15
-20
lines changed

llvm/lib/Target/Mips/Mips32r6InstrInfo.td

+2-2
Original file line numberDiff line numberDiff line change
@@ -984,7 +984,7 @@ let AdditionalPredicates = [NotInMicroMips] in {
984984
def SDC2_R6 : SDC2_R6_ENC, SDC2_R6_DESC, ISA_MIPS32R6;
985985
def SWC2_R6 : SWC2_R6_ENC, SWC2_R6_DESC, ISA_MIPS32R6;
986986

987-
let hasNoSchedulingInfo = 1 in {
987+
let hasNoSchedulingInfo = true in {
988988
def SIGRIE : SIGRIE_ENC, SIGRIE_DESC, ISA_MIPS32R6;
989989
}
990990
}
@@ -999,7 +999,7 @@ let AdditionalPredicates = [NotInMicroMips] in {
999999
}
10001000

10011001
let AdditionalPredicates = [NotInMicroMips] in {
1002-
let hasNoSchedulingInfo = 1 in {
1002+
let hasNoSchedulingInfo = true in {
10031003
def GINVI : R6MMR6Rel, GINVI_ENC, GINVI_DESC, ISA_MIPS32R6, ASE_GINV;
10041004
def GINVT : R6MMR6Rel, GINVT_ENC, GINVT_DESC, ISA_MIPS32R6, ASE_GINV;
10051005
}

llvm/lib/Target/Mips/MipsScheduleI6400.td

+13-18
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
def MipsI6400Model : SchedMachineModel {
1010
int IssueWidth = 2; // 2x dispatched per cycle
11-
int MicroOpBufferSize = 48; // min(48, 48, 64)
11+
int MicroOpBufferSize = 0;
1212
int LoadLatency = 3;
1313
int MispredictPenalty = 8;
1414

@@ -26,17 +26,17 @@ let SchedModel = MipsI6400Model in {
2626

2727
// AGEN Pipelines
2828
// ==============
29-
def I6400AGEN : ProcResource<1> { let BufferSize = 16; }
29+
def I6400AGEN : ProcResource<1> { let BufferSize = 0; }
3030
def I6400IssueLSU : ProcResource<1> { let Super = I6400AGEN; }
3131
def I6400IssueALU1 : ProcResource<1> { let Super = I6400AGEN; }
3232

33-
def I6400WriteLSUStore : SchedWriteRes<[I6400IssueLSU]> { let Latency = 1; }
33+
def I6400WriteLSUStore : SchedWriteRes<[I6400IssueLSU]>;
3434
def I6400WriteLSUStore2 : SchedWriteRes<[I6400IssueLSU]> {
3535
let Latency = 8;
3636
let ReleaseAtCycles = [5];
3737
}
3838
def I6400WriteLSULoad : SchedWriteRes<[I6400IssueLSU]> { let Latency = 3; }
39-
def I6400WriteLSUPref : SchedWriteRes<[I6400IssueLSU]> { let Latency = 1; }
39+
def I6400WriteLSUPref : SchedWriteRes<[I6400IssueLSU]>;
4040
def I6400WriteLSUOther : SchedWriteRes<[I6400IssueLSU]> {
4141
let Latency = 6;
4242
let ReleaseAtCycles = [5];
@@ -60,13 +60,13 @@ let SchedModel = MipsI6400Model in {
6060

6161
// CONTROL Pipelines
6262
// =================
63-
def I6400CTRL : ProcResource<1> { let BufferSize = 16; }
63+
def I6400CTRL : ProcResource<1> { let BufferSize = 0; }
6464
def I6400IssueCTU : ProcResource<1> { let Super = I6400CTRL; }
6565
def I6400IssueALU0 : ProcResource<1> { let Super = I6400CTRL; }
6666

67-
def I6400WriteALU0 : SchedWriteRes<[I6400IssueALU0]> { let Latency = 1; }
68-
def I6400WriteALU1 : SchedWriteRes<[I6400IssueALU1]> { let Latency = 1; }
69-
def I6400WriteCTU : SchedWriteRes<[I6400IssueCTU]> { let Latency = 1; }
67+
def I6400WriteALU0 : SchedWriteRes<[I6400IssueALU0]>;
68+
def I6400WriteALU1 : SchedWriteRes<[I6400IssueALU1]>;
69+
def I6400WriteCTU : SchedWriteRes<[I6400IssueCTU]>;
7070

7171
// CTU pipelines
7272
// =============
@@ -92,9 +92,7 @@ let SchedModel = MipsI6400Model in {
9292
// Either ALU0 or ALU1 pipelines
9393
// =============================
9494
def I6400IssueEitherALU : ProcResGroup<[I6400IssueALU0, I6400IssueALU1]>;
95-
def I6400WriteEitherALU : SchedWriteRes<[I6400IssueEitherALU]> {
96-
let Latency = 1;
97-
}
95+
def I6400WriteEitherALU : SchedWriteRes<[I6400IssueEitherALU]>;
9896

9997
def : InstRW<[I6400WriteEitherALU],
10098
(instrs ADD, ADDiu, ADDIUPC, ADDu, ALIGN, ALUIPC, AND, ANDi, AUI,
@@ -134,13 +132,13 @@ let SchedModel = MipsI6400Model in {
134132

135133
// FPU pipelines
136134
// =============
137-
def I6400FPU : ProcResource<3> { let BufferSize = 16; }
135+
def I6400FPU : ProcResource<3> { let BufferSize = 0; }
138136
def I6400FPUShort : ProcResource<1> { let Super = I6400FPU; }
139137
def I6400FPULong : ProcResource<1> { let Super = I6400FPU; }
140138
def I6400FPUApu : ProcResource<1>;
141139
def I6400FPUFloatL : ProcResource<1>;
142140

143-
def I6400FPUFabs : SchedWriteRes<[I6400FPUShort]> { let Latency = 1; }
141+
def I6400FPUFabs : SchedWriteRes<[I6400FPUShort]>;
144142
def : InstRW<[I6400FPUFabs], (instrs FABS_S, FNEG_S, FMOV_S,
145143
FMOV_D32, FMOV_D64,
146144
FNEG_D32, FNEG_D64, CLASS_S, CLASS_D)>;
@@ -245,7 +243,6 @@ let SchedModel = MipsI6400Model in {
245243
SHF_H, SHF_W)>;
246244

247245
def I6400MSAShortLogic : SchedWriteRes<[I6400FPUShort]> {
248-
let Latency = 1;
249246
let ReleaseAtCycles = [2];
250247
}
251248
def : InstRW<[I6400MSAShortLogic],
@@ -268,7 +265,7 @@ let SchedModel = MipsI6400Model in {
268265
def : InstRW<[I6400MSAShortLogic], (instregex "^SPLAT_(B|H|W|D)$")>;
269266
def : InstRW<[I6400MSAShortLogic], (instregex "^SPLATI_(B|H|W|D)$")>;
270267

271-
def I6400MSAShortLogic4 : SchedWriteRes<[I6400FPUShort]> { let Latency = 1; }
268+
def I6400MSAShortLogic4 : SchedWriteRes<[I6400FPUShort]>;
272269
def : InstRW<[I6400MSAShortLogic4],
273270
(instrs CTCMSA, CFCMSA, COPY_S_B, COPY_S_H, COPY_S_W, COPY_S_D,
274271
COPY_U_B, COPY_U_H, COPY_U_W, BNZ_B, BNZ_H, BNZ_W, BNZ_D,
@@ -281,7 +278,6 @@ let SchedModel = MipsI6400Model in {
281278
def : InstRW<[I6400MSAMove], (instrs LD_B, LD_H, LD_W, LD_D)>;
282279

283280
def I6400MSAMove2 : SchedWriteRes<[I6400FPUShort]> {
284-
let Latency = 1;
285281
let ReleaseAtCycles = [2];
286282
}
287283
def : InstRW<[I6400MSAMove2], (instrs LDI_B, LDI_H, LDI_W, LDI_D, MOVE_V)>;
@@ -343,7 +339,6 @@ let SchedModel = MipsI6400Model in {
343339
CEIL_W_D32, CEIL_W_D64)>;
344340

345341
def I6400MSALongLogic1 : SchedWriteRes<[I6400FPULong]> {
346-
let Latency = 1;
347342
let ReleaseAtCycles = [2];
348343
}
349344
def : InstRW<[I6400MSALongLogic1], (instrs BMZ_V, BMZI_B, BMNZ_V, BMNZI_B,
@@ -439,7 +434,7 @@ let SchedModel = MipsI6400Model in {
439434
// attach it to the Atomic2OpsPostRA, AtomicCmpSwapPostRA, ...
440435
// classes. Then just define resources for the `WriteAtomic` in each
441436
// machine models.
442-
def I6400Atomic : ProcResource<1> { let BufferSize = 1; }
437+
def I6400Atomic : ProcResource<1> { let BufferSize = 0; }
443438
def I6400WriteAtomic : SchedWriteRes<[I6400Atomic]> { let Latency = 2; }
444439

445440
def : InstRW<[I6400WriteAtomic],

0 commit comments

Comments
 (0)