Lines Matching full:mi
38 bool LanaiInstPrinter::printInst(const MCInst *MI, raw_ostream &OS, in printInst() argument
42 printOperand(MI, OpNo0, OS); in printInst()
44 printOperand(MI, OpNo1, OS); in printInst()
48 static bool usesGivenOffset(const MCInst *MI, int AddOffset) { in usesGivenOffset() argument
49 unsigned AluCode = MI->getOperand(3).getImm(); in usesGivenOffset()
51 (MI->getOperand(2).getImm() == AddOffset || in usesGivenOffset()
52 MI->getOperand(2).getImm() == -AddOffset); in usesGivenOffset()
55 static bool isPreIncrementForm(const MCInst *MI, int AddOffset) { in isPreIncrementForm() argument
56 unsigned AluCode = MI->getOperand(3).getImm(); in isPreIncrementForm()
57 return LPAC::isPreOp(AluCode) && usesGivenOffset(MI, AddOffset); in isPreIncrementForm()
60 static bool isPostIncrementForm(const MCInst *MI, int AddOffset) { in isPostIncrementForm() argument
61 unsigned AluCode = MI->getOperand(3).getImm(); in isPostIncrementForm()
62 return LPAC::isPostOp(AluCode) && usesGivenOffset(MI, AddOffset); in isPostIncrementForm()
65 static StringRef decIncOperator(const MCInst *MI) { in decIncOperator() argument
66 if (MI->getOperand(2).getImm() < 0) in decIncOperator()
71 bool LanaiInstPrinter::printMemoryLoadIncrement(const MCInst *MI, in printMemoryLoadIncrement() argument
75 if (isPreIncrementForm(MI, AddOffset)) { in printMemoryLoadIncrement()
76 OS << "\t" << Opcode << "\t[" << decIncOperator(MI) << "%" in printMemoryLoadIncrement()
77 << getRegisterName(MI->getOperand(1).getReg()) << "], %" in printMemoryLoadIncrement()
78 << getRegisterName(MI->getOperand(0).getReg()); in printMemoryLoadIncrement()
81 if (isPostIncrementForm(MI, AddOffset)) { in printMemoryLoadIncrement()
83 << getRegisterName(MI->getOperand(1).getReg()) << decIncOperator(MI) in printMemoryLoadIncrement()
84 << "], %" << getRegisterName(MI->getOperand(0).getReg()); in printMemoryLoadIncrement()
90 bool LanaiInstPrinter::printMemoryStoreIncrement(const MCInst *MI, in printMemoryStoreIncrement() argument
94 if (isPreIncrementForm(MI, AddOffset)) { in printMemoryStoreIncrement()
95 OS << "\t" << Opcode << "\t%" << getRegisterName(MI->getOperand(0).getReg()) in printMemoryStoreIncrement()
96 << ", [" << decIncOperator(MI) << "%" in printMemoryStoreIncrement()
97 << getRegisterName(MI->getOperand(1).getReg()) << "]"; in printMemoryStoreIncrement()
100 if (isPostIncrementForm(MI, AddOffset)) { in printMemoryStoreIncrement()
101 OS << "\t" << Opcode << "\t%" << getRegisterName(MI->getOperand(0).getReg()) in printMemoryStoreIncrement()
102 << ", [%" << getRegisterName(MI->getOperand(1).getReg()) in printMemoryStoreIncrement()
103 << decIncOperator(MI) << "]"; in printMemoryStoreIncrement()
109 bool LanaiInstPrinter::printAlias(const MCInst *MI, raw_ostream &OS) { in printAlias() argument
110 switch (MI->getOpcode()) { in printAlias()
116 return printMemoryLoadIncrement(MI, OS, "ld", 4); in printAlias()
118 return printMemoryLoadIncrement(MI, OS, "ld.h", 2); in printAlias()
120 return printMemoryLoadIncrement(MI, OS, "uld.h", 2); in printAlias()
122 return printMemoryLoadIncrement(MI, OS, "ld.b", 1); in printAlias()
124 return printMemoryLoadIncrement(MI, OS, "uld.b", 1); in printAlias()
130 return printMemoryStoreIncrement(MI, OS, "st", 4); in printAlias()
132 return printMemoryStoreIncrement(MI, OS, "st.h", 2); in printAlias()
134 return printMemoryStoreIncrement(MI, OS, "st.b", 1); in printAlias()
140 void LanaiInstPrinter::printInst(const MCInst *MI, uint64_t Address, in printInst() argument
144 if (!printAlias(MI, OS) && !printAliasInstr(MI, Address, OS)) in printInst()
145 printInstruction(MI, Address, OS); in printInst()
149 void LanaiInstPrinter::printOperand(const MCInst *MI, unsigned OpNo, in printOperand() argument
152 const MCOperand &Op = MI->getOperand(OpNo); in printOperand()
163 void LanaiInstPrinter::printMemImmOperand(const MCInst *MI, unsigned OpNo, in printMemImmOperand() argument
165 const MCOperand &Op = MI->getOperand(OpNo); in printMemImmOperand()
177 void LanaiInstPrinter::printHi16ImmOperand(const MCInst *MI, unsigned OpNo, in printHi16ImmOperand() argument
179 const MCOperand &Op = MI->getOperand(OpNo); in printHi16ImmOperand()
189 void LanaiInstPrinter::printHi16AndImmOperand(const MCInst *MI, unsigned OpNo, in printHi16AndImmOperand() argument
191 const MCOperand &Op = MI->getOperand(OpNo); in printHi16AndImmOperand()
201 void LanaiInstPrinter::printLo16AndImmOperand(const MCInst *MI, unsigned OpNo, in printLo16AndImmOperand() argument
203 const MCOperand &Op = MI->getOperand(OpNo); in printLo16AndImmOperand()
237 void LanaiInstPrinter::printMemRiOperand(const MCInst *MI, int OpNo, in printMemRiOperand() argument
240 const MCOperand &RegOp = MI->getOperand(OpNo); in printMemRiOperand()
241 const MCOperand &OffsetOp = MI->getOperand(OpNo + 1); in printMemRiOperand()
242 const MCOperand &AluOp = MI->getOperand(OpNo + 2); in printMemRiOperand()
252 void LanaiInstPrinter::printMemRrOperand(const MCInst *MI, int OpNo, in printMemRrOperand() argument
255 const MCOperand &RegOp = MI->getOperand(OpNo); in printMemRrOperand()
256 const MCOperand &OffsetOp = MI->getOperand(OpNo + 1); in printMemRrOperand()
257 const MCOperand &AluOp = MI->getOperand(OpNo + 2); in printMemRrOperand()
273 void LanaiInstPrinter::printMemSplsOperand(const MCInst *MI, int OpNo, in printMemSplsOperand() argument
276 const MCOperand &RegOp = MI->getOperand(OpNo); in printMemSplsOperand()
277 const MCOperand &OffsetOp = MI->getOperand(OpNo + 1); in printMemSplsOperand()
278 const MCOperand &AluOp = MI->getOperand(OpNo + 2); in printMemSplsOperand()
288 void LanaiInstPrinter::printCCOperand(const MCInst *MI, int OpNo, in printCCOperand() argument
291 static_cast<LPCC::CondCode>(MI->getOperand(OpNo).getImm()); in printCCOperand()
299 void LanaiInstPrinter::printPredicateOperand(const MCInst *MI, unsigned OpNo, in printPredicateOperand() argument
302 static_cast<LPCC::CondCode>(MI->getOperand(OpNo).getImm()); in printPredicateOperand()