15 #ifndef HEXAGONSHUFFLER_H
16 #define HEXAGONSHUFFLER_H
32 unsigned Slots, Weight;
80 void setLanes(
unsigned l) { Lanes = l; };
81 void setLoad(
bool f =
true) { Load = f; };
82 void setStore(
bool f =
true) { Store = f; };
86 unsigned s,
MCInst const *
id);
108 MCInst const *Extender,
unsigned s,
bool x =
false)
109 :
ID(id), Extender(Extender), Core(s), CVI(T, MCII, s, id),
190 #endif // HEXAGONSHUFFLER_H
void setError(unsigned Err)
static bool lessCore(const HexagonInstr &A, const HexagonInstr &B)
void setUnits(unsigned s)
unsigned getError() const
unsigned isSoloException() const
HexagonResource(unsigned s)
MCInst const * getExtender() const
unsigned setWeight(unsigned s)
MCInst const * getDesc() const
static bool lessWeight(const HexagonResource &A, const HexagonResource &B)
No free slots for store insns.
#define HEXAGON_PACKET_SIZE
HexagonShuffler(MCInstrInfo const &MCII, MCSubtargetInfo const &STI)
unsigned getUnits() const
No free slots for branch insns.
static GCRegistry::Add< OcamlGC > B("ocaml","ocaml 3.10-compatible GC")
Instances of this class represent a single low-level machine instruction.
HexagonCVIResource(TypeUnitsAndLanes *TUL, MCInstrInfo const &MCII, unsigned s, MCInst const *id)
No free slots for load insns.
HexagonInstr(HexagonCVIResource::TypeUnitsAndLanes *T, MCInstrInfo const &MCII, MCInst const *id, MCInst const *Extender, unsigned s, bool x=false)
LLVM_ATTRIBUTE_ALWAYS_INLINE iterator begin()
MCSubtargetInfo const & STI
Interface to description of machine instruction set.
static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang","erlang-compatible garbage collector")
bool operator<(const HexagonInstr &B) const
No free slots for other insns.
llvm::DenseMap< unsigned, UnitsAndLanes > TypeUnitsAndLanes
HexagonPacket::iterator iterator
void append(MCInst const *ID, MCInst const *Extender, unsigned S, bool X=false)
unsigned countPopulation(T Value)
Count the number of set bits in a value.
unsigned getWeight() const
unsigned getLanes() const
LLVM_ATTRIBUTE_ALWAYS_INLINE iterator end()
static bool lessUnits(const HexagonResource &A, const HexagonResource &B)
LLVM_ATTRIBUTE_ALWAYS_INLINE size_type size() const
MCSubtargetInfo - Generic base class for all target subtargets.
Lightweight error class with error context and mandatory checking.
std::pair< unsigned, unsigned > UnitsAndLanes
static bool lessCVI(const HexagonInstr &A, const HexagonInstr &B)
StringRef - Represent a constant reference to a string, i.e.
static GCRegistry::Add< ErlangGC > A("erlang","erlang-compatible garbage collector")
static void SetupTUL(TypeUnitsAndLanes *TUL, StringRef CPU)
bool check()
Check that the packet is legal and enforce relative insn order.