mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-05 02:16:46 +00:00
stub out some hacky code for wiring up the new asmprinter interfaces
on X86. Not useful yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73799 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5b842c3690
commit
d5fb790613
@ -104,7 +104,7 @@ public:
|
||||
|
||||
/// getDebugLoc - Returns the debug location id of this MachineInstr.
|
||||
///
|
||||
const DebugLoc getDebugLoc() const { return debugLoc; }
|
||||
DebugLoc getDebugLoc() const { return debugLoc; }
|
||||
|
||||
/// getDesc - Returns the target instruction descriptor of this
|
||||
/// MachineInstr.
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/Support/DataTypes.h"
|
||||
#include "llvm/Support/DebugLoc.h"
|
||||
|
||||
namespace llvm {
|
||||
|
||||
@ -84,7 +85,10 @@ class MCInst {
|
||||
public:
|
||||
MCInst() : Opcode(~0U) {}
|
||||
|
||||
unsigned getOpcode() const { return Opcode; }
|
||||
DebugLoc getDebugLoc() const { return DebugLoc(); }
|
||||
|
||||
const MCOperand &getOperand(unsigned i) const { return Operands[i]; }
|
||||
|
||||
};
|
||||
|
||||
|
@ -769,21 +769,17 @@ void X86ATTAsmPrinter::printMachineInstruction(const MachineInstr *MI) {
|
||||
++EmittedInsts;
|
||||
|
||||
if (NewAsmPrinter) {
|
||||
O << "NEW: ";
|
||||
MCInst TmpInst;
|
||||
// FIXME: Convert TmpInst.
|
||||
printInstruction(TmpInst);
|
||||
printInstruction(&TmpInst);
|
||||
O << "OLD: ";
|
||||
}
|
||||
|
||||
// Call the autogenerated instruction printer routines.
|
||||
printInstruction(MI);
|
||||
}
|
||||
|
||||
/// doInitialization
|
||||
bool X86ATTAsmPrinter::doInitialization(Module &M) {
|
||||
return AsmPrinter::doInitialization(M);
|
||||
}
|
||||
|
||||
|
||||
void X86ATTAsmPrinter::printModuleLevelGV(const GlobalVariable* GVar) {
|
||||
const TargetData *TD = TM.getTargetData();
|
||||
|
||||
|
@ -55,7 +55,6 @@ class VISIBILITY_HIDDEN X86ATTAsmPrinter : public AsmPrinter {
|
||||
AsmPrinter::getAnalysisUsage(AU);
|
||||
}
|
||||
|
||||
bool doInitialization(Module &M);
|
||||
bool doFinalization(Module &M);
|
||||
|
||||
/// printInstruction - This method is automatically generated by tablegen
|
||||
@ -64,8 +63,57 @@ class VISIBILITY_HIDDEN X86ATTAsmPrinter : public AsmPrinter {
|
||||
/// returns false.
|
||||
bool printInstruction(const MachineInstr *MI);
|
||||
|
||||
bool printInstruction(const MCInst &TmpInst);
|
||||
|
||||
// New MCInst printing stuff.
|
||||
bool printInstruction(const MCInst *MI);
|
||||
|
||||
void printOperand(const MCInst *MI, unsigned OpNo,
|
||||
const char *Modifier = 0, bool NotRIPRel = false);
|
||||
void printMemReference(const MCInst *MI, unsigned Op,
|
||||
const char *Modifier=NULL, bool NotRIPRel = false);
|
||||
void printLeaMemReference(const MCInst *MI, unsigned Op,
|
||||
const char *Modifier=NULL, bool NotRIPRel = false);
|
||||
void printSSECC(const MCInst *MI, unsigned Op);
|
||||
void printPICLabel(const MCInst *MI, unsigned Op);
|
||||
|
||||
void printi8mem(const MCInst *MI, unsigned OpNo) {
|
||||
printMemReference(MI, OpNo);
|
||||
}
|
||||
void printi16mem(const MCInst *MI, unsigned OpNo) {
|
||||
printMemReference(MI, OpNo);
|
||||
}
|
||||
void printi32mem(const MCInst *MI, unsigned OpNo) {
|
||||
printMemReference(MI, OpNo);
|
||||
}
|
||||
void printi64mem(const MCInst *MI, unsigned OpNo) {
|
||||
printMemReference(MI, OpNo);
|
||||
}
|
||||
void printi128mem(const MCInst *MI, unsigned OpNo) {
|
||||
printMemReference(MI, OpNo);
|
||||
}
|
||||
void printf32mem(const MCInst *MI, unsigned OpNo) {
|
||||
printMemReference(MI, OpNo);
|
||||
}
|
||||
void printf64mem(const MCInst *MI, unsigned OpNo) {
|
||||
printMemReference(MI, OpNo);
|
||||
}
|
||||
void printf80mem(const MCInst *MI, unsigned OpNo) {
|
||||
printMemReference(MI, OpNo);
|
||||
}
|
||||
void printf128mem(const MCInst *MI, unsigned OpNo) {
|
||||
printMemReference(MI, OpNo);
|
||||
}
|
||||
void printlea32mem(const MCInst *MI, unsigned OpNo) {
|
||||
printLeaMemReference(MI, OpNo);
|
||||
}
|
||||
void printlea64mem(const MCInst *MI, unsigned OpNo) {
|
||||
printLeaMemReference(MI, OpNo);
|
||||
}
|
||||
void printlea64_32mem(const MCInst *MI, unsigned OpNo) {
|
||||
printLeaMemReference(MI, OpNo, "subreg64");
|
||||
}
|
||||
|
||||
|
||||
|
||||
// These methods are used by the tablegen'erated instruction printer.
|
||||
void printOperand(const MachineInstr *MI, unsigned OpNo,
|
||||
|
@ -15,8 +15,46 @@
|
||||
#define DEBUG_TYPE "asm-printer"
|
||||
#include "llvm/MC/MCInst.h"
|
||||
#include "X86ATTAsmPrinter.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
using namespace llvm;
|
||||
|
||||
bool X86ATTAsmPrinter::printInstruction(const MCInst &TmpInst) {
|
||||
return true;
|
||||
}
|
||||
// Include the auto-generated portion of the assembly writer.
|
||||
#define MachineInstr MCInst
|
||||
#define NO_ASM_WRITER_BOILERPLATE
|
||||
#include "X86GenAsmWriter.inc"
|
||||
#undef MachineInstr
|
||||
|
||||
void X86ATTAsmPrinter::printSSECC(const MCInst *MI, unsigned Op) {
|
||||
unsigned char value = MI->getOperand(Op).getImm();
|
||||
assert(value <= 7 && "Invalid ssecc argument!");
|
||||
switch (value) {
|
||||
case 0: O << "eq"; break;
|
||||
case 1: O << "lt"; break;
|
||||
case 2: O << "le"; break;
|
||||
case 3: O << "unord"; break;
|
||||
case 4: O << "neq"; break;
|
||||
case 5: O << "nlt"; break;
|
||||
case 6: O << "nle"; break;
|
||||
case 7: O << "ord"; break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void X86ATTAsmPrinter::printPICLabel(const MCInst *MI, unsigned Op) {
|
||||
assert(0 &&
|
||||
"This is only used for MOVPC32r, should lower before asm printing!");
|
||||
}
|
||||
|
||||
|
||||
void X86ATTAsmPrinter::printOperand(const MCInst *MI, unsigned OpNo,
|
||||
const char *Modifier, bool NotRIPRel) {
|
||||
}
|
||||
|
||||
void X86ATTAsmPrinter::printLeaMemReference(const MCInst *MI, unsigned Op,
|
||||
const char *Modifier,
|
||||
bool NotRIPRel) {
|
||||
}
|
||||
|
||||
void X86ATTAsmPrinter::printMemReference(const MCInst *MI, unsigned Op,
|
||||
const char *Modifier, bool NotRIPRel){
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user