aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-06-23 21:07:47 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-06-23 21:07:47 +0000
commita390a1aa48d8fa5085aa51b950f00d79dbb0c646 (patch)
tree6839c920b78888b234e7bb6aa304fb5ec7c888cd
parent00805fae5b741a9732579050f60cedc7731f6256 (diff)
downloadexternal_llvm-a390a1aa48d8fa5085aa51b950f00d79dbb0c646.zip
external_llvm-a390a1aa48d8fa5085aa51b950f00d79dbb0c646.tar.gz
external_llvm-a390a1aa48d8fa5085aa51b950f00d79dbb0c646.tar.bz2
Add support for movntil/movntiq mnemonics. Reported on llvmdev.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133759 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/X86/X86InstrSSE.td4
-rw-r--r--test/MC/X86/x86-32-coverage.s24
-rw-r--r--test/MC/X86/x86-64.s12
3 files changed, 26 insertions, 14 deletions
diff --git a/lib/Target/X86/X86InstrSSE.td b/lib/Target/X86/X86InstrSSE.td
index 8377c3a..0bfc5e7 100644
--- a/lib/Target/X86/X86InstrSSE.td
+++ b/lib/Target/X86/X86InstrSSE.td
@@ -1991,11 +1991,11 @@ def : Pat<(alignednontemporalstore (v2i64 VR128:$src), addr:$dst),
// There is no AVX form for instructions below this point
def MOVNTImr : I<0xC3, MRMDestMem, (outs), (ins i32mem:$dst, GR32:$src),
- "movnti\t{$src, $dst|$dst, $src}",
+ "movnti{l}\t{$src, $dst|$dst, $src}",
[(nontemporalstore (i32 GR32:$src), addr:$dst)]>,
TB, Requires<[HasSSE2]>;
def MOVNTI_64mr : RI<0xC3, MRMDestMem, (outs), (ins i64mem:$dst, GR64:$src),
- "movnti\t{$src, $dst|$dst, $src}",
+ "movnti{q}\t{$src, $dst|$dst, $src}",
[(nontemporalstore (i64 GR64:$src), addr:$dst)]>,
TB, Requires<[HasSSE2]>;
}
diff --git a/test/MC/X86/x86-32-coverage.s b/test/MC/X86/x86-32-coverage.s
index d2dd78d..bdc54a6 100644
--- a/test/MC/X86/x86-32-coverage.s
+++ b/test/MC/X86/x86-32-coverage.s
@@ -503,7 +503,7 @@
// CHECK: ud2
ud2
-// CHECK: movnti %ecx, 3735928559(%ebx,%ecx,8)
+// CHECK: movntil %ecx, 3735928559(%ebx,%ecx,8)
movnti %ecx,0xdeadbeef(%ebx,%ecx,8)
// CHECK: clflush 3735928559(%ebx,%ecx,8)
@@ -4505,23 +4505,23 @@
// CHECK: encoding: [0xdf,0xea]
fucomip %st(2),%st
-// CHECK: movnti %ecx, 3735928559(%ebx,%ecx,8)
+// CHECK: movntil %ecx, 3735928559(%ebx,%ecx,8)
// CHECK: encoding: [0x0f,0xc3,0x8c,0xcb,0xef,0xbe,0xad,0xde]
movnti %ecx,0xdeadbeef(%ebx,%ecx,8)
-// CHECK: movnti %ecx, 69
+// CHECK: movntil %ecx, 69
// CHECK: encoding: [0x0f,0xc3,0x0d,0x45,0x00,0x00,0x00]
movnti %ecx,0x45
-// CHECK: movnti %ecx, 32493
+// CHECK: movntil %ecx, 32493
// CHECK: encoding: [0x0f,0xc3,0x0d,0xed,0x7e,0x00,0x00]
movnti %ecx,0x7eed
-// CHECK: movnti %ecx, 3133065982
+// CHECK: movntil %ecx, 3133065982
// CHECK: encoding: [0x0f,0xc3,0x0d,0xfe,0xca,0xbe,0xba]
movnti %ecx,0xbabecafe
-// CHECK: movnti %ecx, 305419896
+// CHECK: movntil %ecx, 305419896
// CHECK: encoding: [0x0f,0xc3,0x0d,0x78,0x56,0x34,0x12]
movnti %ecx,0x12345678
@@ -14177,19 +14177,19 @@
// CHECK: fucompi %st(2)
fucomip %st(2),%st
-// CHECK: movnti %ecx, 3735928559(%ebx,%ecx,8)
+// CHECK: movntil %ecx, 3735928559(%ebx,%ecx,8)
movnti %ecx,0xdeadbeef(%ebx,%ecx,8)
-// CHECK: movnti %ecx, 69
- movnti %ecx,0x45
+// CHECK: movntil %ecx, 69
+ movntil %ecx,0x45
-// CHECK: movnti %ecx, 32493
+// CHECK: movntil %ecx, 32493
movnti %ecx,0x7eed
-// CHECK: movnti %ecx, 3133065982
+// CHECK: movntil %ecx, 3133065982
movnti %ecx,0xbabecafe
-// CHECK: movnti %ecx, 305419896
+// CHECK: movntil %ecx, 305419896
movnti %ecx,0x12345678
// CHECK: clflush 3735928559(%ebx,%ecx,8)
diff --git a/test/MC/X86/x86-64.s b/test/MC/X86/x86-64.s
index 472748f..5074a1d 100644
--- a/test/MC/X86/x86-64.s
+++ b/test/MC/X86/x86-64.s
@@ -1136,3 +1136,15 @@ xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1]
// CHECK: movd %rdi, %xmm0
// CHECK: encoding: [0x66,0x48,0x0f,0x6e,0xc7]
movd %rdi,%xmm0
+
+// CHECK: movntil %eax, (%rdi)
+// CHECK: encoding: [0x0f,0xc3,0x07]
+// CHECK: movntil
+movntil %eax, (%rdi)
+movnti %eax, (%rdi)
+
+// CHECK: movntiq %rax, (%rdi)
+// CHECK: encoding: [0x48,0x0f,0xc3,0x07]
+// CHECK: movntiq
+movntiq %rax, (%rdi)
+movnti %rax, (%rdi)