Copy segment register when optimizing to MOV8ao8/MOV16ao16/MOV32ao32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199365 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Craig Topper 2014-01-16 07:57:45 +00:00
parent 85026d9375
commit c3ab5de57c

View File

@ -323,15 +323,16 @@ static void SimplifyShortMoveForm(X86AsmPrinter &Printer, MCInst &Inst,
if (Absolute && if (Absolute &&
(Inst.getOperand(AddrBase + 0).getReg() != 0 || (Inst.getOperand(AddrBase + 0).getReg() != 0 ||
Inst.getOperand(AddrBase + 2).getReg() != 0 || Inst.getOperand(AddrBase + 2).getReg() != 0 ||
Inst.getOperand(AddrBase + 4).getReg() != 0 ||
Inst.getOperand(AddrBase + 1).getImm() != 1)) Inst.getOperand(AddrBase + 1).getImm() != 1))
return; return;
// If so, rewrite the instruction. // If so, rewrite the instruction.
MCOperand Saved = Inst.getOperand(AddrOp); MCOperand Saved = Inst.getOperand(AddrOp);
MCOperand Seg = Inst.getOperand(AddrBase + 4);
Inst = MCInst(); Inst = MCInst();
Inst.setOpcode(Opcode); Inst.setOpcode(Opcode);
Inst.addOperand(Saved); Inst.addOperand(Saved);
Inst.addOperand(Seg);
} }
static unsigned getRetOpcode(const X86Subtarget &Subtarget) static unsigned getRetOpcode(const X86Subtarget &Subtarget)