mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-05 19:29:54 +00:00
[mips][mt][3/7] Add IAS support for emt, dmt instructions.
Reviewers: slthakur, atanasyan Differential Revision: https://reviews.llvm.org/D35250 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307774 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
dba40dd7a1
commit
84aeab51db
@ -240,7 +240,8 @@ def HasMSA : Predicate<"Subtarget->hasMSA()">,
|
||||
AssemblerPredicate<"FeatureMSA">;
|
||||
def HasMadd4 : Predicate<"!Subtarget->disableMadd4()">,
|
||||
AssemblerPredicate<"!FeatureMadd4">;
|
||||
|
||||
def HasMT : Predicate<"Subtarget->hasMT()">,
|
||||
AssemblerPredicate<"FeatureMT">;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Mips GPR size adjectives.
|
||||
@ -382,6 +383,10 @@ class ASE_MSA64 {
|
||||
list<Predicate> InsnPredicates = [HasMSA, HasMips64];
|
||||
}
|
||||
|
||||
class ASE_MT {
|
||||
list <Predicate> InsnPredicates = [HasMT];
|
||||
}
|
||||
|
||||
// Class used for separating microMIPSr6 and microMIPS (r3) instruction.
|
||||
// It can be used only on instructions that doesn't inherit PredicateControl.
|
||||
class ISA_MICROMIPS_NOT_32R6_64R6 : PredicateControl {
|
||||
@ -2919,6 +2924,10 @@ include "MipsMSAInstrInfo.td"
|
||||
include "MipsEVAInstrFormats.td"
|
||||
include "MipsEVAInstrInfo.td"
|
||||
|
||||
// MT
|
||||
include "MipsMTInstrFormats.td"
|
||||
include "MipsMTInstrInfo.td"
|
||||
|
||||
// Micromips
|
||||
include "MicroMipsInstrFormats.td"
|
||||
include "MicroMipsInstrInfo.td"
|
||||
|
@ -84,6 +84,7 @@ def II_DIVU : InstrItinClass;
|
||||
def II_DIV_D : InstrItinClass;
|
||||
def II_DIV_S : InstrItinClass;
|
||||
def II_DMFC0 : InstrItinClass;
|
||||
def II_DMT : InstrItinClass;
|
||||
def II_DMTC0 : InstrItinClass;
|
||||
def II_DMFC1 : InstrItinClass;
|
||||
def II_DMTC1 : InstrItinClass;
|
||||
@ -113,6 +114,7 @@ def II_DSBH : InstrItinClass;
|
||||
def II_DSHD : InstrItinClass;
|
||||
def II_DSUBU : InstrItinClass;
|
||||
def II_DSUB : InstrItinClass;
|
||||
def II_EMT : InstrItinClass;
|
||||
def II_EXT : InstrItinClass; // Any EXT instruction
|
||||
def II_FLOOR : InstrItinClass;
|
||||
def II_INS : InstrItinClass; // Any INS instruction
|
||||
@ -386,6 +388,7 @@ def MipsGenericItineraries : ProcessorItineraries<[ALU, IMULDIV], [], [
|
||||
InstrItinData<II_DCLZ , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_DMOD , [InstrStage<17, [IMULDIV]>]>,
|
||||
InstrItinData<II_DMODU , [InstrStage<17, [IMULDIV]>]>,
|
||||
InstrItinData<II_DMT , [InstrStage<2, [ALU]>]>,
|
||||
InstrItinData<II_DSLL , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_DSLL32 , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_DSRL , [InstrStage<1, [ALU]>]>,
|
||||
@ -404,6 +407,7 @@ def MipsGenericItineraries : ProcessorItineraries<[ALU, IMULDIV], [], [
|
||||
InstrItinData<II_DSHD , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_DCLO , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_DCLZ , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_EMT , [InstrStage<2, [ALU]>]>,
|
||||
InstrItinData<II_EXT , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_INS , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_LUI , [InstrStage<1, [ALU]>]>,
|
||||
|
@ -261,6 +261,12 @@ def : ItinRW<[GenericWriteLoad], [II_LBE, II_LBUE, II_LHE, II_LHUE, II_LWE,
|
||||
|
||||
def : ItinRW<[GenericWriteLoad], [II_LWLE, II_LWRE]>;
|
||||
|
||||
// MIPS MT instructions
|
||||
// ====================
|
||||
|
||||
def : ItinRW<[GenericWriteMove], [II_DMT, II_EMT]>;
|
||||
|
||||
|
||||
// MIPS32R6 and MIPS16e
|
||||
// ====================
|
||||
|
||||
|
@ -19,7 +19,7 @@ def MipsP5600Model : SchedMachineModel {
|
||||
HasMips64, HasMips64r2, HasCnMips,
|
||||
InMicroMips, InMips16Mode,
|
||||
HasMicroMips32r6, HasMicroMips64r6,
|
||||
HasDSP, HasDSPR2];
|
||||
HasDSP, HasDSPR2, HasMT];
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user