• Adrian Hunter's avatar
    x86/insn: Add some Intel instructions to the opcode map · b980be18
    Adrian Hunter authored
    Add to the opcode map the following instructions:
            cldemote
            tpause
            umonitor
            umwait
            movdiri
            movdir64b
            enqcmd
            enqcmds
            encls
            enclu
            enclv
            pconfig
            wbnoinvd
    
    For information about the instructions, refer Intel SDM May 2019
    (325462-070US) and Intel Architecture Instruction Set Extensions
    May 2019 (319433-037).
    
    The instruction decoding can be tested using the perf tools'
    "x86 instruction decoder - new instructions" test as folllows:
    
      $ perf test -v "new " 2>&1 | grep -i cldemote
      Decoded ok: 0f 1c 00                    cldemote (%eax)
      Decoded ok: 0f 1c 05 78 56 34 12        cldemote 0x12345678
      Decoded ok: 0f 1c 84 c8 78 56 34 12     cldemote 0x12345678(%eax,%ecx,8)
      Decoded ok: 0f 1c 00                    cldemote (%rax)
      Decoded ok: 41 0f 1c 00                 cldemote (%r8)
      Decoded ok: 0f 1c 04 25 78 56 34 12     cldemote 0x12345678
      Decoded ok: 0f 1c 84 c8 78 56 34 12     cldemote 0x12345678(%rax,%rcx,8)
      Decoded ok: 41 0f 1c 84 c8 78 56 34 12  cldemote 0x12345678(%r8,%rcx,8)
      $ perf test -v "new " 2>&1 | grep -i tpause
      Decoded ok: 66 0f ae f3                 tpause %ebx
      Decoded ok: 66 0f ae f3                 tpause %ebx
      Decoded ok: 66 41 0f ae f0              tpause %r8d
      $ perf test -v "new " 2>&1 | grep -i umonitor
      Decoded ok: 67 f3 0f ae f0              umonitor %ax
      Decoded ok: f3 0f ae f0                 umonitor %eax
      Decoded ok: 67 f3 0f ae f0              umonitor %eax
      Decoded ok: f3 0f ae f0                 umonitor %rax
      Decoded ok: 67 f3 41 0f ae f0           umonitor %r8d
      $ perf test -v "new " 2>&1 | grep -i umwait
      Decoded ok: f2 0f ae f0                 umwait %eax
      Decoded ok: f2 0f ae f0                 umwait %eax
      Decoded ok: f2 41 0f ae f0              umwait %r8d
      $ perf test -v "new " 2>&1 | grep -i movdiri
      Decoded ok: 0f 38 f9 03                 movdiri %eax,(%ebx)
      Decoded ok: 0f 38 f9 88 78 56 34 12     movdiri %ecx,0x12345678(%eax)
      Decoded ok: 48 0f 38 f9 03              movdiri %rax,(%rbx)
      Decoded ok: 48 0f 38 f9 88 78 56 34 12  movdiri %rcx,0x12345678(%rax)
      $ perf test -v "new " 2>&1 | grep -i movdir64b
      Decoded ok: 66 0f 38 f8 18              movdir64b (%eax),%ebx
      Decoded ok: 66 0f 38 f8 88 78 56 34 12  movdir64b 0x12345678(%eax),%ecx
      Decoded ok: 67 66 0f 38 f8 1c           movdir64b (%si),%bx
      Decoded ok: 67 66 0f 38 f8 8c 34 12     movdir64b 0x1234(%si),%cx
      Decoded ok: 66 0f 38 f8 18              movdir64b (%rax),%rbx
      Decoded ok: 66 0f 38 f8 88 78 56 34 12  movdir64b 0x12345678(%rax),%rcx
      Decoded ok: 67 66 0f 38 f8 18           movdir64b (%eax),%ebx
      Decoded ok: 67 66 0f 38 f8 88 78 56 34 12       movdir64b 0x12345678(%eax),%ecx
      $ perf test -v "new " 2>&1 | grep -i enqcmd
      Decoded ok: f2 0f 38 f8 18              enqcmd (%eax),%ebx
      Decoded ok: f2 0f 38 f8 88 78 56 34 12  enqcmd 0x12345678(%eax),%ecx
      Decoded ok: 67 f2 0f 38 f8 1c           enqcmd (%si),%bx
      Decoded ok: 67 f2 0f 38 f8 8c 34 12     enqcmd 0x1234(%si),%cx
      Decoded ok: f3 0f 38 f8 18              enqcmds (%eax),%ebx
      Decoded ok: f3 0f 38 f8 88 78 56 34 12  enqcmds 0x12345678(%eax),%ecx
      Decoded ok: 67 f3 0f 38 f8 1c           enqcmds (%si),%bx
      Decoded ok: 67 f3 0f 38 f8 8c 34 12     enqcmds 0x1234(%si),%cx
      Decoded ok: f2 0f 38 f8 18              enqcmd (%rax),%rbx
      Decoded ok: f2 0f 38 f8 88 78 56 34 12  enqcmd 0x12345678(%rax),%rcx
      Decoded ok: 67 f2 0f 38 f8 18           enqcmd (%eax),%ebx
      Decoded ok: 67 f2 0f 38 f8 88 78 56 34 12       enqcmd 0x12345678(%eax),%ecx
      Decoded ok: f3 0f 38 f8 18              enqcmds (%rax),%rbx
      Decoded ok: f3 0f 38 f8 88 78 56 34 12  enqcmds 0x12345678(%rax),%rcx
      Decoded ok: 67 f3 0f 38 f8 18           enqcmds (%eax),%ebx
      Decoded ok: 67 f3 0f 38 f8 88 78 56 34 12       enqcmds 0x12345678(%eax),%ecx
      $ perf test -v "new " 2>&1 | grep -i enqcmds
      Decoded ok: f3 0f 38 f8 18              enqcmds (%eax),%ebx
      Decoded ok: f3 0f 38 f8 88 78 56 34 12  enqcmds 0x12345678(%eax),%ecx
      Decoded ok: 67 f3 0f 38 f8 1c           enqcmds (%si),%bx
      Decoded ok: 67 f3 0f 38 f8 8c 34 12     enqcmds 0x1234(%si),%cx
      Decoded ok: f3 0f 38 f8 18              enqcmds (%rax),%rbx
      Decoded ok: f3 0f 38 f8 88 78 56 34 12  enqcmds 0x12345678(%rax),%rcx
      Decoded ok: 67 f3 0f 38 f8 18           enqcmds (%eax),%ebx
      Decoded ok: 67 f3 0f 38 f8 88 78 56 34 12       enqcmds 0x12345678(%eax),%ecx
      $ perf test -v "new " 2>&1 | grep -i encls
      Decoded ok: 0f 01 cf                    encls
      Decoded ok: 0f 01 cf                    encls
      $ perf test -v "new " 2>&1 | grep -i enclu
      Decoded ok: 0f 01 d7                    enclu
      Decoded ok: 0f 01 d7                    enclu
      $ perf test -v "new " 2>&1 | grep -i enclv
      Decoded ok: 0f 01 c0                    enclv
      Decoded ok: 0f 01 c0                    enclv
      $ perf test -v "new " 2>&1 | grep -i pconfig
      Decoded ok: 0f 01 c5                    pconfig
      Decoded ok: 0f 01 c5                    pconfig
      $ perf test -v "new " 2>&1 | grep -i wbnoinvd
      Decoded ok: f3 0f 09                    wbnoinvd
      Decoded ok: f3 0f 09                    wbnoinvd
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: default avatarAndi Kleen <ak@linux.intel.com>
    Acked-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: x86@kernel.org
    Link: http://lore.kernel.org/lkml/20191115135447.6519-3-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    b980be18
x86-opcode-map.txt 31.6 KB