diff options
Diffstat (limited to 'lib/Target/X86/X86ATTAsmPrinter.cpp')
-rwxr-xr-x | lib/Target/X86/X86ATTAsmPrinter.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/Target/X86/X86ATTAsmPrinter.cpp b/lib/Target/X86/X86ATTAsmPrinter.cpp index 326251ccc2..7baa8f8717 100755 --- a/lib/Target/X86/X86ATTAsmPrinter.cpp +++ b/lib/Target/X86/X86ATTAsmPrinter.cpp @@ -115,7 +115,7 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo, unsigned Reg = MO.getReg(); if (Modifier && strncmp(Modifier, "trunc", strlen("trunc")) == 0) { MVT::ValueType VT = (strcmp(Modifier,"trunc16") == 0) - ? MVT::i16 : MVT::i32; + ? MVT::i16 : MVT::i8; Reg = getX86SubSuperRegister(Reg, VT); } for (const char *Name = RI.get(Reg).Name; *Name; ++Name) @@ -366,12 +366,13 @@ void X86ATTAsmPrinter::printMachineInstruction(const MachineInstr *MI) { const MachineOperand &MO1 = MI->getOperand(1); unsigned Reg0 = MO0.getReg(); unsigned Reg1 = MO1.getReg(); - if (MI->getOpcode() == X86::TRUNC_R16_R8) - Reg0 = getX86SubSuperRegister(Reg0, MVT::i16); + if (MI->getOpcode() == X86::TRUNC_R32_R16) + Reg1 = getX86SubSuperRegister(Reg1, MVT::i16); else - Reg0 = getX86SubSuperRegister(Reg0, MVT::i32); - if (Reg0 == Reg1) - O << CommentString << " TRUNCATE "; + Reg1 = getX86SubSuperRegister(Reg1, MVT::i8); + O << CommentString << " TRUNCATE "; + if (Reg0 != Reg1) + O << "\n\t"; break; } } |