}
public:
- /// Returns true for the specified load / store if folding is possible.
- virtual bool canFoldMemoryOperand(const MachineInstr *MI,
- ArrayRef<unsigned> Ops) const;
-
/// unfoldMemoryOperand - Separate a single instruction which folded a load or
/// a store or a load and a store into two or more instruction. If this is
/// possible, returns true as well as the new instructions by reference.
return 5;
}
+ /// Return an array that contains the ids of the target indices (used for the
+ /// TargetIndex machine operand) and their names.
+ ///
+ /// MIR Serialization is able to serialize only the target indices that are
+ /// defined by this method.
+ virtual ArrayRef<std::pair<int, const char *>>
+ getSerializableTargetIndices() const {
+ return None;
+ }
+
private:
unsigned CallFrameSetupOpcode, CallFrameDestroyOpcode;
};
-/// \brief Provide DenseMapInfo for TargetInstrInfo::RegSubRegPair.
-template<>
-struct DenseMapInfo<TargetInstrInfo::RegSubRegPair> {
- typedef DenseMapInfo<unsigned> RegInfo;
-
- static inline TargetInstrInfo::RegSubRegPair getEmptyKey() {
- return TargetInstrInfo::RegSubRegPair(RegInfo::getEmptyKey(),
- RegInfo::getEmptyKey());
- }
- static inline TargetInstrInfo::RegSubRegPair getTombstoneKey() {
- return TargetInstrInfo::RegSubRegPair(RegInfo::getTombstoneKey(),
- RegInfo::getTombstoneKey());
- }
- /// \brief Reuse getHashValue implementation from
- /// std::pair<unsigned, unsigned>.
- static unsigned getHashValue(const TargetInstrInfo::RegSubRegPair &Val) {
- std::pair<unsigned, unsigned> PairVal =
- std::make_pair(Val.Reg, Val.SubReg);
- return DenseMapInfo<std::pair<unsigned, unsigned>>::getHashValue(PairVal);
- }
- static bool isEqual(const TargetInstrInfo::RegSubRegPair &LHS,
- const TargetInstrInfo::RegSubRegPair &RHS) {
- return RegInfo::isEqual(LHS.Reg, RHS.Reg) &&
- RegInfo::isEqual(LHS.SubReg, RHS.SubReg);
- }
-};
-
} // End llvm namespace
#endif