Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/Target/Mips/MipsInstrInfo.td
Show First 20 Lines • Show All 150 Lines • ▼ Show 20 Lines | def MipsSDL : SDNode<"MipsISD::SDL", SDTStore, | ||||
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>; | [SDNPHasChain, SDNPMayStore, SDNPMemOperand]>; | ||||
def MipsSDR : SDNode<"MipsISD::SDR", SDTStore, | def MipsSDR : SDNode<"MipsISD::SDR", SDTStore, | ||||
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>; | [SDNPHasChain, SDNPMayStore, SDNPMemOperand]>; | ||||
//===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||
// Mips Instruction Predicate Definitions. | // Mips Instruction Predicate Definitions. | ||||
//===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||
def HasMips2 : Predicate<"Subtarget->hasMips2()">, | def HasMips2 : Predicate<"Subtarget->hasMips2()">, | ||||
AssemblerPredicate<"FeatureMips2">; | AssemblerPredicate<(all_of FeatureMips2)>; | ||||
def HasMips3_32 : Predicate<"Subtarget->hasMips3_32()">, | def HasMips3_32 : Predicate<"Subtarget->hasMips3_32()">, | ||||
AssemblerPredicate<"FeatureMips3_32">; | AssemblerPredicate<(all_of FeatureMips3_32)>; | ||||
def HasMips3_32r2 : Predicate<"Subtarget->hasMips3_32r2()">, | def HasMips3_32r2 : Predicate<"Subtarget->hasMips3_32r2()">, | ||||
AssemblerPredicate<"FeatureMips3_32r2">; | AssemblerPredicate<(all_of FeatureMips3_32r2)>; | ||||
def HasMips3 : Predicate<"Subtarget->hasMips3()">, | def HasMips3 : Predicate<"Subtarget->hasMips3()">, | ||||
AssemblerPredicate<"FeatureMips3">; | AssemblerPredicate<(all_of FeatureMips3)>; | ||||
def NotMips3 : Predicate<"!Subtarget->hasMips3()">, | def NotMips3 : Predicate<"!Subtarget->hasMips3()">, | ||||
AssemblerPredicate<"!FeatureMips3">; | AssemblerPredicate<(all_of (not FeatureMips3))>; | ||||
def HasMips4_32 : Predicate<"Subtarget->hasMips4_32()">, | def HasMips4_32 : Predicate<"Subtarget->hasMips4_32()">, | ||||
AssemblerPredicate<"FeatureMips4_32">; | AssemblerPredicate<(all_of FeatureMips4_32)>; | ||||
def NotMips4_32 : Predicate<"!Subtarget->hasMips4_32()">, | def NotMips4_32 : Predicate<"!Subtarget->hasMips4_32()">, | ||||
AssemblerPredicate<"!FeatureMips4_32">; | AssemblerPredicate<(all_of (not FeatureMips4_32))>; | ||||
def HasMips4_32r2 : Predicate<"Subtarget->hasMips4_32r2()">, | def HasMips4_32r2 : Predicate<"Subtarget->hasMips4_32r2()">, | ||||
AssemblerPredicate<"FeatureMips4_32r2">; | AssemblerPredicate<(all_of FeatureMips4_32r2)>; | ||||
def HasMips5_32r2 : Predicate<"Subtarget->hasMips5_32r2()">, | def HasMips5_32r2 : Predicate<"Subtarget->hasMips5_32r2()">, | ||||
AssemblerPredicate<"FeatureMips5_32r2">; | AssemblerPredicate<(all_of FeatureMips5_32r2)>; | ||||
def HasMips32 : Predicate<"Subtarget->hasMips32()">, | def HasMips32 : Predicate<"Subtarget->hasMips32()">, | ||||
AssemblerPredicate<"FeatureMips32">; | AssemblerPredicate<(all_of FeatureMips32)>; | ||||
def HasMips32r2 : Predicate<"Subtarget->hasMips32r2()">, | def HasMips32r2 : Predicate<"Subtarget->hasMips32r2()">, | ||||
AssemblerPredicate<"FeatureMips32r2">; | AssemblerPredicate<(all_of FeatureMips32r2)>; | ||||
def HasMips32r5 : Predicate<"Subtarget->hasMips32r5()">, | def HasMips32r5 : Predicate<"Subtarget->hasMips32r5()">, | ||||
AssemblerPredicate<"FeatureMips32r5">; | AssemblerPredicate<(all_of FeatureMips32r5)>; | ||||
def HasMips32r6 : Predicate<"Subtarget->hasMips32r6()">, | def HasMips32r6 : Predicate<"Subtarget->hasMips32r6()">, | ||||
AssemblerPredicate<"FeatureMips32r6">; | AssemblerPredicate<(all_of FeatureMips32r6)>; | ||||
def NotMips32r6 : Predicate<"!Subtarget->hasMips32r6()">, | def NotMips32r6 : Predicate<"!Subtarget->hasMips32r6()">, | ||||
AssemblerPredicate<"!FeatureMips32r6">; | AssemblerPredicate<(all_of (not FeatureMips32r6))>; | ||||
def IsGP64bit : Predicate<"Subtarget->isGP64bit()">, | def IsGP64bit : Predicate<"Subtarget->isGP64bit()">, | ||||
AssemblerPredicate<"FeatureGP64Bit">; | AssemblerPredicate<(all_of FeatureGP64Bit)>; | ||||
def IsGP32bit : Predicate<"!Subtarget->isGP64bit()">, | def IsGP32bit : Predicate<"!Subtarget->isGP64bit()">, | ||||
AssemblerPredicate<"!FeatureGP64Bit">; | AssemblerPredicate<(all_of (not FeatureGP64Bit))>; | ||||
def IsPTR64bit : Predicate<"Subtarget->isABI_N64()">, | def IsPTR64bit : Predicate<"Subtarget->isABI_N64()">, | ||||
AssemblerPredicate<"FeaturePTR64Bit">; | AssemblerPredicate<(all_of FeaturePTR64Bit)>; | ||||
def IsPTR32bit : Predicate<"!Subtarget->isABI_N64()">, | def IsPTR32bit : Predicate<"!Subtarget->isABI_N64()">, | ||||
AssemblerPredicate<"!FeaturePTR64Bit">; | AssemblerPredicate<(all_of (not FeaturePTR64Bit))>; | ||||
def HasMips64 : Predicate<"Subtarget->hasMips64()">, | def HasMips64 : Predicate<"Subtarget->hasMips64()">, | ||||
AssemblerPredicate<"FeatureMips64">; | AssemblerPredicate<(all_of FeatureMips64)>; | ||||
def NotMips64 : Predicate<"!Subtarget->hasMips64()">, | def NotMips64 : Predicate<"!Subtarget->hasMips64()">, | ||||
AssemblerPredicate<"!FeatureMips64">; | AssemblerPredicate<(all_of (not FeatureMips64))>; | ||||
def HasMips64r2 : Predicate<"Subtarget->hasMips64r2()">, | def HasMips64r2 : Predicate<"Subtarget->hasMips64r2()">, | ||||
AssemblerPredicate<"FeatureMips64r2">; | AssemblerPredicate<(all_of FeatureMips64r2)>; | ||||
def HasMips64r5 : Predicate<"Subtarget->hasMips64r5()">, | def HasMips64r5 : Predicate<"Subtarget->hasMips64r5()">, | ||||
AssemblerPredicate<"FeatureMips64r5">; | AssemblerPredicate<(all_of FeatureMips64r5)>; | ||||
def HasMips64r6 : Predicate<"Subtarget->hasMips64r6()">, | def HasMips64r6 : Predicate<"Subtarget->hasMips64r6()">, | ||||
AssemblerPredicate<"FeatureMips64r6">; | AssemblerPredicate<(all_of FeatureMips64r6)>; | ||||
def NotMips64r6 : Predicate<"!Subtarget->hasMips64r6()">, | def NotMips64r6 : Predicate<"!Subtarget->hasMips64r6()">, | ||||
AssemblerPredicate<"!FeatureMips64r6">; | AssemblerPredicate<(all_of (not FeatureMips64r6))>; | ||||
def InMips16Mode : Predicate<"Subtarget->inMips16Mode()">, | def InMips16Mode : Predicate<"Subtarget->inMips16Mode()">, | ||||
AssemblerPredicate<"FeatureMips16">; | AssemblerPredicate<(all_of FeatureMips16)>; | ||||
def NotInMips16Mode : Predicate<"!Subtarget->inMips16Mode()">, | def NotInMips16Mode : Predicate<"!Subtarget->inMips16Mode()">, | ||||
AssemblerPredicate<"!FeatureMips16">; | AssemblerPredicate<(all_of (not FeatureMips16))>; | ||||
def HasCnMips : Predicate<"Subtarget->hasCnMips()">, | def HasCnMips : Predicate<"Subtarget->hasCnMips()">, | ||||
AssemblerPredicate<"FeatureCnMips">; | AssemblerPredicate<(all_of FeatureCnMips)>; | ||||
def NotCnMips : Predicate<"!Subtarget->hasCnMips()">, | def NotCnMips : Predicate<"!Subtarget->hasCnMips()">, | ||||
AssemblerPredicate<"!FeatureCnMips">; | AssemblerPredicate<(all_of (not FeatureCnMips))>; | ||||
def HasCnMipsP : Predicate<"Subtarget->hasCnMipsP()">, | def HasCnMipsP : Predicate<"Subtarget->hasCnMipsP()">, | ||||
AssemblerPredicate<"FeatureCnMipsP">; | AssemblerPredicate<(all_of FeatureCnMipsP)>; | ||||
def NotCnMipsP : Predicate<"!Subtarget->hasCnMipsP()">, | def NotCnMipsP : Predicate<"!Subtarget->hasCnMipsP()">, | ||||
AssemblerPredicate<"!FeatureCnMipsP">; | AssemblerPredicate<(all_of (not FeatureCnMipsP))>; | ||||
def IsSym32 : Predicate<"Subtarget->hasSym32()">, | def IsSym32 : Predicate<"Subtarget->hasSym32()">, | ||||
AssemblerPredicate<"FeatureSym32">; | AssemblerPredicate<(all_of FeatureSym32)>; | ||||
def IsSym64 : Predicate<"!Subtarget->hasSym32()">, | def IsSym64 : Predicate<"!Subtarget->hasSym32()">, | ||||
AssemblerPredicate<"!FeatureSym32">; | AssemblerPredicate<(all_of (not FeatureSym32))>; | ||||
def IsN64 : Predicate<"Subtarget->isABI_N64()">; | def IsN64 : Predicate<"Subtarget->isABI_N64()">; | ||||
def IsNotN64 : Predicate<"!Subtarget->isABI_N64()">; | def IsNotN64 : Predicate<"!Subtarget->isABI_N64()">; | ||||
def RelocNotPIC : Predicate<"!TM.isPositionIndependent()">; | def RelocNotPIC : Predicate<"!TM.isPositionIndependent()">; | ||||
def RelocPIC : Predicate<"TM.isPositionIndependent()">; | def RelocPIC : Predicate<"TM.isPositionIndependent()">; | ||||
def NoNaNsFPMath : Predicate<"TM.Options.NoNaNsFPMath">; | def NoNaNsFPMath : Predicate<"TM.Options.NoNaNsFPMath">; | ||||
def UseAbs : Predicate<"Subtarget->inAbs2008Mode() ||" | def UseAbs : Predicate<"Subtarget->inAbs2008Mode() ||" | ||||
"TM.Options.NoNaNsFPMath">; | "TM.Options.NoNaNsFPMath">; | ||||
def HasStdEnc : Predicate<"Subtarget->hasStandardEncoding()">, | def HasStdEnc : Predicate<"Subtarget->hasStandardEncoding()">, | ||||
AssemblerPredicate<"!FeatureMips16">; | AssemblerPredicate<(all_of (not FeatureMips16))>; | ||||
def NotDSP : Predicate<"!Subtarget->hasDSP()">; | def NotDSP : Predicate<"!Subtarget->hasDSP()">; | ||||
def InMicroMips : Predicate<"Subtarget->inMicroMipsMode()">, | def InMicroMips : Predicate<"Subtarget->inMicroMipsMode()">, | ||||
AssemblerPredicate<"FeatureMicroMips">; | AssemblerPredicate<(all_of FeatureMicroMips)>; | ||||
def NotInMicroMips : Predicate<"!Subtarget->inMicroMipsMode()">, | def NotInMicroMips : Predicate<"!Subtarget->inMicroMipsMode()">, | ||||
AssemblerPredicate<"!FeatureMicroMips">; | AssemblerPredicate<(all_of (not FeatureMicroMips))>; | ||||
def IsLE : Predicate<"Subtarget->isLittle()">; | def IsLE : Predicate<"Subtarget->isLittle()">; | ||||
def IsBE : Predicate<"!Subtarget->isLittle()">; | def IsBE : Predicate<"!Subtarget->isLittle()">; | ||||
def IsNotNaCl : Predicate<"!Subtarget->isTargetNaCl()">; | def IsNotNaCl : Predicate<"!Subtarget->isTargetNaCl()">; | ||||
def UseTCCInDIV : AssemblerPredicate<"FeatureUseTCCInDIV">; | def UseTCCInDIV : AssemblerPredicate<(all_of FeatureUseTCCInDIV)>; | ||||
def HasEVA : Predicate<"Subtarget->hasEVA()">, | def HasEVA : Predicate<"Subtarget->hasEVA()">, | ||||
AssemblerPredicate<"FeatureEVA">; | AssemblerPredicate<(all_of FeatureEVA)>; | ||||
def HasMSA : Predicate<"Subtarget->hasMSA()">, | def HasMSA : Predicate<"Subtarget->hasMSA()">, | ||||
AssemblerPredicate<"FeatureMSA">; | AssemblerPredicate<(all_of FeatureMSA)>; | ||||
def HasMadd4 : Predicate<"!Subtarget->disableMadd4()">, | def HasMadd4 : Predicate<"!Subtarget->disableMadd4()">, | ||||
AssemblerPredicate<"!FeatureMadd4">; | AssemblerPredicate<(all_of (not FeatureMadd4))>; | ||||
def HasMT : Predicate<"Subtarget->hasMT()">, | def HasMT : Predicate<"Subtarget->hasMT()">, | ||||
AssemblerPredicate<"FeatureMT">; | AssemblerPredicate<(all_of FeatureMT)>; | ||||
def UseIndirectJumpsHazard : Predicate<"Subtarget->useIndirectJumpsHazard()">, | def UseIndirectJumpsHazard : Predicate<"Subtarget->useIndirectJumpsHazard()">, | ||||
AssemblerPredicate<"FeatureUseIndirectJumpsHazard">; | AssemblerPredicate<(all_of FeatureUseIndirectJumpsHazard)>; | ||||
def NoIndirectJumpGuards : Predicate<"!Subtarget->useIndirectJumpsHazard()">, | def NoIndirectJumpGuards : Predicate<"!Subtarget->useIndirectJumpsHazard()">, | ||||
AssemblerPredicate<"!FeatureUseIndirectJumpsHazard">; | AssemblerPredicate<(all_of (not FeatureUseIndirectJumpsHazard))>; | ||||
def HasCRC : Predicate<"Subtarget->hasCRC()">, | def HasCRC : Predicate<"Subtarget->hasCRC()">, | ||||
AssemblerPredicate<"FeatureCRC">; | AssemblerPredicate<(all_of FeatureCRC)>; | ||||
def HasVirt : Predicate<"Subtarget->hasVirt()">, | def HasVirt : Predicate<"Subtarget->hasVirt()">, | ||||
AssemblerPredicate<"FeatureVirt">; | AssemblerPredicate<(all_of FeatureVirt)>; | ||||
def HasGINV : Predicate<"Subtarget->hasGINV()">, | def HasGINV : Predicate<"Subtarget->hasGINV()">, | ||||
AssemblerPredicate<"FeatureGINV">; | AssemblerPredicate<(all_of FeatureGINV)>; | ||||
// TODO: Add support for FPOpFusion::Standard | // TODO: Add support for FPOpFusion::Standard | ||||
def AllowFPOpFusion : Predicate<"TM.Options.AllowFPOpFusion ==" | def AllowFPOpFusion : Predicate<"TM.Options.AllowFPOpFusion ==" | ||||
" FPOpFusion::Fast">; | " FPOpFusion::Fast">; | ||||
//===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||
// Mips GPR size adjectives. | // Mips GPR size adjectives. | ||||
// They are mutually exclusive. | // They are mutually exclusive. | ||||
//===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||
▲ Show 20 Lines • Show All 3,099 Lines • Show Last 20 Lines |