mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-05 02:16:46 +00:00
[mips][sched] Split IIFmove into II_C[FT]C1, II_MOV[FNTZ]_[SD], II_MOV_[SD]
No functional change since the InstrItinData's have been duplicated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199727 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c2e835fd7e
commit
0e65e8c2a7
@ -76,7 +76,7 @@ def CVT_L_D64_MM : MMRel, ABSS_FT<"cvt.l.d", FGR64Opnd, FGR64Opnd, II_CVT>,
|
||||
|
||||
def FABS_S_MM : MMRel, ABSS_FT<"abs.s", FGR32Opnd, FGR32Opnd, II_ABS, fabs>,
|
||||
ABS_FM_MM<0, 0xd>;
|
||||
def FMOV_S_MM : MMRel, ABSS_FT<"mov.s", FGR32Opnd, FGR32Opnd, IIFmove>,
|
||||
def FMOV_S_MM : MMRel, ABSS_FT<"mov.s", FGR32Opnd, FGR32Opnd, II_MOV_S>,
|
||||
ABS_FM_MM<0, 0x1>;
|
||||
def FNEG_S_MM : MMRel, ABSS_FT<"neg.s", FGR32Opnd, FGR32Opnd, II_NEG, fneg>,
|
||||
ABS_FM_MM<0, 0x2d>;
|
||||
@ -94,30 +94,30 @@ def FABS_MM : MMRel, ABSS_FT<"abs.d", AFGR64Opnd, AFGR64Opnd, II_ABS, fabs>,
|
||||
def FNEG_MM : MMRel, ABSS_FT<"neg.d", AFGR64Opnd, AFGR64Opnd, II_NEG, fneg>,
|
||||
ABS_FM_MM<1, 0x2d>;
|
||||
|
||||
def FMOV_D32_MM : MMRel, ABSS_FT<"mov.d", AFGR64Opnd, AFGR64Opnd, IIFmove>,
|
||||
def FMOV_D32_MM : MMRel, ABSS_FT<"mov.d", AFGR64Opnd, AFGR64Opnd, II_MOV_D>,
|
||||
ABS_FM_MM<1, 0x1>, Requires<[NotFP64bit, HasStdEnc]>;
|
||||
|
||||
def MOVZ_I_S_MM : MMRel, CMov_I_F_FT<"movz.s", GPR32Opnd, FGR32Opnd, IIFmove>,
|
||||
CMov_I_F_FM_MM<0x78, 0>;
|
||||
def MOVN_I_S_MM : MMRel, CMov_I_F_FT<"movn.s", GPR32Opnd, FGR32Opnd, IIFmove>,
|
||||
CMov_I_F_FM_MM<0x38, 0>;
|
||||
def MOVZ_I_S_MM : MMRel, CMov_I_F_FT<"movz.s", GPR32Opnd, FGR32Opnd,
|
||||
II_MOVZ_S>, CMov_I_F_FM_MM<0x78, 0>;
|
||||
def MOVN_I_S_MM : MMRel, CMov_I_F_FT<"movn.s", GPR32Opnd, FGR32Opnd,
|
||||
II_MOVN_S>, CMov_I_F_FM_MM<0x38, 0>;
|
||||
def MOVZ_I_D32_MM : MMRel, CMov_I_F_FT<"movz.d", GPR32Opnd, AFGR64Opnd,
|
||||
IIFmove>, CMov_I_F_FM_MM<0x78, 1>;
|
||||
II_MOVZ_D>, CMov_I_F_FM_MM<0x78, 1>;
|
||||
def MOVN_I_D32_MM : MMRel, CMov_I_F_FT<"movn.d", GPR32Opnd, AFGR64Opnd,
|
||||
IIFmove>, CMov_I_F_FM_MM<0x38, 1>;
|
||||
II_MOVN_D>, CMov_I_F_FM_MM<0x38, 1>;
|
||||
|
||||
def MOVT_S_MM : MMRel, CMov_F_F_FT<"movt.s", FGR32Opnd, IIFmove, MipsCMovFP_T>,
|
||||
CMov_F_F_FM_MM<0x60, 0>;
|
||||
def MOVF_S_MM : MMRel, CMov_F_F_FT<"movf.s", FGR32Opnd, IIFmove, MipsCMovFP_F>,
|
||||
CMov_F_F_FM_MM<0x20, 0>;
|
||||
def MOVT_D32_MM : MMRel, CMov_F_F_FT<"movt.d", AFGR64Opnd,
|
||||
IIFmove, MipsCMovFP_T>, CMov_F_F_FM_MM<0x60, 1>;
|
||||
def MOVF_D32_MM : MMRel, CMov_F_F_FT<"movf.d", AFGR64Opnd,
|
||||
IIFmove, MipsCMovFP_F>, CMov_F_F_FM_MM<0x20, 1>;
|
||||
def MOVT_S_MM : MMRel, CMov_F_F_FT<"movt.s", FGR32Opnd, II_MOVT_S,
|
||||
MipsCMovFP_T>, CMov_F_F_FM_MM<0x60, 0>;
|
||||
def MOVF_S_MM : MMRel, CMov_F_F_FT<"movf.s", FGR32Opnd, II_MOVF_S,
|
||||
MipsCMovFP_F>, CMov_F_F_FM_MM<0x20, 0>;
|
||||
def MOVT_D32_MM : MMRel, CMov_F_F_FT<"movt.d", AFGR64Opnd, II_MOVT_D,
|
||||
MipsCMovFP_T>, CMov_F_F_FM_MM<0x60, 1>;
|
||||
def MOVF_D32_MM : MMRel, CMov_F_F_FT<"movf.d", AFGR64Opnd, II_MOVF_D,
|
||||
MipsCMovFP_F>, CMov_F_F_FM_MM<0x20, 1>;
|
||||
|
||||
def CFC1_MM : MMRel, MFC1_FT<"cfc1", GPR32Opnd, CCROpnd, IIFmove>,
|
||||
def CFC1_MM : MMRel, MFC1_FT<"cfc1", GPR32Opnd, CCROpnd, II_CFC1>,
|
||||
MFC1_FM_MM<0x40>;
|
||||
def CTC1_MM : MMRel, MTC1_FT<"ctc1", CCROpnd, GPR32Opnd, IIFmove>,
|
||||
def CTC1_MM : MMRel, MTC1_FT<"ctc1", CCROpnd, GPR32Opnd, II_CTC1>,
|
||||
MFC1_FM_MM<0x60>;
|
||||
def MFC1_MM : MMRel, MFC1_FT<"mfc1", GPR32Opnd, FGR32Opnd,
|
||||
IIFmoveC1, bitconvert>, MFC1_FM_MM<0x80>;
|
||||
|
@ -127,37 +127,37 @@ let Predicates = [HasStdEnc], isCodeGenOnly = 1 in {
|
||||
ADD_FM<0, 0xb>;
|
||||
}
|
||||
|
||||
def MOVZ_I_S : MMRel, CMov_I_F_FT<"movz.s", GPR32Opnd, FGR32Opnd, IIFmove>,
|
||||
def MOVZ_I_S : MMRel, CMov_I_F_FT<"movz.s", GPR32Opnd, FGR32Opnd, II_MOVZ_S>,
|
||||
CMov_I_F_FM<18, 16>;
|
||||
|
||||
let isCodeGenOnly = 1 in
|
||||
def MOVZ_I64_S : CMov_I_F_FT<"movz.s", GPR64Opnd, FGR32Opnd, IIFmove>,
|
||||
def MOVZ_I64_S : CMov_I_F_FT<"movz.s", GPR64Opnd, FGR32Opnd, II_MOVZ_S>,
|
||||
CMov_I_F_FM<18, 16>, Requires<[HasMips64, HasStdEnc]>;
|
||||
|
||||
def MOVN_I_S : MMRel, CMov_I_F_FT<"movn.s", GPR32Opnd, FGR32Opnd, IIFmove>,
|
||||
def MOVN_I_S : MMRel, CMov_I_F_FT<"movn.s", GPR32Opnd, FGR32Opnd, II_MOVN_S>,
|
||||
CMov_I_F_FM<19, 16>;
|
||||
|
||||
let isCodeGenOnly = 1 in
|
||||
def MOVN_I64_S : CMov_I_F_FT<"movn.s", GPR64Opnd, FGR32Opnd, IIFmove>,
|
||||
def MOVN_I64_S : CMov_I_F_FT<"movn.s", GPR64Opnd, FGR32Opnd, II_MOVN_S>,
|
||||
CMov_I_F_FM<19, 16>, Requires<[HasMips64, HasStdEnc]>;
|
||||
|
||||
let Predicates = [NotFP64bit, HasStdEnc] in {
|
||||
def MOVZ_I_D32 : MMRel, CMov_I_F_FT<"movz.d", GPR32Opnd, AFGR64Opnd,
|
||||
IIFmove>, CMov_I_F_FM<18, 17>;
|
||||
II_MOVZ_D>, CMov_I_F_FM<18, 17>;
|
||||
def MOVN_I_D32 : MMRel, CMov_I_F_FT<"movn.d", GPR32Opnd, AFGR64Opnd,
|
||||
IIFmove>, CMov_I_F_FM<19, 17>;
|
||||
II_MOVN_D>, CMov_I_F_FM<19, 17>;
|
||||
}
|
||||
|
||||
let Predicates = [IsFP64bit, HasStdEnc], DecoderNamespace = "Mips64" in {
|
||||
def MOVZ_I_D64 : CMov_I_F_FT<"movz.d", GPR32Opnd, FGR64Opnd, IIFmove>,
|
||||
def MOVZ_I_D64 : CMov_I_F_FT<"movz.d", GPR32Opnd, FGR64Opnd, II_MOVZ_D>,
|
||||
CMov_I_F_FM<18, 17>;
|
||||
def MOVN_I_D64 : CMov_I_F_FT<"movn.d", GPR32Opnd, FGR64Opnd, IIFmove>,
|
||||
def MOVN_I_D64 : CMov_I_F_FT<"movn.d", GPR32Opnd, FGR64Opnd, II_MOVN_D>,
|
||||
CMov_I_F_FM<19, 17>;
|
||||
let isCodeGenOnly = 1 in {
|
||||
def MOVZ_I64_D64 : CMov_I_F_FT<"movz.d", GPR64Opnd, FGR64Opnd,
|
||||
IIFmove>, CMov_I_F_FM<18, 17>;
|
||||
II_MOVZ_D>, CMov_I_F_FM<18, 17>;
|
||||
def MOVN_I64_D64 : CMov_I_F_FT<"movn.d", GPR64Opnd, FGR64Opnd,
|
||||
IIFmove>, CMov_I_F_FM<19, 17>;
|
||||
II_MOVN_D>, CMov_I_F_FM<19, 17>;
|
||||
}
|
||||
}
|
||||
|
||||
@ -175,22 +175,22 @@ let isCodeGenOnly = 1 in
|
||||
def MOVF_I64 : CMov_F_I_FT<"movf", GPR64Opnd, II_MOVF, MipsCMovFP_F>,
|
||||
CMov_F_I_FM<0>, Requires<[HasMips64, HasStdEnc]>;
|
||||
|
||||
def MOVT_S : MMRel, CMov_F_F_FT<"movt.s", FGR32Opnd, IIFmove, MipsCMovFP_T>,
|
||||
def MOVT_S : MMRel, CMov_F_F_FT<"movt.s", FGR32Opnd, II_MOVT_S, MipsCMovFP_T>,
|
||||
CMov_F_F_FM<16, 1>;
|
||||
def MOVF_S : MMRel, CMov_F_F_FT<"movf.s", FGR32Opnd, IIFmove, MipsCMovFP_F>,
|
||||
def MOVF_S : MMRel, CMov_F_F_FT<"movf.s", FGR32Opnd, II_MOVF_S, MipsCMovFP_F>,
|
||||
CMov_F_F_FM<16, 0>;
|
||||
|
||||
let Predicates = [NotFP64bit, HasStdEnc] in {
|
||||
def MOVT_D32 : MMRel, CMov_F_F_FT<"movt.d", AFGR64Opnd, IIFmove,
|
||||
def MOVT_D32 : MMRel, CMov_F_F_FT<"movt.d", AFGR64Opnd, II_MOVT_D,
|
||||
MipsCMovFP_T>, CMov_F_F_FM<17, 1>;
|
||||
def MOVF_D32 : MMRel, CMov_F_F_FT<"movf.d", AFGR64Opnd, IIFmove,
|
||||
def MOVF_D32 : MMRel, CMov_F_F_FT<"movf.d", AFGR64Opnd, II_MOVF_D,
|
||||
MipsCMovFP_F>, CMov_F_F_FM<17, 0>;
|
||||
}
|
||||
|
||||
let Predicates = [IsFP64bit, HasStdEnc], DecoderNamespace = "Mips64" in {
|
||||
def MOVT_D64 : CMov_F_F_FT<"movt.d", FGR64Opnd, IIFmove, MipsCMovFP_T>,
|
||||
def MOVT_D64 : CMov_F_F_FT<"movt.d", FGR64Opnd, II_MOVT_D, MipsCMovFP_T>,
|
||||
CMov_F_F_FM<17, 1>;
|
||||
def MOVF_D64 : CMov_F_F_FT<"movf.d", FGR64Opnd, IIFmove, MipsCMovFP_F>,
|
||||
def MOVF_D64 : CMov_F_F_FT<"movf.d", FGR64Opnd, II_MOVF_D, MipsCMovFP_F>,
|
||||
CMov_F_F_FM<17, 0>;
|
||||
}
|
||||
|
||||
|
@ -338,8 +338,8 @@ defm FSQRT : ABSS_M<"sqrt.d", IIFsqrtDouble, fsqrt>, ABSS_FM<0x4, 17>;
|
||||
// regardless of register aliasing.
|
||||
|
||||
/// Move Control Registers From/To CPU Registers
|
||||
def CFC1 : MMRel, MFC1_FT<"cfc1", GPR32Opnd, CCROpnd, IIFmove>, MFC1_FM<2>;
|
||||
def CTC1 : MMRel, MTC1_FT<"ctc1", CCROpnd, GPR32Opnd, IIFmove>, MFC1_FM<6>;
|
||||
def CFC1 : MMRel, MFC1_FT<"cfc1", GPR32Opnd, CCROpnd, II_CFC1>, MFC1_FM<2>;
|
||||
def CTC1 : MMRel, MTC1_FT<"ctc1", CCROpnd, GPR32Opnd, II_CTC1>, MFC1_FM<6>;
|
||||
def MFC1 : MMRel, MFC1_FT<"mfc1", GPR32Opnd, FGR32Opnd, IIFmoveC1,
|
||||
bitconvert>, MFC1_FM<0>;
|
||||
def MTC1 : MMRel, MTC1_FT<"mtc1", FGR32Opnd, GPR32Opnd, IIFmoveC1,
|
||||
@ -353,11 +353,11 @@ def DMFC1 : MFC1_FT<"dmfc1", GPR64Opnd, FGR64Opnd, IIFmoveC1,
|
||||
def DMTC1 : MTC1_FT<"dmtc1", FGR64Opnd, GPR64Opnd, IIFmoveC1,
|
||||
bitconvert>, MFC1_FM<5>;
|
||||
|
||||
def FMOV_S : MMRel, ABSS_FT<"mov.s", FGR32Opnd, FGR32Opnd, IIFmove>,
|
||||
def FMOV_S : MMRel, ABSS_FT<"mov.s", FGR32Opnd, FGR32Opnd, II_MOV_S>,
|
||||
ABSS_FM<0x6, 16>;
|
||||
def FMOV_D32 : MMRel, ABSS_FT<"mov.d", AFGR64Opnd, AFGR64Opnd, IIFmove>,
|
||||
def FMOV_D32 : MMRel, ABSS_FT<"mov.d", AFGR64Opnd, AFGR64Opnd, II_MOV_D>,
|
||||
ABSS_FM<0x6, 17>, Requires<[NotFP64bit, HasStdEnc]>;
|
||||
def FMOV_D64 : ABSS_FT<"mov.d", FGR64Opnd, FGR64Opnd, IIFmove>,
|
||||
def FMOV_D64 : ABSS_FT<"mov.d", FGR64Opnd, FGR64Opnd, II_MOV_D>,
|
||||
ABSS_FM<0x6, 17>, Requires<[IsFP64bit, HasStdEnc]> {
|
||||
let DecoderNamespace = "Mips64";
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ def IIAlu : InstrItinClass;
|
||||
def IILoad : InstrItinClass;
|
||||
def IIStore : InstrItinClass;
|
||||
def IIBranch : InstrItinClass;
|
||||
def IIFmove : InstrItinClass;
|
||||
def IIFcmp : InstrItinClass;
|
||||
def IIFadd : InstrItinClass;
|
||||
def IIFmulSingle : InstrItinClass;
|
||||
@ -42,8 +41,10 @@ def II_ADDU : InstrItinClass;
|
||||
def II_AND : InstrItinClass;
|
||||
def II_ANDI : InstrItinClass;
|
||||
def II_CEIL : InstrItinClass;
|
||||
def II_CFC1 : InstrItinClass;
|
||||
def II_CLO : InstrItinClass;
|
||||
def II_CLZ : InstrItinClass;
|
||||
def II_CTC1 : InstrItinClass;
|
||||
def II_CVT : InstrItinClass;
|
||||
def II_DADDIU : InstrItinClass;
|
||||
def II_DADDU : InstrItinClass;
|
||||
@ -72,9 +73,19 @@ def II_MADD : InstrItinClass;
|
||||
def II_MADDU : InstrItinClass;
|
||||
def II_MFHI_MFLO : InstrItinClass; // mfhi and mflo
|
||||
def II_MOVF : InstrItinClass;
|
||||
def II_MOVF_D : InstrItinClass;
|
||||
def II_MOVF_S : InstrItinClass;
|
||||
def II_MOVN : InstrItinClass;
|
||||
def II_MOVN_D : InstrItinClass;
|
||||
def II_MOVN_S : InstrItinClass;
|
||||
def II_MOVT : InstrItinClass;
|
||||
def II_MOVT_D : InstrItinClass;
|
||||
def II_MOVT_S : InstrItinClass;
|
||||
def II_MOVZ : InstrItinClass;
|
||||
def II_MOVZ_D : InstrItinClass;
|
||||
def II_MOVZ_S : InstrItinClass;
|
||||
def II_MOV_D : InstrItinClass;
|
||||
def II_MOV_S : InstrItinClass;
|
||||
def II_MSUB : InstrItinClass;
|
||||
def II_MSUBU : InstrItinClass;
|
||||
def II_MTHI_MTLO : InstrItinClass; // mthi and mtlo
|
||||
@ -137,6 +148,8 @@ def MipsGenericItineraries : ProcessorItineraries<[ALU, IMULDIV], [], [
|
||||
InstrItinData<II_LUI , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_MOVF , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_MOVN , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_MOVN_S , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_MOVN_D , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_MOVT , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_MOVZ , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_NOR , [InstrStage<1, [ALU]>]>,
|
||||
@ -174,7 +187,16 @@ def MipsGenericItineraries : ProcessorItineraries<[ALU, IMULDIV], [], [
|
||||
InstrItinData<II_NEG , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_ROUND , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_TRUNC , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<IIFmove , [InstrStage<2, [ALU]>]>,
|
||||
InstrItinData<II_MOV_D , [InstrStage<2, [ALU]>]>,
|
||||
InstrItinData<II_MOV_S , [InstrStage<2, [ALU]>]>,
|
||||
InstrItinData<II_CFC1 , [InstrStage<2, [ALU]>]>,
|
||||
InstrItinData<II_CTC1 , [InstrStage<2, [ALU]>]>,
|
||||
InstrItinData<II_MOVF_D , [InstrStage<2, [ALU]>]>,
|
||||
InstrItinData<II_MOVF_S , [InstrStage<2, [ALU]>]>,
|
||||
InstrItinData<II_MOVT_D , [InstrStage<2, [ALU]>]>,
|
||||
InstrItinData<II_MOVT_S , [InstrStage<2, [ALU]>]>,
|
||||
InstrItinData<II_MOVZ_D , [InstrStage<2, [ALU]>]>,
|
||||
InstrItinData<II_MOVZ_S , [InstrStage<2, [ALU]>]>,
|
||||
InstrItinData<IIFcmp , [InstrStage<3, [ALU]>]>,
|
||||
InstrItinData<IIFadd , [InstrStage<4, [ALU]>]>,
|
||||
InstrItinData<IIFmulSingle , [InstrStage<7, [ALU]>]>,
|
||||
|
Loading…
Reference in New Issue
Block a user