From 804a9915bf7268be6750eca6c64705555adc47d6 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Sat, 27 Nov 2010 20:29:45 +0000 Subject: [PATCH] Implement the data16 prefix. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120224 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/AsmParser/X86AsmParser.cpp | 2 +- lib/Target/X86/X86InstrInfo.td | 3 +++ test/MC/X86/x86-64.s | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp index b6660710bb..1b4086b41a 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 d7a55057c4..560cafe081 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 c8b8b24411..17f00faafc 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] -- 2.11.4.GIT