9#ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGONBLOCKRANGES_H
10#define LLVM_LIB_TARGET_HEXAGON_HEXAGONBLOCKRANGES_H
22class HexagonSubtarget;
23class MachineBasicBlock;
26class MachineRegisterInfo;
29class TargetRegisterInfo;
40 return Reg < R.Reg || (
Reg == R.Reg &&
Sub < R.Sub);
62 bool operator== (
unsigned x)
const;
81 class IndexRange :
public std::pair<IndexType,IndexType> {
91 return start() <
A.start();
102 void setStart(
const IndexType &S) { first = S; }
118 void unionize(
bool MergeAdjacent =
false);
142 std::map<IndexType,MachineInstr*> Map;
177inline HexagonBlockRanges::IndexType::operator
unsigned()
const {
223 if (
Index == Exit ||
Idx.Index == Entry)
227 if (
Index == Entry ||
Idx.Index == Exit)
unsigned const MachineRegisterInfo * MRI
This file implements the BitVector class.
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
Returns the sub type a function will return at a given Idx Should correspond to the result type of an ExtractValue instruction executed with just that one unsigned Idx
static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang", "erlang-compatible garbage collector")
Legalize the Machine IR a function s Machine IR
ConstantRange Range(APInt(BitWidth, Low), APInt(BitWidth, High))
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
void merge(const IndexRange &A)
IndexRange(IndexType Start, IndexType End, bool F=false, bool T=false)
bool operator<(const IndexRange &A) const
bool overlaps(const IndexRange &A) const
bool contains(const IndexRange &A) const
bool operator==(unsigned x) const
static bool isInstr(IndexType X)
bool operator<=(IndexType Idx) const
bool operator<(unsigned Idx) const
bool operator!=(unsigned x) const
void replaceInstr(MachineInstr *OldMI, MachineInstr *NewMI)
MachineBasicBlock & getBlock() const
IndexType getNextIndex(IndexType Idx) const
IndexType getPrevIndex(IndexType Idx) const
IndexType getIndex(MachineInstr *MI) const
MachineInstr * getInstr(IndexType Idx) const
friend raw_ostream & operator<<(raw_ostream &OS, const InstrIndexMap &Map)
void add(const IndexRange &Range)
void subtract(const IndexRange &Range)
void include(const RangeList &RL)
void unionize(bool MergeAdjacent=false)
void add(IndexType Start, IndexType End, bool Fixed, bool TiedEnd)
Representation of each machine instruction.
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
Wrapper class representing virtual and physical registers.
TargetInstrInfo - Interface to description of machine instruction set.
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
bool operator<(int64_t V1, const APSInt &V2)
bool operator==(const AddressRangeValuePair &LHS, const AddressRangeValuePair &RHS)
@ First
Helpers to iterate all locations in the MemoryEffectsBase class.
raw_ostream & operator<<(raw_ostream &OS, const APFixedPoint &FX)
Implement std::hash so that hash_code can be used in STL containers.
PrintRangeMap(const RegToRangeMap &M, const TargetRegisterInfo &I)
friend raw_ostream & operator<<(raw_ostream &OS, const PrintRangeMap &P)
bool operator<(RegisterRef R) const
RegToRangeMap computeLiveMap(InstrIndexMap &IndexMap)
std::set< RegisterRef > RegisterSet
static RegisterSet expandToSubRegs(RegisterRef R, const MachineRegisterInfo &MRI, const TargetRegisterInfo &TRI)
RegToRangeMap computeDeadMap(InstrIndexMap &IndexMap, RegToRangeMap &LiveMap)
std::map< RegisterRef, RangeList > RegToRangeMap