88
99def 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