diff options
Diffstat (limited to 'lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.cpp')
| -rw-r--r-- | lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.cpp | 65 | 
1 files changed, 17 insertions, 48 deletions
diff --git a/lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.cpp b/lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.cpp index 75d6bfb0813aa..47384cd533fa4 100644 --- a/lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.cpp +++ b/lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.cpp @@ -15,7 +15,6 @@  #include "Hexagon.h"  #include "HexagonAsmPrinter.h"  #include "HexagonInstPrinter.h" -#include "HexagonMCInst.h"  #include "llvm/MC/MCInst.h"  #include "llvm/MC/MCAsmInfo.h"  #include "llvm/MC/MCExpr.h" @@ -38,50 +37,20 @@ StringRef HexagonInstPrinter::getRegName(unsigned RegNo) const {  void HexagonInstPrinter::printInst(const MCInst *MI, raw_ostream &O,                                     StringRef Annot) { -  printInst((const HexagonMCInst*)(MI), O, Annot); -} - -void HexagonInstPrinter::printInst(const HexagonMCInst *MI, raw_ostream &O, -                                   StringRef Annot) {    const char packetPadding[] = "      ";    const char startPacket = '{',               endPacket = '}';    // TODO: add outer HW loop when it's supported too.    if (MI->getOpcode() == Hexagon::ENDLOOP0) { -    // Ending a harware loop is different from ending an regular packet. -    assert(MI->isEndPacket() && "Loop end must also end the packet"); - -    if (MI->isStartPacket()) { -      // There must be a packet to end a loop. -      // FIXME: when shuffling is always run, this shouldn't be needed. -      HexagonMCInst Nop; -      StringRef NoAnnot; - -      Nop.setOpcode (Hexagon::NOP); -      Nop.setStartPacket (MI->isStartPacket()); -      printInst (&Nop, O, NoAnnot); -    } - -    // Close the packet. -    if (MI->isEndPacket()) -      O << packetPadding << endPacket; +    MCInst Nop; -    printInstruction(MI, O); -  } -  else { -    // Prefix the insn opening the packet. -    if (MI->isStartPacket()) -      O << packetPadding << startPacket << '\n'; - -    printInstruction(MI, O); - -    // Suffix the insn closing the packet. -    if (MI->isEndPacket()) -      // Suffix the packet in a new line always, since the GNU assembler has -      // issues with a closing brace on the same line as CONST{32,64}. -      O << '\n' << packetPadding << endPacket; +    O << packetPadding << startPacket << '\n'; +    Nop.setOpcode(Hexagon::NOP); +    printInstruction(&Nop, O); +    O << packetPadding << endPacket;    } +  printInstruction(MI, O);    printAnnotation(O, Annot);  } @@ -100,18 +69,18 @@ void HexagonInstPrinter::printOperand(const MCInst *MI, unsigned OpNo,    }  } -void HexagonInstPrinter::printImmOperand(const MCInst *MI, unsigned OpNo, -                                         raw_ostream &O) const { +void HexagonInstPrinter::printImmOperand +  (const MCInst *MI, unsigned OpNo, raw_ostream &O) const {    O << MI->getOperand(OpNo).getImm();  }  void HexagonInstPrinter::printExtOperand(const MCInst *MI, unsigned OpNo, -                                         raw_ostream &O) const { +                                                raw_ostream &O) const {    O << MI->getOperand(OpNo).getImm();  } -void HexagonInstPrinter::printUnsignedImmOperand(const MCInst *MI, unsigned OpNo, -                                                 raw_ostream &O) const { +void HexagonInstPrinter::printUnsignedImmOperand +  (const MCInst *MI, unsigned OpNo, raw_ostream &O) const {    O << MI->getOperand(OpNo).getImm();  } @@ -120,13 +89,13 @@ void HexagonInstPrinter::printNegImmOperand(const MCInst *MI, unsigned OpNo,    O << -MI->getOperand(OpNo).getImm();  } -void HexagonInstPrinter::printNOneImmOperand(const MCInst *MI, unsigned OpNo, -                                             raw_ostream &O) const { +void HexagonInstPrinter::printNOneImmOperand +  (const MCInst *MI, unsigned OpNo, raw_ostream &O) const {    O << -1;  } -void HexagonInstPrinter::printMEMriOperand(const MCInst *MI, unsigned OpNo, -                                           raw_ostream &O) const { +void HexagonInstPrinter::printMEMriOperand +  (const MCInst *MI, unsigned OpNo, raw_ostream &O) const {    const MCOperand& MO0 = MI->getOperand(OpNo);    const MCOperand& MO1 = MI->getOperand(OpNo + 1); @@ -134,8 +103,8 @@ void HexagonInstPrinter::printMEMriOperand(const MCInst *MI, unsigned OpNo,    O << " + #" << MO1.getImm();  } -void HexagonInstPrinter::printFrameIndexOperand(const MCInst *MI, unsigned OpNo, -                                                raw_ostream &O) const { +void HexagonInstPrinter::printFrameIndexOperand +  (const MCInst *MI, unsigned OpNo, raw_ostream &O) const {    const MCOperand& MO0 = MI->getOperand(OpNo);    const MCOperand& MO1 = MI->getOperand(OpNo + 1);  | 
