Index: llvm/trunk/lib/Target/Mips/MipsInstrInfo.h =================================================================== --- llvm/trunk/lib/Target/Mips/MipsInstrInfo.h +++ llvm/trunk/lib/Target/Mips/MipsInstrInfo.h @@ -152,6 +152,12 @@ bool verifyInstruction(const MachineInstr &MI, StringRef &ErrInfo) const override; + std::pair + decomposeMachineOperandsTargetFlags(unsigned TF) const override; + + ArrayRef> + getSerializableDirectMachineOperandTargetFlags() const override; + protected: bool isZeroImm(const MachineOperand &op) const; Index: llvm/trunk/lib/Target/Mips/MipsInstrInfo.cpp =================================================================== --- llvm/trunk/lib/Target/Mips/MipsInstrInfo.cpp +++ llvm/trunk/lib/Target/Mips/MipsInstrInfo.cpp @@ -618,3 +618,39 @@ return true; } +std::pair +MipsInstrInfo::decomposeMachineOperandsTargetFlags(unsigned TF) const { + return std::make_pair(TF, 0u); +} + +ArrayRef> +MipsInstrInfo::getSerializableDirectMachineOperandTargetFlags() const { + using namespace MipsII; + + static const std::pair Flags[] = { + {MO_GOT, "mips-got"}, + {MO_GOT_CALL, "mips-got-call"}, + {MO_GPREL, "mips-gprel"}, + {MO_ABS_HI, "mips-abs-hi"}, + {MO_ABS_LO, "mips-abs-lo"}, + {MO_TLSGD, "mips-tlsgd"}, + {MO_TLSLDM, "mips-tlsldm"}, + {MO_DTPREL_HI, "mips-dtprel-hi"}, + {MO_DTPREL_LO, "mips-dtprel-lo"}, + {MO_GOTTPREL, "mips-gottprel"}, + {MO_TPREL_HI, "mips-tprel-hi"}, + {MO_TPREL_LO, "mips-tprel-lo"}, + {MO_GPOFF_HI, "mips-gpoff-hi"}, + {MO_GPOFF_LO, "mips-gpoff-lo"}, + {MO_GOT_DISP, "mips-got-disp"}, + {MO_GOT_PAGE, "mips-got-page"}, + {MO_GOT_OFST, "mips-got-ofst"}, + {MO_HIGHER, "mips-higher"}, + {MO_HIGHEST, "mips-highest"}, + {MO_GOT_HI16, "mips-got-hi16"}, + {MO_GOT_LO16, "mips-got-lo16"}, + {MO_CALL_HI16, "mips-call-hi16"}, + {MO_CALL_LO16, "mips-call-lo16"} + }; + return makeArrayRef(Flags); +}