summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2014-01-22 15:08:21 +0000
committerDavid Woodhouse <dwmw2@infradead.org>2014-01-22 15:08:21 +0000
commitb33c2ef215707b5a2d58146933d1b0ddefc185b9 (patch)
treeb23ba9e6ee6cca8e91782e368c78901813f12aa5 /llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
parent2ef8d9c05cb4133383fda0c8b85f1443b873a758 (diff)
downloadbcm5719-llvm-b33c2ef215707b5a2d58146933d1b0ddefc185b9.tar.gz
bcm5719-llvm-b33c2ef215707b5a2d58146933d1b0ddefc185b9.zip
[x86] Allow address-size overrides for STOS[BWLQ] (PR9385)
llvm-svn: 199804
Diffstat (limited to 'llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp')
-rw-r--r--llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
index ac72fce032f..0f1ab6d473a 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
@@ -1330,6 +1330,16 @@ EncodeInstruction(const MCInst &MI, raw_ostream &OS,
EmitByte(BaseOpcode, CurByte, OS);
break;
}
+ case X86II::RawFrmDst: {
+ unsigned siReg = MI.getOperand(0).getReg();
+ // Emit OpSize prefix as needed.
+ if ((!is32BitMode() && siReg == X86::EDI) ||
+ (is32BitMode() && siReg == X86::DI))
+ EmitByte(0x67, CurByte, OS);
+ ++CurOp; // Consume operand.
+ EmitByte(BaseOpcode, CurByte, OS);
+ break;
+ }
case X86II::RawFrm:
EmitByte(BaseOpcode, CurByte, OS);
break;
OpenPOWER on IntegriCloud