mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-30 20:34:21 +00:00
[mips][sched] Split IIHiLo into II_MFHI_MFLO and II_MTHI_MTLO
No functional change since the InstrItinData's have been duplicated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199493 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3e2346341c
commit
8821f3c6b2
@ -727,21 +727,22 @@ class Div<string opstr, InstrItinClass itin, RegisterOperand RO,
|
||||
// Move from Hi/Lo
|
||||
class PseudoMFLOHI<RegisterClass DstRC, RegisterClass SrcRC, SDNode OpNode>
|
||||
: PseudoSE<(outs DstRC:$rd), (ins SrcRC:$hilo),
|
||||
[(set DstRC:$rd, (OpNode SrcRC:$hilo))], IIHiLo>;
|
||||
[(set DstRC:$rd, (OpNode SrcRC:$hilo))], II_MFHI_MFLO>;
|
||||
|
||||
class MoveFromLOHI<string opstr, RegisterOperand RO, Register UseReg>:
|
||||
InstSE<(outs RO:$rd), (ins), !strconcat(opstr, "\t$rd"), [], IIHiLo, FrmR,
|
||||
opstr> {
|
||||
InstSE<(outs RO:$rd), (ins), !strconcat(opstr, "\t$rd"), [], II_MFHI_MFLO,
|
||||
FrmR, opstr> {
|
||||
let Uses = [UseReg];
|
||||
let neverHasSideEffects = 1;
|
||||
}
|
||||
|
||||
class PseudoMTLOHI<RegisterClass DstRC, RegisterClass SrcRC>
|
||||
: PseudoSE<(outs DstRC:$lohi), (ins SrcRC:$lo, SrcRC:$hi),
|
||||
[(set DstRC:$lohi, (MipsMTLOHI SrcRC:$lo, SrcRC:$hi))], IIHiLo>;
|
||||
[(set DstRC:$lohi, (MipsMTLOHI SrcRC:$lo, SrcRC:$hi))],
|
||||
II_MTHI_MTLO>;
|
||||
|
||||
class MoveToLOHI<string opstr, RegisterOperand RO, list<Register> DefRegs>:
|
||||
InstSE<(outs), (ins RO:$rs), !strconcat(opstr, "\t$rs"), [], IIHiLo,
|
||||
InstSE<(outs), (ins RO:$rs), !strconcat(opstr, "\t$rs"), [], II_MTHI_MTLO,
|
||||
FrmR, opstr> {
|
||||
let Defs = DefRegs;
|
||||
let neverHasSideEffects = 1;
|
||||
|
@ -20,7 +20,6 @@ def IIAlu : InstrItinClass;
|
||||
def IILoad : InstrItinClass;
|
||||
def IIStore : InstrItinClass;
|
||||
def IIBranch : InstrItinClass;
|
||||
def IIHiLo : InstrItinClass;
|
||||
def IIImul : InstrItinClass;
|
||||
def IIImult : InstrItinClass;
|
||||
def IIIdiv : InstrItinClass;
|
||||
@ -64,6 +63,8 @@ def II_DSRL32 : InstrItinClass;
|
||||
def II_DSRLV : InstrItinClass;
|
||||
def II_DSUBU : InstrItinClass;
|
||||
def II_LUI : InstrItinClass;
|
||||
def II_MFHI_MFLO : InstrItinClass; // mfhi and mflo
|
||||
def II_MTHI_MTLO : InstrItinClass; // mthi and mtlo
|
||||
def II_MOVF : InstrItinClass;
|
||||
def II_MOVN : InstrItinClass;
|
||||
def II_MOVT : InstrItinClass;
|
||||
@ -132,7 +133,8 @@ def MipsGenericItineraries : ProcessorItineraries<[ALU, IMULDIV], [], [
|
||||
InstrItinData<IILoad , [InstrStage<3, [ALU]>]>,
|
||||
InstrItinData<IIStore , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<IIBranch , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<IIHiLo , [InstrStage<1, [IMULDIV]>]>,
|
||||
InstrItinData<II_MFHI_MFLO , [InstrStage<1, [IMULDIV]>]>,
|
||||
InstrItinData<II_MTHI_MTLO , [InstrStage<1, [IMULDIV]>]>,
|
||||
InstrItinData<IIImul , [InstrStage<17, [IMULDIV]>]>,
|
||||
InstrItinData<IIImult , [InstrStage<17, [IMULDIV]>]>,
|
||||
InstrItinData<IIIdiv , [InstrStage<38, [IMULDIV]>]>,
|
||||
|
Loading…
x
Reference in New Issue
Block a user