26 static const char hex_rep[] =
"0123456789abcdef";
33 OS << hex_rep[(i & 0xF0) >> 4];
34 OS << hex_rep[i & 0xF];
43 return MII.getName(Opcode);
53 (*CommentStream) << Annot;
56 if (Annot.back() !=
'\n')
57 (*CommentStream) <<
'\n';
59 OS <<
" " <<
MAI.getCommentString() <<
" " << Annot;
67 bool &OrPredicateResult) {
85 bool Res = OrPredicateResult;
86 OrPredicateResult =
false;
98 return Opnd.
isImm() && Opnd.
getImm() == int32_t(
C.Value);
104 return Opnd.
isReg() && Opnd.
getReg() ==
MI.getOperand(
C.Value).getReg();
107 return Opnd.
isReg() &&
MRI.getRegClass(
C.Value).contains(Opnd.
getReg());
110 return M.ValidateMCOperand(Opnd, *STI,
C.Value);
131 return L.Opcode < Opcode;
133 if (It == M.OpToPatterns.end() || It->Opcode !=
MI->getOpcode())
139 M.Patterns.
slice(It->PatternStart, It->NumPatterns);
142 if (
MI->getNumOperands() !=
P.NumOperands)
147 M.PatternConds.
slice(
P.AliasCondStart,
P.NumConds);
149 bool OrPredicateResult =
false;
155 AsmStrOffset =
P.AsmStrOffset;
161 if (AsmStrOffset == ~0U)
167 assert(AsmStrOffset < M.AsmStrings.size() &&
168 (AsmStrOffset == 0 || M.AsmStrings[AsmStrOffset - 1] ==
'\0') &&
169 "bad asm string offset");
170 return M.AsmStrings.data() + AsmStrOffset;
180 return (digit >= 0xa);
194 if (
Value == std::numeric_limits<int64_t>::min())
201 if (
Value == std::numeric_limits<int64_t>::min())
232 Markup M,
bool EnableMarkup,
234 : IP(IP), OS(OS), EnableMarkup(EnableMarkup), EnableColor(EnableColor) {
251 IP.ColorStack.push_back(Color);
252 OS.changeColor(Color);
278 IP.ColorStack.pop_back();
279 OS << IP.ColorStack.back();
unsigned const MachineRegisterInfo * MRI
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static bool needsLeadingZero(uint64_t Value)
static bool matchAliasCondition(const MCInst &MI, const MCSubtargetInfo *STI, const MCRegisterInfo &MRI, unsigned &OpIdx, const AliasMatchingData &M, const AliasPatternCond &C, bool &OrPredicateResult)
MachineInstr unsigned OpIdx
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
ArrayRef< T > slice(size_t N, size_t M) const
slice(n, m) - Chop off the first N elements of the array, and keep M elements in the array.
constexpr bool test(unsigned I) const
LLVM_CTOR_NODISCARD LLVM_ABI WithMarkup(MCInstPrinter &IP, raw_ostream &OS, Markup M, bool EnableMarkup, bool EnableColor)
WithMarkup markup(raw_ostream &OS, Markup M)
format_object< int64_t > formatHex(int64_t Value) const
raw_ostream * CommentStream
A stream that comments can be emitted to if desired.
StringRef getOpcodeName(unsigned Opcode) const
Return the name of the specified opcode enum (e.g.
format_object< int64_t > formatDec(int64_t Value) const
Utility functions to print decimal/hexadecimal values.
const MCRegisterInfo & MRI
void printAnnotation(raw_ostream &OS, StringRef Annot)
Utility function for printing annotations.
bool getUseMarkup() const
virtual void printRegName(raw_ostream &OS, MCRegister Reg)
Print the assembler register name.
const char * matchAliasPatterns(const MCInst *MI, const MCSubtargetInfo *STI, const AliasMatchingData &M)
Helper for matching MCInsts to alias patterns when printing instructions.
MCInstPrinter(const MCAsmInfo &mai, const MCInstrInfo &mii, const MCRegisterInfo &mri)
HexStyle::Style PrintHexStyle
Which style to use for printing hexadecimal values.
Instances of this class represent a single low-level machine instruction.
Instances of this class represent operands of the MCInst class.
MCRegister getReg() const
Returns the register number.
MCRegisterInfo base class - We assume that the target defines a static array of MCRegisterDesc object...
Wrapper class representing physical registers. Should be passed by value.
Generic base class for all target subtargets.
const FeatureBitset & getFeatureBits() const
StringRef - Represent a constant reference to a string, i.e.
constexpr bool empty() const
empty - Check if the string is empty.
LLVM Value Representation.
This class implements an extremely fast bulk output stream that can only output to a stream.
static constexpr Colors YELLOW
static constexpr Colors CYAN
static constexpr Colors GREEN
static constexpr Colors RED
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
@ C
The default llvm calling convention, compatible with C.
This is an optimization pass for GlobalISel generic memory operations.
bool all_of(R &&range, UnaryPredicate P)
Provide wrappers to std::all_of which take ranges instead of having to pass begin/end explicitly.
LLVM_ABI void dumpBytes(ArrayRef< uint8_t > Bytes, raw_ostream &OS)
Convert βBytesβ to a hex string and output to βOSβ.
format_object< Ts... > format(const char *Fmt, const Ts &... Vals)
These are helper functions used to produce formatted output.
@ First
Helpers to iterate all locations in the MemoryEffectsBase class.
auto lower_bound(R &&Range, T &&Value)
Provide wrappers to std::lower_bound which take ranges instead of having to pass begin/end explicitly...
Tablegenerated data structures needed to match alias patterns.
Data for each alias pattern.
Map from opcode to pattern list by binary search.