diff options
author | Craig Topper <craig.topper@intel.com> | 2018-03-24 06:04:12 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2018-03-24 06:04:12 +0000 |
commit | e865641aea2072fb95fff09775ae96ce0132ba28 (patch) | |
tree | 5536bdcd3c5e47bf53846ef74173c1d9f5193085 /llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp | |
parent | 2c5471ddc7858c56274de830481f940de7c509e7 (diff) | |
download | bcm5719-llvm-e865641aea2072fb95fff09775ae96ce0132ba28.tar.gz bcm5719-llvm-e865641aea2072fb95fff09775ae96ce0132ba28.zip |
[X86] Merge the Has3DNow0F0FOpcode TSFlag into the OpMap encoding. NFC
The 3DNow instructions are encoded a little weird, but we can still represent it as an opcode map.
llvm-svn: 328410
Diffstat (limited to 'llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp')
-rw-r--r-- | llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp index 3ba8b500dfd..4cf8dd9e782 100644 --- a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp +++ b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp @@ -1163,9 +1163,10 @@ bool X86MCCodeEmitter::emitOpcodePrefix(uint64_t TSFlags, unsigned &CurByte, // 0x0F escape code must be emitted just before the opcode. switch (TSFlags & X86II::OpMapMask) { - case X86II::TB: // Two-byte opcode map - case X86II::T8: // 0F 38 - case X86II::TA: // 0F 3A + case X86II::TB: // Two-byte opcode map + case X86II::T8: // 0F 38 + case X86II::TA: // 0F 3A + case X86II::ThreeDNow: // 0F 0F, second 0F emitted by caller. EmitByte(0x0F, CurByte, OS); break; } @@ -1261,7 +1262,7 @@ encodeInstruction(const MCInst &MI, raw_ostream &OS, uint8_t BaseOpcode = X86II::getBaseOpcodeFor(TSFlags); - if (TSFlags & X86II::Has3DNow0F0FOpcode) + if ((TSFlags & X86II::OpMapMask) == X86II::ThreeDNow) BaseOpcode = 0x0F; // Weird 3DNow! encoding. uint64_t Form = TSFlags & X86II::FormMask; @@ -1555,7 +1556,7 @@ encodeInstruction(const MCInst &MI, raw_ostream &OS, } } - if (TSFlags & X86II::Has3DNow0F0FOpcode) + if ((TSFlags & X86II::OpMapMask) == X86II::ThreeDNow) EmitByte(X86II::getBaseOpcodeFor(TSFlags), CurByte, OS); #ifndef NDEBUG |