fix the encodings of monitor and mwait, which were completely

busted in both encoders.  I'm not bothering to fix it in the
old one at this point.

llvm-svn: 95947
This commit is contained in:
Chris Lattner 2010-02-12 01:06:22 +00:00
parent 62f50dad8d
commit 1572e760bc
2 changed files with 16 additions and 7 deletions

View File

@ -542,14 +542,9 @@ EncodeInstruction(const MCInst &MI, raw_ostream &OS,
// FIXME: This is terrible, they should get proper encoding bits in TSFlags.
if (Opcode == X86::LFENCE || Opcode == X86::MFENCE ||
Opcode == X86::MONITOR || Opcode == X86::MWAIT) {
EmitByte(ModRMByte(3, (TSFlags & X86II::FormMask)-X86II::MRM0r, 0),
EmitByte(ModRMByte(3, (TSFlags & X86II::FormMask)-X86II::MRM0r,
Opcode == X86::MWAIT),
CurByte, OS);
switch (Opcode) {
default: break;
case X86::MONITOR: EmitByte(0xC8, CurByte, OS); break;
case X86::MWAIT: EmitByte(0xC9, CurByte, OS); break;
}
} else {
EmitRegModRMByte(MI.getOperand(CurOp++),
(TSFlags & X86II::FormMask)-X86II::MRM0r,

View File

@ -0,0 +1,14 @@
// RUN: llvm-mc -triple i386-unknown-unknown --show-encoding --enable-new-x86-encoder %s | FileCheck %s
lfence
// CHECK: lfence
// CHECK: encoding: [0x0f,0xae,0xe8]
mfence
// CHECK: mfence
// CHECK: encoding: [0x0f,0xae,0xf0]
monitor
// CHECK: monitor
// CHECK: encoding: [0x0f,0x01,0xc8]
mwait
// CHECK: mwait
// CHECK: encoding: [0x0f,0x01,0xc9]