diff options
author | Nate Begeman <natebegeman@mac.com> | 2005-11-30 18:54:35 +0000 |
---|---|---|
committer | Nate Begeman <natebegeman@mac.com> | 2005-11-30 18:54:35 +0000 |
commit | 391c5d231a1d251ea9dc3d8745547c957db94ca4 (patch) | |
tree | 35d17b1d1407d6417611801779c347153fbab84f /lib/Target/X86 | |
parent | 004a833ab8ce7fda673b3c5dea68cc6dfb612cd9 (diff) | |
download | external_llvm-391c5d231a1d251ea9dc3d8745547c957db94ca4.zip external_llvm-391c5d231a1d251ea9dc3d8745547c957db94ca4.tar.gz external_llvm-391c5d231a1d251ea9dc3d8745547c957db94ca4.tar.bz2 |
No longer track value types for asm printer operands, and remove them as
an argument to every operand printing function. Requires some slight
tweaks to x86, the only user.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24541 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86')
-rwxr-xr-x | lib/Target/X86/X86ATTAsmPrinter.cpp | 3 | ||||
-rwxr-xr-x | lib/Target/X86/X86ATTAsmPrinter.h | 32 | ||||
-rw-r--r-- | lib/Target/X86/X86InstrInfo.td | 22 | ||||
-rwxr-xr-x | lib/Target/X86/X86IntelAsmPrinter.cpp | 3 | ||||
-rwxr-xr-x | lib/Target/X86/X86IntelAsmPrinter.h | 45 |
5 files changed, 65 insertions, 40 deletions
diff --git a/lib/Target/X86/X86ATTAsmPrinter.cpp b/lib/Target/X86/X86ATTAsmPrinter.cpp index b264107..73e14a3 100755 --- a/lib/Target/X86/X86ATTAsmPrinter.cpp +++ b/lib/Target/X86/X86ATTAsmPrinter.cpp @@ -145,8 +145,7 @@ void X86ATTAsmPrinter::printOp(const MachineOperand &MO, bool isCallOp) { } } -void X86ATTAsmPrinter::printSSECC(const MachineInstr *MI, unsigned Op, - MVT::ValueType VT) { +void X86ATTAsmPrinter::printSSECC(const MachineInstr *MI, unsigned Op) { unsigned char value = MI->getOperand(Op).getImmedValue(); assert(value <= 7 && "Invalid ssecc argument!"); switch (value) { diff --git a/lib/Target/X86/X86ATTAsmPrinter.h b/lib/Target/X86/X86ATTAsmPrinter.h index be5f0dd..c34fff3 100755 --- a/lib/Target/X86/X86ATTAsmPrinter.h +++ b/lib/Target/X86/X86ATTAsmPrinter.h @@ -35,23 +35,37 @@ struct X86ATTAsmPrinter : public X86SharedAsmPrinter { bool printInstruction(const MachineInstr *MI); // This method is used by the tablegen'erated instruction printer. - void printOperand(const MachineInstr *MI, unsigned OpNo, MVT::ValueType VT){ + void printOperand(const MachineInstr *MI, unsigned OpNo){ printOp(MI->getOperand(OpNo)); } - - void printCallOperand(const MachineInstr *MI, unsigned OpNo, - MVT::ValueType VT) { + void printCallOperand(const MachineInstr *MI, unsigned OpNo) { printOp(MI->getOperand(OpNo), true); // Don't print '$' prefix. } - - void printMemoryOperand(const MachineInstr *MI, unsigned OpNo, - MVT::ValueType VT) { + void printi8mem(const MachineInstr *MI, unsigned OpNo) { printMemReference(MI, OpNo); } - + void printi16mem(const MachineInstr *MI, unsigned OpNo) { + printMemReference(MI, OpNo); + } + void printi32mem(const MachineInstr *MI, unsigned OpNo) { + printMemReference(MI, OpNo); + } + void printi64mem(const MachineInstr *MI, unsigned OpNo) { + printMemReference(MI, OpNo); + } + void printf32mem(const MachineInstr *MI, unsigned OpNo) { + printMemReference(MI, OpNo); + } + void printf64mem(const MachineInstr *MI, unsigned OpNo) { + printMemReference(MI, OpNo); + } + void printf80mem(const MachineInstr *MI, unsigned OpNo) { + printMemReference(MI, OpNo); + } + void printMachineInstruction(const MachineInstr *MI); void printOp(const MachineOperand &MO, bool isCallOperand = false); - void printSSECC(const MachineInstr *MI, unsigned Op, MVT::ValueType VT); + void printSSECC(const MachineInstr *MI, unsigned Op); void printMemReference(const MachineInstr *MI, unsigned Op); bool runOnMachineFunction(MachineFunction &F); }; diff --git a/lib/Target/X86/X86InstrInfo.td b/lib/Target/X86/X86InstrInfo.td index 8d61cb5..e679869 100644 --- a/lib/Target/X86/X86InstrInfo.td +++ b/lib/Target/X86/X86InstrInfo.td @@ -15,24 +15,24 @@ // *mem - Operand definitions for the funky X86 addressing mode operands. // - -class X86MemOperand<ValueType Ty> : Operand<Ty> { - let PrintMethod = "printMemoryOperand"; +class X86MemOperand<ValueType Ty, string printMethod> : Operand<Ty> { + let PrintMethod = printMethod; let NumMIOperands = 4; let MIOperandInfo = (ops R32, i8imm, R32, i32imm); } + +def i8mem : X86MemOperand<i8, "printi8mem">; +def i16mem : X86MemOperand<i16, "printi16mem">; +def i32mem : X86MemOperand<i32, "printi32mem">; +def i64mem : X86MemOperand<i64, "printi64mem">; +def f32mem : X86MemOperand<f32, "printf32mem">; +def f64mem : X86MemOperand<f64, "printf64mem">; +def f80mem : X86MemOperand<f80, "printf80mem">; + def SSECC : Operand<i8> { let PrintMethod = "printSSECC"; } -def i8mem : X86MemOperand<i8>; -def i16mem : X86MemOperand<i16>; -def i32mem : X86MemOperand<i32>; -def i64mem : X86MemOperand<i64>; -def f32mem : X86MemOperand<f32>; -def f64mem : X86MemOperand<f64>; -def f80mem : X86MemOperand<f80>; - // A couple of more descriptive operand definitions. // 16-bits but only 8 bits are significant. def i16i8imm : Operand<i16>; diff --git a/lib/Target/X86/X86IntelAsmPrinter.cpp b/lib/Target/X86/X86IntelAsmPrinter.cpp index b51ef58..098a383 100755 --- a/lib/Target/X86/X86IntelAsmPrinter.cpp +++ b/lib/Target/X86/X86IntelAsmPrinter.cpp @@ -59,8 +59,7 @@ bool X86IntelAsmPrinter::runOnMachineFunction(MachineFunction &MF) { return false; } -void X86IntelAsmPrinter::printSSECC(const MachineInstr *MI, unsigned Op, - MVT::ValueType VT) { +void X86IntelAsmPrinter::printSSECC(const MachineInstr *MI, unsigned Op) { unsigned char value = MI->getOperand(Op).getImmedValue(); assert(value <= 7 && "Invalid ssecc argument!"); switch (value) { diff --git a/lib/Target/X86/X86IntelAsmPrinter.h b/lib/Target/X86/X86IntelAsmPrinter.h index 7d81e6b..02d3809 100755 --- a/lib/Target/X86/X86IntelAsmPrinter.h +++ b/lib/Target/X86/X86IntelAsmPrinter.h @@ -37,7 +37,7 @@ struct X86IntelAsmPrinter : public X86SharedAsmPrinter { bool printInstruction(const MachineInstr *MI); // This method is used by the tablegen'erated instruction printer. - void printOperand(const MachineInstr *MI, unsigned OpNo, MVT::ValueType VT){ + void printOperand(const MachineInstr *MI, unsigned OpNo){ const MachineOperand &MO = MI->getOperand(OpNo); if (MO.getType() == MachineOperand::MO_MachineRegister) { assert(MRegisterInfo::isPhysicalRegister(MO.getReg())&&"Not physref??"); @@ -48,29 +48,42 @@ struct X86IntelAsmPrinter : public X86SharedAsmPrinter { } } - void printCallOperand(const MachineInstr *MI, unsigned OpNo, - MVT::ValueType VT) { + void printCallOperand(const MachineInstr *MI, unsigned OpNo) { printOp(MI->getOperand(OpNo), true); // Don't print "OFFSET". } - void printMemoryOperand(const MachineInstr *MI, unsigned OpNo, - MVT::ValueType VT) { - switch (VT) { - default: assert(0 && "Unknown arg size!"); - case MVT::i8: O << "BYTE PTR "; break; - case MVT::i16: O << "WORD PTR "; break; - case MVT::i32: - case MVT::f32: O << "DWORD PTR "; break; - case MVT::i64: - case MVT::f64: O << "QWORD PTR "; break; - case MVT::f80: O << "XWORD PTR "; break; - } + void printi8mem(const MachineInstr *MI, unsigned OpNo) { + O << "BYTE PTR "; + printMemReference(MI, OpNo); + } + void printi16mem(const MachineInstr *MI, unsigned OpNo) { + O << "WORD PTR "; + printMemReference(MI, OpNo); + } + void printi32mem(const MachineInstr *MI, unsigned OpNo) { + O << "WORD PTR "; + printMemReference(MI, OpNo); + } + void printi64mem(const MachineInstr *MI, unsigned OpNo) { + O << "DWORD PTR "; + printMemReference(MI, OpNo); + } + void printf32mem(const MachineInstr *MI, unsigned OpNo) { + O << "DWORD PTR "; + printMemReference(MI, OpNo); + } + void printf64mem(const MachineInstr *MI, unsigned OpNo) { + O << "QWORD PTR "; + printMemReference(MI, OpNo); + } + void printf80mem(const MachineInstr *MI, unsigned OpNo) { + O << "XWORD PTR "; printMemReference(MI, OpNo); } void printMachineInstruction(const MachineInstr *MI); void printOp(const MachineOperand &MO, bool elideOffsetKeyword = false); - void printSSECC(const MachineInstr *MI, unsigned Op, MVT::ValueType VT); + void printSSECC(const MachineInstr *MI, unsigned Op); void printMemReference(const MachineInstr *MI, unsigned Op); bool runOnMachineFunction(MachineFunction &F); bool doInitialization(Module &M); |