@@ -12,7 +12,7 @@ def MipsI6400Model : SchedMachineModel {
1212 int LoadLatency = 3;
1313 int MispredictPenalty = 8;
1414
15- let CompleteModel = 1 ;
15+ let CompleteModel = 0 ;
1616 let FullInstRWOverlapCheck = 1;
1717
1818 list<Predicate> UnsupportedFeatures = [HasMips64r5, HasMips32r5,
@@ -24,12 +24,27 @@ def MipsI6400Model : SchedMachineModel {
2424
2525let SchedModel = MipsI6400Model in {
2626
27+ // I6400 Resources
28+ // ===============
29+ let BufferSize = 0 in {
30+
31+ def I6400AGEN : ProcResource<1>;
32+ def I6400IssueLSU : ProcResource<1> { let Super = I6400AGEN; }
33+ def I6400IssueALU1 : ProcResource<1> { let Super = I6400AGEN; }
34+ def I6400CTRL : ProcResource<1>;
35+ def I6400IssueCTU : ProcResource<1> { let Super = I6400CTRL; }
36+ def I6400IssueALU0 : ProcResource<1> { let Super = I6400CTRL; }
37+ def I6400MDU : ProcResource<1>;
38+ def I6400FPU : ProcResource<3>;
39+ def I6400FPUShort : ProcResource<1> { let Super = I6400FPU; }
40+ def I6400FPULong : ProcResource<1> { let Super = I6400FPU; }
41+ def I6400FPUApu : ProcResource<1>;
42+ def I6400FPUFloatL : ProcResource<1>;
43+ def I6400Atomic : ProcResource<1>;
44+ }
45+
2746 // AGEN Pipelines
2847 // ==============
29- def I6400AGEN : ProcResource<1> { let BufferSize = 0; }
30- def I6400IssueLSU : ProcResource<1> { let Super = I6400AGEN; }
31- def I6400IssueALU1 : ProcResource<1> { let Super = I6400AGEN; }
32-
3348 def I6400WriteLSUStore : SchedWriteRes<[I6400IssueLSU]>;
3449 def I6400WriteLSUStore2 : SchedWriteRes<[I6400IssueLSU]> {
3550 let Latency = 8;
@@ -60,9 +75,6 @@ let SchedModel = MipsI6400Model in {
6075
6176 // CONTROL Pipelines
6277 // =================
63- def I6400CTRL : ProcResource<1> { let BufferSize = 0; }
64- def I6400IssueCTU : ProcResource<1> { let Super = I6400CTRL; }
65- def I6400IssueALU0 : ProcResource<1> { let Super = I6400CTRL; }
6678
6779 def I6400WriteALU0 : SchedWriteRes<[I6400IssueALU0]>;
6880 def I6400WriteALU1 : SchedWriteRes<[I6400IssueALU1]>;
@@ -120,7 +132,6 @@ let SchedModel = MipsI6400Model in {
120132
121133 // MDU pipelines
122134 // =============
123- def I6400MDU : ProcResource<1>;
124135 def I6400GPMUL : SchedWriteRes<[I6400MDU]> { let Latency = 4; }
125136 def : InstRW<[I6400GPMUL], (instrs MUL_R6, MULU, MUH, MUHU, DMUL_R6, DMUH,
126137 DMULU, DMUHU)>;
@@ -132,11 +143,6 @@ let SchedModel = MipsI6400Model in {
132143
133144 // FPU pipelines
134145 // =============
135- def I6400FPU : ProcResource<3> { let BufferSize = 0; }
136- def I6400FPUShort : ProcResource<1> { let Super = I6400FPU; }
137- def I6400FPULong : ProcResource<1> { let Super = I6400FPU; }
138- def I6400FPUApu : ProcResource<1>;
139- def I6400FPUFloatL : ProcResource<1>;
140146
141147 def I6400FPUFabs : SchedWriteRes<[I6400FPUShort]>;
142148 def : InstRW<[I6400FPUFabs], (instrs FABS_S, FNEG_S, FMOV_S,
@@ -434,7 +440,6 @@ let SchedModel = MipsI6400Model in {
434440 // attach it to the Atomic2OpsPostRA, AtomicCmpSwapPostRA, ...
435441 // classes. Then just define resources for the `WriteAtomic` in each
436442 // machine models.
437- def I6400Atomic : ProcResource<1> { let BufferSize = 0; }
438443 def I6400WriteAtomic : SchedWriteRes<[I6400Atomic]> { let Latency = 2; }
439444
440445 def : InstRW<[I6400WriteAtomic],
0 commit comments