Tweaks to X86 instructions to allow the 'w' suffix in places it makes

sense, when the instruction takes the 16-bit ax register or m16 memory
location.  These changes to llvm-mc matches what the darwin assembler
allows for these instructions.  Done differently than in r117031 that
caused a valgrind error which was later reverted.

llvm-svn: 117433
This commit is contained in:
Kevin Enderby 2010-10-27 02:32:19 +00:00
parent 307de25449
commit a1917c7555
2 changed files with 54 additions and 0 deletions

View File

@ -705,6 +705,12 @@ ParseInstruction(StringRef Name, SMLoc NameLoc,
.Case("fildq", "fildll")
.Case("fcompi", "fcomip")
.Case("fucompi", "fucomip")
.Case("fldcww", "fldcw")
.Case("fnstcww", "fnstcw")
.Case("fstcww", "fstcw")
.Case("fnstsww", "fnstsw")
.Case("fstsww", "fstsw")
.Case("verrw", "verr")
.Default(Name);
// FIXME: Hack to recognize cmp<comparison code>{ss,sd,ps,pd}.

View File

@ -726,3 +726,51 @@ pshufw $90, %mm4, %mm0
// CHECK: fucomip %st(1), %st(0)
// CHECK: encoding: [0xdf,0xe9]
fucompi
// CHECK: fldcw 32493
// CHECK: encoding: [0xd9,0x2d,0xed,0x7e,0x00,0x00]
fldcww 0x7eed
// CHECK: fldcw 32493
// CHECK: encoding: [0xd9,0x2d,0xed,0x7e,0x00,0x00]
fldcw 0x7eed
// CHECK: fnstcw 32493
// CHECK: encoding: [0xd9,0x3d,0xed,0x7e,0x00,0x00]
fnstcww 0x7eed
// CHECK: fnstcw 32493
// CHECK: encoding: [0xd9,0x3d,0xed,0x7e,0x00,0x00]
fnstcw 0x7eed
// CHECK: wait
// CHECK: encoding: [0x9b]
fstcww 0x7eed
// CHECK: wait
// CHECK: encoding: [0x9b]
fstcw 0x7eed
// CHECK: fnstsw 32493
// CHECK: encoding: [0xdd,0x3d,0xed,0x7e,0x00,0x00]
fnstsww 0x7eed
// CHECK: fnstsw 32493
// CHECK: encoding: [0xdd,0x3d,0xed,0x7e,0x00,0x00]
fnstsw 0x7eed
// CHECK: wait
// CHECK: encoding: [0x9b]
fstsww 0x7eed
// CHECK: wait
// CHECK: encoding: [0x9b]
fstsw 0x7eed
// CHECK: verr 32493
// CHECK: encoding: [0x0f,0x00,0x25,0xed,0x7e,0x00,0x00]
verrw 0x7eed
// CHECK: verr 32493
// CHECK: encoding: [0x0f,0x00,0x25,0xed,0x7e,0x00,0x00]
verr 0x7eed