forked from OSchip/llvm-project
[PowerPC][NFC] Split PPCELFStreamer::emitInstruction
Split off PPCELFStreamer::emitPrefixedInstruction from PPCELFStreamer::emitInstruction. Differential Revision: https://reviews.llvm.org/D79626
This commit is contained in:
parent
9ff361b099
commit
5a4bcec8db
|
@ -44,17 +44,8 @@ PPCELFStreamer::PPCELFStreamer(MCContext &Context,
|
|||
std::move(Emitter)), LastLabel(NULL) {
|
||||
}
|
||||
|
||||
void PPCELFStreamer::emitInstruction(const MCInst &Inst,
|
||||
const MCSubtargetInfo &STI) {
|
||||
PPCMCCodeEmitter *Emitter =
|
||||
static_cast<PPCMCCodeEmitter*>(getAssembler().getEmitterPtr());
|
||||
|
||||
// Special handling is only for prefixed instructions.
|
||||
if (!Emitter->isPrefixedInstruction(Inst)) {
|
||||
MCELFStreamer::emitInstruction(Inst, STI);
|
||||
return;
|
||||
}
|
||||
|
||||
void PPCELFStreamer::emitPrefixedInstruction(const MCInst &Inst,
|
||||
const MCSubtargetInfo &STI) {
|
||||
// Prefixed instructions must not cross a 64-byte boundary (i.e. prefix is
|
||||
// before the boundary and the remaining 4-bytes are after the boundary). In
|
||||
// order to achieve this, a nop is added prior to any such boundary-crossing
|
||||
|
@ -93,6 +84,19 @@ void PPCELFStreamer::emitInstruction(const MCInst &Inst,
|
|||
}
|
||||
}
|
||||
|
||||
void PPCELFStreamer::emitInstruction(const MCInst &Inst,
|
||||
const MCSubtargetInfo &STI) {
|
||||
PPCMCCodeEmitter *Emitter =
|
||||
static_cast<PPCMCCodeEmitter*>(getAssembler().getEmitterPtr());
|
||||
|
||||
// Special handling is only for prefixed instructions.
|
||||
if (!Emitter->isPrefixedInstruction(Inst)) {
|
||||
MCELFStreamer::emitInstruction(Inst, STI);
|
||||
return;
|
||||
}
|
||||
emitPrefixedInstruction(Inst, STI);
|
||||
}
|
||||
|
||||
void PPCELFStreamer::emitLabel(MCSymbol *Symbol, SMLoc Loc) {
|
||||
LastLabel = Symbol;
|
||||
LastLabelLoc = Loc;
|
||||
|
|
|
@ -41,6 +41,8 @@ public:
|
|||
|
||||
// EmitLabel updates LastLabel and LastLabelLoc when a new label is emitted.
|
||||
void emitLabel(MCSymbol *Symbol, SMLoc Loc = SMLoc()) override;
|
||||
private:
|
||||
void emitPrefixedInstruction(const MCInst &Inst, const MCSubtargetInfo &STI);
|
||||
};
|
||||
|
||||
MCELFStreamer *createPPCELFStreamer(MCContext &Context,
|
||||
|
|
Loading…
Reference in New Issue