36 int BankSwizzle =
MI->getOperand(OpNo).getImm();
37 switch (BankSwizzle) {
39 O <<
"BS:VEC_021/SCL_122";
42 O <<
"BS:VEC_120/SCL_212";
45 O <<
"BS:VEC_102/SCL_221";
64 unsigned CT =
MI->getOperand(OpNo).getImm();
79 int KCacheMode =
MI->getOperand(OpNo).getImm();
81 int KCacheBank =
MI->getOperand(OpNo - 2).getImm();
82 O <<
"CB" << KCacheBank <<
':';
83 int KCacheAddr =
MI->getOperand(OpNo + 2).getImm();
84 int LineSize = (KCacheMode == 1) ? 16 : 32;
85 O << KCacheAddr * 16 <<
'-' << KCacheAddr * 16 + LineSize;
97 assert(Op.isImm() || Op.isExpr());
99 int64_t Imm = Op.getImm();
100 O << Imm << '(' << llvm::bit_cast<float>(
static_cast<uint32_t>(Imm)) <<
')';
103 Op.getExpr()->print(O <<
'@', &
MAI);
114 switch (
MI->getOperand(OpNo).getImm()) {
138 if (OpNo >=
MI->getNumOperands()) {
139 O <<
"/*Missing OP" << OpNo <<
"*/";
145 switch (Op.getReg()) {
147 case R600::PRED_SEL_OFF:
154 }
else if (Op.isImm()) {
156 }
else if (Op.isDFPImm()) {
158 if (Op.getDFPImm() == 0.0)
161 O << bit_cast<double>(Op.getDFPImm());
163 }
else if (Op.isExpr()) {
164 const MCExpr *Exp = Op.getExpr();
178 unsigned Sel =
MI->getOperand(OpNo).getImm();
219 if (Op.getImm() == 0) {
224#include "R600GenAsmWriter.inc"
Provides R600 specific target descriptions.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
static void printIfSet(const MCInst *MI, unsigned OpNo, raw_ostream &O, StringRef Asm, StringRef Default="")
Base class for the full range of assembler expressions which are needed for parsing.
void printAnnotation(raw_ostream &OS, StringRef Annot)
Utility function for printing annotations.
Instances of this class represent a single low-level machine instruction.
Instances of this class represent operands of the MCInst class.
Generic base class for all target subtargets.
static const char * getRegisterName(MCRegister Reg)
void printAbs(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printClamp(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printUpdateExecMask(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printRel(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printRSel(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printNeg(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printOMOD(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printUpdatePred(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printLiteral(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O)
void printWrite(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printCT(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printInst(const MCInst *MI, uint64_t Address, StringRef Annot, const MCSubtargetInfo &STI, raw_ostream &O) override
Print the specified MCInst to the specified raw_ostream.
void printMemOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printLast(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printKCache(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printBankSwizzle(const MCInst *MI, unsigned OpNo, raw_ostream &O)
StringRef - Represent a constant reference to a string, i.e.
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.