From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1386) id 52430384AB58; Fri, 3 May 2024 07:27:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 52430384AB58 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1714721261; bh=nbBBVRpPgB7CtuFcA9lGHcemgWk8nNabqLjkk2A3vG8=; h=From:To:Subject:Date:From; b=yeBdJ7EQvpMn207Bmzsxje9BBBVCZZdXiKjC2+sUvduXnbUJfgxgXVWILsNc+jq3x SRrZMiRnokoH8VKFO4uhwnoB/CgiDzDGVs0GUxxJUOR9ZedrCpXLBi0HRB2kpMisKj c4AQpCiAFFNXKIf7uNouKkXP/M0LJDj6tPxKbzms= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Jan Beulich To: binutils-cvs@sourceware.org Subject: [binutils-gdb] x86/APX: extend SSE2AVX coverage X-Act-Checkin: binutils-gdb X-Git-Author: Jan Beulich X-Git-Refname: refs/heads/master X-Git-Oldrev: d125c4bbce8398819df573754c2bf1224a15ec06 X-Git-Newrev: 24187fb9c0d06f8084dfbd138e0b8b40d28ea024 Message-Id: <20240503072741.52430384AB58@sourceware.org> Date: Fri, 3 May 2024 07:27:41 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D24187fb9c0d0= 6f8084dfbd138e0b8b40d28ea024 commit 24187fb9c0d06f8084dfbd138e0b8b40d28ea024 Author: Jan Beulich Date: Fri May 3 09:26:25 2024 +0200 x86/APX: extend SSE2AVX coverage =20 Legacy encoded SIMD insns are converted to AVX ones in that mode. When eGPR-s are in use, i.e. with APX, convert to AVX10 insns (where available; there are quite a few which can't be converted). =20 Note that LDDQU is represented as VMOVDQU32 (and the prior use of the sse3 template there needs dropping, to get the order right). =20 Note further that in a few cases, due to the use of templates, AVX512VL is used when AVX512F would suffice. Since AVX10 is the main reference, this shouldn't be too much of a problem. Diff: --- gas/config/tc-i386.c | 9 +- gas/doc/c-i386.texi | 4 +- gas/testsuite/gas/i386/sse2avx-apx.d | 261 ++++ gas/testsuite/gas/i386/sse2avx-apx.s | 320 +++++ gas/testsuite/gas/i386/x86-64-sse2avx.d | 10 + gas/testsuite/gas/i386/x86-64-sse2avx.s | 11 + gas/testsuite/gas/i386/x86-64.exp | 1 + opcodes/i386-opc.tbl | 504 +++++--- opcodes/i386-tbl.h | 2136 ++++++++++++++++++++++++---= ---- 9 files changed, 2600 insertions(+), 656 deletions(-) diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index b03746852d6..13da7a6e45b 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -4133,7 +4133,7 @@ build_evex_prefix (void) /* Check the REX.W bit and VEXW. */ if (i.tm.opcode_modifier.vexw =3D=3D VEXWIG) w =3D (evexwig =3D=3D evexw1 || (i.rex & REX_W)) ? 1 : 0; - else if (i.tm.opcode_modifier.vexw) + else if (i.tm.opcode_modifier.vexw && !(i.rex & REX_W)) w =3D i.tm.opcode_modifier.vexw =3D=3D VEXW1 ? 1 : 0; else w =3D (flag_code =3D=3D CODE_64BIT ? i.rex & REX_W : evexwig =3D=3D ev= exw1) ? 1 : 0; @@ -8281,7 +8281,12 @@ check_VecOperands (const insn_template *t) if ((is_cpu (t, CpuXOP) && t->operands =3D=3D 5) || (t->opcode_space =3D=3D SPACE_0F3A && (t->base_opcode | 3) =3D=3D 0x0b - && is_cpu (t, CpuAPX_F))) + && (is_cpu (t, CpuAPX_F) + || (t->opcode_modifier.sse2avx && t->opcode_modifier.evex + && (!t->opcode_modifier.vex + || (i.encoding !=3D encoding_default + && i.encoding !=3D encoding_vex + && i.encoding !=3D encoding_vex3)))))) { if (i.op[0].imms->X_op !=3D O_constant || !fits_in_imm4 (i.op[0].imms->X_add_number)) diff --git a/gas/doc/c-i386.texi b/gas/doc/c-i386.texi index 7254d56f8d0..36ba82506fe 100644 --- a/gas/doc/c-i386.texi +++ b/gas/doc/c-i386.texi @@ -312,7 +312,9 @@ when respective checks fail. @cindex @samp{-msse2avx} option, x86-64 @item -msse2avx This option specifies that the assembler should encode SSE instructions -with VEX prefix. +with VEX prefix, requiring AVX to be available. SSE instructions using +extended GPRs will be encoded with EVEX prefix, requiring AVX512 or AVX10 = to +be available. =20 @cindex @samp{-muse-unaligned-vector-move} option, i386 @cindex @samp{-muse-unaligned-vector-move} option, x86-64 diff --git a/gas/testsuite/gas/i386/sse2avx-apx.d b/gas/testsuite/gas/i386/= sse2avx-apx.d new file mode 100644 index 00000000000..edc31175c89 --- /dev/null +++ b/gas/testsuite/gas/i386/sse2avx-apx.d @@ -0,0 +1,261 @@ +#as: -msse2avx +#objdump: -dw +#name: x86-64 SSE+ with APX encoding + +.*: file format .* + +Disassembly of section .text: + +0+ : +[ ]*[a-f0-9]+: 62 f9 7c 08 5b 60 01 vcvtdq2ps 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 ff 08 e6 60 01 vcvtpd2dqx 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 fd 08 5a 60 01 vcvtpd2psx 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7d 08 5b 60 01 vcvtps2dq 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 fd 08 e6 60 01 vcvttpd2dqx 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7e 08 5b 60 01 vcvttps2dq 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7e 08 6f 60 01 vmovdqu32 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 fd 08 28 60 01 vmovapd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7c 08 28 60 01 vmovaps 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7d 08 6f 60 01 vmovdqa32 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7e 08 6f 60 01 vmovdqu32 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 2a 60 01 vmovntdqa 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7e 08 16 60 01 vmovshdup 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7e 08 12 60 01 vmovsldup 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 fd 08 10 60 01 vmovupd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7c 08 10 60 01 vmovups 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 1c 60 01 vpabsb 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 1d 60 01 vpabsw 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 1e 60 01 vpabsd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 4c 60 01 vrcp14ps 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 4e 60 01 vrsqrt14ps 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 fd 08 51 60 01 vsqrtpd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7c 08 51 60 01 vsqrtps 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 fd 08 29 60 01 vmovapd %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 7c 08 29 60 01 vmovaps %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 7d 08 7f 60 01 vmovdqa32 %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 7e 08 7f 60 01 vmovdqu32 %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 7d 08 e7 60 01 vmovntdq %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 fd 08 2b 60 01 vmovntpd %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 7c 08 2b 60 01 vmovntps %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 fd 08 11 60 01 vmovupd %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 7c 08 11 60 01 vmovups %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 cd 08 58 70 01 vaddpd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4c 08 58 70 01 vaddps 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 dc 70 01 vaesenc 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 dd 70 01 vaesenclast 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 de 70 01 vaesdec 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 df 70 01 vaesdeclast 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 55 70 01 vandnpd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4c 08 55 70 01 vandnps 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 54 70 01 vandpd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4c 08 54 70 01 vandps 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 5e 70 01 vdivpd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4c 08 5e 70 01 vdivps 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 cf 70 01 vgf2p8mulb 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 5f 70 01 vmaxpd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4c 08 5f 70 01 vmaxps 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 5d 70 01 vminpd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4c 08 5d 70 01 vminps 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 59 70 01 vmulpd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4c 08 59 70 01 vmulps 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 56 70 01 vorpd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4c 08 56 70 01 vorps 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 63 70 01 vpacksswb 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 6b 70 01 vpackssdw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 67 70 01 vpackuswb 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 2b 70 01 vpackusdw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 fc 70 01 vpaddb 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 fd 70 01 vpaddw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 fe 70 01 vpaddd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 d4 70 01 vpaddq 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 ec 70 01 vpaddsb 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 ed 70 01 vpaddsw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 dc 70 01 vpaddusb 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 dd 70 01 vpaddusw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 db 70 01 vpandd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 df 70 01 vpandnd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 e0 70 01 vpavgb 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 e3 70 01 vpavgw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fb 4d 08 44 70 01 00 vpclmullqlqdq 0x10\(%r16\),%xmm6,= %xmm6 +[ ]*[a-f0-9]+: 62 fb 4d 08 44 70 01 01 vpclmulhqlqdq 0x10\(%r16\),%xmm6,= %xmm6 +[ ]*[a-f0-9]+: 62 fb 4d 08 44 70 01 10 vpclmullqhqdq 0x10\(%r16\),%xmm6,= %xmm6 +[ ]*[a-f0-9]+: 62 fb 4d 08 44 70 01 11 vpclmulhqhqdq 0x10\(%r16\),%xmm6,= %xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 f5 70 01 vpmaddwd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 04 70 01 vpmaddubsw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 3c 70 01 vpmaxsb 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 ee 70 01 vpmaxsw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 3d 70 01 vpmaxsd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 de 70 01 vpmaxub 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 3e 70 01 vpmaxuw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 3f 70 01 vpmaxud 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 38 70 01 vpminsb 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 ea 70 01 vpminsw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 39 70 01 vpminsd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 da 70 01 vpminub 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 3a 70 01 vpminuw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 3b 70 01 vpminud 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa cd 08 28 70 01 vpmuldq 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 e4 70 01 vpmulhuw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 0b 70 01 vpmulhrsw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 e5 70 01 vpmulhw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 d5 70 01 vpmullw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 40 70 01 vpmulld 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 f4 70 01 vpmuludq 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 eb 70 01 vpord 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 f6 70 01 vpsadbw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 00 70 01 vpshufb 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 f1 70 01 vpsllw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 f2 70 01 vpslld 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 f3 70 01 vpsllq 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 e1 70 01 vpsraw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 e2 70 01 vpsrad 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 d1 70 01 vpsrlw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 d2 70 01 vpsrld 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 d3 70 01 vpsrlq 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 f8 70 01 vpsubb 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 f9 70 01 vpsubw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 fa 70 01 vpsubd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 fb 70 01 vpsubq 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 e8 70 01 vpsubsb 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 e9 70 01 vpsubsw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 d8 70 01 vpsubusb 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 d9 70 01 vpsubusw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 68 70 01 vpunpckhbw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 69 70 01 vpunpckhwd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 6a 70 01 vpunpckhdq 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 6d 70 01 vpunpckhqdq 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 60 70 01 vpunpcklbw 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 61 70 01 vpunpcklwd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 62 70 01 vpunpckldq 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 6c 70 01 vpunpcklqdq 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4d 08 ef 70 01 vpxord 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 5c 70 01 vsubpd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4c 08 5c 70 01 vsubps 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 15 70 01 vunpckhpd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4c 08 15 70 01 vunpckhps 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 14 70 01 vunpcklpd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4c 08 14 70 01 vunpcklps 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 57 70 01 vxorpd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4c 08 57 70 01 vxorps 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 7d 08 70 70 01 64 vpshufd \$0x64,0x10\(%r16\),%xmm6 +[ ]*[a-f0-9]+: 62 f9 7e 08 70 70 01 64 vpshufhw \$0x64,0x10\(%r16\),%xmm6 +[ ]*[a-f0-9]+: 62 f9 7f 08 70 70 01 64 vpshuflw \$0x64,0x10\(%r16\),%xmm6 +[ ]*[a-f0-9]+: 62 fb fd 08 09 70 01 04 vrndscalepd \$(0x)?4,0x10\(%r16\)= ,%xmm6 +[ ]*[a-f0-9]+: 62 fb 7d 08 08 70 01 04 vrndscaleps \$(0x)?4,0x10\(%r16\)= ,%xmm6 +[ ]*[a-f0-9]+: 62 fb cd 08 ce 70 01 64 vgf2p8affineqb \$0x64,0x10\(%r16\= ),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fb cd 08 cf 70 01 64 vgf2p8affineinvqb \$0x64,0x10\(%r= 16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fb 4d 08 0f 70 01 64 vpalignr \$0x64,0x10\(%r16\),%xmm= 6,%xmm6 +[ ]*[a-f0-9]+: 62 fb 4d 08 44 70 01 64 vpclmulqdq \$0x64,0x10\(%r16\),%x= mm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cd 08 c6 70 01 64 vshufpd \$0x64,0x10\(%r16\),%xmm6= ,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4c 08 c6 70 01 64 vshufps \$0x64,0x10\(%r16\),%xmm6= ,%xmm6 +[ ]*[a-f0-9]+: 62 f9 fd 08 2f 60 02 vcomisd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7e 08 e6 60 02 vcvtdq2pd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7e 08 e6 60 02 vcvtdq2pd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7c 08 5a 60 02 vcvtps2pd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 ff 08 12 60 02 vmovddup 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 ff 08 10 60 02 vmovsd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 20 60 02 vpmovsxbw 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 23 60 02 vpmovsxwd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 25 60 02 vpmovsxdq 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 30 60 02 vpmovzxbw 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 33 60 02 vpmovzxwd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 35 60 02 vpmovzxdq 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 fd 08 2e 60 02 vucomisd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 fd 08 13 60 02 vmovlpd %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 7c 08 13 60 02 vmovlps %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 fd 08 17 60 02 vmovhpd %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 7c 08 17 60 02 vmovhps %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 ff 08 11 60 02 vmovsd %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 dd 08 12 60 02 vmovlpd 0x10\(%r16\),%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 f9 5c 08 12 60 02 vmovlps 0x10\(%r16\),%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 f9 dd 08 16 60 02 vmovhpd 0x10\(%r16\),%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 f9 5c 08 16 60 02 vmovhps 0x10\(%r16\),%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 f9 fd 08 7e e0 vmovq %xmm4,%r16 +[ ]*[a-f0-9]+: 62 f9 fd 08 6e e0 vmovq %r16,%xmm4 +[ ]*[a-f0-9]+: 62 f9 fd 08 7e e0 vmovq %xmm4,%r16 +[ ]*[a-f0-9]+: 62 f9 fd 08 6e e0 vmovq %r16,%xmm4 +[ ]*[a-f0-9]+: 62 f9 fd 08 d6 60 02 vmovq %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 fe 08 7e 60 02 vmovq 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 e1 7f 08 2d c4 vcvtsd2si %xmm4,%r16d +[ ]*[a-f0-9]+: 62 f9 7f 08 2d 48 02 vcvtsd2si 0x10\(%r16\),%ecx +[ ]*[a-f0-9]+: 62 e1 7f 08 2c c4 vcvttsd2si %xmm4,%r16d +[ ]*[a-f0-9]+: 62 f9 7f 08 2c 48 02 vcvttsd2si 0x10\(%r16\),%ecx +[ ]*[a-f0-9]+: 62 e1 ff 08 2d c4 vcvtsd2si %xmm4,%r16 +[ ]*[a-f0-9]+: 62 f9 ff 08 2d 48 02 vcvtsd2si 0x10\(%r16\),%rcx +[ ]*[a-f0-9]+: 62 e1 ff 08 2c c4 vcvttsd2si %xmm4,%r16 +[ ]*[a-f0-9]+: 62 f9 ff 08 2c 48 02 vcvttsd2si 0x10\(%r16\),%rcx +[ ]*[a-f0-9]+: 62 f9 df 08 2a e0 vcvtsi2sd %r16,%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 f9 df 08 2a 60 02 vcvtsi2sdq 0x10\(%r16\),%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 f9 de 08 2a e0 vcvtsi2ss %r16,%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 f9 de 08 2a 60 02 vcvtsi2ssq 0x10\(%r16\),%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 fb dd 08 22 e0 64 vpinsrq \$0x64,%r16,%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 fb dd 08 22 60 02 64 vpinsrq \$0x64,0x10\(%r16\),%xmm4= ,%xmm4 +[ ]*[a-f0-9]+: 62 fb fd 08 16 e0 64 vpextrq \$0x64,%xmm4,%r16 +[ ]*[a-f0-9]+: 62 fb fd 08 16 60 02 64 vpextrq \$0x64,%xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 fb cd 08 0b 70 02 04 vrndscalesd \$(0x)?4,0x10\(%r16\)= ,%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cf 08 58 70 02 vaddsd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cf 08 5a 70 02 vcvtsd2ss 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cf 08 5e 70 02 vdivsd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cf 08 5f 70 02 vmaxsd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cf 08 5d 70 02 vminsd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cf 08 59 70 02 vmulsd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cf 08 51 70 02 vsqrtsd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 cf 08 5c 70 02 vsubsd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4e 08 58 70 04 vaddss 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4e 08 5a 70 04 vcvtss2sd 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4e 08 5e 70 04 vdivss 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4e 08 5f 70 04 vmaxss 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4e 08 5d 70 04 vminss 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4e 08 59 70 04 vmulss 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 4d 70 04 vrcp14ss 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 4d 08 4f 70 04 vrsqrt14ss 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4e 08 51 70 04 vsqrtss 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 4e 08 5c 70 04 vsubss 0x10\(%r16\),%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 f9 7c 08 2f 60 04 vcomiss 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7e 08 10 60 04 vmovss 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 21 60 04 vpmovsxbd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 24 60 04 vpmovsxwq 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 31 60 04 vpmovzxbd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 34 60 04 vpmovzxwq 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7c 08 2e 60 04 vucomiss 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 f9 7e 08 11 60 04 vmovss %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 7d 08 7e e0 vmovd %xmm4,%r16d +[ ]*[a-f0-9]+: 62 f9 7d 08 7e 60 04 vmovd %xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 7d 08 6e e0 vmovd %r16d,%xmm4 +[ ]*[a-f0-9]+: 62 f9 7d 08 6e 60 04 vmovd 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 e1 7e 08 2d c4 vcvtss2si %xmm4,%r16d +[ ]*[a-f0-9]+: 62 f9 7e 08 2d 48 04 vcvtss2si 0x10\(%r16\),%ecx +[ ]*[a-f0-9]+: 62 e1 7e 08 2c c4 vcvttss2si %xmm4,%r16d +[ ]*[a-f0-9]+: 62 f9 7e 08 2c 48 04 vcvttss2si 0x10\(%r16\),%ecx +[ ]*[a-f0-9]+: 62 e1 fe 08 2d c4 vcvtss2si %xmm4,%r16 +[ ]*[a-f0-9]+: 62 f9 fe 08 2d 48 04 vcvtss2si 0x10\(%r16\),%rcx +[ ]*[a-f0-9]+: 62 e1 fe 08 2c c4 vcvttss2si %xmm4,%r16 +[ ]*[a-f0-9]+: 62 f9 fe 08 2c 48 04 vcvttss2si 0x10\(%r16\),%rcx +[ ]*[a-f0-9]+: 62 fb fd 08 17 e0 64 vextractps \$0x64,%xmm4,%r16d +[ ]*[a-f0-9]+: 62 fb 7d 08 16 e0 64 vpextrd \$0x64,%xmm4,%r16d +[ ]*[a-f0-9]+: 62 fb 7d 08 16 60 04 64 vpextrd \$0x64,%xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 fb 7d 08 17 e0 64 vextractps \$0x64,%xmm4,%r16d +[ ]*[a-f0-9]+: 62 fb 7d 08 17 60 04 64 vextractps \$0x64,%xmm4,0x10\(%r1= 6\) +[ ]*[a-f0-9]+: 62 fb 5d 08 22 e0 64 vpinsrd \$0x64,%r16d,%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 fb 5d 08 22 60 04 64 vpinsrd \$0x64,0x10\(%r16\),%xmm4= ,%xmm4 +[ ]*[a-f0-9]+: 62 f9 5f 08 2a e0 vcvtsi2sd %r16d,%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 f9 5f 08 2a 60 04 vcvtsi2sdl 0x10\(%r16\),%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 f9 5e 08 2a e0 vcvtsi2ss %r16d,%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 f9 5e 08 2a 60 04 vcvtsi2ssl 0x10\(%r16\),%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 fb 4d 08 21 70 04 64 vinsertps \$0x64,0x10\(%r16\),%xm= m6,%xmm6 +[ ]*[a-f0-9]+: 62 fb 4d 08 0a 70 04 04 vrndscaless \$(0x)?4,0x10\(%r16\)= ,%xmm6,%xmm6 +[ ]*[a-f0-9]+: 62 fa 7d 08 22 60 08 vpmovsxbq 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 fa 7d 08 32 60 08 vpmovzxbq 0x10\(%r16\),%xmm4 +[ ]*[a-f0-9]+: 62 e1 7d 08 c5 c4 64 vpextrw \$0x64,%xmm4,%r16d +[ ]*[a-f0-9]+: 62 e1 7d 08 c5 c4 64 vpextrw \$0x64,%xmm4,%r16d +[ ]*[a-f0-9]+: 62 fb 7d 08 15 60 08 64 vpextrw \$0x64,%xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 f9 5d 08 c4 e0 64 vpinsrw \$0x64,%r16d,%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 f9 5d 08 c4 e0 64 vpinsrw \$0x64,%r16d,%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 f9 5d 08 c4 60 08 64 vpinsrw \$0x64,0x10\(%r16\),%xmm4= ,%xmm4 +[ ]*[a-f0-9]+: 62 fb 7d 08 14 e0 64 vpextrb \$0x64,%xmm4,%r16d +[ ]*[a-f0-9]+: 62 fb 7d 08 14 e0 64 vpextrb \$0x64,%xmm4,%r16d +[ ]*[a-f0-9]+: 62 fb 7d 08 14 60 10 64 vpextrb \$0x64,%xmm4,0x10\(%r16\) +[ ]*[a-f0-9]+: 62 fb 5d 08 20 e0 64 vpinsrb \$0x64,%r16d,%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 fb 5d 08 20 e0 64 vpinsrb \$0x64,%r16d,%xmm4,%xmm4 +[ ]*[a-f0-9]+: 62 fb 5d 08 20 60 10 64 vpinsrb \$0x64,0x10\(%r16\),%xmm4= ,%xmm4 +#pass diff --git a/gas/testsuite/gas/i386/sse2avx-apx.s b/gas/testsuite/gas/i386/= sse2avx-apx.s new file mode 100644 index 00000000000..f248ae9031f --- /dev/null +++ b/gas/testsuite/gas/i386/sse2avx-apx.s @@ -0,0 +1,320 @@ + .text + .sse_check warning +sse2avx: + +# Tests for op mem128, xmm + cvtdq2ps 16(%r16),%xmm4 + cvtpd2dq 16(%r16),%xmm4 + cvtpd2ps 16(%r16),%xmm4 + cvtps2dq 16(%r16),%xmm4 + cvttpd2dq 16(%r16),%xmm4 + cvttps2dq 16(%r16),%xmm4 + lddqu 16(%r16),%xmm4 + movapd 16(%r16),%xmm4 + movaps 16(%r16),%xmm4 + movdqa 16(%r16),%xmm4 + movdqu 16(%r16),%xmm4 + movntdqa 16(%r16),%xmm4 + movshdup 16(%r16),%xmm4 + movsldup 16(%r16),%xmm4 + movupd 16(%r16),%xmm4 + movups 16(%r16),%xmm4 + pabsb 16(%r16),%xmm4 + pabsw 16(%r16),%xmm4 + pabsd 16(%r16),%xmm4 + rcpps 16(%r16),%xmm4 + rsqrtps 16(%r16),%xmm4 + sqrtpd 16(%r16),%xmm4 + sqrtps 16(%r16),%xmm4 + +# Tests for op xmm, mem128 + movapd %xmm4,16(%r16) + movaps %xmm4,16(%r16) + movdqa %xmm4,16(%r16) + movdqu %xmm4,16(%r16) + movntdq %xmm4,16(%r16) + movntpd %xmm4,16(%r16) + movntps %xmm4,16(%r16) + movupd %xmm4,16(%r16) + movups %xmm4,16(%r16) + +# Tests for op mem128, xmm[, xmm] + addpd 16(%r16),%xmm6 + addps 16(%r16),%xmm6 + aesenc 16(%r16),%xmm6 + aesenclast 16(%r16),%xmm6 + aesdec 16(%r16),%xmm6 + aesdeclast 16(%r16),%xmm6 + andnpd 16(%r16),%xmm6 + andnps 16(%r16),%xmm6 + andpd 16(%r16),%xmm6 + andps 16(%r16),%xmm6 + divpd 16(%r16),%xmm6 + divps 16(%r16),%xmm6 + gf2p8mulb 16(%r16),%xmm6 + maxpd 16(%r16),%xmm6 + maxps 16(%r16),%xmm6 + minpd 16(%r16),%xmm6 + minps 16(%r16),%xmm6 + mulpd 16(%r16),%xmm6 + mulps 16(%r16),%xmm6 + orpd 16(%r16),%xmm6 + orps 16(%r16),%xmm6 + packsswb 16(%r16),%xmm6 + packssdw 16(%r16),%xmm6 + packuswb 16(%r16),%xmm6 + packusdw 16(%r16),%xmm6 + paddb 16(%r16),%xmm6 + paddw 16(%r16),%xmm6 + paddd 16(%r16),%xmm6 + paddq 16(%r16),%xmm6 + paddsb 16(%r16),%xmm6 + paddsw 16(%r16),%xmm6 + paddusb 16(%r16),%xmm6 + paddusw 16(%r16),%xmm6 + pand 16(%r16),%xmm6 + pandn 16(%r16),%xmm6 + pavgb 16(%r16),%xmm6 + pavgw 16(%r16),%xmm6 + pclmullqlqdq 16(%r16),%xmm6 + pclmulhqlqdq 16(%r16),%xmm6 + pclmullqhqdq 16(%r16),%xmm6 + pclmulhqhqdq 16(%r16),%xmm6 + pmaddwd 16(%r16),%xmm6 + pmaddubsw 16(%r16),%xmm6 + pmaxsb 16(%r16),%xmm6 + pmaxsw 16(%r16),%xmm6 + pmaxsd 16(%r16),%xmm6 + pmaxub 16(%r16),%xmm6 + pmaxuw 16(%r16),%xmm6 + pmaxud 16(%r16),%xmm6 + pminsb 16(%r16),%xmm6 + pminsw 16(%r16),%xmm6 + pminsd 16(%r16),%xmm6 + pminub 16(%r16),%xmm6 + pminuw 16(%r16),%xmm6 + pminud 16(%r16),%xmm6 + pmuldq 16(%r16),%xmm6 + pmulhuw 16(%r16),%xmm6 + pmulhrsw 16(%r16),%xmm6 + pmulhw 16(%r16),%xmm6 + pmullw 16(%r16),%xmm6 + pmulld 16(%r16),%xmm6 + pmuludq 16(%r16),%xmm6 + por 16(%r16),%xmm6 + psadbw 16(%r16),%xmm6 + pshufb 16(%r16),%xmm6 + psllw 16(%r16),%xmm6 + pslld 16(%r16),%xmm6 + psllq 16(%r16),%xmm6 + psraw 16(%r16),%xmm6 + psrad 16(%r16),%xmm6 + psrlw 16(%r16),%xmm6 + psrld 16(%r16),%xmm6 + psrlq 16(%r16),%xmm6 + psubb 16(%r16),%xmm6 + psubw 16(%r16),%xmm6 + psubd 16(%r16),%xmm6 + psubq 16(%r16),%xmm6 + psubsb 16(%r16),%xmm6 + psubsw 16(%r16),%xmm6 + psubusb 16(%r16),%xmm6 + psubusw 16(%r16),%xmm6 + punpckhbw 16(%r16),%xmm6 + punpckhwd 16(%r16),%xmm6 + punpckhdq 16(%r16),%xmm6 + punpckhqdq 16(%r16),%xmm6 + punpcklbw 16(%r16),%xmm6 + punpcklwd 16(%r16),%xmm6 + punpckldq 16(%r16),%xmm6 + punpcklqdq 16(%r16),%xmm6 + pxor 16(%r16),%xmm6 + subpd 16(%r16),%xmm6 + subps 16(%r16),%xmm6 + unpckhpd 16(%r16),%xmm6 + unpckhps 16(%r16),%xmm6 + unpcklpd 16(%r16),%xmm6 + unpcklps 16(%r16),%xmm6 + xorpd 16(%r16),%xmm6 + xorps 16(%r16),%xmm6 + +# Tests for op imm8, mem128, xmm + pshufd $100,16(%r16),%xmm6 + pshufhw $100,16(%r16),%xmm6 + pshuflw $100,16(%r16),%xmm6 + roundpd $4,16(%r16),%xmm6 + roundps $4,16(%r16),%xmm6 + +# Tests for op imm8, mem128, xmm[, xmm] + gf2p8affineqb $100,16(%r16),%xmm6 + gf2p8affineinvqb $100,16(%r16),%xmm6 + palignr $100,16(%r16),%xmm6 + pclmulqdq $100,16(%r16),%xmm6 + shufpd $100,16(%r16),%xmm6 + shufps $100,16(%r16),%xmm6 + +# Tests for op mem64, xmm + comisd 16(%r16),%xmm4 + cvtdq2pd 16(%r16),%xmm4 + cvtpi2pd 16(%r16),%xmm4 + cvtps2pd 16(%r16),%xmm4 + movddup 16(%r16),%xmm4 + movsd 16(%r16),%xmm4 + pmovsxbw 16(%r16),%xmm4 + pmovsxwd 16(%r16),%xmm4 + pmovsxdq 16(%r16),%xmm4 + pmovzxbw 16(%r16),%xmm4 + pmovzxwd 16(%r16),%xmm4 + pmovzxdq 16(%r16),%xmm4 + ucomisd 16(%r16),%xmm4 + +# Tests for op xmm, mem64 + movlpd %xmm4,16(%r16) + movlps %xmm4,16(%r16) + movhpd %xmm4,16(%r16) + movhps %xmm4,16(%r16) + movsd %xmm4,16(%r16) + +# Tests for op mem64, xmm[, xmm] + movlpd 16(%r16),%xmm4 + movlps 16(%r16),%xmm4 + movhpd 16(%r16),%xmm4 + movhps 16(%r16),%xmm4 + +# Tests for op xmm, regq/mem64 +# Tests for op regq/mem64, xmm + movd %xmm4,%r16 + movd %r16,%xmm4 + movq %xmm4,%r16 + movq %r16,%xmm4 + movq %xmm4,16(%r16) + movq 16(%r16),%xmm4 + +# Tests for op xmm/mem64, regl + cvtsd2si %xmm4,%r16d + cvtsd2si 16(%r16),%ecx + cvttsd2si %xmm4,%r16d + cvttsd2si 16(%r16),%ecx + +# Tests for op xmm/mem64, regq + cvtsd2si %xmm4,%r16 + cvtsd2si 16(%r16),%rcx + cvttsd2si %xmm4,%r16 + cvttsd2si 16(%r16),%rcx + +# Tests for op regq/mem64, xmm[, xmm] + cvtsi2sdq %r16,%xmm4 + cvtsi2sdq 16(%r16),%xmm4 + cvtsi2ssq %r16,%xmm4 + cvtsi2ssq 16(%r16),%xmm4 + +# Tests for op imm8, regq/mem64, xmm[, xmm] + pinsrq $100,%r16,%xmm4 + pinsrq $100,16(%r16),%xmm4 + +# Tests for op imm8, xmm, regq/mem64 + pextrq $100,%xmm4,%r16 + pextrq $100,%xmm4,16(%r16) + +# Tests for op imm8, mem64, xmm[, xmm] + roundsd $4,16(%r16),%xmm6 + +# Tests for op mem64, xmm[, xmm] + addsd 16(%r16),%xmm6 + cvtsd2ss 16(%r16),%xmm6 + divsd 16(%r16),%xmm6 + maxsd 16(%r16),%xmm6 + minsd 16(%r16),%xmm6 + mulsd 16(%r16),%xmm6 + sqrtsd 16(%r16),%xmm6 + subsd 16(%r16),%xmm6 + +# Tests for op mem32, xmm[, xmm] + addss 16(%r16),%xmm6 + cvtss2sd 16(%r16),%xmm6 + divss 16(%r16),%xmm6 + maxss 16(%r16),%xmm6 + minss 16(%r16),%xmm6 + mulss 16(%r16),%xmm6 + rcpss 16(%r16),%xmm6 + rsqrtss 16(%r16),%xmm6 + sqrtss 16(%r16),%xmm6 + subss 16(%r16),%xmm6 + +# Tests for op mem32, xmm + comiss 16(%r16),%xmm4 + movss 16(%r16),%xmm4 + pmovsxbd 16(%r16),%xmm4 + pmovsxwq 16(%r16),%xmm4 + pmovzxbd 16(%r16),%xmm4 + pmovzxwq 16(%r16),%xmm4 + ucomiss 16(%r16),%xmm4 + +# Tests for op xmm, mem32 + movss %xmm4,16(%r16) + +# Tests for op xmm, regl/mem32 +# Tests for op regl/mem32, xmm + movd %xmm4,%r16d + movd %xmm4,16(%r16) + movd %r16d,%xmm4 + movd 16(%r16),%xmm4 + +# Tests for op xmm/mem32, regl + cvtss2si %xmm4,%r16d + cvtss2si 16(%r16),%ecx + cvttss2si %xmm4,%r16d + cvttss2si 16(%r16),%ecx + +# Tests for op xmm/mem32, regq + cvtss2si %xmm4,%r16 + cvtss2si 16(%r16),%rcx + cvttss2si %xmm4,%r16 + cvttss2si 16(%r16),%rcx + +# Tests for op imm8, xmm, regq/mem32 + extractps $100,%xmm4,%r16 + +# Tests for op imm8, xmm, regl/mem32 + pextrd $100,%xmm4,%r16d + pextrd $100,%xmm4,16(%r16) + extractps $100,%xmm4,%r16d + extractps $100,%xmm4,16(%r16) + +# Tests for op imm8, regl/mem32, xmm[, xmm] + pinsrd $100,%r16d,%xmm4 + pinsrd $100,16(%r16),%xmm4 + +# Tests for op regl/mem32, xmm[, xmm] + cvtsi2sd %r16d,%xmm4 + cvtsi2sd 16(%r16),%xmm4 + cvtsi2ss %r16d,%xmm4 + cvtsi2ss 16(%r16),%xmm4 + +# Tests for op imm8, mem32, xmm[, xmm] + insertps $100,16(%r16),%xmm6 + roundss $4,16(%r16),%xmm6 + +# Tests for op mem16, xmm + pmovsxbq 16(%r16),%xmm4 + pmovzxbq 16(%r16),%xmm4 + +# Tests for op imm8, xmm, regl/mem16 + pextrw $100,%xmm4,%r16d + pextrw $100,%xmm4,%r16 + pextrw $100,%xmm4,16(%r16) + +# Tests for op imm8, regl/mem16, xmm[, xmm] + pinsrw $100,%r16d,%xmm4 + pinsrw $100,%r16,%xmm4 + pinsrw $100,16(%r16),%xmm4 + +# Tests for op imm8, xmm, regl/mem8 + pextrb $100,%xmm4,%r16d + pextrb $100,%xmm4,%r16 + pextrb $100,%xmm4,16(%r16) + +# Tests for op imm8, regl/mem8, xmm[, xmm] + pinsrb $100,%r16d,%xmm4 + pinsrb $100,%r16,%xmm4 + pinsrb $100,16(%r16),%xmm4 diff --git a/gas/testsuite/gas/i386/x86-64-sse2avx.d b/gas/testsuite/gas/i3= 86/x86-64-sse2avx.d index dbbba4fc8d0..a652ef602c2 100644 --- a/gas/testsuite/gas/i386/x86-64-sse2avx.d +++ b/gas/testsuite/gas/i386/x86-64-sse2avx.d @@ -746,9 +746,19 @@ Disassembly of section .text: [ ]*[a-f0-9]+: c5 79 7e c8 vmovd %xmm9,%eax [ ]*[a-f0-9]+: c4 a1 79 7e c8 vmovd %xmm1,%eax [ ]*[a-f0-9]+: c4 e1 f9 7e c8 vmovq %xmm1,%rax +[ ]*[a-f0-9]+: 62 f1 7d 08 7e c8 \{evex\} vmovd %xmm1,%eax [ ]*[a-f0-9]+: c5 f9 7e c8 vmovd %xmm1,%eax [ ]*[a-f0-9]+: c5 f9 7e c8 vmovd %xmm1,%eax [ ]*[a-f0-9]+: c4 e1 79 7e c8 vmovd %xmm1,%eax +[ ]*[a-f0-9]+: 62 f9 7d 08 7e c8 vmovd %xmm1,%r16d +[ ]*[a-f0-9]+: 62 f9 7d 08 7e c8 vmovd %xmm1,%r16d +[ ]*[a-f0-9]+: 62 d9 7d 08 7e c8 vmovd %xmm1,%r24d +[ ]*[a-f0-9]+: 62 79 7d 08 7e c8 vmovd %xmm9,%r16d +[ ]*[a-f0-9]+: 62 b9 7d 08 7e c8 vmovd %xmm1,%r16d +[ ]*[a-f0-9]+: 62 f9 fd 08 7e c8 vmovq %xmm1,%r16 +[ ]*[a-f0-9]+: 62 f9 7d 08 7e c8 vmovd %xmm1,%r16d +[ ]*[a-f0-9]+: 62 f9 7d 08 7e c8 vmovd %xmm1,%r16d +[ ]*[a-f0-9]+: 62 f9 7d 08 7e c8 vmovd %xmm1,%r16d [ ]*[a-f0-9]+: c5 f8 ae 11 vldmxcsr \(%rcx\) [ ]*[a-f0-9]+: c5 f8 ae 19 vstmxcsr \(%rcx\) [ ]*[a-f0-9]+: c5 f8 5b f4 vcvtdq2ps %xmm4,%xmm6 diff --git a/gas/testsuite/gas/i386/x86-64-sse2avx.s b/gas/testsuite/gas/i3= 86/x86-64-sse2avx.s index 8b37a60dacb..4de8118ae8b 100644 --- a/gas/testsuite/gas/i386/x86-64-sse2avx.s +++ b/gas/testsuite/gas/i386/x86-64-sse2avx.s @@ -847,10 +847,21 @@ _start: rex.r movd %xmm1, %eax rex.x movd %xmm1, %eax rex.w movd %xmm1, %eax + {evex} movd %xmm1, %eax {rex} movd %xmm1, %eax {rex2} movd %xmm1, %eax {vex3} movd %xmm1, %eax =20 + movd %xmm1, %r16d + rex movd %xmm1, %r16d + rex.b movd %xmm1, %r16d + rex.r movd %xmm1, %r16d + rex.x movd %xmm1, %r16d + rex.w movd %xmm1, %r16d + {evex} movd %xmm1, %r16d + {rex} movd %xmm1, %r16d + {rex2} movd %xmm1, %r16d + .intel_syntax noprefix # Tests for op mem64 ldmxcsr DWORD PTR [rcx] diff --git a/gas/testsuite/gas/i386/x86-64.exp b/gas/testsuite/gas/i386/x86= -64.exp index e5e469cfd46..627626a794e 100644 --- a/gas/testsuite/gas/i386/x86-64.exp +++ b/gas/testsuite/gas/i386/x86-64.exp @@ -390,6 +390,7 @@ run_dump_test "x86-64-apx-jmpabs-inval" run_dump_test "x86-64-apx-nf" run_dump_test "x86-64-apx-nf-intel" run_dump_test "x86-64-apx_f-evex" +run_dump_test "sse2avx-apx" run_dump_test "x86-64-avx512f-rcigrz-intel" run_dump_test "x86-64-avx512f-rcigrz" run_dump_test "x86-64-clwb" diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl index 7d248f64bbd..e866d7759ad 100644 --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -1004,10 +1004,40 @@ pause, 0xf390, i186, NoSuf, {} $avx:AVX:66:Vex128|VexVVVV|VexW0|SSE2AVX:RegXMM:Xmmword, + $sse:SSE2:66::RegXMM:Xmmword, + $mmx:MMX:::RegMMX:Qword> +// As above, but also allowing AVX512 (EVEX) encoding, to transform +// in particular insns using eGPR-s. + + + =20 + + + =20 , 0x0f6b, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } -packsswb, 0x0f63, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } -packuswb, 0x0f67, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } -padd, 0x0ffc | , , Modrm||C|N= oSuf, { ||Unspecified|BaseIndex, } -paddd, 0x0ffe, , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, } -paddq, 0x660fd4, , Modrm|||C|NoSuf, = { RegXMM|Unspecified|BaseIndex, RegXMM } +packssdw, 0x0f6b, , Modrm||NoSuf,= { ||Unspecified|BaseIndex, } +packsswb, 0x0f63, , Modrm||NoSuf,= { ||Unspecified|BaseIndex, } +packuswb, 0x0f67, , Modrm||NoSuf,= { ||Unspecified|BaseIndex, } +padd, 0x0ffc | , , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, } +paddd, 0x0ffe, , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, } +paddq, 0x660fd4, , Modrm|||C|NoS= uf, { RegXMM|Unspecified|BaseIndex, RegXMM } paddq, 0xfd4, SSE2, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegMMX, Reg= MMX } -padds, 0x0fec | , , Modrm||C|= NoSuf, { ||Unspecified|BaseIndex, } -paddus, 0x0fdc | , , Modrm||C= |NoSuf, { ||Unspecified|BaseIndex, } -pand, 0x0fdb, , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, } -pandn, 0x0fdf, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } +padds, 0x0fec | , , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, = } +paddus, 0x0fdc | , , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, } +pand, 0x0fdb, , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, } +pandn, 0x0fdf, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } pcmpeq, 0x0f74 | , , Modrm||C= |NoSuf, { ||Unspecified|BaseIndex, } pcmpeqd, 0x0f76, , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, } pcmpgt, 0x0f64 | , , Modrm||N= oSuf|Optimize, { ||Unspecified|BaseIndex, } pcmpgtd, 0x0f66, , Modrm||NoSuf|Optimize,= { ||Unspecified|BaseIndex, } -pmaddwd, 0x0ff5, , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, } -pmulhw, 0x0fe5, , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, } -pmullw, 0x0fd5, , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, } -por, 0x0feb, , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, } -psllw, 0x0ff1, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } -psllw, 0x0f71/6, , Modrm||NoSuf, { Imm8, = } -psll, 0x0ff2 | , , Modrm||NoS= uf, { ||Unspecified|BaseIndex, } -psll, 0x0f72 | /6, , Modrm||N= oSuf, { Imm8, } -psraw, 0x0fe1, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } -psraw, 0x0f71/4, , Modrm||NoSuf, { Imm8, = } -psrad, 0x0fe2, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } -psrad, 0x0f72/4, , Modrm||NoSuf, { Imm8, = } -psrlw, 0x0fd1, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } -psrlw, 0x0f71/2, , Modrm||NoSuf, { Imm8, = } -psrl, 0x0fd2 | , , Modrm||NoS= uf, { ||Unspecified|BaseIndex, } -psrl, 0x0f72 | /2, , Modrm||N= oSuf, { Imm8, } -psub, 0x0ff8 | , , Modrm||NoS= uf, { ||Unspecified|BaseIndex, } -psubd, 0x0ffa, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } -psubq, 0x660ffb, , Modrm|||NoSuf, { = RegXMM|Unspecified|BaseIndex, RegXMM } +pmaddwd, 0x0ff5, , Modrm||C|NoSuf= , { ||Unspecified|BaseIndex, } +pmulhw, 0x0fe5, , Modrm||C|NoSuf,= { ||Unspecified|BaseIndex, } +pmullw, 0x0fd5, , Modrm||C|NoSuf,= { ||Unspecified|BaseIndex, } +por, 0x0feb, , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, } +psllw, 0x0ff1, , Modrm||NoSuf, { = ||Unspecified|BaseIndex, } +psllw, 0x0f71/6, , Modrm||NoSuf, = { Imm8, } +psll, 0x0ff2 | , , Modrm||NoSuf, { ||Unspecified|BaseIndex, } +psll, 0x0f72 | /6, , Modrm||NoSuf, { Imm8, } +psraw, 0x0fe1, , Modrm||NoSuf, { = ||Unspecified|BaseIndex, } +psraw, 0x0f71/4, , Modrm||NoSuf, = { Imm8, } +psrad, 0x0fe2, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } +psrad, 0x0f72/4, , Modrm||NoSuf, { Imm8, = } +psrlw, 0x0fd1, , Modrm||NoSuf, { = ||Unspecified|BaseIndex, } +psrlw, 0x0f71/2, , Modrm||NoSuf, = { Imm8, } +psrl, 0x0fd2 | , , Modrm||NoSuf, { ||Unspecified|BaseIndex, } +psrl, 0x0f72 | /2, , Modrm||NoSuf, { Imm8, } +psub, 0x0ff8 | , , Modrm||NoSuf, { ||Unspecified|BaseIndex, } +psubd, 0x0ffa, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } +psubq, 0x660ffb, , Modrm|||NoSuf= , { RegXMM|Unspecified|BaseIndex, RegXMM } psubq, 0xffb, SSE2, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegMMX, Reg= MMX } -psubs, 0x0fe8 | , , Modrm||No= Suf, { ||Unspecified|BaseIndex, } -psubus, 0x0fd8 | , , Modrm||N= oSuf, { ||Unspecified|BaseIndex, } -punpckhbw, 0x0f68, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } -punpckhwd, 0x0f69, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } -punpckhdq, 0x0f6a, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } -punpcklbw, 0x660f60, , Modrm|||NoSuf= , { RegXMM|Unspecified|BaseIndex, RegXMM } +psubs, 0x0fe8 | , , Modrm||NoSuf, { ||Unspecified|BaseIndex, } +psubus, 0x0fd8 | , , Modrm||NoSuf, { ||Unspecified|BaseIndex, } +punpckhbw, 0x0f68, , Modrm||NoSuf= , { ||Unspecified|BaseIndex, } +punpckhwd, 0x0f69, , Modrm||NoSuf= , { ||Unspecified|BaseIndex, } +punpckhdq, 0x0f6a, , Modrm||NoSuf, { ||Unspecified|BaseIndex, } +punpcklbw, 0x660f60, , Modrm|||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } punpcklbw, 0xf60, MMX, Modrm|NoSuf, { Dword|Unspecified|BaseIndex|RegMMX, = RegMMX } -punpcklwd, 0x660f61, , Modrm|||NoSuf= , { RegXMM|Unspecified|BaseIndex, RegXMM } +punpcklwd, 0x660f61, , Modrm|||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } punpcklwd, 0xf61, MMX, Modrm|NoSuf, { Dword|Unspecified|BaseIndex|RegMMX, = RegMMX } -punpckldq, 0x660f62, , Modrm|||NoSuf= , { RegXMM|Unspecified|BaseIndex, RegXMM } +punpckldq, 0x660f62, , Modrm|||N= oSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } punpckldq, 0xf62, MMX, Modrm|NoSuf, { Dword|Unspecified|BaseIndex|RegMMX, = RegMMX } -pxor, 0x0fef, , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, } +pxor, 0x0fef, , Modrm||C|NoSuf, { ||Unspecified|BaseIndex, } =20 // SSE instructions. =20 + + + + =20 -addps, 0x0f58, , Modrm|||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } -addss, 0xf30f58, , Modrm|||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -andnps, 0x0f55, , Modrm|||NoSuf, { RegXM= M|Unspecified|BaseIndex, RegXMM } -andps, 0x0f54, , Modrm|||C|NoSuf, { RegX= MM|Unspecified|BaseIndex, RegXMM } +addps, 0x0f58, , Modrm|||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } +addss, 0xf30f58, , Modrm|||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } +andnps, 0x0f55, , Modrm||NoSuf, { RegXMM|Uns= pecified|BaseIndex, RegXMM } +andps, 0x0f54, , Modrm||C|NoSuf, { RegXMM|Un= specified|BaseIndex, RegXMM } cmpps, 0x0fc2/, , Modrm||||NoSuf|ImmExt, { RegXMM|Unspecified|BaseIndex, RegXMM } cmpss, 0xf30fc2/, , Modrm||||NoSuf|ImmExt, { RegXMM|Dword|Unspecified|BaseIndex, RegXMM } cmpps, 0x0fc2, , Modrm|||NoSuf, { Imm8, = RegXMM|Unspecified|BaseIndex, RegXMM } cmpss, 0xf30fc2, , Modrm|||NoSuf, { Imm8= , Dword|Unspecified|BaseIndex|RegXMM, RegXMM } -comiss, 0x0f2f, , Modrm||NoSuf, { Dword|Unspecifie= d|BaseIndex|RegXMM, RegXMM } +comiss, 0x0f2f, , Modrm||NoSuf, { Dword|Unspecifie= d|BaseIndex|RegXMM, RegXMM } cvtpi2ps, 0xf2a, SSE, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegMMX, R= egXMM } cvtps2pi, 0xf2d, SSE, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, R= egMMX } cvtsi2ss, 0xf30f2a, &No64, Modrm|||Ignor= eSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Reg32|Unspecified|BaseIndex, RegXM= M } -cvtsi2ss, 0xf32a, AVX&x64, Modrm|Vex=3D3|Space0F|VexVVVV|IgnoreSize|No_bSu= f|No_wSuf|No_sSuf|SSE2AVX|ATTSyntax, { Reg32|Reg64|Unspecified|BaseIndex, R= egXMM } -cvtsi2ss, 0xf32a, AVX&x64, Modrm|Vex=3D3|Space0F|VexVVVV|No_bSuf|No_wSuf|N= o_sSuf|SSE2AVX|IntelSyntax, { Reg32|Reg64|Unspecified|BaseIndex, RegXMM } +cvtsi2ss, 0xf32a, x64&(AVX|AVX512F), Modrm|VexLIG|EVexLIG|Space0F|VexVVVV|= IgnoreSize|Disp8ShiftVL|No_bSuf|No_wSuf|No_sSuf|SSE2AVX|ATTSyntax, { Reg32|= Reg64|Unspecified|BaseIndex, RegXMM } +cvtsi2ss, 0xf32a, x64&(AVX|AVX512F), Modrm|VexLIG|EVexLIG|Space0F|VexVVVV|= Disp8ShiftVL|No_bSuf|No_wSuf|No_sSuf|SSE2AVX|IntelSyntax, { Reg32|Reg64|Uns= pecified|BaseIndex, RegXMM } cvtsi2ss, 0xf30f2a, SSE&x64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|ATTS= yntax, { Reg32|Reg64|Unspecified|BaseIndex, RegXMM } cvtsi2ss, 0xf30f2a, SSE&x64, Modrm|No_bSuf|No_wSuf|No_sSuf|IntelSyntax, { = Reg32|Reg64|Unspecified|BaseIndex, RegXMM } -cvtss2si, 0xf32d, AVX, Modrm|VexLIG|Space0F|No_bSuf|No_wSuf|No_sSuf|SSE2AV= X, { Dword|Unspecified|BaseIndex|RegXMM, Reg32|Reg64 } +cvtss2si, 0xf32d, AVX|AVX512F, Modrm|VexLIG|EVexLIG|Space0F|Disp8MemShift= =3D2|No_bSuf|No_wSuf|No_sSuf|SSE2AVX, { Dword|Unspecified|BaseIndex|RegXMM,= Reg32|Reg64 } cvtss2si, 0xf30f2d, SSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Dword= |Unspecified|BaseIndex|RegXMM, Reg32|Reg64 } cvttps2pi, 0xf2c, SSE, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, = RegMMX } -cvttss2si, 0xf32c, AVX, Modrm|VexLIG|Space0F|No_bSuf|No_wSuf|No_sSuf|SSE2A= VX, { Dword|Unspecified|BaseIndex|RegXMM, Reg32|Reg64 } +cvttss2si, 0xf32c, AVX|AVX512F, Modrm|VexLIG|EVexLIG|Space0F|Disp8MemShift= =3D2|No_bSuf|No_wSuf|No_sSuf|SSE2AVX, { Dword|Unspecified|BaseIndex|RegXMM,= Reg32|Reg64 } cvttss2si, 0xf30f2c, SSE, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, Reg32|Reg64 } -divps, 0x0f5e, , Modrm|||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } -divss, 0xf30f5e, , Modrm|||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } +divps, 0x0f5e, , Modrm|||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } +divss, 0xf30f5e, , Modrm|||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } ldmxcsr, 0x0fae/2, , Modrm||NoSuf, { Dword|Unspeci= fied|BaseIndex } maskmovq, 0xff7, SSE|3dnowA, Modrm|NoSuf, { RegMMX, RegMMX } -maxps, 0x0f5f, , Modrm|||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } -maxss, 0xf30f5f, , Modrm|||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -minps, 0x0f5d, , Modrm|||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } -minss, 0xf30f5d, , Modrm|||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -movaps, 0x0f28, , D|Modrm||NoSuf, { RegXMM|Unspeci= fied|BaseIndex, RegXMM } +maxps, 0x0f5f, , Modrm|||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } +maxss, 0xf30f5f, , Modrm|||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } +minps, 0x0f5d, , Modrm|||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } +minss, 0xf30f5d, , Modrm|||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } +movaps, 0x0f28, , D|Modrm||NoSuf, { RegXMM|Unspeci= fied|BaseIndex, RegXMM } movhlps, 0x0f12, , Modrm|||NoSuf, { RegX= MM, RegXMM } -movhps, 0x16, AVX, Modrm|Vex|Space0F|VexVVVV|VexW0|NoSuf|SSE2AVX, { Qword|= Unspecified|BaseIndex, RegXMM } -movhps, 0x17, AVX, Modrm|Vex|Space0F|VexW0|NoSuf|SSE2AVX, { RegXMM, Qword|= Unspecified|BaseIndex } +movhps, 0x16, AVX|AVX512F, Modrm|Vex128|EVex128|Space0F|VexVVVV|VexW0|Disp= 8MemShift=3D3|NoSuf|SSE2AVX, { Qword|Unspecified|BaseIndex, RegXMM } +movhps, 0x17, AVX|AVX512F, Modrm|Vex128|EVex128|Space0F|VexW0|Disp8MemShif= t=3D3|NoSuf|SSE2AVX, { RegXMM, Qword|Unspecified|BaseIndex } movhps, 0xf16, SSE, D|Modrm|NoSuf, { Qword|Unspecified|BaseIndex, RegXMM } movlhps, 0x0f16, , Modrm|||NoSuf, { RegX= MM, RegXMM } -movlps, 0x12, AVX, Modrm|Vex|Space0F|VexVVVV|VexW0|NoSuf|SSE2AVX, { Qword|= Unspecified|BaseIndex, RegXMM } -movlps, 0x13, AVX, Modrm|Vex|Space0F|VexW0|NoSuf|SSE2AVX, { RegXMM, Qword|= Unspecified|BaseIndex } +movlps, 0x12, AVX|AVX512F, Modrm|Vex128|EVex128|Space0F|VexVVVV|VexW0|Disp= 8MemShift=3D3|NoSuf|SSE2AVX, { Qword|Unspecified|BaseIndex, RegXMM } +movlps, 0x13, AVX|AVX512F, Modrm|Vex128|EVex128|Space0F|VexW0|Disp8MemShif= t=3D3|NoSuf|SSE2AVX, { RegXMM, Qword|Unspecified|BaseIndex } movlps, 0xf12, SSE, D|Modrm|NoSuf, { Qword|Unspecified|BaseIndex, RegXMM } movmskps, 0x0f50, , Modrm||IgnoreSize|No_bSuf|No_w= Suf|No_sSuf|NoRex64, { RegXMM, Reg32|Reg64 } -movntps, 0x0f2b, , Modrm||NoSuf, { RegXMM, Xmmword= |Unspecified|BaseIndex } +movntps, 0x0f2b, , Modrm||NoSuf, { RegXMM, Xmmword= |Unspecified|BaseIndex } movntq, 0xfe7, SSE|3dnowA, Modrm|NoSuf, { RegMMX, Qword|Unspecified|BaseIn= dex } -movntdq, 0x660fe7, , Modrm||NoSuf, { RegXMM, Xm= mword|Unspecified|BaseIndex } -movss, 0xf310, AVX, D|Modrm|VexLIG|Space0F|VexW0|NoSuf|SSE2AVX, { Dword|Un= specified|BaseIndex, RegXMM } +movntdq, 0x660fe7, , Modrm||NoSuf, { RegXMM,= Xmmword|Unspecified|BaseIndex } +movss, 0xf310, AVX|AVX512F, D|Modrm|VexLIG|EVexLIG|Space0F|VexW0|Disp8MemS= hift=3D2|NoSuf|SSE2AVX, { Dword|Unspecified|BaseIndex, RegXMM } movss, 0xf310, AVX, D|Modrm|VexLIG|Space0F|VexVVVV|VexW0|NoSuf|SSE2AVX, { = RegXMM, RegXMM } movss, 0xf30f10, SSE, D|Modrm|NoSuf, { Dword|Unspecified|BaseIndex|RegXMM,= RegXMM } -movups, 0x0f10, , D|Modrm||NoSuf, { RegXMM|Unspeci= fied|BaseIndex, RegXMM } -mulps, 0x0f59, , Modrm|||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } -mulss, 0xf30f59, , Modrm|||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -orps, 0x0f56, , Modrm|||C|NoSuf, { RegXM= M|Unspecified|BaseIndex, RegXMM } +movups, 0x0f10, , D|Modrm||NoSuf, { RegXMM|Unspeci= fied|BaseIndex, RegXMM } +mulps, 0x0f59, , Modrm|||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } +mulss, 0xf30f59, , Modrm|||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } +orps, 0x0f56, , Modrm||C|NoSuf, { RegXMM|Uns= pecified|BaseIndex, RegXMM } pavg, 0xfe0 | (3 * ), SSE|3dnowA, Modrm|NoSuf, { Qword|Unspeci= fied|BaseIndex|RegMMX, RegMMX } -pavg, 0x660fe0 | (3 * ), , Modrm||<= sse2:vvvv>|C|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } -pextrw, 0x660fc5, , Load|Modrm||No_bSuf|No_wSuf= |No_sSuf|IgnoreSize|NoRex64, { Imm8, RegXMM, Reg32|Reg64 } +pavg, 0x660fe0 | (3 * ), , Modrm|||C|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } +pextrw, 0x660fc5, , Load|Modrm||No_bSuf|No_w= Suf|No_sSuf|IgnoreSize|NoRex64, { Imm8, RegXMM, Reg32|Reg64 } pextrw, 0xfc5, SSE|3dnowA, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|NoRex6= 4, { Imm8, RegMMX, Reg32|Reg64 } -pinsrw, 0x660fc4, , Modrm|||No_bSuf|= No_wSuf|No_sSuf|IgnoreSize|NoRex64, { Imm8, Reg32|Reg64, RegXMM } -pinsrw, 0x660fc4, , Modrm|||NoSuf, {= Imm8, Word|Unspecified|BaseIndex, RegXMM } +pinsrw, 0x660fc4, , Modrm|||No_b= Suf|No_wSuf|No_sSuf|IgnoreSize|NoRex64, { Imm8, Reg32|Reg64, RegXMM } +pinsrw, 0x660fc4, , Modrm|||Disp= 8MemShift|NoSuf, { Imm8, Word|Unspecified|BaseIndex, RegXMM } pinsrw, 0xfc4, SSE|3dnowA, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|NoRex6= 4, { Imm8, Reg32|Reg64, RegMMX } pinsrw, 0xfc4, SSE|3dnowA, Modrm|NoSuf, { Imm8, Word|Unspecified|BaseIndex= , RegMMX } -pmaxsw, 0x660fee, , Modrm|||C|NoSuf,= { RegXMM|Unspecified|BaseIndex, RegXMM } +pmaxsw, 0x660fee, , Modrm|||= C|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } pmaxsw, 0xfee, SSE|3dnowA, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegM= MX, RegMMX } -pmaxub, 0x660fde, , Modrm|||C|NoSuf,= { RegXMM|Unspecified|BaseIndex, RegXMM } +pmaxub, 0x660fde, , Modrm|||= C|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } pmaxub, 0xfde, SSE|3dnowA, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegM= MX, RegMMX } -pminsw, 0x660fea, , Modrm|||C|NoSuf,= { RegXMM|Unspecified|BaseIndex, RegXMM } +pminsw, 0x660fea, , Modrm|||= C|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } pminsw, 0xfea, SSE|3dnowA, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegM= MX, RegMMX } -pminub, 0x660fda, , Modrm|||C|NoSuf,= { RegXMM|Unspecified|BaseIndex, RegXMM } +pminub, 0x660fda, , Modrm|||= C|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } pminub, 0xfda, SSE|3dnowA, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegM= MX, RegMMX } pmovmskb, 0x660fd7, , Modrm||IgnoreSize|No_bSuf= |No_wSuf|No_sSuf|NoRex64, { RegXMM, Reg32|Reg64 } pmovmskb, 0xfd7, SSE|3dnowA, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|NoRe= x64, { RegMMX, Reg32|Reg64 } -pmulhuw, 0x660fe4, , Modrm|||C|NoSuf= , { RegXMM|Unspecified|BaseIndex, RegXMM } +pmulhuw, 0x660fe4, , Modrm||= |C|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } pmulhuw, 0xfe4, SSE|3dnowA, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|Reg= MMX, RegMMX } prefetchnta, 0xf18/0, SSE|3dnowA, Modrm|Anysize|IgnoreSize|NoSuf, { BaseIn= dex } prefetcht0, 0xf18/1, SSE|3dnowA, Modrm|Anysize|IgnoreSize|NoSuf, { BaseInd= ex } prefetcht1, 0xf18/2, SSE|3dnowA, Modrm|Anysize|IgnoreSize|NoSuf, { BaseInd= ex } prefetcht2, 0xf18/3, SSE|3dnowA, Modrm|Anysize|IgnoreSize|NoSuf, { BaseInd= ex } psadbw, 0xff6, SSE|3dnowA, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegM= MX, RegMMX } -psadbw, 0x660ff6, , Modrm|||C|NoSuf,= { RegXMM|Unspecified|BaseIndex, RegXMM } +psadbw, 0x660ff6, , Modrm|||= C|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } pshufw, 0xf70, SSE|3dnowA, Modrm|NoSuf, { Imm8|Imm8S, Qword|Unspecified|Ba= seIndex|RegMMX, RegMMX } -rcpps, 0x0f53, , Modrm||NoSuf, { RegXMM|Unspecifie= d|BaseIndex, RegXMM } -rcpss, 0xf30f53, , Modrm|||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -rsqrtps, 0x0f52, , Modrm||NoSuf, { RegXMM|Unspecif= ied|BaseIndex, RegXMM } -rsqrtss, 0xf30f52, , Modrm|||NoSuf, { Dw= ord|Unspecified|BaseIndex|RegXMM, RegXMM } +rcpps, , , Modrm||NoSuf, { RegX= MM|Unspecified|BaseIndex, RegXMM } +rcpss, , , Modrm||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } +rsqrtps, , , Modrm||NoSuf, { Re= gXMM|Unspecified|BaseIndex, RegXMM } +rsqrtss, , , Modrm||NoSuf, { Dw= ord|Unspecified|BaseIndex|RegXMM, RegXMM } sfence, 0xfaef8, SSE|3dnowA, NoSuf, {} -shufps, 0x0fc6, , Modrm|||NoSuf, { Imm8|= Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM } -sqrtps, 0x0f51, , Modrm||NoSuf, { RegXMM|Unspecifi= ed|BaseIndex, RegXMM } -sqrtss, 0xf30f51, , Modrm|||NoSuf, { Dwo= rd|Unspecified|BaseIndex|RegXMM, RegXMM } +shufps, 0x0fc6, , Modrm|||NoSuf, { Imm8|= Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM } +sqrtps, 0x0f51, , Modrm||NoSuf, { RegXMM|Unspecifi= ed|BaseIndex, RegXMM } +sqrtss, 0xf30f51, , Modrm|||NoSuf, { Dwo= rd|Unspecified|BaseIndex|RegXMM, RegXMM } stmxcsr, 0x0fae/3, , Modrm||NoSuf, { Dword|Unspeci= fied|BaseIndex } -subps, 0x0f5c, , Modrm|||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } -subss, 0xf30f5c, , Modrm|||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -ucomiss, 0x0f2e, , Modrm||NoSuf, { Dword|Unspecifi= ed|BaseIndex|RegXMM, RegXMM } -unpckhps, 0x0f15, , Modrm|||NoSuf, { Reg= XMM|Unspecified|BaseIndex, RegXMM } -unpcklps, 0x0f14, , Modrm|||NoSuf, { Reg= XMM|Unspecified|BaseIndex, RegXMM } -xorps, 0x0f57, , Modrm|||C|NoSuf, { RegX= MM|Unspecified|BaseIndex, RegXMM } +subps, 0x0f5c, , Modrm|||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } +subss, 0xf30f5c, , Modrm|||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } +ucomiss, 0x0f2e, , Modrm||NoSuf, { Dword|Unspecifi= ed|BaseIndex|RegXMM, RegXMM } +unpckhps, 0x0f15, , Modrm|||NoSuf, { Reg= XMM|Unspecified|BaseIndex, RegXMM } +unpcklps, 0x0f14, , Modrm|||NoSuf, { Reg= XMM|Unspecified|BaseIndex, RegXMM } +xorps, 0x0f57, , Modrm||C|NoSuf, { RegXMM|Un= specified|BaseIndex, RegXMM } =20 // SSE2 instructions. =20 -addpd, 0x660f58, , Modrm|||NoSuf, { = RegXMM|Unspecified|BaseIndex, RegXMM } -addsd, 0xf20f58, , Modrm|||NoSuf, { = Qword|Unspecified|BaseIndex|RegXMM, RegXMM } -andnpd, 0x660f55, , Modrm|||NoSuf, {= RegXMM|Unspecified|BaseIndex, RegXMM } -andpd, 0x660f54, , Modrm|||C|NoSuf, = { RegXMM|Unspecified|BaseIndex, RegXMM } + + +addpd, 0x660f58, , Modrm|||NoSuf= , { RegXMM|Unspecified|BaseIndex, RegXMM } +addsd, 0xf20f58, , Modrm|||NoSuf= , { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +andnpd, 0x660f55, , Modrm||NoSuf, { RegXM= M|Unspecified|BaseIndex, RegXMM } +andpd, 0x660f54, , Modrm||C|NoSuf, { RegX= MM|Unspecified|BaseIndex, RegXMM } cmppd, 0x660fc2/, , Modrm||||NoSuf|ImmExt, { RegXMM|Unspecified|BaseIndex, RegXMM } cmpsd, 0xf20fc2/, , Modrm||||NoSuf|ImmExt, { RegXMM|Qword|Unspecified|BaseIndex, Reg= XMM } cmppd, 0x660fc2, , Modrm|||NoSuf, { = Imm8, RegXMM|Unspecified|BaseIndex, RegXMM } cmpsd, 0xf20fc2, , Modrm|||NoSuf, { = Imm8, Qword|Unspecified|BaseIndex|RegXMM, RegXMM } -comisd, 0x660f2f, , Modrm||NoSuf, { Qword|Unspe= cified|BaseIndex|RegXMM, RegXMM } +comisd, 0x660f2f, , Modrm||NoSuf, { Qword|Un= specified|BaseIndex|RegXMM, RegXMM } cvtpi2pd, 0x660f2a, SSE2, Modrm|NoSuf, { RegMMX, RegXMM } -cvtpi2pd, 0xf3e6, AVX, Modrm|Vex|Space0F|VexW0|NoSuf|SSE2AVX, { Qword|Unsp= ecified|BaseIndex, RegXMM } +cvtpi2pd, 0xf3e6, AVX|AVX512VL, Modrm|Vex128|EVex128|Space0F|VexW0|Disp8Me= mShift=3D3|NoSuf|SSE2AVX, { Qword|Unspecified|BaseIndex, RegXMM } cvtpi2pd, 0x660f2a, SSE2, Modrm|NoSuf, { Qword|Unspecified|BaseIndex, RegX= MM } cvtsi2sd, 0xf20f2a, &No64, Modrm|IgnoreSize|||No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Reg32|Unspecified|BaseIndex, R= egXMM } -cvtsi2sd, 0xf22a, AVX&x64, Modrm|Vex=3D3|Space0F|VexVVVV|IgnoreSize|No_bSu= f|No_wSuf|No_sSuf|SSE2AVX|ATTSyntax, { Reg32|Reg64|Unspecified|BaseIndex, R= egXMM } -cvtsi2sd, 0xf22a, AVX&x64, Modrm|Vex=3D3|Space0F|VexVVVV|No_bSuf|No_wSuf|N= o_sSuf|SSE2AVX|IntelSyntax, { Reg32|Reg64|Unspecified|BaseIndex, RegXMM } +cvtsi2sd, 0xf22a, x64&(AVX|AVX512F), Modrm|VexLIG|EVexLIG|Space0F|VexVVVV|= Disp8ShiftVL|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|SSE2AVX|ATTSyntax, { Reg32|= Reg64|Unspecified|BaseIndex, RegXMM } +cvtsi2sd, 0xf22a, x64&(AVX|AVX512F), Modrm|VexLIG|EVexLIG|Space0F|VexVVVV|= Disp8ShiftVL|No_bSuf|No_wSuf|No_sSuf|SSE2AVX|IntelSyntax, { Reg32|Reg64|Uns= pecified|BaseIndex, RegXMM } cvtsi2sd, 0xf20f2a, SSE2&x64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|ATT= Syntax, { Reg32|Reg64|Unspecified|BaseIndex, RegXMM } cvtsi2sd, 0xf20f2a, SSE2&x64, Modrm|No_bSuf|No_wSuf|No_sSuf|IntelSyntax, {= Reg32|Reg64|Unspecified|BaseIndex, RegXMM } -divpd, 0x660f5e, , Modrm|||NoSuf, { = RegXMM|Unspecified|BaseIndex, RegXMM } -divsd, 0xf20f5e, , Modrm|||NoSuf, { = Qword|Unspecified|BaseIndex|RegXMM, RegXMM } -maxpd, 0x660f5f, , Modrm|||NoSuf, { = RegXMM|Unspecified|BaseIndex, RegXMM } -maxsd, 0xf20f5f, , Modrm|||NoSuf, { = Qword|Unspecified|BaseIndex|RegXMM, RegXMM } -minpd, 0x660f5d, , Modrm|||NoSuf, { = RegXMM|Unspecified|BaseIndex, RegXMM } -minsd, 0xf20f5d, , Modrm|||NoSuf, { = Qword|Unspecified|BaseIndex|RegXMM, RegXMM } -movapd, 0x660f28, , D|Modrm||NoSuf, { RegXMM|Un= specified|BaseIndex, RegXMM } +divpd, 0x660f5e, , Modrm|||NoSuf= , { RegXMM|Unspecified|BaseIndex, RegXMM } +divsd, 0xf20f5e, , Modrm|||NoSuf= , { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +maxpd, 0x660f5f, , Modrm|||NoSuf= , { RegXMM|Unspecified|BaseIndex, RegXMM } +maxsd, 0xf20f5f, , Modrm|||NoSuf= , { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +minpd, 0x660f5d, , Modrm|||NoSuf= , { RegXMM|Unspecified|BaseIndex, RegXMM } +minsd, 0xf20f5d, , Modrm|||NoSuf= , { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +movapd, 0x660f28, , D|Modrm||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } movhpd, 0x6616, AVX, Modrm|Vex|Space0F|VexVVVV|VexW0|NoSuf|SSE2AVX, { Qwor= d|Unspecified|BaseIndex, RegXMM } +movhpd, 0x6616, AVX512F, Modrm|EVex128|Space0F|VexVVVV|VexW1|Disp8MemShift= =3D3|NoSuf|SSE2AVX, { Qword|Unspecified|BaseIndex, RegXMM } movhpd, 0x6617, AVX, Modrm|Vex|Space0F|VexW0|NoSuf|SSE2AVX, { RegXMM, Qwor= d|Unspecified|BaseIndex } +movhpd, 0x6617, AVX512F, Modrm|EVex128|Space0F|VexW1|Disp8MemShift=3D3|NoS= uf|SSE2AVX, { RegXMM, Qword|Unspecified|BaseIndex } movhpd, 0x660f16, SSE2, D|Modrm|NoSuf, { Qword|Unspecified|BaseIndex, RegX= MM } movlpd, 0x6612, AVX, Modrm|Vex|Space0F|VexVVVV|VexW0|NoSuf|SSE2AVX, { Qwor= d|Unspecified|BaseIndex, RegXMM } +movlpd, 0x6612, AVX512F, Modrm|EVex128|Space0F|VexVVVV|VexW1|Disp8MemShift= =3D3|NoSuf|SSE2AVX, { Qword|Unspecified|BaseIndex, RegXMM } movlpd, 0x6613, AVX, Modrm|Vex|Space0F|VexW0|NoSuf|SSE2AVX, { RegXMM, Qwor= d|Unspecified|BaseIndex } +movlpd, 0x6613, AVX512F, Modrm|EVex128|Space0F|VexW1|Disp8MemShift=3D3|NoS= uf|SSE2AVX, { RegXMM, Qword|Unspecified|BaseIndex } movlpd, 0x660f12, SSE2, D|Modrm|NoSuf, { Qword|Unspecified|BaseIndex, RegX= MM } movmskpd, 0x660f50, , Modrm||IgnoreSize|No_bSuf= |No_wSuf|No_sSuf|NoRex64, { RegXMM, Reg32|Reg64 } -movntpd, 0x660f2b, , Modrm||NoSuf, { RegXMM, Xm= mword|Unspecified|BaseIndex } +movntpd, 0x660f2b, , Modrm||NoSuf, { RegXMM,= Xmmword|Unspecified|BaseIndex } movsd, 0xf210, AVX, D|Modrm|VexLIG|Space0F|VexW0|NoSuf|SSE2AVX, { Qword|Un= specified|BaseIndex, RegXMM } +movsd, 0xf210, AVX512F, D|Modrm|EVexLIG|Space0F|VexW1|Disp8MemShift=3D3|No= Suf|SSE2AVX, { Qword|Unspecified|BaseIndex, RegXMM } movsd, 0xf210, AVX, D|Modrm|VexLIG|Space0F|VexVVVV|VexW0|NoSuf|SSE2AVX, { = RegXMM, RegXMM } movsd, 0xf20f10, SSE2, D|Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM= , RegXMM } -movupd, 0x660f10, , D|Modrm||NoSuf, { RegXMM|Un= specified|BaseIndex, RegXMM } -mulpd, 0x660f59, , Modrm|||NoSuf, { = RegXMM|Unspecified|BaseIndex, RegXMM } -mulsd, 0xf20f59, , Modrm|||NoSuf, { = Qword|Unspecified|BaseIndex|RegXMM, RegXMM } -orpd, 0x660f56, , Modrm|||C|NoSuf, {= RegXMM|Unspecified|BaseIndex, RegXMM } -shufpd, 0x660fc6, , Modrm|||NoSuf, {= Imm8|Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM } -sqrtpd, 0x660f51, , Modrm||NoSuf, { RegXMM|Unsp= ecified|BaseIndex, RegXMM } -sqrtsd, 0xf20f51, , Modrm|||NoSuf, {= Qword|Unspecified|BaseIndex|RegXMM, RegXMM } -subpd, 0x660f5c, , Modrm|||NoSuf, { = RegXMM|Unspecified|BaseIndex, RegXMM } -subsd, 0xf20f5c, , Modrm|||NoSuf, { = Qword|Unspecified|BaseIndex|RegXMM, RegXMM } -ucomisd, 0x660f2e, , Modrm||NoSuf, { Qword|Unsp= ecified|BaseIndex|RegXMM, RegXMM } -unpckhpd, 0x660f15, , Modrm|||NoSuf,= { RegXMM|Unspecified|BaseIndex, RegXMM } -unpcklpd, 0x660f14, , Modrm|||NoSuf,= { RegXMM|Unspecified|BaseIndex, RegXMM } -xorpd, 0x660f57, , Modrm|||C|NoSuf, = { RegXMM|Unspecified|BaseIndex, RegXMM } -cvtdq2pd, 0xf30fe6, , Modrm||NoSuf, { Qword|Uns= pecified|BaseIndex|RegXMM, RegXMM } -cvtpd2dq, 0xf20fe6, , Modrm||NoSuf, { RegXMM|Un= specified|BaseIndex, RegXMM } -cvtdq2ps, 0x0f5b, , Modrm||NoSuf, { RegXMM|Unsp= ecified|BaseIndex, RegXMM } +movupd, 0x660f10, , D|Modrm||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } +mulpd, 0x660f59, , Modrm|||NoSuf= , { RegXMM|Unspecified|BaseIndex, RegXMM } +mulsd, 0xf20f59, , Modrm|||NoSuf= , { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +orpd, 0x660f56, , Modrm||C|NoSuf, { RegXM= M|Unspecified|BaseIndex, RegXMM } +shufpd, 0x660fc6, , Modrm|||NoSu= f, { Imm8|Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM } +sqrtpd, 0x660f51, , Modrm||NoSuf, { RegXMM|U= nspecified|BaseIndex, RegXMM } +sqrtsd, 0xf20f51, , Modrm|||NoSu= f, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +subpd, 0x660f5c, , Modrm|||NoSuf= , { RegXMM|Unspecified|BaseIndex, RegXMM } +subsd, 0xf20f5c, , Modrm|||NoSuf= , { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +ucomisd, 0x660f2e, , Modrm||NoSuf, { Qword|U= nspecified|BaseIndex|RegXMM, RegXMM } +unpckhpd, 0x660f15, , Modrm|||No= Suf, { RegXMM|Unspecified|BaseIndex, RegXMM } +unpcklpd, 0x660f14, , Modrm|||No= Suf, { RegXMM|Unspecified|BaseIndex, RegXMM } +xorpd, 0x660f57, , Modrm||C|NoSuf, { RegX= MM|Unspecified|BaseIndex, RegXMM } +cvtdq2pd, 0xf30fe6, , Modrm||Disp8MemShift|N= oSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +cvtpd2dq, 0xf20fe6, , Modrm||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } +cvtdq2ps, 0x0f5b, , Modrm||NoSuf, { RegXMM|U= nspecified|BaseIndex, RegXMM } cvtpd2pi, 0x660f2d, SSE2, Modrm|NoSuf, { RegXMM|Unspecified|BaseIndex, Reg= MMX } -cvtpd2ps, 0x660f5a, , Modrm||NoSuf, { RegXMM|Un= specified|BaseIndex, RegXMM } -cvtps2pd, 0x0f5a, , Modrm||NoSuf, { Qword|Unspe= cified|BaseIndex|RegXMM, RegXMM } -cvtps2dq, 0x660f5b, , Modrm||NoSuf, { RegXMM|Un= specified|BaseIndex, RegXMM } -cvtsd2si, 0xf22d, AVX, Modrm|VexLIG|Space0F|No_bSuf|No_wSuf|No_sSuf|SSE2AV= X, { Qword|Unspecified|BaseIndex|RegXMM, Reg32|Reg64 } +cvtpd2ps, 0x660f5a, , Modrm||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } +cvtps2pd, 0x0f5a, , Modrm||Disp8MemShift|NoS= uf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +cvtps2dq, 0x660f5b, , Modrm||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } +cvtsd2si, 0xf22d, AVX|AVX512F, Modrm|VexLIG|EVexLIG|Space0F|Disp8MemShift= =3D3|No_bSuf|No_wSuf|No_sSuf|SSE2AVX, { Qword|Unspecified|BaseIndex|RegXMM,= Reg32|Reg64 } cvtsd2si, 0xf20f2d, SSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Qwor= d|Unspecified|BaseIndex|RegXMM, Reg32|Reg64 } -cvtsd2ss, 0xf20f5a, , Modrm|||NoSuf,= { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } -cvtss2sd, 0xf30f5a, , Modrm|||NoSuf,= { Dword|Unspecified|BaseIndex|RegXMM, RegXMM } - +cvtsd2ss, 0xf20f5a, , Modrm|||No= Suf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +cvtss2sd, 0xf30f5a, , Modrm|||No= Suf, { Dword|Unspecified|BaseIndex|RegXMM, RegXMM } cvttpd2pi, 0x660f2c, SSE2, Modrm|NoSuf, { RegXMM|Unspecified|BaseIndex, Re= gMMX } -cvttsd2si, 0xf22c, AVX, Modrm|VexLIG|Space0F|No_bSuf|No_wSuf|No_sSuf|SSE2A= VX, { Qword|Unspecified|BaseIndex|RegXMM, Reg32|Reg64 } +cvttsd2si, 0xf22c, AVX|AVX512F, Modrm|VexLIG|EVexLIG|Space0F|Disp8MemShift= =3D3|No_bSuf|No_wSuf|No_sSuf|SSE2AVX, { Qword|Unspecified|BaseIndex|RegXMM,= Reg32|Reg64 } cvttsd2si, 0xf20f2c, SSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Qwo= rd|Unspecified|BaseIndex|RegXMM, Reg32|Reg64 } -cvttpd2dq, 0x660fe6, , Modrm||NoSuf, { RegXMM|U= nspecified|BaseIndex, RegXMM } -cvttps2dq, 0xf30f5b, , Modrm||NoSuf, { RegXMM|U= nspecified|BaseIndex, RegXMM } +cvttpd2dq, 0x660fe6, , Modrm||NoSuf, { RegXM= M|Unspecified|BaseIndex, RegXMM } +cvttps2dq, 0xf30f5b, , Modrm||NoSuf, { RegXM= M|Unspecified|BaseIndex, RegXMM } maskmovdqu, 0x660ff7, , Modrm||NoSuf, { RegXMM,= RegXMM } -movdqa, 0x660f6f, , D|Modrm||NoSuf, { RegXMM|Un= specified|BaseIndex, RegXMM } -movdqu, 0xf30f6f, , D|Modrm||NoSuf, { RegXMM|Un= specified|BaseIndex, RegXMM } +movdqa, 0x660f6f, , D|Modrm||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } +movdqu, 0xf30f6f, , D|Modrm||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } movdq2q, 0xf20fd6, SSE2, Modrm|NoSuf, { RegXMM, RegMMX } movq2dq, 0xf30fd6, SSE2, Modrm|NoSuf, { RegMMX, RegXMM } -pmuludq, 0x660ff4, , Modrm|||C|NoSuf= , { RegXMM|Unspecified|BaseIndex, RegXMM } +pmuludq, 0x660ff4, , Modrm|||C|N= oSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } pmuludq, 0xff4, SSE2, Modrm|NoSuf, { Qword|Unspecified|BaseIndex|RegMMX, R= egMMX } -pshufd, 0x660f70, , Modrm||NoSuf, { Imm8|Imm8S,= RegXMM|Unspecified|BaseIndex, RegXMM } -pshufhw, 0xf30f70, , Modrm||NoSuf, { Imm8|Imm8S= , RegXMM|Unspecified|BaseIndex, RegXMM } -pshuflw, 0xf20f70, , Modrm||NoSuf, { Imm8|Imm8S= , RegXMM|Unspecified|BaseIndex, RegXMM } +pshufd, 0x660f70, , Modrm||NoSuf, { Imm8|Imm= 8S, RegXMM|Unspecified|BaseIndex, RegXMM } +pshufhw, 0xf30f70, , Modrm||NoSuf, { Imm8= |Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM } +pshuflw, 0xf20f70, , Modrm||NoSuf, { Imm8= |Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM } pslldq, 0x660f73/7, , Modrm|||NoSuf,= { Imm8, RegXMM } psrldq, 0x660f73/3, , Modrm|||NoSuf,= { Imm8, RegXMM } -punpckhqdq, 0x660f6d, , Modrm|||NoSu= f, { RegXMM|Unspecified|BaseIndex, RegXMM } -punpcklqdq, 0x660f6c, , Modrm|||NoSu= f, { RegXMM|Unspecified|BaseIndex, RegXMM } +punpckhqdq, 0x660f6d, , Modrm|||= NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } +punpcklqdq, 0x660f6c, , Modrm|||= NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } =20 =20 // SSE3 instructions. =20 + + =20 addsubpd, 0x660fd0, , Modrm|||NoSuf,= { RegXMM|Unspecified|BaseIndex, RegXMM } addsubps, 0xf20fd0, , Modrm|||NoSuf,= { RegXMM|Unspecified|BaseIndex, RegXMM } @@ -1279,10 +1342,13 @@ haddpd, 0x660f7c, , Modrm|||NoSuf, { RegXM haddps, 0xf20f7c, , Modrm|||NoSuf, {= RegXMM|Unspecified|BaseIndex, RegXMM } hsubpd, 0x660f7d, , Modrm|||NoSuf, {= RegXMM|Unspecified|BaseIndex, RegXMM } hsubps, 0xf20f7d, , Modrm|||NoSuf, {= RegXMM|Unspecified|BaseIndex, RegXMM } -lddqu, 0xf20ff0, , Modrm||NoSuf, { Xmmword|Unsp= ecified|BaseIndex, RegXMM } -movddup, 0xf20f12, , Modrm||NoSuf, { Qword|Unsp= ecified|BaseIndex|RegXMM, RegXMM } -movshdup, 0xf30f16, , Modrm||NoSuf, { RegXMM|Un= specified|BaseIndex, RegXMM } -movsldup, 0xf30f12, , Modrm||NoSuf, { RegXMM|Un= specified|BaseIndex, RegXMM } +lddqu, 0xf20ff0, AVX, Modrm|Vex128|VexW0|SSE2AVX|NoSuf, { Xmmword|Unspecif= ied|BaseIndex, RegXMM } +// For use with eGPR-s in the memory operand, utilize VMOVDQU32. +lddqu, 0xf30f6f, AVX512VL, Modrm|EVex128|VexW0|Disp8MemShift=3D4|SSE2AVX|N= oSuf, { Xmmword|Unspecified|BaseIndex, RegXMM } +lddqu, 0xf20ff0, SSE3, Modrm|NoSuf, { Xmmword|Unspecified|BaseIndex, RegXM= M } +movddup, 0xf20f12, , Modrm||NoSuf, { Qword|U= nspecified|BaseIndex|RegXMM, RegXMM } +movshdup, 0xf30f16, , Modrm||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } +movsldup, 0xf30f12, , Modrm||NoSuf, { RegXMM= |Unspecified|BaseIndex, RegXMM } =20 // FPU instructions also covered by SSE3 CPUID flag. =20 @@ -1352,6 +1418,15 @@ invpcid, 0xf3f2, INVPCID&APX_F, Modrm|NoSuf|EVexMap4= |VexWIG, { Oword|Unspecified $avx:AVX:66:Vex128|VexW0|SSE2AVX:VexVVVV:RegXMM:Xmmword, + $sse:SSSE3:66:::RegXMM:Xmmword, + $mmx:SSSE3::::RegMMX:Qword> + + =20 phaddw, 0x0f3801, , Modrm|||NoSuf, { ||Unspecified|BaseIndex, } phaddd, 0x0f3802, , Modrm|||NoSuf, { ||Unspecified|BaseIndex, } @@ -1359,18 +1434,34 @@ phaddsw, 0x0f3803, , M= odrm||, 0x0f3805, , Modrm|||NoSuf, { ||Unspecified|BaseIndex, } phsubd, 0x0f3806, , Modrm|||NoSuf, { ||Unspecified|BaseIndex, } phsubsw, 0x0f3807, , Modrm|||NoSuf, { ||Unspecified|BaseIndex, = } -pmaddubsw, 0x0f3804, , Modrm|||NoSuf, { ||Unspecified|BaseIndex, } -pmulhrsw, 0x0f380b, , Modrm|||NoSuf, { ||Unspecified|BaseIndex, } -pshufb, 0x0f3800, , Modrm|||NoSuf, { ||Unspecified|BaseIndex, } +pmaddubsw, 0x0f3804, , Modrm|||NoSuf, { ||Unspecified|BaseIn= dex, } +pmulhrsw, 0x0f380b, , Modrm|||NoSuf, { ||Unspecified|BaseInd= ex, } +pshufb, 0x0f3800, , Modrm|||NoSuf, { ||Unspecified|BaseIndex= , } psign, 0x0f3808 | , , Modrm|||NoSuf, { ||Unspecified|BaseIndex= , } psignd, 0x0f380a, , Modrm|||NoSuf, { ||Unspecified|BaseIndex, } -palignr, 0x0f3a0f, , Modrm|||NoSuf, { Imm8, ||Unspecified|BaseIndex, } -pabs, 0x0f381c | , , Modrm||NoSuf, { ||Unspecified|BaseIndex, } -pabsd, 0x0f381e, , Modrm||NoSuf, = { ||Unspecified|BaseIndex, } +palignr, 0x0f3a0f, , Modrm|||NoSuf, { Imm8, ||Unspecified|Ba= seIndex, } +pabs, 0x0f381c | , , Modrm|= |NoSuf, { ||Unspecified|BaseIndex, = } +pabsd, 0x0f381e, , Modrm||NoS= uf, { ||Unspecified|BaseIndex, } =20 // SSE4.1 instructions. =20 + + + + + =20 blendp, 0x660f3a0c | , , Modrm||= |NoSuf, { Imm8|Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM } @@ -1379,56 +1470,60 @@ blendvp, 0x664a | , AVX, Modrm|Vex128|S= pace0F3A|VexVVVV|VexW0|NoSuf| blendvp, 0x660f3814 | , SSE4_1, Modrm|NoSuf, { Acc|Xmmword, Re= gXMM|Unspecified|BaseIndex, RegXMM } blendvp, 0x660f3814 | , SSE4_1, Modrm|NoSuf, { RegXMM|Unspecif= ied|BaseIndex, RegXMM } dpp, 0x660f3a40 | , , Modrm|||NoSuf, { Imm8|Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM } -extractps, 0x6617, AVX, Modrm|Vex128|Space0F3A|VexW0|NoSuf|SSE2AVX, { Imm8= , RegXMM, Reg32|Unspecified|BaseIndex } -extractps, 0x6617, AVX&x64, RegMem|Vex128|Space0F3A|VexW1|NoSuf|SSE2AVX, {= Imm8, RegXMM, Reg64 } +extractps, 0x6617, AVX|AVX512F, Modrm|Vex128|EVex128|Space0F3A|VexW0|Disp8= MemShift=3D2|NoSuf|SSE2AVX, { Imm8, RegXMM, Reg32|Unspecified|BaseIndex } +extractps, 0x6617, x64&(AVX|AVX512F), RegMem|Vex128|EVex128|Space0F3A|VexW= 1|NoSuf|SSE2AVX, { Imm8, RegXMM, Reg64 } extractps, 0x660f3a17, SSE4_1, Modrm|IgnoreSize|NoSuf, { Imm8, RegXMM, Reg= 32|Unspecified|BaseIndex } extractps, 0x660f3a17, SSE4_1&x64, RegMem|NoSuf|NoRex64, { Imm8, RegXMM, R= eg64 } -insertps, 0x660f3a21, , Modrm|||= NoSuf, { Imm8, Dword|Unspecified|BaseIndex|RegXMM, RegXMM } -movntdqa, 0x660f382a, , Modrm||NoSuf, { Xmmw= ord|Unspecified|BaseIndex, RegXMM } +insertps, 0x660f3a21, , Modrm|||Disp8MemShift|NoSuf, { Imm8, Dword|Unspecified|BaseIndex|RegXMM, RegXMM= } +movntdqa, 0x660f382a, , Modrm||NoSuf, { X= mmword|Unspecified|BaseIndex, RegXMM } mpsadbw, 0x660f3a42, , Modrm|||N= oSuf, { Imm8|Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM } -packusdw, 0x660f382b, , Modrm|||= NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } +packusdw, 0x660f382b, , Modrm|||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } pblendvb, 0x664c, AVX, Modrm|Vex128|Space0F3A|VexVVVV|VexW0|NoSuf|SSE2AVX,= { Acc|Xmmword, RegXMM|Unspecified|BaseIndex, RegXMM } pblendvb, 0x664c, AVX, Modrm|Vex128|Space0F3A|VexVVVV|VexW0|NoSuf|Implicit= 1stXmm0|SSE2AVX, { RegXMM|Unspecified|BaseIndex, RegXMM } pblendvb, 0x660f3810, SSE4_1, Modrm|NoSuf, { Acc|Xmmword, RegXMM|Unspecifi= ed|BaseIndex, RegXMM } pblendvb, 0x660f3810, SSE4_1, Modrm|NoSuf, { RegXMM|Unspecified|BaseIndex,= RegXMM } pblendw, 0x660f3a0e, , Modrm|||N= oSuf, { Imm8|Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM } pcmpeqq, 0x660f3829, , Modrm|||N= oSuf|Optimize, { RegXMM|Unspecified|BaseIndex, RegXMM } -pextr, 0x660f3a14 | , , RegMem||= NoSuf|IgnoreSize|NoRex64, { Imm8, RegXMM, Reg32|Reg64 } -pextr, 0x660f3a14 | , , Modrm||N= oSuf, { Imm8, RegXMM, |Unspecified|BaseIndex } -pextrd, 0x660f3a16, , Modrm||NoSuf|IgnoreSiz= e, { Imm8, RegXMM, Reg32|Unspecified|BaseIndex } +pextr, 0x660f3a14 | , , RegMem||NoSuf|IgnoreSize|NoRex64, { Imm8, RegXMM, Reg32|Reg64 } +pextr, 0x660f3a14 | , , Modrm||Disp8MemShift|NoSuf, { Imm8, RegXMM, |Unspecified|BaseIndex } +pextrd, 0x660f3a16, , Modrm||Disp8MemS= hift|NoSuf|IgnoreSize, { Imm8, RegXMM, Reg32|Unspecified|BaseIndex } pextrq, 0x6616, AVX&x64, Modrm|Vex|Space0F3A|VexW1|NoSuf|SSE2AVX, { Imm8, = RegXMM, Reg64|Unspecified|BaseIndex } +pextrq, 0x6616, AVX512DQ&AVX512VL&x64, Modrm|EVex128|Space0F3A|VexW1|Disp8= MemShift=3D3|NoSuf|SSE2AVX, { Imm8, RegXMM, Reg64|Unspecified|BaseIndex } pextrq, 0x660f3a16, SSE4_1&x64, Modrm|Size64|NoSuf, { Imm8, RegXMM, Reg64|= Unspecified|BaseIndex } phminposuw, 0x660f3841, , Modrm||NoSuf, { Re= gXMM|Unspecified|BaseIndex, RegXMM } -pinsrb, 0x660f3a20, , Modrm|||No= Suf|IgnoreSize|NoRex64, { Imm8, Reg32|Reg64, RegXMM } -pinsrb, 0x660f3a20, , Modrm|||No= Suf, { Imm8, Byte|Unspecified|BaseIndex, RegXMM } -pinsrd, 0x660f3a22, , Modrm|||No= Suf|IgnoreSize, { Imm8, Reg32|Unspecified|BaseIndex, RegXMM } +pinsrb, 0x660f3a20, , Modrm|||NoSuf|IgnoreSize|NoRex64, { Imm8, Reg32|Reg64, RegXMM } +pinsrb, 0x660f3a20, , Modrm|||Disp8MemShift|NoSuf, { Imm8, Byte|Unspecified|BaseIndex, RegXMM } +pinsrd, 0x660f3a22, , Modrm|||Disp8MemShift|NoSuf|IgnoreSize, { Imm8, Reg32|Unspecified|BaseIndex, = RegXMM } pinsrq, 0x6622, AVX&x64, Modrm|Vex|Space0F3A|VexVVVV|VexW1|NoSuf|SSE2AVX, = { Imm8, Reg64|Unspecified|BaseIndex, RegXMM } +pinsrq, 0x6622, AVX512DQ&AVX512VL&AVX&x64, Modrm|EVex128|Space0F3A|VexVVVV= |VexW1|Disp8MemShift=3D3|NoSuf|SSE2AVX, { Imm8, Reg64|Unspecified|BaseIndex= , RegXMM } pinsrq, 0x660f3a22, SSE4_1&x64, Modrm|Size64|NoSuf, { Imm8, Reg64|Unspecif= ied|BaseIndex, RegXMM } -pmaxsb, 0x660f383c, , Modrm|||No= Suf, { RegXMM|Unspecified|BaseIndex, RegXMM } -pmaxsd, 0x660f383d, , Modrm|||No= Suf, { RegXMM|Unspecified|BaseIndex, RegXMM } -pmaxud, 0x660f383f, , Modrm|||No= Suf, { RegXMM|Unspecified|BaseIndex, RegXMM } -pmaxuw, 0x660f383e, , Modrm|||No= Suf, { RegXMM|Unspecified|BaseIndex, RegXMM } -pminsb, 0x660f3838, , Modrm|||No= Suf, { RegXMM|Unspecified|BaseIndex, RegXMM } -pminsd, 0x660f3839, , Modrm|||No= Suf, { RegXMM|Unspecified|BaseIndex, RegXMM } -pminud, 0x660f383b, , Modrm|||No= Suf, { RegXMM|Unspecified|BaseIndex, RegXMM } -pminuw, 0x660f383a, , Modrm|||No= Suf, { RegXMM|Unspecified|BaseIndex, RegXMM } -pmovsxbw, 0x660f3820, , Modrm||NoSuf, { Qwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -pmovsxbd, 0x660f3821, , Modrm||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -pmovsxbq, 0x660f3822, , Modrm||NoSuf, { Word= |Unspecified|BaseIndex|RegXMM, RegXMM } -pmovsxwd, 0x660f3823, , Modrm||NoSuf, { Qwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -pmovsxwq, 0x660f3824, , Modrm||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -pmovsxdq, 0x660f3825, , Modrm||NoSuf, { Qwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -pmovzxbw, 0x660f3830, , Modrm||NoSuf, { Qwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -pmovzxbd, 0x660f3831, , Modrm||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -pmovzxbq, 0x660f3832, , Modrm||NoSuf, { Word= |Unspecified|BaseIndex|RegXMM, RegXMM } -pmovzxwd, 0x660f3833, , Modrm||NoSuf, { Qwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -pmovzxwq, 0x660f3834, , Modrm||NoSuf, { Dwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -pmovzxdq, 0x660f3835, , Modrm||NoSuf, { Qwor= d|Unspecified|BaseIndex|RegXMM, RegXMM } -pmuldq, 0x660f3828, , Modrm|||No= Suf, { RegXMM|Unspecified|BaseIndex, RegXMM } -pmulld, 0x660f3840, , Modrm|||No= Suf, { RegXMM|Unspecified|BaseIndex, RegXMM } +pmaxsb, 0x660f383c, , Modrm|||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } +pmaxsd, 0x660f383d, , Modrm|||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } +pmaxud, 0x660f383f, , Modrm|||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } +pmaxuw, 0x660f383e, , Modrm|||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } +pminsb, 0x660f3838, , Modrm|||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } +pminsd, 0x660f3839, , Modrm|||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } +pminud, 0x660f383b, , Modrm|||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } +pminuw, 0x660f383a, , Modrm|||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } +pmovsxbw, 0x660f3820, , Modrm||Disp8Me= mShift|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +pmovsxbd, 0x660f3821, , Modrm||Disp8MemSh= ift|NoSuf, { Dword|Unspecified|BaseIndex|RegXMM, RegXMM } +pmovsxbq, 0x660f3822, , Modrm||Disp8MemSh= ift|NoSuf, { Word|Unspecified|BaseIndex|RegXMM, RegXMM } +pmovsxwd, 0x660f3823, , Modrm||Disp8MemSh= ift|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +pmovsxwq, 0x660f3824, , Modrm||Disp8MemSh= ift|NoSuf, { Dword|Unspecified|BaseIndex|RegXMM, RegXMM } +pmovsxdq, 0x660f3825, , Modrm||Disp8MemSh= ift|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +pmovzxbw, 0x660f3830, , Modrm||Disp8Me= mShift|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +pmovzxbd, 0x660f3831, , Modrm||Disp8MemSh= ift|NoSuf, { Dword|Unspecified|BaseIndex|RegXMM, RegXMM } +pmovzxbq, 0x660f3832, , Modrm||Disp8MemSh= ift|NoSuf, { Word|Unspecified|BaseIndex|RegXMM, RegXMM } +pmovzxwd, 0x660f3833, , Modrm||Disp8MemSh= ift|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +pmovzxwq, 0x660f3834, , Modrm||Disp8MemSh= ift|NoSuf, { Dword|Unspecified|BaseIndex|RegXMM, RegXMM } +pmovzxdq, 0x660f3835, , Modrm||Disp8MemSh= ift|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +pmuldq, 0x660f3828, , Modrm|||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } +pmulld, 0x660f3840, , Modrm|||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } ptest, 0x660f3817, , Modrm||NoSuf, { RegXMM|= Unspecified|BaseIndex, RegXMM } -roundp, 0x660f3a08 | , , Modrm||= NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM } -rounds, 0x660f3a0a | , , Modrm||= |NoSuf, { Imm8, |Unspecified|BaseIndex|RegXMM, RegXMM } +roundpd, 0x660f3a09, , Modrm||NoSuf, { Im= m8, RegXMM|Unspecified|BaseIndex, RegXMM } +roundps, 0x660f3a08, , Modrm||NoSuf, { Im= m8, RegXMM|Unspecified|BaseIndex, RegXMM } +roundsd, 0x660f3a0b, , Modrm|||NoSuf, { Imm8, Qword|Unspecified|BaseIndex|RegXMM, RegXMM } +roundss, 0x660f3a0a, , Modrm|||NoSuf, { Imm8, Dword|Unspecified|BaseIndex|RegXMM, RegXMM } =20 // SSE4.2 instructions. =20 @@ -1465,31 +1560,38 @@ xsaveopt64, 0xfae/6, Xsaveopt&x64, Modrm|NoSuf|Size= 64|NoEgpr, { Unspecified|Base // AES instructions. =20 - -aesdec, 0x660f38de, AES, Modrm|||NoSuf, = { RegXMM|Unspecified|BaseIndex, RegXMM } -aesdeclast, 0x660f38df, AES, Modrm|||NoS= uf, { RegXMM|Unspecified|BaseIndex, RegXMM } -aesenc, 0x660f38dc, AES, Modrm|||NoSuf, = { RegXMM|Unspecified|BaseIndex, RegXMM } -aesenclast, 0x660f38dd, AES, Modrm|||NoS= uf, { RegXMM|Unspecified|BaseIndex, RegXMM } + + +aesdec, 0x660f38de, AES, Modrm||NoSuf, { RegXMM|Un= specified|BaseIndex, RegXMM } +aesdeclast, 0x660f38df, AES, Modrm||NoSuf, { RegXM= M|Unspecified|BaseIndex, RegXMM } +aesenc, 0x660f38dc, AES, Modrm||NoSuf, { RegXMM|Un= specified|BaseIndex, RegXMM } +aesenclast, 0x660f38dd, AES, Modrm||NoSuf, { RegXM= M|Unspecified|BaseIndex, RegXMM } aesimc, 0x660f38db, AES, Modrm||NoSuf, { RegXMM|Un= specified|BaseIndex, RegXMM } aeskeygenassist, 0x660f3adf, AES, Modrm||NoSuf, { = Imm8, RegXMM|Unspecified|BaseIndex, RegXMM } =20 // PCLMULQDQ =20 - + =20 -pclmulqdq, 0x660f3a44, PCLMULQDQ, Modrm||= NoSuf, { Imm8|Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM } -pclmullqlqdq, 0x660f3a44/0x00, PCLMULQDQ, Modrm||NoSuf|ImmExt, { RegXMM|Unspecified|BaseIndex, RegXMM } -pclmulhqlqdq, 0x660f3a44/0x01, PCLMULQDQ, Modrm||NoSuf|ImmExt, { RegXMM|Unspecified|BaseIndex, RegXMM } -pclmullqhqdq, 0x660f3a44/0x10, PCLMULQDQ, Modrm||NoSuf|ImmExt, { RegXMM|Unspecified|BaseIndex, RegXMM } -pclmulhqhqdq, 0x660f3a44/0x11, PCLMULQDQ, Modrm||NoSuf|ImmExt, { RegXMM|Unspecified|BaseIndex, RegXMM } +pclmulqdq, 0x660f3a44, PCLMULQDQ, Modrm||= NoSuf, { Imm8|Imm8S, RegXMM|Unspecified|BaseIndex, RegXMM } +pclmullqlqdq, 0x660f3a44/0x00, PCLMULQDQ, Modrm||NoSuf|ImmExt, { RegXMM|Unspecified|BaseIndex, RegXMM } +pclmulhqlqdq, 0x660f3a44/0x01, PCLMULQDQ, Modrm||NoSuf|ImmExt, { RegXMM|Unspecified|BaseIndex, RegXMM } +pclmullqhqdq, 0x660f3a44/0x10, PCLMULQDQ, Modrm||NoSuf|ImmExt, { RegXMM|Unspecified|BaseIndex, RegXMM } +pclmulhqhqdq, 0x660f3a44/0x11, PCLMULQDQ, Modrm||NoSuf|ImmExt, { RegXMM|Unspecified|BaseIndex, RegXMM } =20 // GFNI =20 - +