diff options
author | Kevin Enderby <enderby@apple.com> | 2010-10-27 02:32:19 +0000 |
---|---|---|
committer | Kevin Enderby <enderby@apple.com> | 2010-10-27 02:32:19 +0000 |
commit | a1917c755584d2e5490b191994316ea27414885d (patch) | |
tree | 94c63b765302059cfa02789ebab1dd74cac9ac80 | |
parent | 307de254496c3777d6fcefd0bd4c86a3073788bd (diff) | |
download | bcm5719-llvm-a1917c755584d2e5490b191994316ea27414885d.tar.gz bcm5719-llvm-a1917c755584d2e5490b191994316ea27414885d.zip |
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
-rw-r--r-- | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 6 | ||||
-rw-r--r-- | llvm/test/MC/X86/x86-32.s | 48 |
2 files changed, 54 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index 9bf0f6415eb..2890cb1dee5 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -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}. diff --git a/llvm/test/MC/X86/x86-32.s b/llvm/test/MC/X86/x86-32.s index 9bce1a8da29..590f9681c3e 100644 --- a/llvm/test/MC/X86/x86-32.s +++ b/llvm/test/MC/X86/x86-32.s @@ -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 |