Target/X86/Printer.cpp: Add sizePtr function, and use it instead of
" <SIZE> PTR " string when emitting assembly.
Target/X86/X86InstrInfo.def: Tidy up a bit:
Squashed everything down to 118 chars wide, wrapping lines so that
comment is at the same point on each line. Rename "NoImpRegs" as
"NoIR". (most instructions have NoImpRegs twice on a line, so this
saves 10 columns).
Also, annotate various instructions with flags for size of memory operand.
(MemArg16, MemArg32, MemArg64, etc.)
Target/X86/X86InstrInfo.h: Define flags for size of memory operand.
(MemArg16, MemArg32, MemArg64, etc.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4932 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/X86/Printer.cpp b/lib/Target/X86/Printer.cpp
index bfaa4bd..9a3d604 100644
--- a/lib/Target/X86/Printer.cpp
+++ b/lib/Target/X86/Printer.cpp
@@ -119,6 +119,18 @@
}
}
+static const std::string sizePtr (const MachineInstrDescriptor &Desc) {
+ switch (Desc.TSFlags & X86II::MemArgMask) {
+ case X86II::MemArg8: return "BYTE PTR";
+ case X86II::MemArg16: return "WORD PTR";
+ case X86II::MemArg32: return "DWORD PTR";
+ case X86II::MemArg64: return "QWORD PTR";
+ case X86II::MemArg80: return "XWORD PTR";
+ case X86II::MemArg128: return "128BIT PTR"; // dunno what the real one is
+ default: return "<SIZE?> PTR"; // crack being smoked
+ }
+}
+
static void printMemReference(std::ostream &O, const MachineInstr *MI,
unsigned Op, const MRegisterInfo &RI) {
assert(isMem(MI, Op) && "Invalid memory reference!");
@@ -233,7 +245,7 @@
assert(isMem(MI, 0) && MI->getNumOperands() == 4+1 &&
isReg(MI->getOperand(4)) && "Bad format for MRMDestMem!");
- O << getName(MI->getOpCode()) << " <SIZE> PTR ";
+ O << getName(MI->getOpCode()) << " " << sizePtr (Desc) << " ";
printMemReference(O, MI, 0, RI);
O << ", ";
printOp(O, MI->getOperand(4), RI);
@@ -283,7 +295,7 @@
O << getName(MI->getOpCode()) << " ";
printOp(O, MI->getOperand(0), RI);
- O << ", <SIZE> PTR ";
+ O << ", " << sizePtr (Desc) << " ";
printMemReference(O, MI, MI->getNumOperands()-4, RI);
O << "\n";
return;