From e86ea540b51a98c75a58863450a523c339ec4718 Mon Sep 17 00:00:00 2001 From: Alexis Engelke Date: Sun, 10 Jan 2021 12:08:47 +0100 Subject: [PATCH] instrs: Fixup register decoding for PEXTR* --- instrs.txt | 13 ++++++++----- tests/test_decode.c | 8 ++++---- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/instrs.txt b/instrs.txt index 592b2bd..52ac3b9 100644 --- a/instrs.txt +++ b/instrs.txt @@ -824,8 +824,10 @@ NP.0f38f9/m MR MEM GP - - MOVDIRI 66.0f3a0d RMI XMM XMM IMM8 - SSE_BLENDPD 66.0f3a0e RMI XMM XMM IMM8 - SSE_PBLENDW 66.0f3a0f RMI XMM XMM IMM8 - SSE_PALIGNR -66.0f3a14 MRI GP8 XMM IMM8 - SSE_PEXTRB -66.0f3a15 MRI GP16 XMM IMM8 - SSE_PEXTRW +66.0f3a14/m MRI GP8 XMM IMM8 - SSE_PEXTRB +66.0f3a14/r MRI GP32 XMM IMM8 - SSE_PEXTRB +66.0f3a15/m MRI GP16 XMM IMM8 - SSE_PEXTRW +66.0f3a15/r MRI GP32 XMM IMM8 - SSE_PEXTRW 66.W0.0f3a16 MRI GP32 XMM IMM8 - SSE_PEXTRD 66.W1.0f3a16 MRI GP64 XMM IMM8 - SSE_PEXTRQ 66.0f3a17 MRI GP32 XMM IMM8 - SSE_EXTRACTPS @@ -1216,9 +1218,10 @@ VEX.66.0f3a0c RVMI XMM XMM XMM IMM8 VBLENDPS VEX.66.0f3a0d RVMI XMM XMM XMM IMM8 VBLENDPD VEX.66.0f3a0e RVMI XMM XMM XMM IMM8 VPBLENDW VEX.66.0f3a0f RVMI XMM XMM XMM IMM8 VPALIGNR -VEX.66.WIG.L0.0f3a14 MRI GP8 XMM IMM8 - VPEXTRB ENC_NOSZ -# TODO: also WIG for PEXTRW? -VEX.66.WIG.L0.0f3a15 MRI GP16 XMM IMM8 - VPEXTRW ENC_NOSZ +VEX.66.WIG.L0.0f3a14/m MRI GP8 XMM IMM8 - VPEXTRB ENC_NOSZ +VEX.66.WIG.L0.0f3a14/r MRI GP32 XMM IMM8 - VPEXTRB ENC_NOSZ +VEX.66.WIG.L0.0f3a15/m MRI GP16 XMM IMM8 - VPEXTRW ENC_NOSZ +VEX.66.WIG.L0.0f3a15/r MRI GP32 XMM IMM8 - VPEXTRW ENC_NOSZ VEX.66.W0.L0.0f3a16 MRI GP XMM IMM8 - VPEXTRD ENC_NOSZ VEX.66.W1.L0.0f3a16 MRI GP XMM IMM8 - VPEXTRD ONLY32 ENC_NOSZ VEX.66.W1.L0.0f3a16 MRI GP XMM IMM8 - VPEXTRQ ONLY64 ENC_NOSZ diff --git a/tests/test_decode.c b/tests/test_decode.c index b15addd..9cb2f49 100644 --- a/tests/test_decode.c +++ b/tests/test_decode.c @@ -334,10 +334,10 @@ main(int argc, char** argv) TEST32("\xc4\xe1\xf2\x2a\xc0", "vcvtsi2ss xmm0, xmm1, eax"); TEST64("\xc4\xe1\xf2\x2a\xc0", "vcvtsi2ss xmm0, xmm1, rax"); - TEST("\xc4\xe3\x79\x14\xc0\x00", "vpextrb al, xmm0, 0x0"); - TEST("\xc4\xe3\xf9\x14\xc0\x00", "vpextrb al, xmm0, 0x0"); - TEST("\xc4\xe3\x79\x15\xc0\x00", "vpextrw ax, xmm0, 0x0"); - TEST("\xc4\xe3\xf9\x15\xc0\x00", "vpextrw ax, xmm0, 0x0"); + TEST("\xc4\xe3\x79\x14\xc0\x00", "vpextrb eax, xmm0, 0x0"); + TEST("\xc4\xe3\xf9\x14\xc0\x00", "vpextrb eax, xmm0, 0x0"); + TEST("\xc4\xe3\x79\x15\xc0\x00", "vpextrw eax, xmm0, 0x0"); + TEST("\xc4\xe3\xf9\x15\xc0\x00", "vpextrw eax, xmm0, 0x0"); TEST32("\xc4\xe1\x79\xc5\xc0\x00", "vpextrw eax, xmm0, 0x0"); TEST64("\xc4\xe1\x79\xc5\xc0\x00", "vpextrw rax, xmm0, 0x0"); TEST("\xc4\xe3\x79\x16\xc0\x00", "vpextrd eax, xmm0, 0x0");