10 #ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGONBLOCKRANGES_H 11 #define LLVM_LIB_TARGET_HEXAGON_HEXAGONBLOCKRANGES_H 22 class HexagonSubtarget;
23 class MachineBasicBlock;
24 class MachineFunction;
26 class MachineRegisterInfo;
28 class TargetInstrInfo;
29 class TargetRegisterInfo;
38 return Reg < R.
Reg || (Reg == R.
Reg && Sub < R.
Sub);
79 class IndexRange :
public std::pair<IndexType,IndexType> {
89 return start() < A.
start();
109 push_back(
IndexRange(Start, End, Fixed, TiedEnd));
116 void unionize(
bool MergeAdjacent =
false);
140 std::map<IndexType,MachineInstr*> Map;
175 inline HexagonBlockRanges::IndexType::operator
unsigned()
const {
185 return Index == Idx.Index;
193 return Index != Idx.Index;
213 if (
Index == Idx.Index)
221 if (
Index == Exit || Idx.Index == Entry)
225 if (
Index == Entry || Idx.Index == Exit)
228 return Index < Idx.Index;
247 #endif // LLVM_LIB_TARGET_HEXAGON_HEXAGONBLOCKRANGES_H bool operator<(RegisterRef R) const
MachineBasicBlock & getBlock() const
static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang", "erlang-compatible garbage collector")
This class represents lattice values for constants.
bool operator>(int64_t V1, const APSInt &V2)
static RegisterSet expandToSubRegs(RegisterRef R, const MachineRegisterInfo &MRI, const TargetRegisterInfo &TRI)
bool operator<(unsigned Idx) const
unsigned const TargetRegisterInfo * TRI
std::set< RegisterRef > RegisterSet
void add(const IndexRange &Range)
return AArch64::GPR64RegClass contains(Reg)
std::map< RegisterRef, RangeList > RegToRangeMap
bool operator<=(int64_t V1, const APSInt &V2)
void add(IndexType Start, IndexType End, bool Fixed, bool TiedEnd)
bool operator<=(IndexType Idx) const
bool operator>=(int64_t V1, const APSInt &V2)
const HexagonInstrInfo * TII
TargetInstrInfo - Interface to description of machine instruction set.
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
unsigned const MachineRegisterInfo * MRI
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
bool operator==(unsigned x) const
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
static bool isInstr(IndexType X)
IndexRange(IndexType Start, IndexType End, bool F=false, bool T=false)
bool operator!=(unsigned x) const
HexagonBlockRanges(MachineFunction &MF)
PrintRangeMap(const RegToRangeMap &M, const TargetRegisterInfo &I)
MachineRegisterInfo - Keep track of information for virtual and physical registers, including vreg register classes, use/def chains for registers, etc.
bool operator!=(uint64_t V1, const APInt &V2)
Representation of each machine instruction.
RegToRangeMap computeLiveMap(InstrIndexMap &IndexMap)
RegToRangeMap computeDeadMap(InstrIndexMap &IndexMap, RegToRangeMap &LiveMap)
raw_ostream & operator<<(raw_ostream &OS, const APInt &I)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
This class implements an extremely fast bulk output stream that can only output to a stream...
bool operator==(uint64_t V1, const APInt &V2)
Statically lint checks LLVM IR