aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2010-11-27 20:29:45 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2010-11-27 20:29:45 +0000
commitbfd2d26159c87262fcf462ea442f99478a2093c9 (patch)
treed336ba5f3af3cf9206139ac813b3ec95357825b8
parentb837f587ed0b97ab57df13d28952b417622036f8 (diff)
downloadexternal_llvm-bfd2d26159c87262fcf462ea442f99478a2093c9.zip
external_llvm-bfd2d26159c87262fcf462ea442f99478a2093c9.tar.gz
external_llvm-bfd2d26159c87262fcf462ea442f99478a2093c9.tar.bz2
Implement the data16 prefix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120224 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/X86/AsmParser/X86AsmParser.cpp2
-rw-r--r--lib/Target/X86/X86InstrInfo.td3
-rw-r--r--test/MC/X86/x86-64.s1
3 files changed, 5 insertions, 1 deletions
diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp
index b666071..1b4086b 100644
--- a/lib/Target/X86/AsmParser/X86AsmParser.cpp
+++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -708,7 +708,7 @@ ParseInstruction(StringRef Name, SMLoc NameLoc,
Name == "lock" || Name == "rep" ||
Name == "repe" || Name == "repz" ||
Name == "repne" || Name == "repnz" ||
- Name == "rex64";
+ Name == "rex64" || Name == "data16";
// This does the actual operand parsing. Don't parse any more if we have a
diff --git a/lib/Target/X86/X86InstrInfo.td b/lib/Target/X86/X86InstrInfo.td
index d7a5505..560cafe 100644
--- a/lib/Target/X86/X86InstrInfo.td
+++ b/lib/Target/X86/X86InstrInfo.td
@@ -1147,6 +1147,9 @@ def LOCK_PREFIX : I<0xF0, RawFrm, (outs), (ins), "lock", []>;
// Rex64 instruction prefix
def REX64_PREFIX : I<0x48, RawFrm, (outs), (ins), "rex64", []>;
+// Data16 instruction prefix
+def DATA16_PREFIX : I<0x66, RawFrm, (outs), (ins), "data16", []>;
+
// Repeat string operation instruction prefixes
// These uses the DF flag in the EFLAGS register to inc or dec ECX
let Defs = [ECX], Uses = [ECX,EFLAGS] in {
diff --git a/test/MC/X86/x86-64.s b/test/MC/X86/x86-64.s
index c8b8b24..17f00fa 100644
--- a/test/MC/X86/x86-64.s
+++ b/test/MC/X86/x86-64.s
@@ -910,3 +910,4 @@ movq %rax, %mm5 // CHECK: movd %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8]
movq %mm5, %rbx // CHECK: movd %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb]
rex64 // CHECK: rex64 # encoding: [0x48]
+data16 // CHECK: data16 # encoding: [0x66]