summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Enderby <enderby@apple.com>2010-10-27 02:32:19 +0000
committerKevin Enderby <enderby@apple.com>2010-10-27 02:32:19 +0000
commita1917c755584d2e5490b191994316ea27414885d (patch)
tree94c63b765302059cfa02789ebab1dd74cac9ac80
parent307de254496c3777d6fcefd0bd4c86a3073788bd (diff)
downloadbcm5719-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.cpp6
-rw-r--r--llvm/test/MC/X86/x86-32.s48
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
OpenPOWER on IntegriCloud