diff options
author | Craig Topper <craig.topper@intel.com> | 2017-10-23 15:53:21 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2017-10-23 15:53:21 +0000 |
commit | 8f182fdd8b881b441d0be51d38adfc5cd41e2588 (patch) | |
tree | dbc61a82ef2bd585beb0359694d886cf74383e18 | |
parent | 5f0339d2f3c236c9245ed6683600409d9d8bb8cd (diff) | |
download | bcm5719-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.td | 16 | ||||
-rw-r--r-- | llvm/test/MC/Disassembler/X86/x86-32.txt | 6 | ||||
-rw-r--r-- | llvm/test/MC/Disassembler/X86/x86-64.txt | 11 | ||||
-rw-r--r-- | llvm/test/MC/X86/x86-32.s | 8 | ||||
-rw-r--r-- | llvm/test/MC/X86/x86-64.s | 16 |
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 |