diff options
Diffstat (limited to 'contrib/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp')
-rw-r--r-- | contrib/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp | 41 |
1 files changed, 15 insertions, 26 deletions
diff --git a/contrib/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp b/contrib/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp index 50f2eca..e9491ba 100644 --- a/contrib/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp +++ b/contrib/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp @@ -19,7 +19,7 @@ #include "HexagonSubtarget.h" #include "HexagonTargetMachine.h" #include "MCTargetDesc/HexagonInstPrinter.h" -#include "MCTargetDesc/HexagonMCInst.h" +#include "MCTargetDesc/HexagonMCInstrInfo.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringExtras.h" @@ -61,6 +61,10 @@ static cl::opt<bool> AlignCalls( "hexagon-align-calls", cl::Hidden, cl::init(true), cl::desc("Insert falign after call instruction for Hexagon target")); +HexagonAsmPrinter::HexagonAsmPrinter(TargetMachine &TM, + std::unique_ptr<MCStreamer> Streamer) + : AsmPrinter(TM, std::move(Streamer)), Subtarget(nullptr) {} + void HexagonAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo, raw_ostream &O) { const MachineOperand &MO = MI->getOperand(OpNo); @@ -195,44 +199,29 @@ void HexagonAsmPrinter::EmitInstruction(const MachineInstr *MI) { unsigned Size = BundleMIs.size(); assert((Size + IgnoreCount) == MI->getBundleSize() && "Corrupt Bundle!"); for (unsigned Index = 0; Index < Size; Index++) { - HexagonMCInst MCI; + MCInst MCI; HexagonLowerToMC(BundleMIs[Index], MCI, *this); - HexagonMCInst::AppendImplicitOperands(MCI); - MCI.setPacketBegin(Index == 0); - MCI.setPacketEnd(Index == (Size - 1)); - EmitToStreamer(OutStreamer, MCI); + HexagonMCInstrInfo::AppendImplicitOperands(MCI); + HexagonMCInstrInfo::setPacketBegin(MCI, Index == 0); + HexagonMCInstrInfo::setPacketEnd(MCI, Index == (Size - 1)); + EmitToStreamer(*OutStreamer, MCI); } } else { - HexagonMCInst MCI; + MCInst MCI; HexagonLowerToMC(MI, MCI, *this); - HexagonMCInst::AppendImplicitOperands(MCI); + HexagonMCInstrInfo::AppendImplicitOperands(MCI); if (MI->getOpcode() == Hexagon::ENDLOOP0) { - MCI.setPacketBegin(true); - MCI.setPacketEnd(true); + HexagonMCInstrInfo::setPacketBegin(MCI, true); + HexagonMCInstrInfo::setPacketEnd(MCI, true); } - EmitToStreamer(OutStreamer, MCI); + EmitToStreamer(*OutStreamer, MCI); } return; } -static MCInstPrinter *createHexagonMCInstPrinter(const Target &T, - unsigned SyntaxVariant, - const MCAsmInfo &MAI, - const MCInstrInfo &MII, - const MCRegisterInfo &MRI, - const MCSubtargetInfo &STI) { - if (SyntaxVariant == 0) - return(new HexagonInstPrinter(MAI, MII, MRI)); - else - return nullptr; -} - extern "C" void LLVMInitializeHexagonAsmPrinter() { RegisterAsmPrinter<HexagonAsmPrinter> X(TheHexagonTarget); - - TargetRegistry::RegisterMCInstPrinter(TheHexagonTarget, - createHexagonMCInstPrinter); } |