diff options
author | Craig Topper <craig.topper@gmail.com> | 2016-08-27 17:13:41 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2016-08-27 17:13:41 +0000 |
commit | 45793a1f7abd1c93199c00d8d0f4a90d4d00599e (patch) | |
tree | 6e71ed7ea76f5dc37985aff14dcbd441456a64c5 /llvm/lib/Target/X86/MCTargetDesc | |
parent | 6acca80e17514ceb641b6d986f13928f60722c4d (diff) | |
download | bcm5719-llvm-45793a1f7abd1c93199c00d8d0f4a90d4d00599e.tar.gz bcm5719-llvm-45793a1f7abd1c93199c00d8d0f4a90d4d00599e.zip |
[X86] Keep looping over operands looking for byte registers even if we already found a register that requires a REX prefix. Otherwise we don't error if a high byte register is used after SPL/BPL/DIL/SIL.
llvm-svn: 279923
Diffstat (limited to 'llvm/lib/Target/X86/MCTargetDesc')
-rw-r--r-- | llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp index 0b59a6945e1..735694a2ad5 100644 --- a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp +++ b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp @@ -1017,11 +1017,10 @@ uint8_t X86MCCodeEmitter::DetermineREXPrefix(const MCInst &MI, uint64_t TSFlags, unsigned Reg = MO.getReg(); if (Reg == X86::AH || Reg == X86::BH || Reg == X86::CH || Reg == X86::DH) UsesHighByteReg = true; - if (!X86II::isX86_64NonExtLowByteReg(Reg)) continue; - // FIXME: The caller of DetermineREXPrefix slaps this prefix onto anything - // that returns non-zero. - REX |= 0x40; // REX fixed encoding prefix - break; + if (X86II::isX86_64NonExtLowByteReg(Reg)) + // FIXME: The caller of DetermineREXPrefix slaps this prefix onto anything + // that returns non-zero. + REX |= 0x40; // REX fixed encoding prefix } switch (TSFlags & X86II::FormMask) { |