Skip to content

Commit c5195f7

Browse files
committed
[MIPS] Add Scheduling model for MIPS i6400 and i6500 CPUs
Add scheduling model for the MIPS i6400 and i6500, an in-order MIPS64R6 processor. i6400 and i6500 share same instruction latencies. CPU has following pipelines - Two ALUs - Multiply and Divide unit (MDU) - Branch Unit (CTU) - Load/Store Unit (LSU) - Short Floating-point Unit and - Long Floating-point Unit
1 parent 5c65a32 commit c5195f7

File tree

4 files changed

+568
-5
lines changed

4 files changed

+568
-5
lines changed

llvm/lib/Target/Mips/Mips.td

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ include "MipsRegisterBanks.td"
224224
include "MipsCombine.td"
225225

226226
// Avoid forward declaration issues.
227+
include "MipsScheduleI6400.td"
227228
include "MipsScheduleP5600.td"
228229
include "MipsScheduleGeneric.td"
229230

@@ -271,8 +272,8 @@ def : Proc<"mips64r6", [FeatureMips64r6]>;
271272
def : Proc<"octeon", [FeatureMips64r2, FeatureCnMips]>;
272273
def : Proc<"octeon+", [FeatureMips64r2, FeatureCnMips, FeatureCnMipsP]>;
273274
def : ProcessorModel<"p5600", MipsP5600Model, [ImplP5600]>;
274-
def : ProcessorModel<"i6400", NoSchedModel, [ImplI6400]>;
275-
def : ProcessorModel<"i6500", NoSchedModel, [ImplI6500]>;
275+
def : ProcessorModel<"i6400", MipsI6400Model, [ImplI6400]>;
276+
def : ProcessorModel<"i6500", MipsI6400Model, [ImplI6500]>;
276277

277278
def MipsAsmParser : AsmParser {
278279
let ShouldEmitMatchRegisterName = 0;

llvm/lib/Target/Mips/Mips32r6InstrInfo.td

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -983,7 +983,10 @@ let AdditionalPredicates = [NotInMicroMips] in {
983983
def SEL_S : R6MMR6Rel, SEL_S_ENC, SEL_S_DESC, ISA_MIPS32R6, HARDFLOAT;
984984
def SDC2_R6 : SDC2_R6_ENC, SDC2_R6_DESC, ISA_MIPS32R6;
985985
def SWC2_R6 : SWC2_R6_ENC, SWC2_R6_DESC, ISA_MIPS32R6;
986-
def SIGRIE : SIGRIE_ENC, SIGRIE_DESC, ISA_MIPS32R6;
986+
987+
let hasNoSchedulingInfo = 1 in {
988+
def SIGRIE : SIGRIE_ENC, SIGRIE_DESC, ISA_MIPS32R6;
989+
}
987990
}
988991

989992
let AdditionalPredicates = [NotInMicroMips] in {
@@ -996,8 +999,10 @@ let AdditionalPredicates = [NotInMicroMips] in {
996999
}
9971000

9981001
let AdditionalPredicates = [NotInMicroMips] in {
999-
def GINVI : R6MMR6Rel, GINVI_ENC, GINVI_DESC, ISA_MIPS32R6, ASE_GINV;
1000-
def GINVT : R6MMR6Rel, GINVT_ENC, GINVT_DESC, ISA_MIPS32R6, ASE_GINV;
1002+
let hasNoSchedulingInfo = 1 in {
1003+
def GINVI : R6MMR6Rel, GINVI_ENC, GINVI_DESC, ISA_MIPS32R6, ASE_GINV;
1004+
def GINVT : R6MMR6Rel, GINVT_ENC, GINVT_DESC, ISA_MIPS32R6, ASE_GINV;
1005+
}
10011006
}
10021007

10031008
//===----------------------------------------------------------------------===//

0 commit comments

Comments
 (0)