xref: /freebsd/contrib/llvm-project/llvm/lib/Target/Mips/Mips.td (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
10b57cec5SDimitry Andric//===-- Mips.td - Describe the Mips Target Machine ---------*- tablegen -*-===//
20b57cec5SDimitry Andric//
30b57cec5SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric// See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric//
70b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric// This is the top level entry point for the Mips target.
90b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
100b57cec5SDimitry Andric
110b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
120b57cec5SDimitry Andric// Target-independent interfaces
130b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
140b57cec5SDimitry Andric
150b57cec5SDimitry Andricinclude "llvm/Target/Target.td"
160b57cec5SDimitry Andric
170b57cec5SDimitry Andric// The overall idea of the PredicateControl class is to chop the Predicates list
180b57cec5SDimitry Andric// into subsets that are usually overridden independently. This allows
190b57cec5SDimitry Andric// subclasses to partially override the predicates of their superclasses without
200b57cec5SDimitry Andric// having to re-add all the existing predicates.
210b57cec5SDimitry Andricclass PredicateControl {
220b57cec5SDimitry Andric  // Predicates for the encoding scheme in use such as HasStdEnc
230b57cec5SDimitry Andric  list<Predicate> EncodingPredicates = [];
240b57cec5SDimitry Andric  // Predicates for the GPR size such as IsGP64bit
250b57cec5SDimitry Andric  list<Predicate> GPRPredicates = [];
260b57cec5SDimitry Andric  // Predicates for the PTR size such as IsPTR64bit
270b57cec5SDimitry Andric  list<Predicate> PTRPredicates = [];
28f10421e9SDimitry Andric  // Predicates for a symbol's size such as hasSym32.
29f10421e9SDimitry Andric  list<Predicate> SYMPredicates = [];
300b57cec5SDimitry Andric  // Predicates for the FGR size and layout such as IsFP64bit
310b57cec5SDimitry Andric  list<Predicate> FGRPredicates = [];
320b57cec5SDimitry Andric  // Predicates for the instruction group membership such as ISA's.
330b57cec5SDimitry Andric  list<Predicate> InsnPredicates = [];
340b57cec5SDimitry Andric  // Predicate for the ASE that an instruction belongs to.
350b57cec5SDimitry Andric  list<Predicate> ASEPredicate = [];
360b57cec5SDimitry Andric  // Predicate for marking the instruction as usable in hard-float mode only.
370b57cec5SDimitry Andric  list<Predicate> HardFloatPredicate = [];
380b57cec5SDimitry Andric  // Predicates for anything else
390b57cec5SDimitry Andric  list<Predicate> AdditionalPredicates = [];
400b57cec5SDimitry Andric  list<Predicate> Predicates = !listconcat(EncodingPredicates,
410b57cec5SDimitry Andric                                           GPRPredicates,
420b57cec5SDimitry Andric                                           PTRPredicates,
43f10421e9SDimitry Andric                                           SYMPredicates,
440b57cec5SDimitry Andric                                           FGRPredicates,
450b57cec5SDimitry Andric                                           InsnPredicates,
460b57cec5SDimitry Andric                                           HardFloatPredicate,
470b57cec5SDimitry Andric                                           ASEPredicate,
480b57cec5SDimitry Andric                                           AdditionalPredicates);
490b57cec5SDimitry Andric}
500b57cec5SDimitry Andric
510b57cec5SDimitry Andric// Like Requires<> but for the AdditionalPredicates list
520b57cec5SDimitry Andricclass AdditionalRequires<list<Predicate> preds> {
530b57cec5SDimitry Andric  list<Predicate> AdditionalPredicates = preds;
540b57cec5SDimitry Andric}
550b57cec5SDimitry Andric
560b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
570b57cec5SDimitry Andric// Mips Subtarget features                                                    //
580b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
590b57cec5SDimitry Andric
600b57cec5SDimitry Andricdef FeatureNoABICalls  : SubtargetFeature<"noabicalls", "NoABICalls", "true",
610b57cec5SDimitry Andric                                "Disable SVR4-style position-independent code">;
620b57cec5SDimitry Andricdef FeaturePTR64Bit    : SubtargetFeature<"ptr64", "IsPTR64bit", "true",
630b57cec5SDimitry Andric                                "Pointers are 64-bit wide">;
640b57cec5SDimitry Andricdef FeatureGP64Bit     : SubtargetFeature<"gp64", "IsGP64bit", "true",
650b57cec5SDimitry Andric                                "General Purpose Registers are 64-bit wide">;
660b57cec5SDimitry Andricdef FeatureFP64Bit     : SubtargetFeature<"fp64", "IsFP64bit", "true",
670b57cec5SDimitry Andric                                "Support 64-bit FP registers">;
680b57cec5SDimitry Andricdef FeatureFPXX        : SubtargetFeature<"fpxx", "IsFPXX", "true",
690b57cec5SDimitry Andric                                "Support for FPXX">;
700b57cec5SDimitry Andricdef FeatureNaN2008     : SubtargetFeature<"nan2008", "IsNaN2008bit", "true",
710b57cec5SDimitry Andric                                "IEEE 754-2008 NaN encoding">;
720b57cec5SDimitry Andricdef FeatureAbs2008     : SubtargetFeature<"abs2008", "Abs2008", "true",
730b57cec5SDimitry Andric                                          "Disable IEEE 754-2008 abs.fmt mode">;
740b57cec5SDimitry Andricdef FeatureSingleFloat : SubtargetFeature<"single-float", "IsSingleFloat",
750b57cec5SDimitry Andric                                "true", "Only supports single precision float">;
760b57cec5SDimitry Andricdef FeatureSoftFloat   : SubtargetFeature<"soft-float", "IsSoftFloat", "true",
770b57cec5SDimitry Andric                                "Does not support floating point instructions">;
780b57cec5SDimitry Andricdef FeatureNoOddSPReg  : SubtargetFeature<"nooddspreg", "UseOddSPReg", "false",
790b57cec5SDimitry Andric                              "Disable odd numbered single-precision "
800b57cec5SDimitry Andric                              "registers">;
810b57cec5SDimitry Andricdef FeatureVFPU        : SubtargetFeature<"vfpu", "HasVFPU",
820b57cec5SDimitry Andric                                "true", "Enable vector FPU instructions">;
830b57cec5SDimitry Andricdef FeatureMips1       : SubtargetFeature<"mips1", "MipsArchVersion", "Mips1",
840b57cec5SDimitry Andric                                "Mips I ISA Support [highly experimental]">;
850b57cec5SDimitry Andricdef FeatureMips2       : SubtargetFeature<"mips2", "MipsArchVersion", "Mips2",
860b57cec5SDimitry Andric                                "Mips II ISA Support [highly experimental]",
870b57cec5SDimitry Andric                                [FeatureMips1]>;
880b57cec5SDimitry Andricdef FeatureMips3_32    : SubtargetFeature<"mips3_32", "HasMips3_32", "true",
890b57cec5SDimitry Andric                                "Subset of MIPS-III that is also in MIPS32 "
900b57cec5SDimitry Andric                                "[highly experimental]">;
910b57cec5SDimitry Andricdef FeatureMips3_32r2  : SubtargetFeature<"mips3_32r2", "HasMips3_32r2", "true",
920b57cec5SDimitry Andric                                "Subset of MIPS-III that is also in MIPS32r2 "
930b57cec5SDimitry Andric                                "[highly experimental]">;
940b57cec5SDimitry Andricdef FeatureMips3       : SubtargetFeature<"mips3", "MipsArchVersion", "Mips3",
950b57cec5SDimitry Andric                                "MIPS III ISA Support [highly experimental]",
960b57cec5SDimitry Andric                                [FeatureMips2, FeatureMips3_32,
970b57cec5SDimitry Andric                                 FeatureMips3_32r2, FeatureGP64Bit,
980b57cec5SDimitry Andric                                 FeatureFP64Bit]>;
990b57cec5SDimitry Andricdef FeatureMips4_32    : SubtargetFeature<"mips4_32", "HasMips4_32", "true",
1000b57cec5SDimitry Andric                                "Subset of MIPS-IV that is also in MIPS32 "
1010b57cec5SDimitry Andric                                "[highly experimental]">;
1020b57cec5SDimitry Andricdef FeatureMips4_32r2  : SubtargetFeature<"mips4_32r2", "HasMips4_32r2", "true",
1030b57cec5SDimitry Andric                                "Subset of MIPS-IV that is also in MIPS32r2 "
1040b57cec5SDimitry Andric                                "[highly experimental]">;
1050b57cec5SDimitry Andricdef FeatureMips4       : SubtargetFeature<"mips4", "MipsArchVersion",
1060b57cec5SDimitry Andric                                "Mips4", "MIPS IV ISA Support",
1070b57cec5SDimitry Andric                                [FeatureMips3, FeatureMips4_32,
1080b57cec5SDimitry Andric                                 FeatureMips4_32r2]>;
1090b57cec5SDimitry Andricdef FeatureMips5_32r2  : SubtargetFeature<"mips5_32r2", "HasMips5_32r2", "true",
1100b57cec5SDimitry Andric                                "Subset of MIPS-V that is also in MIPS32r2 "
1110b57cec5SDimitry Andric                                "[highly experimental]">;
1120b57cec5SDimitry Andricdef FeatureMips5       : SubtargetFeature<"mips5", "MipsArchVersion", "Mips5",
1130b57cec5SDimitry Andric                                "MIPS V ISA Support [highly experimental]",
1140b57cec5SDimitry Andric                                [FeatureMips4, FeatureMips5_32r2]>;
1150b57cec5SDimitry Andricdef FeatureMips32      : SubtargetFeature<"mips32", "MipsArchVersion", "Mips32",
1160b57cec5SDimitry Andric                                "Mips32 ISA Support",
1170b57cec5SDimitry Andric                                [FeatureMips2, FeatureMips3_32,
1180b57cec5SDimitry Andric                                 FeatureMips4_32]>;
1190b57cec5SDimitry Andricdef FeatureMips32r2    : SubtargetFeature<"mips32r2", "MipsArchVersion",
1200b57cec5SDimitry Andric                                "Mips32r2", "Mips32r2 ISA Support",
1210b57cec5SDimitry Andric                                [FeatureMips3_32r2, FeatureMips4_32r2,
1220b57cec5SDimitry Andric                                 FeatureMips5_32r2, FeatureMips32]>;
1230b57cec5SDimitry Andricdef FeatureMips32r3    : SubtargetFeature<"mips32r3", "MipsArchVersion",
1240b57cec5SDimitry Andric                                "Mips32r3", "Mips32r3 ISA Support",
1250b57cec5SDimitry Andric                                [FeatureMips32r2]>;
1260b57cec5SDimitry Andricdef FeatureMips32r5    : SubtargetFeature<"mips32r5", "MipsArchVersion",
1270b57cec5SDimitry Andric                                "Mips32r5", "Mips32r5 ISA Support",
1280b57cec5SDimitry Andric                                [FeatureMips32r3]>;
1290b57cec5SDimitry Andricdef FeatureMips32r6    : SubtargetFeature<"mips32r6", "MipsArchVersion",
1300b57cec5SDimitry Andric                                "Mips32r6",
1310b57cec5SDimitry Andric                                "Mips32r6 ISA Support [experimental]",
1320b57cec5SDimitry Andric                                [FeatureMips32r5, FeatureFP64Bit,
1330b57cec5SDimitry Andric                                 FeatureNaN2008, FeatureAbs2008]>;
1340b57cec5SDimitry Andricdef FeatureMips64      : SubtargetFeature<"mips64", "MipsArchVersion",
1350b57cec5SDimitry Andric                                "Mips64", "Mips64 ISA Support",
1360b57cec5SDimitry Andric                                [FeatureMips5, FeatureMips32]>;
1370b57cec5SDimitry Andricdef FeatureMips64r2    : SubtargetFeature<"mips64r2", "MipsArchVersion",
1380b57cec5SDimitry Andric                                "Mips64r2", "Mips64r2 ISA Support",
1390b57cec5SDimitry Andric                                [FeatureMips64, FeatureMips32r2]>;
1400b57cec5SDimitry Andricdef FeatureMips64r3    : SubtargetFeature<"mips64r3", "MipsArchVersion",
1410b57cec5SDimitry Andric                                "Mips64r3", "Mips64r3 ISA Support",
1420b57cec5SDimitry Andric                                [FeatureMips64r2, FeatureMips32r3]>;
1430b57cec5SDimitry Andricdef FeatureMips64r5    : SubtargetFeature<"mips64r5", "MipsArchVersion",
1440b57cec5SDimitry Andric                                "Mips64r5", "Mips64r5 ISA Support",
1450b57cec5SDimitry Andric                                [FeatureMips64r3, FeatureMips32r5]>;
1460b57cec5SDimitry Andricdef FeatureMips64r6    : SubtargetFeature<"mips64r6", "MipsArchVersion",
1470b57cec5SDimitry Andric                                "Mips64r6",
1480b57cec5SDimitry Andric                                "Mips64r6 ISA Support [experimental]",
1490b57cec5SDimitry Andric                                [FeatureMips32r6, FeatureMips64r5,
1500b57cec5SDimitry Andric                                 FeatureNaN2008, FeatureAbs2008]>;
1510b57cec5SDimitry Andricdef FeatureSym32       : SubtargetFeature<"sym32", "HasSym32", "true",
1520b57cec5SDimitry Andric                                          "Symbols are 32 bit on Mips64">;
1530b57cec5SDimitry Andric
1540b57cec5SDimitry Andricdef FeatureMips16  : SubtargetFeature<"mips16", "InMips16Mode", "true",
1550b57cec5SDimitry Andric                                      "Mips16 mode">;
1560b57cec5SDimitry Andric
1570b57cec5SDimitry Andricdef FeatureDSP : SubtargetFeature<"dsp", "HasDSP", "true", "Mips DSP ASE">;
1580b57cec5SDimitry Andricdef FeatureDSPR2 : SubtargetFeature<"dspr2", "HasDSPR2", "true",
1590b57cec5SDimitry Andric                                    "Mips DSP-R2 ASE", [FeatureDSP]>;
1600b57cec5SDimitry Andricdef FeatureDSPR3
1610b57cec5SDimitry Andric    : SubtargetFeature<"dspr3", "HasDSPR3", "true", "Mips DSP-R3 ASE",
1620b57cec5SDimitry Andric                       [ FeatureDSP, FeatureDSPR2 ]>;
1630b57cec5SDimitry Andric
1645ffd83dbSDimitry Andricdef FeatureMips3D : SubtargetFeature<"mips3d", "Has3D", "true", "Mips 3D ASE">;
1655ffd83dbSDimitry Andric
1660b57cec5SDimitry Andricdef FeatureMSA : SubtargetFeature<"msa", "HasMSA", "true", "Mips MSA ASE">;
1670b57cec5SDimitry Andric
1680b57cec5SDimitry Andricdef FeatureEVA : SubtargetFeature<"eva", "HasEVA", "true", "Mips EVA ASE">;
1690b57cec5SDimitry Andric
1700b57cec5SDimitry Andricdef FeatureCRC : SubtargetFeature<"crc", "HasCRC", "true", "Mips R6 CRC ASE">;
1710b57cec5SDimitry Andric
1720b57cec5SDimitry Andricdef FeatureVirt : SubtargetFeature<"virt", "HasVirt", "true",
1730b57cec5SDimitry Andric                                   "Mips Virtualization ASE">;
1740b57cec5SDimitry Andric
1750b57cec5SDimitry Andricdef FeatureGINV : SubtargetFeature<"ginv", "HasGINV", "true",
1760b57cec5SDimitry Andric                                   "Mips Global Invalidate ASE">;
1770b57cec5SDimitry Andric
1780b57cec5SDimitry Andricdef FeatureMicroMips  : SubtargetFeature<"micromips", "InMicroMipsMode", "true",
1790b57cec5SDimitry Andric                                         "microMips mode">;
1800b57cec5SDimitry Andric
1810b57cec5SDimitry Andricdef FeatureCnMips : SubtargetFeature<"cnmips", "HasCnMips",
1820b57cec5SDimitry Andric                                     "true", "Octeon cnMIPS Support",
1830b57cec5SDimitry Andric                                     [FeatureMips64r2]>;
1840b57cec5SDimitry Andric
1850b57cec5SDimitry Andricdef FeatureCnMipsP : SubtargetFeature<"cnmipsp", "HasCnMipsP",
1860b57cec5SDimitry Andric                                      "true", "Octeon+ cnMIPS Support",
1870b57cec5SDimitry Andric                                      [FeatureCnMips]>;
1880b57cec5SDimitry Andric
1890b57cec5SDimitry Andricdef FeatureUseTCCInDIV : SubtargetFeature<
1900b57cec5SDimitry Andric                               "use-tcc-in-div",
1910b57cec5SDimitry Andric                               "UseTCCInDIV", "false",
1920b57cec5SDimitry Andric                               "Force the assembler to use trapping">;
1930b57cec5SDimitry Andric
194e8d8bef9SDimitry Andricdef FeatureNoMadd4
195480093f4SDimitry Andric    : SubtargetFeature<"nomadd4", "DisableMadd4", "true",
1960b57cec5SDimitry Andric                       "Disable 4-operand madd.fmt and related instructions">;
1970b57cec5SDimitry Andric
1980b57cec5SDimitry Andricdef FeatureMT : SubtargetFeature<"mt", "HasMT", "true", "Mips MT ASE">;
1990b57cec5SDimitry Andric
2000b57cec5SDimitry Andricdef FeatureLongCalls : SubtargetFeature<"long-calls", "UseLongCalls", "true",
2010b57cec5SDimitry Andric                                        "Disable use of the jal instruction">;
2020b57cec5SDimitry Andric
2038bcb0991SDimitry Andricdef FeatureXGOT
2048bcb0991SDimitry Andric    : SubtargetFeature<"xgot", "UseXGOT", "true", "Assume 32-bit GOT">;
2058bcb0991SDimitry Andric
2060b57cec5SDimitry Andricdef FeatureUseIndirectJumpsHazard : SubtargetFeature<"use-indirect-jump-hazard",
2070b57cec5SDimitry Andric                                                    "UseIndirectJumpsHazard",
2080b57cec5SDimitry Andric                                                    "true", "Use indirect jump"
2090b57cec5SDimitry Andric                        " guards to prevent certain speculation based attacks">;
2105ffd83dbSDimitry Andric
211*0fca6ea1SDimitry Andricdef FeatureStrictAlign
212*0fca6ea1SDimitry Andric    : SubtargetFeature<"strict-align", "StrictAlign", "true",
213*0fca6ea1SDimitry Andric                       "Disable unaligned load store for r6">;
214*0fca6ea1SDimitry Andric
2155ffd83dbSDimitry Andric//===----------------------------------------------------------------------===//
2165ffd83dbSDimitry Andric// Register File, Calling Conv, Instruction Descriptions
2175ffd83dbSDimitry Andric//===----------------------------------------------------------------------===//
2185ffd83dbSDimitry Andric
2195ffd83dbSDimitry Andricinclude "MipsRegisterInfo.td"
2205ffd83dbSDimitry Andricinclude "MipsSchedule.td"
2215ffd83dbSDimitry Andricinclude "MipsInstrInfo.td"
2225ffd83dbSDimitry Andricinclude "MipsCallingConv.td"
2235ffd83dbSDimitry Andricinclude "MipsRegisterBanks.td"
22481ad6265SDimitry Andricinclude "MipsCombine.td"
2255ffd83dbSDimitry Andric
2265ffd83dbSDimitry Andric// Avoid forward declaration issues.
2275ffd83dbSDimitry Andricinclude "MipsScheduleP5600.td"
2285ffd83dbSDimitry Andricinclude "MipsScheduleGeneric.td"
2295ffd83dbSDimitry Andric
230bdd1243dSDimitry Andricdef MipsInstrInfo : InstrInfo {
231bdd1243dSDimitry Andric}
2325ffd83dbSDimitry Andric
2330b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
2340b57cec5SDimitry Andric// Mips processors supported.
2350b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
2360b57cec5SDimitry Andric
2370b57cec5SDimitry Andricdef ImplP5600 : SubtargetFeature<"p5600", "ProcImpl",
2380b57cec5SDimitry Andric                                 "MipsSubtarget::CPU::P5600",
2390b57cec5SDimitry Andric                                 "The P5600 Processor", [FeatureMips32r5]>;
2400b57cec5SDimitry Andric
2410b57cec5SDimitry Andricclass Proc<string Name, list<SubtargetFeature> Features>
2420b57cec5SDimitry Andric : ProcessorModel<Name, MipsGenericModel, Features>;
2430b57cec5SDimitry Andric
244480093f4SDimitry Andricdef : Proc<"generic", [FeatureMips32]>;
2450b57cec5SDimitry Andricdef : Proc<"mips1", [FeatureMips1]>;
2460b57cec5SDimitry Andricdef : Proc<"mips2", [FeatureMips2]>;
2470b57cec5SDimitry Andricdef : Proc<"mips32", [FeatureMips32]>;
2480b57cec5SDimitry Andricdef : Proc<"mips32r2", [FeatureMips32r2]>;
2490b57cec5SDimitry Andricdef : Proc<"mips32r3", [FeatureMips32r3]>;
2500b57cec5SDimitry Andricdef : Proc<"mips32r5", [FeatureMips32r5]>;
2510b57cec5SDimitry Andricdef : Proc<"mips32r6", [FeatureMips32r6]>;
2520b57cec5SDimitry Andric
2530b57cec5SDimitry Andricdef : Proc<"mips3", [FeatureMips3]>;
2540b57cec5SDimitry Andricdef : Proc<"mips4", [FeatureMips4]>;
2550b57cec5SDimitry Andricdef : Proc<"mips5", [FeatureMips5]>;
2560b57cec5SDimitry Andricdef : Proc<"mips64", [FeatureMips64]>;
2570b57cec5SDimitry Andricdef : Proc<"mips64r2", [FeatureMips64r2]>;
2580b57cec5SDimitry Andricdef : Proc<"mips64r3", [FeatureMips64r3]>;
2590b57cec5SDimitry Andricdef : Proc<"mips64r5", [FeatureMips64r5]>;
2600b57cec5SDimitry Andricdef : Proc<"mips64r6", [FeatureMips64r6]>;
2610b57cec5SDimitry Andricdef : Proc<"octeon", [FeatureMips64r2, FeatureCnMips]>;
2620b57cec5SDimitry Andricdef : Proc<"octeon+", [FeatureMips64r2, FeatureCnMips, FeatureCnMipsP]>;
2630b57cec5SDimitry Andricdef : ProcessorModel<"p5600", MipsP5600Model, [ImplP5600]>;
2640b57cec5SDimitry Andric
2650b57cec5SDimitry Andricdef MipsAsmParser : AsmParser {
2660b57cec5SDimitry Andric  let ShouldEmitMatchRegisterName = 0;
2670b57cec5SDimitry Andric}
2680b57cec5SDimitry Andric
2690b57cec5SDimitry Andricdef MipsAsmParserVariant : AsmParserVariant {
2700b57cec5SDimitry Andric  int Variant = 0;
2710b57cec5SDimitry Andric
2720b57cec5SDimitry Andric  // Recognize hard coded registers.
2730b57cec5SDimitry Andric  string RegisterPrefix = "$";
2740b57cec5SDimitry Andric}
2750b57cec5SDimitry Andric
27681ad6265SDimitry Andricdef MipsAsmWriter : AsmWriter {
27781ad6265SDimitry Andric  int PassSubtarget = 1;
27881ad6265SDimitry Andric}
27981ad6265SDimitry Andric
2800b57cec5SDimitry Andricdef Mips : Target {
2810b57cec5SDimitry Andric  let InstructionSet = MipsInstrInfo;
28281ad6265SDimitry Andric  let AssemblyWriters = [MipsAsmWriter];
2830b57cec5SDimitry Andric  let AssemblyParsers = [MipsAsmParser];
2840b57cec5SDimitry Andric  let AssemblyParserVariants = [MipsAsmParserVariant];
2850b57cec5SDimitry Andric  let AllowRegisterRenaming = 1;
2860b57cec5SDimitry Andric}
2878bcb0991SDimitry Andric
2888bcb0991SDimitry Andric//===----------------------------------------------------------------------===//
2898bcb0991SDimitry Andric// Pfm Counters
2908bcb0991SDimitry Andric//===----------------------------------------------------------------------===//
2918bcb0991SDimitry Andric
2928bcb0991SDimitry Andricinclude "MipsPfmCounters.td"
293