summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2017-10-23 15:53:21 +0000
committerCraig Topper <craig.topper@intel.com>2017-10-23 15:53:21 +0000
commit8f182fdd8b881b441d0be51d38adfc5cd41e2588 (patch)
treedbc61a82ef2bd585beb0359694d886cf74383e18
parent5f0339d2f3c236c9245ed6683600409d9d8bb8cd (diff)
downloadbcm5719-llvm-8f182fdd8b881b441d0be51d38adfc5cd41e2588.tar.gz
bcm5719-llvm-8f182fdd8b881b441d0be51d38adfc5cd41e2588.zip
[X86] Add PTWRITE instruction for assembler and disassembler.
llvm-svn: 316333
-rw-r--r--llvm/lib/Target/X86/X86InstrSystem.td16
-rw-r--r--llvm/test/MC/Disassembler/X86/x86-32.txt6
-rw-r--r--llvm/test/MC/Disassembler/X86/x86-64.txt11
-rw-r--r--llvm/test/MC/X86/x86-32.s8
-rw-r--r--llvm/test/MC/X86/x86-64.s16
5 files changed, 55 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86InstrSystem.td b/llvm/lib/Target/X86/X86InstrSystem.td
index c95aa286152..2407ced9f9f 100644
--- a/llvm/lib/Target/X86/X86InstrSystem.td
+++ b/llvm/lib/Target/X86/X86InstrSystem.td
@@ -506,10 +506,10 @@ let Uses = [EDX, EAX] in {
let Predicates = [HasXSAVE] in {
def XSAVE : I<0xAE, MRM4m, (outs), (ins opaque512mem:$dst),
"xsave\t$dst",
- [(int_x86_xsave addr:$dst, EDX, EAX)]>, TB;
+ [(int_x86_xsave addr:$dst, EDX, EAX)]>, PS;
def XSAVE64 : RI<0xAE, MRM4m, (outs), (ins opaque512mem:$dst),
"xsave64\t$dst",
- [(int_x86_xsave64 addr:$dst, EDX, EAX)]>, TB, Requires<[In64BitMode]>;
+ [(int_x86_xsave64 addr:$dst, EDX, EAX)]>, PS, Requires<[In64BitMode]>;
def XRSTOR : I<0xAE, MRM5m, (outs), (ins opaque512mem:$dst),
"xrstor\t$dst",
[(int_x86_xrstor addr:$dst, EDX, EAX)]>, TB;
@@ -644,3 +644,15 @@ def RDPID32 : I<0xC7, MRM7r, (outs GR32:$src), (ins),
def RDPID64 : I<0xC7, MRM7r, (outs GR64:$src), (ins),
"rdpid\t$src", []>, XS,
Requires<[In64BitMode]>;
+
+//===----------------------------------------------------------------------===//
+// PTWRITE Instruction
+def PTWRITEm: I<0xAE, MRM4m, (outs), (ins i32mem:$dst),
+ "ptwrite{l}\t$dst", []>, XS;
+def PTWRITE64m : RI<0xAE, MRM4m, (outs), (ins i64mem:$dst),
+ "ptwrite{q}\t$dst", []>, XS, Requires<[In64BitMode]>;
+
+def PTWRITEr : I<0xAE, MRM4r, (outs), (ins GR32:$dst),
+ "ptwrite{l}\t$dst", []>, XS;
+def PTWRITE64r : RI<0xAE, MRM4r, (outs), (ins GR64:$dst),
+ "ptwrite{q}\t$dst", []>, XS, Requires<[In64BitMode]>;
diff --git a/llvm/test/MC/Disassembler/X86/x86-32.txt b/llvm/test/MC/Disassembler/X86/x86-32.txt
index b069de2fd51..4211721ec48 100644
--- a/llvm/test/MC/Disassembler/X86/x86-32.txt
+++ b/llvm/test/MC/Disassembler/X86/x86-32.txt
@@ -811,3 +811,9 @@
# CHECK: rdpid %eax
0xf3 0x0f 0xc7 0xf8
+
+# CHECK: ptwritel -559038737(%ebx,%ecx,8)
+0xf3 0x0f 0xae 0xa4 0xcb 0xef 0xbe 0xad 0xde
+
+# CHECK: ptwritel %eax
+0xf3 0x0f 0xae 0xe0
diff --git a/llvm/test/MC/Disassembler/X86/x86-64.txt b/llvm/test/MC/Disassembler/X86/x86-64.txt
index 93026680e2a..05ea82d1302 100644
--- a/llvm/test/MC/Disassembler/X86/x86-64.txt
+++ b/llvm/test/MC/Disassembler/X86/x86-64.txt
@@ -496,3 +496,14 @@
# CHECK: movw %bx, %cs:(%esi,%ebp)
0x2e 0x66 0x67 0x89 0x1c 0x2e
+# CHECK: ptwritel -559038737(%rbx,%rcx,8)
+0xf3 0x0f 0xae 0xa4 0xcb 0xef 0xbe 0xad 0xde
+
+# CHECK: ptwritel %eax
+0xf3 0x0f 0xae 0xe0
+
+# CHECK: ptwriteq -559038737(%rbx,%rcx,8)
+0xf3 0x48 0x0f 0xae 0xa4 0xcb 0xef 0xbe 0xad 0xde
+
+# CHECK: ptwriteq %rax
+0xf3 0x48 0x0f 0xae 0xe0
diff --git a/llvm/test/MC/X86/x86-32.s b/llvm/test/MC/X86/x86-32.s
index 80acbba6ce8..9171a07233b 100644
--- a/llvm/test/MC/X86/x86-32.s
+++ b/llvm/test/MC/X86/x86-32.s
@@ -1101,3 +1101,11 @@ data16 lgdt 4(%eax)
// CHECK: rdpid %eax
// CHECK: encoding: [0xf3,0x0f,0xc7,0xf8]
rdpid %eax
+
+// CHECK: ptwritel 3735928559(%ebx,%ecx,8)
+// CHECK: encoding: [0xf3,0x0f,0xae,0xa4,0xcb,0xef,0xbe,0xad,0xde]
+ptwritel 0xdeadbeef(%ebx,%ecx,8)
+
+// CHECK: ptwritel %eax
+// CHECK: encoding: [0xf3,0x0f,0xae,0xe0]
+ptwritel %eax
diff --git a/llvm/test/MC/X86/x86-64.s b/llvm/test/MC/X86/x86-64.s
index 96d775270b5..1afc3f5683a 100644
--- a/llvm/test/MC/X86/x86-64.s
+++ b/llvm/test/MC/X86/x86-64.s
@@ -1531,3 +1531,19 @@ nopq %rax
// CHECK: rdpid %rax
// CHECK: encoding: [0xf3,0x0f,0xc7,0xf8]
rdpid %rax
+
+// CHECK: ptwritel 3735928559(%rbx,%rcx,8)
+// CHECK: encoding: [0xf3,0x0f,0xae,0xa4,0xcb,0xef,0xbe,0xad,0xde]
+ptwritel 0xdeadbeef(%rbx,%rcx,8)
+
+// CHECK: ptwritel %eax
+// CHECK: encoding: [0xf3,0x0f,0xae,0xe0]
+ptwritel %eax
+
+// CHECK: ptwriteq 3735928559(%rbx,%rcx,8)
+// CHECK: encoding: [0xf3,0x48,0x0f,0xae,0xa4,0xcb,0xef,0xbe,0xad,0xde]
+ptwriteq 0xdeadbeef(%rbx,%rcx,8)
+
+// CHECK: ptwriteq %rax
+// CHECK: encoding: [0xf3,0x48,0x0f,0xae,0xe0]
+ptwriteq %rax
OpenPOWER on IntegriCloud