Lines Matching defs:MCB

88                                           MCInstrInfo const &MCII, MCInst &MCB,
90 assert(HexagonMCInstrInfo::isBundle(MCB));
99 MCB.addOperand(MCOperand::createInst(XMCI));
125 MCContext &Context, MCInst &MCB,
132 MCInst OrigMCB = MCB;
137 HexagonMCInstrInfo::tryCompound(MCII, STI, Context, MCB);
138 HexagonMCShuffle(Context, false, MCII, STI, MCB);
142 ? HexagonMCInstrInfo::getDuplexPossibilties(MCII, STI, MCB)
147 HexagonMCShuffle(Context, MCII, STI, MCB, possibleDuplexes);
151 HexagonMCInstrInfo::padEndloop(MCB, Context);
155 if (HexagonMCInstrInfo::bundleSize(MCB) > HEXAGON_PACKET_SIZE) {
165 HexagonMCShuffle(Context, true, MCII, STI, MCB);
173 MCContext &Context, MCInst &MCB,
178 return canonicalizePacketImpl(MCII, STI, Context, MCB, Check);
181 HexagonMCChecker DefaultCheck(Context, MCII, STI, MCB, *RI, false);
184 if (canonicalizePacketImpl(MCII, STI, Context, MCB, &PerfCheck))
188 return canonicalizePacketImpl(MCII, *ArchSTI, Context, MCB, &ArchCheck);
222 MCInst const *HexagonMCInstrInfo::extenderForIndex(MCInst const &MCB,
224 assert(Index <= bundleSize(MCB));
228 MCB.getOperand(Index + bundleInstructionsOffset - 1).getInst();
235 MCInstrInfo const &MCII, MCInst &MCB,
238 addConstExtender(Context, MCII, MCB, MCI);
496 bool HexagonMCInstrInfo::hasExtenderForIndex(MCInst const &MCB, size_t Index) {
497 return extenderForIndex(MCB, Index) != nullptr;
526 MCInst const &HexagonMCInstrInfo::instruction(MCInst const &MCB, size_t Index) {
527 assert(isBundle(MCB));
529 return *MCB.getOperand(bundleInstructionsOffset + Index).getInst();
929 void HexagonMCInstrInfo::padEndloop(MCInst &MCB, MCContext &Context) {
932 assert(isBundle(MCB));
933 while (LoopNeedsPadding(MCB))
934 MCB.addOperand(MCOperand::createInst(new (Context) MCInst(Nop)));
1001 void HexagonMCInstrInfo::replaceDuplex(MCContext &Context, MCInst &MCB,
1003 assert(Candidate.packetIndexI < MCB.size());
1004 assert(Candidate.packetIndexJ < MCB.size());
1005 assert(isBundle(MCB));
1008 *MCB.getOperand(Candidate.packetIndexJ).getInst(),
1009 *MCB.getOperand(Candidate.packetIndexI).getInst());
1011 MCB.getOperand(Candidate.packetIndexI).setInst(Duplex);
1012 MCB.erase(MCB.begin() + Candidate.packetIndexJ);
1048 bool HexagonMCInstrInfo::LoopNeedsPadding(MCInst const &MCB) {
1050 (HexagonMCInstrInfo::isInnerLoop(MCB) &&
1051 (HexagonMCInstrInfo::bundleSize(MCB) < HEXAGON_PACKET_INNER_SIZE)) ||
1052 ((HexagonMCInstrInfo::isOuterLoop(MCB) &&
1053 (HexagonMCInstrInfo::bundleSize(MCB) < HEXAGON_PACKET_OUTER_SIZE))));