From: "Mo, Zewei" <zewei...@intel.com> Hi all,
As satcvt patch is about to commit, we will move on the final patch of AVX10.2. This patch will focus on AVX10.2 minmax, vector copy and compare instructions, which is mainly Chapter 8, 11 and 14 of AVX10.2 SPEC. Reference: Intel Advanced Vector Extensions 10.2 Architecture Specification https://cdrdv2.intel.com/v1/dl/getContent/828965 All of the instructions in this patch are new instruction forms except for vmovd and vmovw, which are extended usage from the old ones. Patch descrption and changes are embedded below. Tested on x86-64-pc-linux-gnu. Ok for trunk? Nit: As mentioned in patch descrption, VMINMAXNEPBF16 will be changed to VMINMAXPBF16 eventually. Thx, Haochen --- In this patch, we will support AVX10.2 minmax, vector copy and compare instructions. This will finish the new instruction form support for AVX10.2. Most of them are new instructions forms except for vmovd and vmovw, which are extended usage from the old ones. In current documentation, it is still VMINMAXNEPBF16, but it will change to VMINMAXPBF16 eventually. gas/ChangeLog: * NEWS: Mention AVX10.2. * testsuite/gas/i386/i386.exp: Add AVX10.2 tests. * testsuite/gas/i386/x86-64.exp: Ditto. * testsuite/gas/i386/avx10_2-256-miscs-intel.d: New test. * testsuite/gas/i386/avx10_2-256-miscs.d: Ditto. * testsuite/gas/i386/avx10_2-256-miscs.s: Ditto. * testsuite/gas/i386/avx10_2-512-miscs-intel.d: Ditto. * testsuite/gas/i386/avx10_2-512-miscs.d: Ditto. * testsuite/gas/i386/avx10_2-512-miscs.s: Ditto. * testsuite/gas/i386/x86-64-avx10_2-256-miscs-intel.d: Ditto. * testsuite/gas/i386/x86-64-avx10_2-256-miscs.d: Ditto. * testsuite/gas/i386/x86-64-avx10_2-256-miscs.s: Ditto. * testsuite/gas/i386/x86-64-avx10_2-512-miscs-intel.d: Ditto. * testsuite/gas/i386/x86-64-avx10_2-512-miscs.d: Ditto. * testsuite/gas/i386/x86-64-avx10_2-512-miscs.s: Ditto. opcodes/ChangeLog: * i386-dis-evex-len.h: Add EVEX_LEN_0F7E_P_1_W_1, EVEX_LEN_0FD6_P_2_W_0, EVEX_LEN_MAP5_6E and EVEX_LEN_MAP5_7E. * i386-dis-evex-prefix.h: Add PREFIX_EVEX_0F2E, PREFIX_EVEX_0F2F, PREFIX_EVEX_0F3A52, PREFIX_EVEX_0F3A53, PREFIX_EVEX_MAP5_2E, PREFIX_EVEX_MAP5_2F, PREFIX_EVEX_MAP5_6E and PREFIX_EVEX_MAP5_7E. * i386-dis-evex-w.h: Adjust EVEX_W_0F3A42, EVEX_W_0F7E_P_1 and EVEX_W_0FD6. Add EVEX_W_MAP5_6E_P_1 and EVEX_W_MAP5_7E_P_1. * i386-dis-evex.h: Add and adjust table entries for AVX10.2. * i386-dis.c (PREFIX_EVEX_0F2E): New. (PREFIX_EVEX_0F2F): Ditto. (PREFIX_EVEX_0F3A52): Ditto. (PREFIX_EVEX_0F3A53): Ditto. (PREFIX_EVEX_MAP5_2E): Ditto. (PREFIX_EVEX_MAP5_2F): Ditto. (PREFIX_EVEX_MAP5_6E_L_0): Ditto. (PREFIX_EVEX_MAP5_7E_L_0): Ditto. (EVEX_LEN_0F7E_P_1_W_1): Ditto. (EVEX_LEN_0FD6_P_2_W_0): Ditto. (EVEX_LEN_MAP5_6E): Ditto. (EVEX_LEN_MAP5_7E): Ditto. (EVEX_W_MAP5_6E_P_1): Ditto. (EVEX_W_MAP5_7E_P_1): Ditto. * i386-opc.tbl: Add AVX10.2 instructions. * i386-mnem.h: Regenerated. * i386-tbl.h: Ditto. Co-authored-by: Jun Zhang <jun.zh...@intel.com> Co-authored-by: Haochen Jiang <haochen.ji...@intel.com> --- gas/NEWS | 2 + .../gas/i386/avx10_2-256-miscs-intel.d | 112 + gas/testsuite/gas/i386/avx10_2-256-miscs.d | 110 + gas/testsuite/gas/i386/avx10_2-256-miscs.s | 183 + .../gas/i386/avx10_2-512-miscs-intel.d | 34 + gas/testsuite/gas/i386/avx10_2-512-miscs.d | 32 + gas/testsuite/gas/i386/avx10_2-512-miscs.s | 55 + gas/testsuite/gas/i386/i386.exp | 4 + .../gas/i386/x86-64-avx10_2-256-miscs-intel.d | 109 + .../gas/i386/x86-64-avx10_2-256-miscs.d | 107 + .../gas/i386/x86-64-avx10_2-256-miscs.s | 205 + .../gas/i386/x86-64-avx10_2-512-miscs-intel.d | 34 + .../gas/i386/x86-64-avx10_2-512-miscs.d | 32 + .../gas/i386/x86-64-avx10_2-512-miscs.s | 55 + gas/testsuite/gas/i386/x86-64.exp | 4 + opcodes/i386-dis-evex-len.h | 20 + opcodes/i386-dis-evex-prefix.h | 46 +- opcodes/i386-dis-evex-w.h | 12 +- opcodes/i386-dis-evex.h | 12 +- opcodes/i386-dis.c | 25 +- opcodes/i386-mnem.h | 4137 +++++++++-------- opcodes/i386-opc.tbl | 19 +- opcodes/i386-tbl.h | 554 ++- 23 files changed, 3644 insertions(+), 2259 deletions(-) create mode 100644 gas/testsuite/gas/i386/avx10_2-256-miscs-intel.d create mode 100644 gas/testsuite/gas/i386/avx10_2-256-miscs.d create mode 100644 gas/testsuite/gas/i386/avx10_2-256-miscs.s create mode 100644 gas/testsuite/gas/i386/avx10_2-512-miscs-intel.d create mode 100644 gas/testsuite/gas/i386/avx10_2-512-miscs.d create mode 100644 gas/testsuite/gas/i386/avx10_2-512-miscs.s create mode 100644 gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs-intel.d create mode 100644 gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.d create mode 100644 gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.s create mode 100644 gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs-intel.d create mode 100644 gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.d create mode 100644 gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.s diff --git a/gas/NEWS b/gas/NEWS index 269b63e2056..086ba0477d3 100644 --- a/gas/NEWS +++ b/gas/NEWS @@ -1,5 +1,7 @@ -*- text -*- +* Add support for the x86 Intel AVX10.2 instructions. + * Support for Nios II targets has been dropped, as the architecture has been EOL'ed by Intel. diff --git a/gas/testsuite/gas/i386/avx10_2-256-miscs-intel.d b/gas/testsuite/gas/i386/avx10_2-256-miscs-intel.d new file mode 100644 index 00000000000..59a202df0a9 --- /dev/null +++ b/gas/testsuite/gas/i386/avx10_2-256-miscs-intel.d @@ -0,0 +1,112 @@ +#objdump: -dw -Mintel +#name: i386 AVX10.2/256 minmax, vector copy and compare insns (Intel disassembly) +#source: avx10_2-256-miscs.s + +.*: +file format .* + +Disassembly of section \.text: + +#... +[a-f0-9]+ <_intel>: +\s*[a-f0-9]+:\s*62 f3 57 08 52 f4 7b\s+vminmaxpbf16 xmm6,xmm5,xmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 57 28 52 f4 7b\s+vminmaxpbf16 ymm6,ymm5,ymm4,0x7b +\s*[a-f0-9]+:\s*62 f3 57 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxpbf16 ymm6\{k7\},ymm5,YMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 38 52 31 7b\s+vminmaxpbf16 ymm6,ymm5,WORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 28 52 71 7f 7b\s+vminmaxpbf16 ymm6,ymm5,YMMWORD PTR \[ecx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 bf 52 72 80 7b\s+vminmaxpbf16 ymm6\{k7\}\{z\},ymm5,WORD BCST \[edx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxpbf16 xmm6\{k7\},xmm5,XMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 18 52 31 7b\s+vminmaxpbf16 xmm6,xmm5,WORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 08 52 71 7f 7b\s+vminmaxpbf16 xmm6,xmm5,XMMWORD PTR \[ecx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 9f 52 72 80 7b\s+vminmaxpbf16 xmm6\{k7\}\{z\},xmm5,WORD BCST \[edx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 08 52 f4 7b\s+vminmaxpd xmm6,xmm5,xmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 d5 28 52 f4 7b\s+vminmaxpd ymm6,ymm5,ymm4,0x7b +\s*[a-f0-9]+:\s*62 f3 d1 18 52 f4 7b\s+vminmaxpd ymm6,ymm5,ymm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 d5 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxpd ymm6\{k7\},ymm5,YMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 38 52 31 7b\s+vminmaxpd ymm6,ymm5,QWORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 28 52 71 7f 7b\s+vminmaxpd ymm6,ymm5,YMMWORD PTR \[ecx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 bf 52 72 80 7b\s+vminmaxpd ymm6\{k7\}\{z\},ymm5,QWORD BCST \[edx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxpd xmm6\{k7\},xmm5,XMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 18 52 31 7b\s+vminmaxpd xmm6,xmm5,QWORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 08 52 71 7f 7b\s+vminmaxpd xmm6,xmm5,XMMWORD PTR \[ecx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 9f 52 72 80 7b\s+vminmaxpd xmm6\{k7\}\{z\},xmm5,QWORD BCST \[edx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 08 52 f4 7b\s+vminmaxph xmm6,xmm5,xmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 54 28 52 f4 7b\s+vminmaxph ymm6,ymm5,ymm4,0x7b +\s*[a-f0-9]+:\s*62 f3 50 18 52 f4 7b\s+vminmaxph ymm6,ymm5,ymm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 54 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxph ymm6\{k7\},ymm5,YMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 38 52 31 7b\s+vminmaxph ymm6,ymm5,WORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 28 52 71 7f 7b\s+vminmaxph ymm6,ymm5,YMMWORD PTR \[ecx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 bf 52 72 80 7b\s+vminmaxph ymm6\{k7\}\{z\},ymm5,WORD BCST \[edx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxph xmm6\{k7\},xmm5,XMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 18 52 31 7b\s+vminmaxph xmm6,xmm5,WORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 08 52 71 7f 7b\s+vminmaxph xmm6,xmm5,XMMWORD PTR \[ecx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 9f 52 72 80 7b\s+vminmaxph xmm6\{k7\}\{z\},xmm5,WORD BCST \[edx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 08 52 f4 7b\s+vminmaxps xmm6,xmm5,xmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 55 28 52 f4 7b\s+vminmaxps ymm6,ymm5,ymm4,0x7b +\s*[a-f0-9]+:\s*62 f3 51 18 52 f4 7b\s+vminmaxps ymm6,ymm5,ymm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 55 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxps ymm6\{k7\},ymm5,YMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 38 52 31 7b\s+vminmaxps ymm6,ymm5,DWORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 28 52 71 7f 7b\s+vminmaxps ymm6,ymm5,YMMWORD PTR \[ecx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 bf 52 72 80 7b\s+vminmaxps ymm6\{k7\}\{z\},ymm5,DWORD BCST \[edx-0x200\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxps xmm6\{k7\},xmm5,XMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 18 52 31 7b\s+vminmaxps xmm6,xmm5,DWORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 08 52 71 7f 7b\s+vminmaxps xmm6,xmm5,XMMWORD PTR \[ecx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 9f 52 72 80 7b\s+vminmaxps xmm6\{k7\}\{z\},xmm5,DWORD BCST \[edx-0x200\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 08 53 f4 7b\s+vminmaxsd xmm6,xmm5,xmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 d5 18 53 f4 7b\s+vminmaxsd xmm6,xmm5,xmm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 d5 0f 53 b4 f4 00 00 00 10 7b\s+vminmaxsd xmm6\{k7\},xmm5,QWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 08 53 31 7b\s+vminmaxsd xmm6,xmm5,QWORD PTR \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 08 53 71 7f 7b\s+vminmaxsd xmm6,xmm5,QWORD PTR \[ecx\+0x3f8\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 8f 53 72 80 7b\s+vminmaxsd xmm6\{k7\}\{z\},xmm5,QWORD PTR \[edx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 08 53 f4 7b\s+vminmaxsh xmm6,xmm5,xmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 54 18 53 f4 7b\s+vminmaxsh xmm6,xmm5,xmm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 54 0f 53 b4 f4 00 00 00 10 7b\s+vminmaxsh xmm6\{k7\},xmm5,WORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 08 53 31 7b\s+vminmaxsh xmm6,xmm5,WORD PTR \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 08 53 71 7f 7b\s+vminmaxsh xmm6,xmm5,WORD PTR \[ecx\+0xfe\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 8f 53 72 80 7b\s+vminmaxsh xmm6\{k7\}\{z\},xmm5,WORD PTR \[edx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 08 53 f4 7b\s+vminmaxss xmm6,xmm5,xmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 55 18 53 f4 7b\s+vminmaxss xmm6,xmm5,xmm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 55 0f 53 b4 f4 00 00 00 10 7b\s+vminmaxss xmm6\{k7\},xmm5,DWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 08 53 31 7b\s+vminmaxss xmm6,xmm5,DWORD PTR \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 08 53 71 7f 7b\s+vminmaxss xmm6,xmm5,DWORD PTR \[ecx\+0x1fc\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 8f 53 72 80 7b\s+vminmaxss xmm6\{k7\}\{z\},xmm5,DWORD PTR \[edx-0x200\],0x7b +\s*[a-f0-9]+:\s*62 f1 7e 08 7e f5\s+vmovd xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f1 7d 08 d6 ee\s+vmovd xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f5 7e 08 6e f5\s+vmovw xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f5 7e 08 7e ee\s+vmovw xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f1 ff 08 2f f5\s+vcomxsd xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f1 ff 18 2f f5\s+vcomxsd xmm6,xmm5\{sae\} +\s*[a-f0-9]+:\s*62 f1 ff 08 2f b4 f4 00 00 00 10\s+vcomxsd xmm6,QWORD PTR \[esp\+esi\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 f1 ff 08 2f 31\s+vcomxsd xmm6,QWORD PTR \[ecx\] +\s*[a-f0-9]+:\s*62 f1 ff 08 2f 71 7f\s+vcomxsd xmm6,QWORD PTR \[ecx\+0x3f8\] +\s*[a-f0-9]+:\s*62 f1 ff 08 2f 72 80\s+vcomxsd xmm6,QWORD PTR \[edx-0x400\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2f f5\s+vcomxsh xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f5 7e 18 2f f5\s+vcomxsh xmm6,xmm5\{sae\} +\s*[a-f0-9]+:\s*62 f5 7e 08 2f b4 f4 00 00 00 10\s+vcomxsh xmm6,WORD PTR \[esp\+esi\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2f 31\s+vcomxsh xmm6,WORD PTR \[ecx\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2f 71 7f\s+vcomxsh xmm6,WORD PTR \[ecx\+0xfe\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2f 72 80\s+vcomxsh xmm6,WORD PTR \[edx-0x100\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2f f5\s+vcomxss xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f1 7e 18 2f f5\s+vcomxss xmm6,xmm5\{sae\} +\s*[a-f0-9]+:\s*62 f1 7e 08 2f b4 f4 00 00 00 10\s+vcomxss xmm6,DWORD PTR \[esp\+esi\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2f 31\s+vcomxss xmm6,DWORD PTR \[ecx\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2f 71 7f\s+vcomxss xmm6,DWORD PTR \[ecx\+0x1fc\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2f 72 80\s+vcomxss xmm6,DWORD PTR \[edx-0x200\] +\s*[a-f0-9]+:\s*62 f1 ff 08 2e f5\s+vucomxsd xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f1 ff 18 2e f5\s+vucomxsd xmm6,xmm5\{sae\} +\s*[a-f0-9]+:\s*62 f1 ff 08 2e b4 f4 00 00 00 10\s+vucomxsd xmm6,QWORD PTR \[esp\+esi\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 f1 ff 08 2e 31\s+vucomxsd xmm6,QWORD PTR \[ecx\] +\s*[a-f0-9]+:\s*62 f1 ff 08 2e 71 7f\s+vucomxsd xmm6,QWORD PTR \[ecx\+0x3f8\] +\s*[a-f0-9]+:\s*62 f1 ff 08 2e 72 80\s+vucomxsd xmm6,QWORD PTR \[edx-0x400\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2e f5\s+vucomxsh xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f5 7e 18 2e f5\s+vucomxsh xmm6,xmm5\{sae\} +\s*[a-f0-9]+:\s*62 f5 7e 08 2e b4 f4 00 00 00 10\s+vucomxsh xmm6,WORD PTR \[esp\+esi\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2e 31\s+vucomxsh xmm6,WORD PTR \[ecx\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2e 71 7f\s+vucomxsh xmm6,WORD PTR \[ecx\+0xfe\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2e 72 80\s+vucomxsh xmm6,WORD PTR \[edx-0x100\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2e f5\s+vucomxss xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f1 7e 18 2e f5\s+vucomxss xmm6,xmm5\{sae\} +\s*[a-f0-9]+:\s*62 f1 7e 08 2e b4 f4 00 00 00 10\s+vucomxss xmm6,DWORD PTR \[esp\+esi\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2e 31\s+vucomxss xmm6,DWORD PTR \[ecx\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2e 71 7f\s+vucomxss xmm6,DWORD PTR \[ecx\+0x1fc\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2e 72 80\s+vucomxss xmm6,DWORD PTR \[edx-0x200\] +#pass diff --git a/gas/testsuite/gas/i386/avx10_2-256-miscs.d b/gas/testsuite/gas/i386/avx10_2-256-miscs.d new file mode 100644 index 00000000000..afba15f441a --- /dev/null +++ b/gas/testsuite/gas/i386/avx10_2-256-miscs.d @@ -0,0 +1,110 @@ +#objdump: -dw +#name: i386 AVX10.2/256 minmax, vector copy and compare insns + +.*: +file format .* + +Disassembly of section \.text: + +0+ <_start>: +\s*[a-f0-9]+:\s*62 f3 57 08 52 f4 7b\s+vminmaxpbf16\s\$0x7b,%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 57 28 52 f4 7b\s+vminmaxpbf16\s\$0x7b,%ymm4,%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 57 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxpbf16\s\$0x7b,0x10000000\(%esp,%esi,8\),%ymm5,%ymm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 57 38 52 31 7b\s+vminmaxpbf16\s\$0x7b,\(%ecx\)\{1to16\},%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 57 28 52 71 7f 7b\s+vminmaxpbf16\s\$0x7b,0xfe0\(%ecx\),%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 57 bf 52 72 80 7b\s+vminmaxpbf16\s\$0x7b,-0x100\(%edx\)\{1to16\},%ymm5,%ymm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 57 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxpbf16\s\$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 57 18 52 31 7b\s+vminmaxpbf16\s\$0x7b,\(%ecx\)\{1to8\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 57 08 52 71 7f 7b\s+vminmaxpbf16\s\$0x7b,0x7f0\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 57 9f 52 72 80 7b\s+vminmaxpbf16\s\$0x7b,-0x100\(%edx\)\{1to8\},%xmm5,%xmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 d5 08 52 f4 7b\s+vminmaxpd\s\$0x7b,%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 d5 28 52 f4 7b\s+vminmaxpd\s\$0x7b,%ymm4,%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 d1 18 52 f4 7b\s+vminmaxpd\s\$0x7b,\{sae\},%ymm4,%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 d5 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxpd\s\$0x7b,0x10000000\(%esp,%esi,8\),%ymm5,%ymm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 d5 38 52 31 7b\s+vminmaxpd\s\$0x7b,\(%ecx\)\{1to4\},%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 d5 28 52 71 7f 7b\s+vminmaxpd\s\$0x7b,0xfe0\(%ecx\),%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 d5 bf 52 72 80 7b\s+vminmaxpd\s\$0x7b,-0x400\(%edx\)\{1to4\},%ymm5,%ymm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 d5 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxpd\s\$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 d5 18 52 31 7b\s+vminmaxpd\s\$0x7b,\(%ecx\)\{1to2\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 d5 08 52 71 7f 7b\s+vminmaxpd\s\$0x7b,0x7f0\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 d5 9f 52 72 80 7b\s+vminmaxpd\s\$0x7b,-0x400\(%edx\)\{1to2\},%xmm5,%xmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 54 08 52 f4 7b\s+vminmaxph\s\$0x7b,%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 54 28 52 f4 7b\s+vminmaxph\s\$0x7b,%ymm4,%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 50 18 52 f4 7b\s+vminmaxph\s\$0x7b,\{sae\},%ymm4,%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 54 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxph\s\$0x7b,0x10000000\(%esp,%esi,8\),%ymm5,%ymm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 54 38 52 31 7b\s+vminmaxph\s\$0x7b,\(%ecx\)\{1to16\},%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 54 28 52 71 7f 7b\s+vminmaxph\s\$0x7b,0xfe0\(%ecx\),%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 54 bf 52 72 80 7b\s+vminmaxph\s\$0x7b,-0x100\(%edx\)\{1to16\},%ymm5,%ymm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 54 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxph\s\$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 54 18 52 31 7b\s+vminmaxph\s\$0x7b,\(%ecx\)\{1to8\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 54 08 52 71 7f 7b\s+vminmaxph\s\$0x7b,0x7f0\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 54 9f 52 72 80 7b\s+vminmaxph\s\$0x7b,-0x100\(%edx\)\{1to8\},%xmm5,%xmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 55 08 52 f4 7b\s+vminmaxps\s\$0x7b,%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 55 28 52 f4 7b\s+vminmaxps\s\$0x7b,%ymm4,%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 51 18 52 f4 7b\s+vminmaxps\s\$0x7b,\{sae\},%ymm4,%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 55 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxps\s\$0x7b,0x10000000\(%esp,%esi,8\),%ymm5,%ymm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 55 38 52 31 7b\s+vminmaxps\s\$0x7b,\(%ecx\)\{1to8\},%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 55 28 52 71 7f 7b\s+vminmaxps\s\$0x7b,0xfe0\(%ecx\),%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 55 bf 52 72 80 7b\s+vminmaxps\s\$0x7b,-0x200\(%edx\)\{1to8\},%ymm5,%ymm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 55 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxps\s\$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 55 18 52 31 7b\s+vminmaxps\s\$0x7b,\(%ecx\)\{1to4\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 55 08 52 71 7f 7b\s+vminmaxps\s\$0x7b,0x7f0\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 55 9f 52 72 80 7b\s+vminmaxps\s\$0x7b,-0x200\(%edx\)\{1to4\},%xmm5,%xmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 d5 08 53 f4 7b\s+vminmaxsd\s\$0x7b,%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 d5 18 53 f4 7b\s+vminmaxsd\s\$0x7b,\{sae\},%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 d5 0f 53 b4 f4 00 00 00 10 7b\s+vminmaxsd\s\$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 d5 08 53 31 7b\s+vminmaxsd\s\$0x7b,\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 d5 08 53 71 7f 7b\s+vminmaxsd\s\$0x7b,0x3f8\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 d5 8f 53 72 80 7b\s+vminmaxsd\s\$0x7b,-0x400\(%edx\),%xmm5,%xmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 54 08 53 f4 7b\s+vminmaxsh\s\$0x7b,%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 54 18 53 f4 7b\s+vminmaxsh\s\$0x7b,\{sae\},%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 54 0f 53 b4 f4 00 00 00 10 7b\s+vminmaxsh\s\$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 54 08 53 31 7b\s+vminmaxsh\s\$0x7b,\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 54 08 53 71 7f 7b\s+vminmaxsh\s\$0x7b,0xfe\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 54 8f 53 72 80 7b\s+vminmaxsh\s\$0x7b,-0x100\(%edx\),%xmm5,%xmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 55 08 53 f4 7b\s+vminmaxss\s\$0x7b,%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 55 18 53 f4 7b\s+vminmaxss\s\$0x7b,\{sae\},%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 55 0f 53 b4 f4 00 00 00 10 7b\s+vminmaxss\s\$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 55 08 53 31 7b\s+vminmaxss\s\$0x7b,\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 55 08 53 71 7f 7b\s+vminmaxss\s\$0x7b,0x1fc\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 55 8f 53 72 80 7b\s+vminmaxss\s\$0x7b,-0x200\(%edx\),%xmm5,%xmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f1 7e 08 7e f5\s+vmovd %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 7d 08 d6 ee\s+vmovd %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 6e f5\s+vmovw %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 7e ee\s+vmovw %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2f f5\s+vcomxsd %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 18 2f f5\s+vcomxsd \{sae\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2f b4 f4 00 00 00 10\s+vcomxsd 0x10000000\(%esp,%esi,8\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2f 31\s+vcomxsd \(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2f 71 7f\s+vcomxsd 0x3f8\(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2f 72 80\s+vcomxsd -0x400\(%edx\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2f f5\s+vcomxsh %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 18 2f f5\s+vcomxsh \{sae\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2f b4 f4 00 00 00 10\s+vcomxsh 0x10000000\(%esp,%esi,8\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2f 31\s+vcomxsh \(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2f 71 7f\s+vcomxsh 0xfe\(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2f 72 80\s+vcomxsh -0x100\(%edx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2f f5\s+vcomxss %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 18 2f f5\s+vcomxss \{sae\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2f b4 f4 00 00 00 10\s+vcomxss 0x10000000\(%esp,%esi,8\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2f 31\s+vcomxss \(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2f 71 7f\s+vcomxss 0x1fc\(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2f 72 80\s+vcomxss -0x200\(%edx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2e f5\s+vucomxsd %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 18 2e f5\s+vucomxsd \{sae\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2e b4 f4 00 00 00 10\s+vucomxsd 0x10000000\(%esp,%esi,8\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2e 31\s+vucomxsd \(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2e 71 7f\s+vucomxsd 0x3f8\(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2e 72 80\s+vucomxsd -0x400\(%edx\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2e f5\s+vucomxsh %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 18 2e f5\s+vucomxsh \{sae\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2e b4 f4 00 00 00 10\s+vucomxsh 0x10000000\(%esp,%esi,8\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2e 31\s+vucomxsh \(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2e 71 7f\s+vucomxsh 0xfe\(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2e 72 80\s+vucomxsh -0x100\(%edx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2e f5\s+vucomxss %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 18 2e f5\s+vucomxss \{sae\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2e b4 f4 00 00 00 10\s+vucomxss 0x10000000\(%esp,%esi,8\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2e 31\s+vucomxss \(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2e 71 7f\s+vucomxss 0x1fc\(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2e 72 80\s+vucomxss -0x200\(%edx\),%xmm6 +#pass diff --git a/gas/testsuite/gas/i386/avx10_2-256-miscs.s b/gas/testsuite/gas/i386/avx10_2-256-miscs.s new file mode 100644 index 00000000000..b9218f25d73 --- /dev/null +++ b/gas/testsuite/gas/i386/avx10_2-256-miscs.s @@ -0,0 +1,183 @@ +# Check 32bit AVX10.2/256 instructions + + .arch generic32 + .arch .avx10.2/256 + .text +_start: + vminmaxpbf16 $123, %xmm4, %xmm5, %xmm6 + vminmaxpbf16 $123, %ymm4, %ymm5, %ymm6 + vminmaxpbf16 $123, 0x10000000(%esp, %esi, 8), %ymm5, %ymm6{%k7} + vminmaxpbf16 $123, (%ecx){1to16}, %ymm5, %ymm6 + vminmaxpbf16 $123, 4064(%ecx), %ymm5, %ymm6 + vminmaxpbf16 $123, -256(%edx){1to16}, %ymm5, %ymm6{%k7}{z} + vminmaxpbf16 $123, 0x10000000(%esp, %esi, 8), %xmm5, %xmm6{%k7} + vminmaxpbf16 $123, (%ecx){1to8}, %xmm5, %xmm6 + vminmaxpbf16 $123, 2032(%ecx), %xmm5, %xmm6 + vminmaxpbf16 $123, -256(%edx){1to8}, %xmm5, %xmm6{%k7}{z} + vminmaxpd $123, %xmm4, %xmm5, %xmm6 + vminmaxpd $123, %ymm4, %ymm5, %ymm6 + vminmaxpd $123, {sae}, %ymm4, %ymm5, %ymm6 + vminmaxpd $123, 0x10000000(%esp, %esi, 8), %ymm5, %ymm6{%k7} + vminmaxpd $123, (%ecx){1to4}, %ymm5, %ymm6 + vminmaxpd $123, 4064(%ecx), %ymm5, %ymm6 + vminmaxpd $123, -1024(%edx){1to4}, %ymm5, %ymm6{%k7}{z} + vminmaxpd $123, 0x10000000(%esp, %esi, 8), %xmm5, %xmm6{%k7} + vminmaxpd $123, (%ecx){1to2}, %xmm5, %xmm6 + vminmaxpd $123, 2032(%ecx), %xmm5, %xmm6 + vminmaxpd $123, -1024(%edx){1to2}, %xmm5, %xmm6{%k7}{z} + vminmaxph $123, %xmm4, %xmm5, %xmm6 + vminmaxph $123, %ymm4, %ymm5, %ymm6 + vminmaxph $123, {sae}, %ymm4, %ymm5, %ymm6 + vminmaxph $123, 0x10000000(%esp, %esi, 8), %ymm5, %ymm6{%k7} + vminmaxph $123, (%ecx){1to16}, %ymm5, %ymm6 + vminmaxph $123, 4064(%ecx), %ymm5, %ymm6 + vminmaxph $123, -256(%edx){1to16}, %ymm5, %ymm6{%k7}{z} + vminmaxph $123, 0x10000000(%esp, %esi, 8), %xmm5, %xmm6{%k7} + vminmaxph $123, (%ecx){1to8}, %xmm5, %xmm6 + vminmaxph $123, 2032(%ecx), %xmm5, %xmm6 + vminmaxph $123, -256(%edx){1to8}, %xmm5, %xmm6{%k7}{z} + vminmaxps $123, %xmm4, %xmm5, %xmm6 + vminmaxps $123, %ymm4, %ymm5, %ymm6 + vminmaxps $123, {sae}, %ymm4, %ymm5, %ymm6 + vminmaxps $123, 0x10000000(%esp, %esi, 8), %ymm5, %ymm6{%k7} + vminmaxps $123, (%ecx){1to8}, %ymm5, %ymm6 + vminmaxps $123, 4064(%ecx), %ymm5, %ymm6 + vminmaxps $123, -512(%edx){1to8}, %ymm5, %ymm6{%k7}{z} + vminmaxps $123, 0x10000000(%esp, %esi, 8), %xmm5, %xmm6{%k7} + vminmaxps $123, (%ecx){1to4}, %xmm5, %xmm6 + vminmaxps $123, 2032(%ecx), %xmm5, %xmm6 + vminmaxps $123, -512(%edx){1to4}, %xmm5, %xmm6{%k7}{z} + vminmaxsd $123, %xmm4, %xmm5, %xmm6 + vminmaxsd $123, {sae}, %xmm4, %xmm5, %xmm6 + vminmaxsd $123, 0x10000000(%esp, %esi, 8), %xmm5, %xmm6{%k7} + vminmaxsd $123, (%ecx), %xmm5, %xmm6 + vminmaxsd $123, 1016(%ecx), %xmm5, %xmm6 + vminmaxsd $123, -1024(%edx), %xmm5, %xmm6{%k7}{z} + vminmaxsh $123, %xmm4, %xmm5, %xmm6 + vminmaxsh $123, {sae}, %xmm4, %xmm5, %xmm6 + vminmaxsh $123, 0x10000000(%esp, %esi, 8), %xmm5, %xmm6{%k7} + vminmaxsh $123, (%ecx), %xmm5, %xmm6 + vminmaxsh $123, 254(%ecx), %xmm5, %xmm6 + vminmaxsh $123, -256(%edx), %xmm5, %xmm6{%k7}{z} + vminmaxss $123, %xmm4, %xmm5, %xmm6 + vminmaxss $123, {sae}, %xmm4, %xmm5, %xmm6 + vminmaxss $123, 0x10000000(%esp, %esi, 8), %xmm5, %xmm6{%k7} + vminmaxss $123, (%ecx), %xmm5, %xmm6 + vminmaxss $123, 508(%ecx), %xmm5, %xmm6 + vminmaxss $123, -512(%edx), %xmm5, %xmm6{%k7}{z} + + vmovd %xmm5, %xmm6 + vmovd.s %xmm5, %xmm6 + vmovw %xmm5, %xmm6 + vmovw.s %xmm5, %xmm6 + + .irp m, "", u + v\m\()comxsd %xmm5, %xmm6 + v\m\()comxsd {sae}, %xmm5, %xmm6 + v\m\()comxsd 0x10000000(%esp, %esi, 8), %xmm6 + v\m\()comxsd (%ecx), %xmm6 + v\m\()comxsd 1016(%ecx), %xmm6 + v\m\()comxsd -1024(%edx), %xmm6 + v\m\()comxsh %xmm5, %xmm6 + v\m\()comxsh {sae}, %xmm5, %xmm6 + v\m\()comxsh 0x10000000(%esp, %esi, 8), %xmm6 + v\m\()comxsh (%ecx), %xmm6 + v\m\()comxsh 254(%ecx), %xmm6 + v\m\()comxsh -256(%edx), %xmm6 + v\m\()comxss %xmm5, %xmm6 + v\m\()comxss {sae}, %xmm5, %xmm6 + v\m\()comxss 0x10000000(%esp, %esi, 8), %xmm6 + v\m\()comxss (%ecx), %xmm6 + v\m\()comxss 508(%ecx), %xmm6 + v\m\()comxss -512(%edx), %xmm6 + .endr + +_intel: + .intel_syntax noprefix + vminmaxpbf16 xmm6, xmm5, xmm4, 123 + vminmaxpbf16 ymm6, ymm5, ymm4, 123 + vminmaxpbf16 ymm6{k7}, ymm5, [esp+esi*8+0x10000000], 123 + vminmaxpbf16 ymm6, ymm5, [ecx]{1to16}, 123 + vminmaxpbf16 ymm6, ymm5, YMMWORD PTR [ecx+4064], 123 + vminmaxpbf16 ymm6{k7}{z}, ymm5, WORD PTR [edx-256]{1to16}, 123 + vminmaxpbf16 xmm6{k7}, xmm5, [esp+esi*8+0x10000000], 123 + vminmaxpbf16 xmm6, xmm5, [ecx]{1to8}, 123 + vminmaxpbf16 xmm6, xmm5, XMMWORD PTR [ecx+2032], 123 + vminmaxpbf16 xmm6{k7}{z}, xmm5, WORD PTR [edx-256]{1to8}, 123 + vminmaxpd xmm6, xmm5, xmm4, 123 + vminmaxpd ymm6, ymm5, ymm4, 123 + vminmaxpd ymm6, ymm5, ymm4, {sae}, 123 + vminmaxpd ymm6{k7}, ymm5, YMMWORD PTR [esp+esi*8+0x10000000], 123 + vminmaxpd ymm6, ymm5, QWORD PTR [ecx]{1to4}, 123 + vminmaxpd ymm6, ymm5, [ecx+4064], 123 + vminmaxpd ymm6{k7}{z}, ymm5, [edx-1024]{1to4}, 123 + vminmaxpd xmm6{k7}, xmm5, XMMWORD PTR [esp+esi*8+0x10000000], 123 + vminmaxpd xmm6, xmm5, QWORD PTR [ecx]{1to2}, 123 + vminmaxpd xmm6, xmm5, [ecx+2032], 123 + vminmaxpd xmm6{k7}{z}, xmm5, [edx-1024]{1to2}, 123 + vminmaxph xmm6, xmm5, xmm4, 123 + vminmaxph ymm6, ymm5, ymm4, 123 + vminmaxph ymm6, ymm5, ymm4, {sae}, 123 + vminmaxph ymm6{k7}, ymm5, [esp+esi*8+0x10000000], 123 + vminmaxph ymm6, ymm5, [ecx]{1to16}, 123 + vminmaxph ymm6, ymm5, YMMWORD PTR [ecx+4064], 123 + vminmaxph ymm6{k7}{z}, ymm5, WORD PTR [edx-256]{1to16}, 123 + vminmaxph xmm6{k7}, xmm5, XMMWORD PTR [esp+esi*8+0x10000000], 123 + vminmaxph xmm6, xmm5, WORD PTR [ecx]{1to8}, 123 + vminmaxph xmm6, xmm5, [ecx+2032], 123 + vminmaxph xmm6{k7}{z}, xmm5, [edx-256]{1to8}, 123 + vminmaxps xmm6, xmm5, xmm4, 123 + vminmaxps ymm6, ymm5, ymm4, 123 + vminmaxps ymm6, ymm5, ymm4, {sae}, 123 + vminmaxps ymm6{k7}, ymm5, YMMWORD PTR [esp+esi*8+0x10000000], 123 + vminmaxps ymm6, ymm5, DWORD PTR [ecx]{1to8}, 123 + vminmaxps ymm6, ymm5, [ecx+4064], 123 + vminmaxps ymm6{k7}{z}, ymm5, [edx-512]{1to8}, 123 + vminmaxps xmm6{k7}, xmm5, [esp+esi*8+0x10000000], 123 + vminmaxps xmm6, xmm5, [ecx]{1to4}, 123 + vminmaxps xmm6, xmm5, XMMWORD PTR [ecx+2032], 123 + vminmaxps xmm6{k7}{z}, xmm5, DWORD PTR [edx-512]{1to4}, 123 + vminmaxsd xmm6, xmm5, xmm4, 123 + vminmaxsd xmm6, xmm5, xmm4, {sae}, 123 + vminmaxsd xmm6{k7}, xmm5, [esp+esi*8+0x10000000], 123 + vminmaxsd xmm6, xmm5, QWORD PTR [ecx], 123 + vminmaxsd xmm6, xmm5, [ecx+1016], 123 + vminmaxsd xmm6{k7}{z}, xmm5, QWORD PTR [edx-1024], 123 + vminmaxsh xmm6, xmm5, xmm4, 123 + vminmaxsh xmm6, xmm5, xmm4, {sae}, 123 + vminmaxsh xmm6{k7}, xmm5, WORD PTR [esp+esi*8+0x10000000], 123 + vminmaxsh xmm6, xmm5, [ecx], 123 + vminmaxsh xmm6, xmm5, [ecx+254], 123 + vminmaxsh xmm6{k7}{z}, xmm5, WORD PTR [edx-256], 123 + vminmaxss xmm6, xmm5, xmm4, 123 + vminmaxss xmm6, xmm5, xmm4, {sae}, 123 + vminmaxss xmm6{k7}, xmm5, DWORD PTR [esp+esi*8+0x10000000], 123 + vminmaxss xmm6, xmm5, [ecx], 123 + vminmaxss xmm6, xmm5, DWORD PTR [ecx+508], 123 + vminmaxss xmm6{k7}{z}, xmm5, [edx-512], 123 + + vmovd xmm6, xmm5 + vmovd.s xmm6, xmm5 + vmovw xmm6, xmm5 + vmovw.s xmm6, xmm5 + + .irp m, "", u + v\m\()comxsd xmm6, xmm5 + v\m\()comxsd xmm6, xmm5, {sae} + v\m\()comxsd xmm6, [esp+esi*8+0x10000000] + v\m\()comxsd xmm6, QWORD PTR [ecx] + v\m\()comxsd xmm6, [ecx+1016] + v\m\()comxsd xmm6, QWORD PTR [edx-1024] + v\m\()comxsh xmm6, xmm5 + v\m\()comxsh xmm6, xmm5, {sae} + v\m\()comxsh xmm6, WORD PTR [esp+esi*8+0x10000000] + v\m\()comxsh xmm6, [ecx] + v\m\()comxsh xmm6, [ecx+254] + v\m\()comxsh xmm6, WORD PTR [edx-256] + v\m\()comxss xmm6, xmm5 + v\m\()comxss xmm6, xmm5, {sae} + v\m\()comxss xmm6, DWORD PTR [esp+esi*8+0x10000000] + v\m\()comxss xmm6, [ecx] + v\m\()comxss xmm6, DWORD PTR [ecx+508] + v\m\()comxss xmm6, [edx-512] + .endr diff --git a/gas/testsuite/gas/i386/avx10_2-512-miscs-intel.d b/gas/testsuite/gas/i386/avx10_2-512-miscs-intel.d new file mode 100644 index 00000000000..a8a4600e47f --- /dev/null +++ b/gas/testsuite/gas/i386/avx10_2-512-miscs-intel.d @@ -0,0 +1,34 @@ +#objdump: -dw -Mintel +#name: i386 AVX10.2/512 minmax insns (Intel disassembly) +#source: avx10_2-512-miscs.s + +.*: +file format .* + +Disassembly of section \.text: + +#... +[a-f0-9]+ <_intel>: +\s*[a-f0-9]+:\s*62 f3 57 48 52 f4 7b\s+vminmaxpbf16 zmm6,zmm5,zmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 57 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxpbf16 zmm6\{k7\},zmm5,ZMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 58 52 31 7b\s+vminmaxpbf16 zmm6,zmm5,WORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 48 52 71 7f 7b\s+vminmaxpbf16 zmm6,zmm5,ZMMWORD PTR \[ecx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 df 52 72 80 7b\s+vminmaxpbf16 zmm6\{k7\}\{z\},zmm5,WORD BCST \[edx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 48 52 f4 7b\s+vminmaxpd zmm6,zmm5,zmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 d5 18 52 f4 7b\s+vminmaxpd zmm6,zmm5,zmm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 d5 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxpd zmm6\{k7\},zmm5,ZMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 58 52 31 7b\s+vminmaxpd zmm6,zmm5,QWORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 48 52 71 7f 7b\s+vminmaxpd zmm6,zmm5,ZMMWORD PTR \[ecx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 df 52 72 80 7b\s+vminmaxpd zmm6\{k7\}\{z\},zmm5,QWORD BCST \[edx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 48 52 f4 7b\s+vminmaxph zmm6,zmm5,zmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 54 18 52 f4 7b\s+vminmaxph zmm6,zmm5,zmm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 54 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxph zmm6\{k7\},zmm5,ZMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 58 52 31 7b\s+vminmaxph zmm6,zmm5,WORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 48 52 71 7f 7b\s+vminmaxph zmm6,zmm5,ZMMWORD PTR \[ecx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 df 52 72 80 7b\s+vminmaxph zmm6\{k7\}\{z\},zmm5,WORD BCST \[edx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 48 52 f4 7b\s+vminmaxps zmm6,zmm5,zmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 55 18 52 f4 7b\s+vminmaxps zmm6,zmm5,zmm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 55 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxps zmm6\{k7\},zmm5,ZMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 58 52 31 7b\s+vminmaxps zmm6,zmm5,DWORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 48 52 71 7f 7b\s+vminmaxps zmm6,zmm5,ZMMWORD PTR \[ecx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 df 52 72 80 7b\s+vminmaxps zmm6\{k7\}\{z\},zmm5,DWORD BCST \[edx-0x200\],0x7b +#pass diff --git a/gas/testsuite/gas/i386/avx10_2-512-miscs.d b/gas/testsuite/gas/i386/avx10_2-512-miscs.d new file mode 100644 index 00000000000..07a63fdb6fa --- /dev/null +++ b/gas/testsuite/gas/i386/avx10_2-512-miscs.d @@ -0,0 +1,32 @@ +#objdump: -dw +#name: i386 AVX10.2/512 minmax insns + +.*: +file format .* + +Disassembly of section \.text: + +0+ <_start>: +\s*[a-f0-9]+:\s*62 f3 57 48 52 f4 7b\s+vminmaxpbf16\s\$0x7b,%zmm4,%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 57 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxpbf16\s\$0x7b,0x10000000\(%esp,%esi,8\),%zmm5,%zmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 57 58 52 31 7b\s+vminmaxpbf16\s\$0x7b,\(%ecx\)\{1to32\},%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 57 48 52 71 7f 7b\s+vminmaxpbf16\s\$0x7b,0x1fc0\(%ecx\),%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 57 df 52 72 80 7b\s+vminmaxpbf16\s\$0x7b,-0x100\(%edx\)\{1to32\},%zmm5,%zmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 d5 48 52 f4 7b\s+vminmaxpd\s\$0x7b,%zmm4,%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 d5 18 52 f4 7b\s+vminmaxpd\s\$0x7b,\{sae\},%zmm4,%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 d5 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxpd\s\$0x7b,0x10000000\(%esp,%esi,8\),%zmm5,%zmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 d5 58 52 31 7b\s+vminmaxpd\s\$0x7b,\(%ecx\)\{1to8\},%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 d5 48 52 71 7f 7b\s+vminmaxpd\s\$0x7b,0x1fc0\(%ecx\),%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 d5 df 52 72 80 7b\s+vminmaxpd\s\$0x7b,-0x400\(%edx\)\{1to8\},%zmm5,%zmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 54 48 52 f4 7b\s+vminmaxph\s\$0x7b,%zmm4,%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 54 18 52 f4 7b\s+vminmaxph\s\$0x7b,\{sae\},%zmm4,%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 54 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxph\s\$0x7b,0x10000000\(%esp,%esi,8\),%zmm5,%zmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 54 58 52 31 7b\s+vminmaxph\s\$0x7b,\(%ecx\)\{1to32\},%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 54 48 52 71 7f 7b\s+vminmaxph\s\$0x7b,0x1fc0\(%ecx\),%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 54 df 52 72 80 7b\s+vminmaxph\s\$0x7b,-0x100\(%edx\)\{1to32\},%zmm5,%zmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 55 48 52 f4 7b\s+vminmaxps\s\$0x7b,%zmm4,%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 55 18 52 f4 7b\s+vminmaxps\s\$0x7b,\{sae\},%zmm4,%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 55 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxps\s\$0x7b,0x10000000\(%esp,%esi,8\),%zmm5,%zmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 55 58 52 31 7b\s+vminmaxps\s\$0x7b,\(%ecx\)\{1to16\},%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 55 48 52 71 7f 7b\s+vminmaxps\s\$0x7b,0x1fc0\(%ecx\),%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 55 df 52 72 80 7b\s+vminmaxps\s\$0x7b,-0x200\(%edx\)\{1to16\},%zmm5,%zmm6\{%k7\}\{z\} +#pass diff --git a/gas/testsuite/gas/i386/avx10_2-512-miscs.s b/gas/testsuite/gas/i386/avx10_2-512-miscs.s new file mode 100644 index 00000000000..78962dcff52 --- /dev/null +++ b/gas/testsuite/gas/i386/avx10_2-512-miscs.s @@ -0,0 +1,55 @@ +# Check 32bit AVX10.2/512 instructions + + .arch generic32 + .arch .avx10.2/512 + .text +_start: + vminmaxpbf16 $123, %zmm4, %zmm5, %zmm6 + vminmaxpbf16 $123, 0x10000000(%esp, %esi, 8), %zmm5, %zmm6{%k7} + vminmaxpbf16 $123, (%ecx){1to32}, %zmm5, %zmm6 + vminmaxpbf16 $123, 8128(%ecx), %zmm5, %zmm6 + vminmaxpbf16 $123, -256(%edx){1to32}, %zmm5, %zmm6{%k7}{z} + vminmaxpd $123, %zmm4, %zmm5, %zmm6 + vminmaxpd $123, {sae}, %zmm4, %zmm5, %zmm6 + vminmaxpd $123, 0x10000000(%esp, %esi, 8), %zmm5, %zmm6{%k7} + vminmaxpd $123, (%ecx){1to8}, %zmm5, %zmm6 + vminmaxpd $123, 8128(%ecx), %zmm5, %zmm6 + vminmaxpd $123, -1024(%edx){1to8}, %zmm5, %zmm6{%k7}{z} + vminmaxph $123, %zmm4, %zmm5, %zmm6 + vminmaxph $123, {sae}, %zmm4, %zmm5, %zmm6 + vminmaxph $123, 0x10000000(%esp, %esi, 8), %zmm5, %zmm6{%k7} + vminmaxph $123, (%ecx){1to32}, %zmm5, %zmm6 + vminmaxph $123, 8128(%ecx), %zmm5, %zmm6 + vminmaxph $123, -256(%edx){1to32}, %zmm5, %zmm6{%k7}{z} + vminmaxps $123, %zmm4, %zmm5, %zmm6 + vminmaxps $123, {sae}, %zmm4, %zmm5, %zmm6 + vminmaxps $123, 0x10000000(%esp, %esi, 8), %zmm5, %zmm6{%k7} + vminmaxps $123, (%ecx){1to16}, %zmm5, %zmm6 + vminmaxps $123, 8128(%ecx), %zmm5, %zmm6 + vminmaxps $123, -512(%edx){1to16}, %zmm5, %zmm6{%k7}{z} + +_intel: + .intel_syntax noprefix + vminmaxpbf16 zmm6, zmm5, zmm4, 123 + vminmaxpbf16 zmm6{k7}, zmm5, [esp+esi*8+0x10000000], 123 + vminmaxpbf16 zmm6, zmm5, [ecx]{1to32}, 123 + vminmaxpbf16 zmm6, zmm5, ZMMWORD PTR [ecx+8128], 123 + vminmaxpbf16 zmm6{k7}{z}, zmm5, WORD PTR [edx-256]{1to32}, 123 + vminmaxpd zmm6, zmm5, zmm4, 123 + vminmaxpd zmm6, zmm5, zmm4, {sae}, 123 + vminmaxpd zmm6{k7}, zmm5, ZMMWORD PTR [esp+esi*8+0x10000000], 123 + vminmaxpd zmm6, zmm5, QWORD PTR [ecx]{1to8}, 123 + vminmaxpd zmm6, zmm5, [ecx+8128], 123 + vminmaxpd zmm6{k7}{z}, zmm5, [edx-1024]{1to8}, 123 + vminmaxph zmm6, zmm5, zmm4, 123 + vminmaxph zmm6, zmm5, zmm4, {sae}, 123 + vminmaxph zmm6{k7}, zmm5, [esp+esi*8+0x10000000], 123 + vminmaxph zmm6, zmm5, WORD PTR [ecx]{1to32}, 123 + vminmaxph zmm6, zmm5, ZMMWORD PTR [ecx+8128], 123 + vminmaxph zmm6{k7}{z}, zmm5, [edx-256]{1to32}, 123 + vminmaxps zmm6, zmm5, zmm4, 123 + vminmaxps zmm6, zmm5, zmm4, {sae}, 123 + vminmaxps zmm6{k7}, zmm5, ZMMWORD PTR [esp+esi*8+0x10000000], 123 + vminmaxps zmm6, zmm5, [ecx]{1to16}, 123 + vminmaxps zmm6, zmm5, [ecx+8128], 123 + vminmaxps zmm6{k7}{z}, zmm5, DWORD PTR [edx-512]{1to16}, 123 diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index b5a0b48f32f..f66c61eed11 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -531,6 +531,10 @@ if [gas_32_check] then { run_dump_test "avx10_2-512-satcvt-intel" run_dump_test "avx10_2-256-satcvt" run_dump_test "avx10_2-256-satcvt-intel" + run_dump_test "avx10_2-512-miscs" + run_dump_test "avx10_2-512-miscs-intel" + run_dump_test "avx10_2-256-miscs" + run_dump_test "avx10_2-256-miscs-intel" run_list_test "sg" run_dump_test "clzero" run_dump_test "invlpgb" diff --git a/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs-intel.d b/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs-intel.d new file mode 100644 index 00000000000..7855f2d3a75 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs-intel.d @@ -0,0 +1,109 @@ +#objdump: -dw -Mintel +#name: x86_64 AVX10.2/256 minmax, vector copy and compare insns (Intel disassembly) +#source: x86-64-avx10_2-256-miscs.s + +.*: +file format .* + +Disassembly of section \.text: + +#... +[a-f0-9]+ <_intel>: +\s*[a-f0-9]+:\s*62 03 17 00 52 f4 7b\s+vminmaxpbf16 xmm30,xmm29,xmm28,0x7b +\s*[a-f0-9]+:\s*62 03 17 20 52 f4 7b\s+vminmaxpbf16 ymm30,ymm29,ymm28,0x7b +\s*[a-f0-9]+:\s*62 23 17 27 52 b4 f5 00 00 00 10 7b\s+vminmaxpbf16 ymm30\{k7\},ymm29,YMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 17 30 52 31 7b\s+vminmaxpbf16 ymm30,ymm29,WORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 17 20 52 71 7f 7b\s+vminmaxpbf16 ymm30,ymm29,YMMWORD PTR \[rcx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 63 17 b7 52 72 80 7b\s+vminmaxpbf16 ymm30\{k7\}\{z\},ymm29,WORD BCST \[rdx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 23 17 07 52 b4 f5 00 00 00 10 7b\s+vminmaxpbf16 xmm30\{k7\},xmm29,XMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 17 10 52 31 7b\s+vminmaxpbf16 xmm30,xmm29,WORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 17 00 52 71 7f 7b\s+vminmaxpbf16 xmm30,xmm29,XMMWORD PTR \[rcx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 63 17 97 52 72 80 7b\s+vminmaxpbf16 xmm30\{k7\}\{z\},xmm29,WORD BCST \[rdx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 03 95 00 52 f4 7b\s+vminmaxpd xmm30,xmm29,xmm28,0x7b +\s*[a-f0-9]+:\s*62 03 95 20 52 f4 7b\s+vminmaxpd ymm30,ymm29,ymm28,0x7b +\s*[a-f0-9]+:\s*62 23 95 27 52 b4 f5 00 00 00 10 7b\s+vminmaxpd ymm30\{k7\},ymm29,YMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 95 30 52 31 7b\s+vminmaxpd ymm30,ymm29,QWORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 95 20 52 71 7f 7b\s+vminmaxpd ymm30,ymm29,YMMWORD PTR \[rcx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 63 95 b7 52 72 80 7b\s+vminmaxpd ymm30\{k7\}\{z\},ymm29,QWORD BCST \[rdx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 23 95 07 52 b4 f5 00 00 00 10 7b\s+vminmaxpd xmm30\{k7\},xmm29,XMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 95 10 52 31 7b\s+vminmaxpd xmm30,xmm29,QWORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 95 00 52 71 7f 7b\s+vminmaxpd xmm30,xmm29,XMMWORD PTR \[rcx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 63 95 97 52 72 80 7b\s+vminmaxpd xmm30\{k7\}\{z\},xmm29,QWORD BCST \[rdx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 03 14 00 52 f4 7b\s+vminmaxph xmm30,xmm29,xmm28,0x7b +\s*[a-f0-9]+:\s*62 03 14 20 52 f4 7b\s+vminmaxph ymm30,ymm29,ymm28,0x7b +\s*[a-f0-9]+:\s*62 23 14 27 52 b4 f5 00 00 00 10 7b\s+vminmaxph ymm30\{k7\},ymm29,YMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 14 30 52 31 7b\s+vminmaxph ymm30,ymm29,WORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 14 20 52 71 7f 7b\s+vminmaxph ymm30,ymm29,YMMWORD PTR \[rcx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 63 14 b7 52 72 80 7b\s+vminmaxph ymm30\{k7\}\{z\},ymm29,WORD BCST \[rdx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 23 14 07 52 b4 f5 00 00 00 10 7b\s+vminmaxph xmm30\{k7\},xmm29,XMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 14 10 52 31 7b\s+vminmaxph xmm30,xmm29,WORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 14 00 52 71 7f 7b\s+vminmaxph xmm30,xmm29,XMMWORD PTR \[rcx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 63 14 97 52 72 80 7b\s+vminmaxph xmm30\{k7\}\{z\},xmm29,WORD BCST \[rdx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 03 15 00 52 f4 7b\s+vminmaxps xmm30,xmm29,xmm28,0x7b +\s*[a-f0-9]+:\s*62 03 15 20 52 f4 7b\s+vminmaxps ymm30,ymm29,ymm28,0x7b +\s*[a-f0-9]+:\s*62 23 15 27 52 b4 f5 00 00 00 10 7b\s+vminmaxps ymm30\{k7\},ymm29,YMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 15 30 52 31 7b\s+vminmaxps ymm30,ymm29,DWORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 15 20 52 71 7f 7b\s+vminmaxps ymm30,ymm29,YMMWORD PTR \[rcx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 63 15 b7 52 72 80 7b\s+vminmaxps ymm30\{k7\}\{z\},ymm29,DWORD BCST \[rdx-0x200\],0x7b +\s*[a-f0-9]+:\s*62 23 15 07 52 b4 f5 00 00 00 10 7b\s+vminmaxps xmm30\{k7\},xmm29,XMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 15 10 52 31 7b\s+vminmaxps xmm30,xmm29,DWORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 15 00 52 71 7f 7b\s+vminmaxps xmm30,xmm29,XMMWORD PTR \[rcx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 63 15 97 52 72 80 7b\s+vminmaxps xmm30\{k7\}\{z\},xmm29,DWORD BCST \[rdx-0x200\],0x7b +\s*[a-f0-9]+:\s*62 03 95 00 53 f4 7b\s+vminmaxsd xmm30,xmm29,xmm28,0x7b +\s*[a-f0-9]+:\s*62 03 95 10 53 f4 7b\s+vminmaxsd xmm30,xmm29,xmm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 23 95 07 53 b4 f5 00 00 00 10 7b\s+vminmaxsd xmm30\{k7\},xmm29,QWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 95 00 53 31 7b\s+vminmaxsd xmm30,xmm29,QWORD PTR \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 95 00 53 71 7f 7b\s+vminmaxsd xmm30,xmm29,QWORD PTR \[rcx\+0x3f8\],0x7b +\s*[a-f0-9]+:\s*62 63 95 87 53 72 80 7b\s+vminmaxsd xmm30\{k7\}\{z\},xmm29,QWORD PTR \[rdx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 03 14 00 53 f4 7b\s+vminmaxsh xmm30,xmm29,xmm28,0x7b +\s*[a-f0-9]+:\s*62 03 14 10 53 f4 7b\s+vminmaxsh xmm30,xmm29,xmm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 23 14 07 53 b4 f5 00 00 00 10 7b\s+vminmaxsh xmm30\{k7\},xmm29,WORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 14 00 53 31 7b\s+vminmaxsh xmm30,xmm29,WORD PTR \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 14 00 53 71 7f 7b\s+vminmaxsh xmm30,xmm29,WORD PTR \[rcx\+0xfe\],0x7b +\s*[a-f0-9]+:\s*62 63 14 87 53 72 80 7b\s+vminmaxsh xmm30\{k7\}\{z\},xmm29,WORD PTR \[rdx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 03 15 00 53 f4 7b\s+vminmaxss xmm30,xmm29,xmm28,0x7b +\s*[a-f0-9]+:\s*62 03 15 10 53 f4 7b\s+vminmaxss xmm30,xmm29,xmm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 23 15 07 53 b4 f5 00 00 00 10 7b\s+vminmaxss xmm30\{k7\},xmm29,DWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 15 00 53 31 7b\s+vminmaxss xmm30,xmm29,DWORD PTR \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 15 00 53 71 7f 7b\s+vminmaxss xmm30,xmm29,DWORD PTR \[rcx\+0x1fc\],0x7b +\s*[a-f0-9]+:\s*62 63 15 87 53 72 80 7b\s+vminmaxss xmm30\{k7\}\{z\},xmm29,DWORD PTR \[rdx-0x200\],0x7b +\s*[a-f0-9]+:\s*62 01 7e 08 7e f5\s+vmovd xmm30,xmm29 +\s*[a-f0-9]+:\s*62 01 7d 08 d6 ee\s+vmovd xmm30,xmm29 +\s*[a-f0-9]+:\s*62 05 7e 08 6e f5\s+vmovw xmm30,xmm29 +\s*[a-f0-9]+:\s*62 05 7e 08 7e ee\s+vmovw xmm30,xmm29 +\s*[a-f0-9]+:\s*62 01 ff 08 2f f5\s+vcomxsd xmm30,xmm29 +\s*[a-f0-9]+:\s*62 01 ff 18 2f f5\s+vcomxsd xmm30,xmm29\{sae\} +\s*[a-f0-9]+:\s*62 21 ff 08 2f b4 f5 00 00 00 10\s+vcomxsd xmm30,QWORD PTR \[rbp\+r14\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 41 ff 08 2f 31\s+vcomxsd xmm30,QWORD PTR \[r9\] +\s*[a-f0-9]+:\s*62 61 ff 08 2f 71 7f\s+vcomxsd xmm30,QWORD PTR \[rcx\+0x3f8\] +\s*[a-f0-9]+:\s*62 61 ff 08 2f 72 80\s+vcomxsd xmm30,QWORD PTR \[rdx-0x400\] +\s*[a-f0-9]+:\s*62 05 7e 08 2f f5\s+vcomxsh xmm30,xmm29 +\s*[a-f0-9]+:\s*62 05 7e 18 2f f5\s+vcomxsh xmm30,xmm29\{sae\} +\s*[a-f0-9]+:\s*62 25 7e 08 2f b4 f5 00 00 00 10\s+vcomxsh xmm30,WORD PTR \[rbp\+r14\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 45 7e 08 2f 31\s+vcomxsh xmm30,WORD PTR \[r9\] +\s*[a-f0-9]+:\s*62 65 7e 08 2f 71 7f\s+vcomxsh xmm30,WORD PTR \[rcx\+0xfe\] +\s*[a-f0-9]+:\s*62 65 7e 08 2f 72 80\s+vcomxsh xmm30,WORD PTR \[rdx-0x100\] +\s*[a-f0-9]+:\s*62 01 7e 08 2f f5\s+vcomxss xmm30,xmm29 +\s*[a-f0-9]+:\s*62 01 7e 18 2f f5\s+vcomxss xmm30,xmm29\{sae\} +\s*[a-f0-9]+:\s*62 21 7e 08 2f b4 f5 00 00 00 10\s+vcomxss xmm30,DWORD PTR \[rbp\+r14\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 41 7e 08 2f 31\s+vcomxss xmm30,DWORD PTR \[r9\] +\s*[a-f0-9]+:\s*62 61 7e 08 2f 71 7f\s+vcomxss xmm30,DWORD PTR \[rcx\+0x1fc\] +\s*[a-f0-9]+:\s*62 61 7e 08 2f 72 80\s+vcomxss xmm30,DWORD PTR \[rdx-0x200\] +\s*[a-f0-9]+:\s*62 01 ff 08 2e f5\s+vucomxsd xmm30,xmm29 +\s*[a-f0-9]+:\s*62 01 ff 18 2e f5\s+vucomxsd xmm30,xmm29\{sae\} +\s*[a-f0-9]+:\s*62 21 ff 08 2e b4 f5 00 00 00 10\s+vucomxsd xmm30,QWORD PTR \[rbp\+r14\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 41 ff 08 2e 31\s+vucomxsd xmm30,QWORD PTR \[r9\] +\s*[a-f0-9]+:\s*62 61 ff 08 2e 71 7f\s+vucomxsd xmm30,QWORD PTR \[rcx\+0x3f8\] +\s*[a-f0-9]+:\s*62 61 ff 08 2e 72 80\s+vucomxsd xmm30,QWORD PTR \[rdx-0x400\] +\s*[a-f0-9]+:\s*62 05 7e 08 2e f5\s+vucomxsh xmm30,xmm29 +\s*[a-f0-9]+:\s*62 05 7e 18 2e f5\s+vucomxsh xmm30,xmm29\{sae\} +\s*[a-f0-9]+:\s*62 25 7e 08 2e b4 f5 00 00 00 10\s+vucomxsh xmm30,WORD PTR \[rbp\+r14\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 45 7e 08 2e 31\s+vucomxsh xmm30,WORD PTR \[r9\] +\s*[a-f0-9]+:\s*62 65 7e 08 2e 71 7f\s+vucomxsh xmm30,WORD PTR \[rcx\+0xfe\] +\s*[a-f0-9]+:\s*62 65 7e 08 2e 72 80\s+vucomxsh xmm30,WORD PTR \[rdx-0x100\] +\s*[a-f0-9]+:\s*62 01 7e 08 2e f5\s+vucomxss xmm30,xmm29 +\s*[a-f0-9]+:\s*62 01 7e 18 2e f5\s+vucomxss xmm30,xmm29\{sae\} +\s*[a-f0-9]+:\s*62 21 7e 08 2e b4 f5 00 00 00 10\s+vucomxss xmm30,DWORD PTR \[rbp\+r14\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 41 7e 08 2e 31\s+vucomxss xmm30,DWORD PTR \[r9\] +\s*[a-f0-9]+:\s*62 61 7e 08 2e 71 7f\s+vucomxss xmm30,DWORD PTR \[rcx\+0x1fc\] +\s*[a-f0-9]+:\s*62 61 7e 08 2e 72 80\s+vucomxss xmm30,DWORD PTR \[rdx-0x200\] +#pass diff --git a/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.d b/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.d new file mode 100644 index 00000000000..0d339203ca5 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.d @@ -0,0 +1,107 @@ +#objdump: -dw +#name: x86_64 AVX10.2/256 minmax, vector copy and compare insns + +.*: +file format .* + +Disassembly of section \.text: + +0+ <_start>: +\s*[a-f0-9]+:\s*62 03 17 00 52 f4 7b\s+vminmaxpbf16\s\$0x7b,%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 17 20 52 f4 7b\s+vminmaxpbf16\s\$0x7b,%ymm28,%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 23 17 27 52 b4 f5 00 00 00 10 7b\s+vminmaxpbf16\s\$0x7b,0x10000000\(%rbp,%r14,8\),%ymm29,%ymm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 17 30 52 31 7b\s+vminmaxpbf16\s\$0x7b,\(%r9\)\{1to16\},%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 63 17 20 52 71 7f 7b\s+vminmaxpbf16\s\$0x7b,0xfe0\(%rcx\),%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 63 17 b7 52 72 80 7b\s+vminmaxpbf16\s\$0x7b,-0x100\(%rdx\)\{1to16\},%ymm29,%ymm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 23 17 07 52 b4 f5 00 00 00 10 7b\s+vminmaxpbf16\s\$0x7b,0x10000000\(%rbp,%r14,8\),%xmm29,%xmm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 17 10 52 31 7b\s+vminmaxpbf16\s\$0x7b,\(%r9\)\{1to8\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 17 00 52 71 7f 7b\s+vminmaxpbf16\s\$0x7b,0x7f0\(%rcx\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 17 97 52 72 80 7b\s+vminmaxpbf16\s\$0x7b,-0x100\(%rdx\)\{1to8\},%xmm29,%xmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 95 00 52 f4 7b\s+vminmaxpd\s\$0x7b,%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 95 20 52 f4 7b\s+vminmaxpd\s\$0x7b,%ymm28,%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 23 95 27 52 b4 f5 00 00 00 10 7b\s+vminmaxpd\s\$0x7b,0x10000000\(%rbp,%r14,8\),%ymm29,%ymm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 95 30 52 31 7b\s+vminmaxpd\s\$0x7b,\(%r9\)\{1to4\},%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 63 95 20 52 71 7f 7b\s+vminmaxpd\s\$0x7b,0xfe0\(%rcx\),%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 63 95 b7 52 72 80 7b\s+vminmaxpd\s\$0x7b,-0x400\(%rdx\)\{1to4\},%ymm29,%ymm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 23 95 07 52 b4 f5 00 00 00 10 7b\s+vminmaxpd\s\$0x7b,0x10000000\(%rbp,%r14,8\),%xmm29,%xmm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 95 10 52 31 7b\s+vminmaxpd\s\$0x7b,\(%r9\)\{1to2\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 95 00 52 71 7f 7b\s+vminmaxpd\s\$0x7b,0x7f0\(%rcx\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 95 97 52 72 80 7b\s+vminmaxpd\s\$0x7b,-0x400\(%rdx\)\{1to2\},%xmm29,%xmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 14 00 52 f4 7b\s+vminmaxph\s\$0x7b,%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 14 20 52 f4 7b\s+vminmaxph\s\$0x7b,%ymm28,%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 23 14 27 52 b4 f5 00 00 00 10 7b\s+vminmaxph\s\$0x7b,0x10000000\(%rbp,%r14,8\),%ymm29,%ymm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 14 30 52 31 7b\s+vminmaxph\s\$0x7b,\(%r9\)\{1to16\},%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 63 14 20 52 71 7f 7b\s+vminmaxph\s\$0x7b,0xfe0\(%rcx\),%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 63 14 b7 52 72 80 7b\s+vminmaxph\s\$0x7b,-0x100\(%rdx\)\{1to16\},%ymm29,%ymm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 23 14 07 52 b4 f5 00 00 00 10 7b\s+vminmaxph\s\$0x7b,0x10000000\(%rbp,%r14,8\),%xmm29,%xmm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 14 10 52 31 7b\s+vminmaxph\s\$0x7b,\(%r9\)\{1to8\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 14 00 52 71 7f 7b\s+vminmaxph\s\$0x7b,0x7f0\(%rcx\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 14 97 52 72 80 7b\s+vminmaxph\s\$0x7b,-0x100\(%rdx\)\{1to8\},%xmm29,%xmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 15 00 52 f4 7b\s+vminmaxps\s\$0x7b,%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 15 20 52 f4 7b\s+vminmaxps\s\$0x7b,%ymm28,%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 23 15 27 52 b4 f5 00 00 00 10 7b\s+vminmaxps\s\$0x7b,0x10000000\(%rbp,%r14,8\),%ymm29,%ymm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 15 30 52 31 7b\s+vminmaxps\s\$0x7b,\(%r9\)\{1to8\},%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 63 15 20 52 71 7f 7b\s+vminmaxps\s\$0x7b,0xfe0\(%rcx\),%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 63 15 b7 52 72 80 7b\s+vminmaxps\s\$0x7b,-0x200\(%rdx\)\{1to8\},%ymm29,%ymm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 23 15 07 52 b4 f5 00 00 00 10 7b\s+vminmaxps\s\$0x7b,0x10000000\(%rbp,%r14,8\),%xmm29,%xmm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 15 10 52 31 7b\s+vminmaxps\s\$0x7b,\(%r9\)\{1to4\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 15 00 52 71 7f 7b\s+vminmaxps\s\$0x7b,0x7f0\(%rcx\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 15 97 52 72 80 7b\s+vminmaxps\s\$0x7b,-0x200\(%rdx\)\{1to4\},%xmm29,%xmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 95 00 53 f4 7b\s+vminmaxsd\s\$0x7b,%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 95 10 53 f4 7b\s+vminmaxsd\s\$0x7b,\{sae\},%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 23 95 07 53 b4 f5 00 00 00 10 7b\s+vminmaxsd\s\$0x7b,0x10000000\(%rbp,%r14,8\),%xmm29,%xmm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 95 00 53 31 7b\s+vminmaxsd\s\$0x7b,\(%r9\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 95 00 53 71 7f 7b\s+vminmaxsd\s\$0x7b,0x3f8\(%rcx\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 95 87 53 72 80 7b\s+vminmaxsd\s\$0x7b,-0x400\(%rdx\),%xmm29,%xmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 14 00 53 f4 7b\s+vminmaxsh\s\$0x7b,%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 14 10 53 f4 7b\s+vminmaxsh\s\$0x7b,\{sae\},%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 23 14 07 53 b4 f5 00 00 00 10 7b\s+vminmaxsh\s\$0x7b,0x10000000\(%rbp,%r14,8\),%xmm29,%xmm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 14 00 53 31 7b\s+vminmaxsh\s\$0x7b,\(%r9\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 14 00 53 71 7f 7b\s+vminmaxsh\s\$0x7b,0xfe\(%rcx\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 14 87 53 72 80 7b\s+vminmaxsh\s\$0x7b,-0x100\(%rdx\),%xmm29,%xmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 15 00 53 f4 7b\s+vminmaxss\s\$0x7b,%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 15 10 53 f4 7b\s+vminmaxss\s\$0x7b,\{sae\},%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 23 15 07 53 b4 f5 00 00 00 10 7b\s+vminmaxss\s\$0x7b,0x10000000\(%rbp,%r14,8\),%xmm29,%xmm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 15 00 53 31 7b\s+vminmaxss\s\$0x7b,\(%r9\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 15 00 53 71 7f 7b\s+vminmaxss\s\$0x7b,0x1fc\(%rcx\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 15 87 53 72 80 7b\s+vminmaxss\s\$0x7b,-0x200\(%rdx\),%xmm29,%xmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 01 7e 08 7e f5\s+vmovd %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 01 7d 08 d6 ee\s+vmovd %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 05 7e 08 6e f5\s+vmovw %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 05 7e 08 7e ee\s+vmovw %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 01 ff 08 2f f5\s+vcomxsd %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 01 ff 18 2f f5\s+vcomxsd \{sae\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 21 ff 08 2f b4 f5 00 00 00 10\s+vcomxsd 0x10000000\(%rbp,%r14,8\),%xmm30 +\s*[a-f0-9]+:\s*62 41 ff 08 2f 31\s+vcomxsd \(%r9\),%xmm30 +\s*[a-f0-9]+:\s*62 61 ff 08 2f 71 7f\s+vcomxsd 0x3f8\(%rcx\),%xmm30 +\s*[a-f0-9]+:\s*62 61 ff 08 2f 72 80\s+vcomxsd -0x400\(%rdx\),%xmm30 +\s*[a-f0-9]+:\s*62 05 7e 08 2f f5\s+vcomxsh %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 05 7e 18 2f f5\s+vcomxsh \{sae\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 25 7e 08 2f b4 f5 00 00 00 10\s+vcomxsh 0x10000000\(%rbp,%r14,8\),%xmm30 +\s*[a-f0-9]+:\s*62 45 7e 08 2f 31\s+vcomxsh \(%r9\),%xmm30 +\s*[a-f0-9]+:\s*62 65 7e 08 2f 71 7f\s+vcomxsh 0xfe\(%rcx\),%xmm30 +\s*[a-f0-9]+:\s*62 65 7e 08 2f 72 80\s+vcomxsh -0x100\(%rdx\),%xmm30 +\s*[a-f0-9]+:\s*62 01 7e 08 2f f5\s+vcomxss %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 01 7e 18 2f f5\s+vcomxss \{sae\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 21 7e 08 2f b4 f5 00 00 00 10\s+vcomxss 0x10000000\(%rbp,%r14,8\),%xmm30 +\s*[a-f0-9]+:\s*62 41 7e 08 2f 31\s+vcomxss \(%r9\),%xmm30 +\s*[a-f0-9]+:\s*62 61 7e 08 2f 71 7f\s+vcomxss 0x1fc\(%rcx\),%xmm30 +\s*[a-f0-9]+:\s*62 61 7e 08 2f 72 80\s+vcomxss -0x200\(%rdx\),%xmm30 +\s*[a-f0-9]+:\s*62 01 ff 08 2e f5\s+vucomxsd %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 01 ff 18 2e f5\s+vucomxsd \{sae\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 21 ff 08 2e b4 f5 00 00 00 10\s+vucomxsd 0x10000000\(%rbp,%r14,8\),%xmm30 +\s*[a-f0-9]+:\s*62 41 ff 08 2e 31\s+vucomxsd \(%r9\),%xmm30 +\s*[a-f0-9]+:\s*62 61 ff 08 2e 71 7f\s+vucomxsd 0x3f8\(%rcx\),%xmm30 +\s*[a-f0-9]+:\s*62 61 ff 08 2e 72 80\s+vucomxsd -0x400\(%rdx\),%xmm30 +\s*[a-f0-9]+:\s*62 05 7e 08 2e f5\s+vucomxsh %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 05 7e 18 2e f5\s+vucomxsh \{sae\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 25 7e 08 2e b4 f5 00 00 00 10\s+vucomxsh 0x10000000\(%rbp,%r14,8\),%xmm30 +\s*[a-f0-9]+:\s*62 45 7e 08 2e 31\s+vucomxsh \(%r9\),%xmm30 +\s*[a-f0-9]+:\s*62 65 7e 08 2e 71 7f\s+vucomxsh 0xfe\(%rcx\),%xmm30 +\s*[a-f0-9]+:\s*62 65 7e 08 2e 72 80\s+vucomxsh -0x100\(%rdx\),%xmm30 +\s*[a-f0-9]+:\s*62 01 7e 08 2e f5\s+vucomxss %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 01 7e 18 2e f5\s+vucomxss \{sae\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 21 7e 08 2e b4 f5 00 00 00 10\s+vucomxss 0x10000000\(%rbp,%r14,8\),%xmm30 +\s*[a-f0-9]+:\s*62 41 7e 08 2e 31\s+vucomxss \(%r9\),%xmm30 +\s*[a-f0-9]+:\s*62 61 7e 08 2e 71 7f\s+vucomxss 0x1fc\(%rcx\),%xmm30 +\s*[a-f0-9]+:\s*62 61 7e 08 2e 72 80\s+vucomxss -0x200\(%rdx\),%xmm30 +#pass diff --git a/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.s b/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.s new file mode 100644 index 00000000000..58251718482 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.s @@ -0,0 +1,205 @@ +# Check 64bit AVX10.2/256 instructions + + .arch generic64 + .arch .avx10.2/256 + .text +_start: + vminmaxpbf16 $123, %xmm28, %xmm29, %xmm30 + vminmaxpbf16 $123, %ymm28, %ymm29, %ymm30 + vminmaxpbf16 $123, 0x10000000(%rbp, %r14, 8), %ymm29, %ymm30{%k7} + vminmaxpbf16 $123, (%r9){1to16}, %ymm29, %ymm30 + vminmaxpbf16 $123, 4064(%rcx), %ymm29, %ymm30 + vminmaxpbf16 $123, -256(%rdx){1to16}, %ymm29, %ymm30{%k7}{z} + vminmaxpbf16 $123, 0x10000000(%rbp, %r14, 8), %xmm29, %xmm30{%k7} + vminmaxpbf16 $123, (%r9){1to8}, %xmm29, %xmm30 + vminmaxpbf16 $123, 2032(%rcx), %xmm29, %xmm30 + vminmaxpbf16 $123, -256(%rdx){1to8}, %xmm29, %xmm30{%k7}{z} + vminmaxpd $123, %xmm28, %xmm29, %xmm30 + vminmaxpd $123, %ymm28, %ymm29, %ymm30 + vminmaxpd $123, 0x10000000(%rbp, %r14, 8), %ymm29, %ymm30{%k7} + vminmaxpd $123, (%r9){1to4}, %ymm29, %ymm30 + vminmaxpd $123, 4064(%rcx), %ymm29, %ymm30 + vminmaxpd $123, -1024(%rdx){1to4}, %ymm29, %ymm30{%k7}{z} + vminmaxpd $123, 0x10000000(%rbp, %r14, 8), %xmm29, %xmm30{%k7} + vminmaxpd $123, (%r9){1to2}, %xmm29, %xmm30 + vminmaxpd $123, 2032(%rcx), %xmm29, %xmm30 + vminmaxpd $123, -1024(%rdx){1to2}, %xmm29, %xmm30{%k7}{z} + vminmaxph $123, %xmm28, %xmm29, %xmm30 + vminmaxph $123, %ymm28, %ymm29, %ymm30 + vminmaxph $123, 0x10000000(%rbp, %r14, 8), %ymm29, %ymm30{%k7} + vminmaxph $123, (%r9){1to16}, %ymm29, %ymm30 + vminmaxph $123, 4064(%rcx), %ymm29, %ymm30 + vminmaxph $123, -256(%rdx){1to16}, %ymm29, %ymm30{%k7}{z} + vminmaxph $123, 0x10000000(%rbp, %r14, 8), %xmm29, %xmm30{%k7} + vminmaxph $123, (%r9){1to8}, %xmm29, %xmm30 + vminmaxph $123, 2032(%rcx), %xmm29, %xmm30 + vminmaxph $123, -256(%rdx){1to8}, %xmm29, %xmm30{%k7}{z} + vminmaxps $123, %xmm28, %xmm29, %xmm30 + vminmaxps $123, %ymm28, %ymm29, %ymm30 + vminmaxps $123, 0x10000000(%rbp, %r14, 8), %ymm29, %ymm30{%k7} + vminmaxps $123, (%r9){1to8}, %ymm29, %ymm30 + vminmaxps $123, 4064(%rcx), %ymm29, %ymm30 + vminmaxps $123, -512(%rdx){1to8}, %ymm29, %ymm30{%k7}{z} + vminmaxps $123, 0x10000000(%rbp, %r14, 8), %xmm29, %xmm30{%k7} + vminmaxps $123, (%r9){1to4}, %xmm29, %xmm30 + vminmaxps $123, 2032(%rcx), %xmm29, %xmm30 + vminmaxps $123, -512(%rdx){1to4}, %xmm29, %xmm30{%k7}{z} + vminmaxsd $123, %xmm28, %xmm29, %xmm30 + vminmaxsd $123, {sae}, %xmm28, %xmm29, %xmm30 + vminmaxsd $123, 0x10000000(%rbp, %r14, 8), %xmm29, %xmm30{%k7} + vminmaxsd $123, (%r9), %xmm29, %xmm30 + vminmaxsd $123, 1016(%rcx), %xmm29, %xmm30 + vminmaxsd $123, -1024(%rdx), %xmm29, %xmm30{%k7}{z} + vminmaxsh $123, %xmm28, %xmm29, %xmm30 + vminmaxsh $123, {sae}, %xmm28, %xmm29, %xmm30 + vminmaxsh $123, 0x10000000(%rbp, %r14, 8), %xmm29, %xmm30{%k7} + vminmaxsh $123, (%r9), %xmm29, %xmm30 + vminmaxsh $123, 254(%rcx), %xmm29, %xmm30 + vminmaxsh $123, -256(%rdx), %xmm29, %xmm30{%k7}{z} + vminmaxss $123, %xmm28, %xmm29, %xmm30 + vminmaxss $123, {sae}, %xmm28, %xmm29, %xmm30 + vminmaxss $123, 0x10000000(%rbp, %r14, 8), %xmm29, %xmm30{%k7} + vminmaxss $123, (%r9), %xmm29, %xmm30 + vminmaxss $123, 508(%rcx), %xmm29, %xmm30 + vminmaxss $123, -512(%rdx), %xmm29, %xmm30{%k7}{z} + vmovd %xmm29, %xmm30 + vmovd.s %xmm29, %xmm30 + vmovw %xmm29, %xmm30 + vmovw.s %xmm29, %xmm30 + vcomxsd %xmm29, %xmm30 + vcomxsd {sae}, %xmm29, %xmm30 + vcomxsd 0x10000000(%rbp, %r14, 8), %xmm30 + vcomxsd (%r9), %xmm30 + vcomxsd 1016(%rcx), %xmm30 + vcomxsd -1024(%rdx), %xmm30 + vcomxsh %xmm29, %xmm30 + vcomxsh {sae}, %xmm29, %xmm30 + vcomxsh 0x10000000(%rbp, %r14, 8), %xmm30 + vcomxsh (%r9), %xmm30 + vcomxsh 254(%rcx), %xmm30 + vcomxsh -256(%rdx), %xmm30 + vcomxss %xmm29, %xmm30 + vcomxss {sae}, %xmm29, %xmm30 + vcomxss 0x10000000(%rbp, %r14, 8), %xmm30 + vcomxss (%r9), %xmm30 + vcomxss 508(%rcx), %xmm30 + vcomxss -512(%rdx), %xmm30 + vucomxsd %xmm29, %xmm30 + vucomxsd {sae}, %xmm29, %xmm30 + vucomxsd 0x10000000(%rbp, %r14, 8), %xmm30 + vucomxsd (%r9), %xmm30 + vucomxsd 1016(%rcx), %xmm30 + vucomxsd -1024(%rdx), %xmm30 + vucomxsh %xmm29, %xmm30 + vucomxsh {sae}, %xmm29, %xmm30 + vucomxsh 0x10000000(%rbp, %r14, 8), %xmm30 + vucomxsh (%r9), %xmm30 + vucomxsh 254(%rcx), %xmm30 + vucomxsh -256(%rdx), %xmm30 + vucomxss %xmm29, %xmm30 + vucomxss {sae}, %xmm29, %xmm30 + vucomxss 0x10000000(%rbp, %r14, 8), %xmm30 + vucomxss (%r9), %xmm30 + vucomxss 508(%rcx), %xmm30 + vucomxss -512(%rdx), %xmm30 + +_intel: + .intel_syntax noprefix + vminmaxpbf16 xmm30, xmm29, xmm28, 123 + vminmaxpbf16 ymm30, ymm29, ymm28, 123 + vminmaxpbf16 ymm30{k7}, ymm29, [rbp+r14*8+0x10000000], 123 + vminmaxpbf16 ymm30, ymm29, [r9]{1to16}, 123 + vminmaxpbf16 ymm30, ymm29, YMMWORD PTR [rcx+4064], 123 + vminmaxpbf16 ymm30{k7}{z}, ymm29, WORD PTR [rdx-256]{1to16}, 123 + vminmaxpbf16 xmm30{k7}, xmm29, [rbp+r14*8+0x10000000], 123 + vminmaxpbf16 xmm30, xmm29, [r9]{1to8}, 123 + vminmaxpbf16 xmm30, xmm29, XMMWORD PTR [rcx+2032], 123 + vminmaxpbf16 xmm30{k7}{z}, xmm29, WORD PTR [rdx-256]{1to8}, 123 + vminmaxpd xmm30, xmm29, xmm28, 123 + vminmaxpd ymm30, ymm29, ymm28, 123 + vminmaxpd ymm30{k7}, ymm29, YMMWORD PTR [rbp+r14*8+0x10000000], 123 + vminmaxpd ymm30, ymm29, QWORD PTR [r9]{1to4}, 123 + vminmaxpd ymm30, ymm29, [rcx+4064], 123 + vminmaxpd ymm30{k7}{z}, ymm29, [rdx-1024]{1to4}, 123 + vminmaxpd xmm30{k7}, xmm29, XMMWORD PTR [rbp+r14*8+0x10000000], 123 + vminmaxpd xmm30, xmm29, QWORD PTR [r9]{1to2}, 123 + vminmaxpd xmm30, xmm29, [rcx+2032], 123 + vminmaxpd xmm30{k7}{z}, xmm29, [rdx-1024]{1to2}, 123 + vminmaxph xmm30, xmm29, xmm28, 123 + vminmaxph ymm30, ymm29, ymm28, 123 + vminmaxph ymm30{k7}, ymm29, [rbp+r14*8+0x10000000], 123 + vminmaxph ymm30, ymm29, [r9]{1to16}, 123 + vminmaxph ymm30, ymm29, YMMWORD PTR [rcx+4064], 123 + vminmaxph ymm30{k7}{z}, ymm29, WORD PTR [rdx-256]{1to16}, 123 + vminmaxph xmm30{k7}, xmm29, XMMWORD PTR [rbp+r14*8+0x10000000], 123 + vminmaxph xmm30, xmm29, WORD PTR [r9]{1to8}, 123 + vminmaxph xmm30, xmm29, [rcx+2032], 123 + vminmaxph xmm30{k7}{z}, xmm29, [rdx-256]{1to8}, 123 + vminmaxps xmm30, xmm29, xmm28, 123 + vminmaxps ymm30, ymm29, ymm28, 123 + vminmaxps ymm30{k7}, ymm29, YMMWORD PTR [rbp+r14*8+0x10000000], 123 + vminmaxps ymm30, ymm29, DWORD PTR [r9]{1to8}, 123 + vminmaxps ymm30, ymm29, [rcx+4064], 123 + vminmaxps ymm30{k7}{z}, ymm29, [rdx-512]{1to8}, 123 + vminmaxps xmm30{k7}, xmm29, [rbp+r14*8+0x10000000], 123 + vminmaxps xmm30, xmm29, [r9]{1to4}, 123 + vminmaxps xmm30, xmm29, XMMWORD PTR [rcx+2032], 123 + vminmaxps xmm30{k7}{z}, xmm29, DWORD PTR [rdx-512]{1to4}, 123 + vminmaxsd xmm30, xmm29, xmm28, 123 + vminmaxsd xmm30, xmm29, xmm28, {sae}, 123 + vminmaxsd xmm30{k7}, xmm29, [rbp+r14*8+0x10000000], 123 + vminmaxsd xmm30, xmm29, [r9], 123 + vminmaxsd xmm30, xmm29, QWORD PTR [rcx+1016], 123 + vminmaxsd xmm30{k7}{z}, xmm29, QWORD PTR [rdx-1024], 123 + vminmaxsh xmm30, xmm29, xmm28, 123 + vminmaxsh xmm30, xmm29, xmm28, {sae}, 123 + vminmaxsh xmm30{k7}, xmm29, WORD PTR [rbp+r14*8+0x10000000], 123 + vminmaxsh xmm30, xmm29, WORD PTR [r9], 123 + vminmaxsh xmm30, xmm29, [rcx+254], 123 + vminmaxsh xmm30{k7}{z}, xmm29, [rdx-256], 123 + vminmaxss xmm30, xmm29, xmm28, 123 + vminmaxss xmm30, xmm29, xmm28, {sae}, 123 + vminmaxss xmm30{k7}, xmm29, [rbp+r14*8+0x10000000], 123 + vminmaxss xmm30, xmm29, DWORD PTR [r9], 123 + vminmaxss xmm30, xmm29, DWORD PTR [rcx+508], 123 + vminmaxss xmm30{k7}{z}, xmm29, [rdx-512], 123 + vmovd xmm30, xmm29 + vmovd.s xmm30, xmm29 + vmovw xmm30, xmm29 + vmovw.s xmm30, xmm29 + vcomxsd xmm30, xmm29 + vcomxsd xmm30, xmm29, {sae} + vcomxsd xmm30, QWORD PTR [rbp+r14*8+0x10000000] + vcomxsd xmm30, [r9] + vcomxsd xmm30, QWORD PTR [rcx+1016] + vcomxsd xmm30, [rdx-1024] + vcomxsh xmm30, xmm29 + vcomxsh xmm30, xmm29, {sae} + vcomxsh xmm30, [rbp+r14*8+0x10000000] + vcomxsh xmm30, WORD PTR [r9] + vcomxsh xmm30, [rcx+254] + vcomxsh xmm30, WORD PTR [rdx-256] + vcomxss xmm30, xmm29 + vcomxss xmm30, xmm29, {sae} + vcomxss xmm30, DWORD PTR [rbp+r14*8+0x10000000] + vcomxss xmm30, [r9] + vcomxss xmm30, [rcx+508] + vcomxss xmm30, DWORD PTR [rdx-512] + vucomxsd xmm30, xmm29 + vucomxsd xmm30, xmm29, {sae} + vucomxsd xmm30, [rbp+r14*8+0x10000000] + vucomxsd xmm30, [r9] + vucomxsd xmm30, QWORD PTR [rcx+1016] + vucomxsd xmm30, QWORD PTR [rdx-1024] + vucomxsh xmm30, xmm29 + vucomxsh xmm30, xmm29, {sae} + vucomxsh xmm30, WORD PTR [rbp+r14*8+0x10000000] + vucomxsh xmm30, WORD PTR [r9] + vucomxsh xmm30, [rcx+254] + vucomxsh xmm30, [rdx-256] + vucomxss xmm30, xmm29 + vucomxss xmm30, xmm29, {sae} + vucomxss xmm30, [rbp+r14*8+0x10000000] + vucomxss xmm30, DWORD PTR [r9] + vucomxss xmm30, DWORD PTR [rcx+508] + vucomxss xmm30, [rdx-512] diff --git a/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs-intel.d b/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs-intel.d new file mode 100644 index 00000000000..3115884c882 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs-intel.d @@ -0,0 +1,34 @@ +#objdump: -dw -Mintel +#name: x86_64 AVX10.2/512 minmax insns (Intel disassembly) +#source: x86-64-avx10_2-512-miscs.s + +.*: +file format .* + +Disassembly of section \.text: + +#... +[a-f0-9]+ <_intel>: +\s*[a-f0-9]+:\s*62 03 17 40 52 f4 7b\s+vminmaxpbf16 zmm30,zmm29,zmm28,0x7b +\s*[a-f0-9]+:\s*62 23 17 47 52 b4 f5 00 00 00 10 7b\s+vminmaxpbf16 zmm30\{k7\},zmm29,ZMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 17 50 52 31 7b\s+vminmaxpbf16 zmm30,zmm29,WORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 17 40 52 71 7f 7b\s+vminmaxpbf16 zmm30,zmm29,ZMMWORD PTR \[rcx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 63 17 d7 52 72 80 7b\s+vminmaxpbf16 zmm30\{k7\}\{z\},zmm29,WORD BCST \[rdx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 03 95 40 52 f4 7b\s+vminmaxpd zmm30,zmm29,zmm28,0x7b +\s*[a-f0-9]+:\s*62 03 95 10 52 f4 7b\s+vminmaxpd zmm30,zmm29,zmm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 23 95 47 52 b4 f5 00 00 00 10 7b\s+vminmaxpd zmm30\{k7\},zmm29,ZMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 95 50 52 31 7b\s+vminmaxpd zmm30,zmm29,QWORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 95 40 52 71 7f 7b\s+vminmaxpd zmm30,zmm29,ZMMWORD PTR \[rcx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 63 95 d7 52 72 80 7b\s+vminmaxpd zmm30\{k7\}\{z\},zmm29,QWORD BCST \[rdx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 03 14 40 52 f4 7b\s+vminmaxph zmm30,zmm29,zmm28,0x7b +\s*[a-f0-9]+:\s*62 03 14 10 52 f4 7b\s+vminmaxph zmm30,zmm29,zmm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 23 14 47 52 b4 f5 00 00 00 10 7b\s+vminmaxph zmm30\{k7\},zmm29,ZMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 14 50 52 31 7b\s+vminmaxph zmm30,zmm29,WORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 14 40 52 71 7f 7b\s+vminmaxph zmm30,zmm29,ZMMWORD PTR \[rcx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 63 14 d7 52 72 80 7b\s+vminmaxph zmm30\{k7\}\{z\},zmm29,WORD BCST \[rdx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 03 15 40 52 f4 7b\s+vminmaxps zmm30,zmm29,zmm28,0x7b +\s*[a-f0-9]+:\s*62 03 15 10 52 f4 7b\s+vminmaxps zmm30,zmm29,zmm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 23 15 47 52 b4 f5 00 00 00 10 7b\s+vminmaxps zmm30\{k7\},zmm29,ZMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 15 50 52 31 7b\s+vminmaxps zmm30,zmm29,DWORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 15 40 52 71 7f 7b\s+vminmaxps zmm30,zmm29,ZMMWORD PTR \[rcx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 63 15 d7 52 72 80 7b\s+vminmaxps zmm30\{k7\}\{z\},zmm29,DWORD BCST \[rdx-0x200\],0x7b +#pass diff --git a/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.d b/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.d new file mode 100644 index 00000000000..101607ff685 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.d @@ -0,0 +1,32 @@ +#objdump: -dw +#name: x86_64 AVX10.2/512 minmax insns + +.*: +file format .* + +Disassembly of section \.text: + +0+ <_start>: +\s*[a-f0-9]+:\s*62 03 17 40 52 f4 7b\s+vminmaxpbf16\s\$0x7b,%zmm28,%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 23 17 47 52 b4 f5 00 00 00 10 7b\s+vminmaxpbf16\s\$0x7b,0x10000000\(%rbp,%r14,8\),%zmm29,%zmm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 17 50 52 31 7b\s+vminmaxpbf16\s\$0x7b,\(%r9\)\{1to32\},%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 63 17 40 52 71 7f 7b\s+vminmaxpbf16\s\$0x7b,0x1fc0\(%rcx\),%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 63 17 d7 52 72 80 7b\s+vminmaxpbf16\s\$0x7b,-0x100\(%rdx\)\{1to32\},%zmm29,%zmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 95 40 52 f4 7b\s+vminmaxpd\s\$0x7b,%zmm28,%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 03 95 10 52 f4 7b\s+vminmaxpd\s\$0x7b,\{sae\},%zmm28,%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 23 95 47 52 b4 f5 00 00 00 10 7b\s+vminmaxpd\s\$0x7b,0x10000000\(%rbp,%r14,8\),%zmm29,%zmm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 95 50 52 31 7b\s+vminmaxpd\s\$0x7b,\(%r9\)\{1to8\},%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 63 95 40 52 71 7f 7b\s+vminmaxpd\s\$0x7b,0x1fc0\(%rcx\),%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 63 95 d7 52 72 80 7b\s+vminmaxpd\s\$0x7b,-0x400\(%rdx\)\{1to8\},%zmm29,%zmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 14 40 52 f4 7b\s+vminmaxph\s\$0x7b,%zmm28,%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 03 14 10 52 f4 7b\s+vminmaxph\s\$0x7b,\{sae\},%zmm28,%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 23 14 47 52 b4 f5 00 00 00 10 7b\s+vminmaxph\s\$0x7b,0x10000000\(%rbp,%r14,8\),%zmm29,%zmm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 14 50 52 31 7b\s+vminmaxph\s\$0x7b,\(%r9\)\{1to32\},%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 63 14 40 52 71 7f 7b\s+vminmaxph\s\$0x7b,0x1fc0\(%rcx\),%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 63 14 d7 52 72 80 7b\s+vminmaxph\s\$0x7b,-0x100\(%rdx\)\{1to32\},%zmm29,%zmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 15 40 52 f4 7b\s+vminmaxps\s\$0x7b,%zmm28,%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 03 15 10 52 f4 7b\s+vminmaxps\s\$0x7b,\{sae\},%zmm28,%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 23 15 47 52 b4 f5 00 00 00 10 7b\s+vminmaxps\s\$0x7b,0x10000000\(%rbp,%r14,8\),%zmm29,%zmm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 15 50 52 31 7b\s+vminmaxps\s\$0x7b,\(%r9\)\{1to16\},%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 63 15 40 52 71 7f 7b\s+vminmaxps\s\$0x7b,0x1fc0\(%rcx\),%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 63 15 d7 52 72 80 7b\s+vminmaxps\s\$0x7b,-0x200\(%rdx\)\{1to16\},%zmm29,%zmm30\{%k7\}\{z\} +#pass diff --git a/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.s b/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.s new file mode 100644 index 00000000000..62c741e3025 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.s @@ -0,0 +1,55 @@ +# Check 64bit AVX10.2/512 instructions + + .arch generic64 + .arch .avx10.2/512 + .text +_start: + vminmaxpbf16 $123, %zmm28, %zmm29, %zmm30 + vminmaxpbf16 $123, 0x10000000(%rbp, %r14, 8), %zmm29, %zmm30{%k7} + vminmaxpbf16 $123, (%r9){1to32}, %zmm29, %zmm30 + vminmaxpbf16 $123, 8128(%rcx), %zmm29, %zmm30 + vminmaxpbf16 $123, -256(%rdx){1to32}, %zmm29, %zmm30{%k7}{z} + vminmaxpd $123, %zmm28, %zmm29, %zmm30 + vminmaxpd $123, {sae}, %zmm28, %zmm29, %zmm30 + vminmaxpd $123, 0x10000000(%rbp, %r14, 8), %zmm29, %zmm30{%k7} + vminmaxpd $123, (%r9){1to8}, %zmm29, %zmm30 + vminmaxpd $123, 8128(%rcx), %zmm29, %zmm30 + vminmaxpd $123, -1024(%rdx){1to8}, %zmm29, %zmm30{%k7}{z} + vminmaxph $123, %zmm28, %zmm29, %zmm30 + vminmaxph $123, {sae}, %zmm28, %zmm29, %zmm30 + vminmaxph $123, 0x10000000(%rbp, %r14, 8), %zmm29, %zmm30{%k7} + vminmaxph $123, (%r9){1to32}, %zmm29, %zmm30 + vminmaxph $123, 8128(%rcx), %zmm29, %zmm30 + vminmaxph $123, -256(%rdx){1to32}, %zmm29, %zmm30{%k7}{z} + vminmaxps $123, %zmm28, %zmm29, %zmm30 + vminmaxps $123, {sae}, %zmm28, %zmm29, %zmm30 + vminmaxps $123, 0x10000000(%rbp, %r14, 8), %zmm29, %zmm30{%k7} + vminmaxps $123, (%r9){1to16}, %zmm29, %zmm30 + vminmaxps $123, 8128(%rcx), %zmm29, %zmm30 + vminmaxps $123, -512(%rdx){1to16}, %zmm29, %zmm30{%k7}{z} + +_intel: + .intel_syntax noprefix + vminmaxpbf16 zmm30, zmm29, zmm28, 123 + vminmaxpbf16 zmm30{k7}, zmm29, [rbp+r14*8+0x10000000], 123 + vminmaxpbf16 zmm30, zmm29, [r9]{1to32}, 123 + vminmaxpbf16 zmm30, zmm29, ZMMWORD PTR [rcx+8128], 123 + vminmaxpbf16 zmm30{k7}{z}, zmm29, WORD PTR [rdx-256]{1to32}, 123 + vminmaxpd zmm30, zmm29, zmm28, 123 + vminmaxpd zmm30, zmm29, zmm28, {sae}, 123 + vminmaxpd zmm30{k7}, zmm29, ZMMWORD PTR [rbp+r14*8+0x10000000], 123 + vminmaxpd zmm30, zmm29, QWORD PTR [r9]{1to8}, 123 + vminmaxpd zmm30, zmm29, [rcx+8128], 123 + vminmaxpd zmm30{k7}{z}, zmm29, [rdx-1024]{1to8}, 123 + vminmaxph zmm30, zmm29, zmm28, 123 + vminmaxph zmm30, zmm29, zmm28, {sae}, 123 + vminmaxph zmm30{k7}, zmm29, [rbp+r14*8+0x10000000], 123 + vminmaxph zmm30, zmm29, WORD PTR [r9]{1to32}, 123 + vminmaxph zmm30, zmm29, ZMMWORD PTR [rcx+8128], 123 + vminmaxph zmm30{k7}{z}, zmm29, [rdx-256]{1to32}, 123 + vminmaxps zmm30, zmm29, zmm28, 123 + vminmaxps zmm30, zmm29, zmm28, {sae}, 123 + vminmaxps zmm30{k7}, zmm29, ZMMWORD PTR [rbp+r14*8+0x10000000], 123 + vminmaxps zmm30, zmm29, [r9]{1to16}, 123 + vminmaxps zmm30, zmm29, [rcx+8128], 123 + vminmaxps zmm30{k7}{z}, zmm29, DWORD PTR [rdx-512]{1to16}, 123 diff --git a/gas/testsuite/gas/i386/x86-64.exp b/gas/testsuite/gas/i386/x86-64.exp index 7b5f8bd28c3..7dfe608ff7e 100644 --- a/gas/testsuite/gas/i386/x86-64.exp +++ b/gas/testsuite/gas/i386/x86-64.exp @@ -513,6 +513,10 @@ run_dump_test "x86-64-avx10_2-512-satcvt" run_dump_test "x86-64-avx10_2-512-satcvt-intel" run_dump_test "x86-64-avx10_2-256-satcvt" run_dump_test "x86-64-avx10_2-256-satcvt-intel" +run_dump_test "x86-64-avx10_2-512-miscs" +run_dump_test "x86-64-avx10_2-512-miscs-intel" +run_dump_test "x86-64-avx10_2-256-miscs" +run_dump_test "x86-64-avx10_2-256-miscs-intel" run_dump_test "x86-64-clzero" run_dump_test "x86-64-mwaitx-bdver4" run_list_test "x86-64-mwaitx-reg" diff --git a/opcodes/i386-dis-evex-len.h b/opcodes/i386-dis-evex-len.h index a02609c50f2..24cc7b2e027 100644 --- a/opcodes/i386-dis-evex-len.h +++ b/opcodes/i386-dis-evex-len.h @@ -1,4 +1,14 @@ static const struct dis386 evex_len_table[][3] = { + /* EVEX_LEN_0F7E_P_1_W_1 */ + { + { "vmovd", { XMScalar, EXd }, 0 }, + }, + + /* EVEX_LEN_0FD6_P_2_W_0 */ + { + { "vmovd", { EXdS, XMScalar }, 0 }, + }, + /* EVEX_LEN_0F3816 */ { { Bad_Opcode }, @@ -145,4 +155,14 @@ static const struct dis386 evex_len_table[][3] = { { VEX_W_TABLE (EVEX_W_0F3A43_L_n) }, { VEX_W_TABLE (EVEX_W_0F3A43_L_n) }, }, + + /* EVEX_LEN_MAP5_6E */ + { + { PREFIX_TABLE (PREFIX_EVEX_MAP5_6E_L_0) }, + }, + + /* EVEX_LEN_MAP5_7E */ + { + { PREFIX_TABLE (PREFIX_EVEX_MAP5_7E_L_0) }, + }, }; diff --git a/opcodes/i386-dis-evex-prefix.h b/opcodes/i386-dis-evex-prefix.h index 171600190a6..16fb2698390 100644 --- a/opcodes/i386-dis-evex-prefix.h +++ b/opcodes/i386-dis-evex-prefix.h @@ -1,3 +1,17 @@ + /* PREFIX_EVEX_0F2E */ + { + { "%XEvucomis%XS", { XMScalar, EXd, EXxEVexS }, 0 }, + { "vucomxs%XS", { XMScalar, EXd, EXxEVexS }, 0 }, + { "%XEvucomis%XD", { XMScalar, EXq, EXxEVexS }, 0 }, + { "vucomxs%XD", { XMScalar, EXq, EXxEVexS }, 0 }, + }, + /* PREFIX_EVEX_0F2F */ + { + { "%XEvcomis%XS", { XMScalar, EXd, EXxEVexS }, 0 }, + { "vcomxs%XS", { XMScalar, EXd, EXxEVexS }, 0 }, + { "%XEvcomis%XD", { XMScalar, EXq, EXxEVexS }, 0 }, + { "vcomxs%XD", { XMScalar, EXq, EXxEVexS }, 0 }, + }, /* PREFIX_EVEX_0F5B */ { { VEX_W_TABLE (EVEX_W_0F5B_P_0) }, @@ -324,6 +338,19 @@ { "%XEvmpsadbw", { XM, Vex, EXx, Ib }, 0 }, { "vdbpsadbw", { XM, Vex, EXx, Ib }, 0 }, }, + /* PREFIX_EVEX_0F3A52 */ + { + { "vminmaxp%XH", { XM, Vex, EXxh, EXxEVexS, Ib }, 0 }, + { Bad_Opcode }, + { "vminmaxp%XW", { XM, Vex, EXx, EXxEVexS, Ib }, 0 }, + { "vminmaxp%XB", { XM, Vex, EXxh, Ib }, 0 }, + }, + /* PREFIX_EVEX_0F3A53 */ + { + { "vminmaxs%XH", { XMScalar, VexScalar, EXw, EXxEVexS, Ib }, 0 }, + { Bad_Opcode }, + { "vminmaxs%XW", { XMScalar, VexScalar, EXdq, EXxEVexS, Ib }, 0 }, + }, /* PREFIX_EVEX_0F3A56 */ { { "vreducep%XH", { XM, EXxh, EXxEVexS, Ib }, 0 }, @@ -441,12 +468,13 @@ }, /* PREFIX_EVEX_MAP5_2E */ { - { "vucomisY%XH", { XMScalar, EXw, EXxEVexS }, 0 }, + { "vucomisY%XH", { XMScalar, EXw, EXxEVexS }, 0 }, + { "vucomxs%XH", { XMScalar, EXw, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_MAP5_2F */ { - { "vcomisY%XH", { XMScalar, EXw, EXxEVexS }, 0 }, - { Bad_Opcode }, + { "vcomisY%XH", { XMScalar, EXw, EXxEVexS }, 0 }, + { "vcomxs%XH", { XMScalar, EXw, EXxEVexS }, 0 }, { "vcoms%XB", { XMScalar, EXw, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_MAP5_51 */ @@ -546,6 +574,12 @@ { VEX_W_TABLE (EVEX_W_MAP5_6D_P_2) }, { "vcvttsd2sis", { Gdq, EXq, EXxEVexS }, 0 }, }, + /* PREFIX_EVEX_MAP5_6E_L_0 */ + { + { Bad_Opcode }, + { VEX_W_TABLE (EVEX_W_MAP5_6E_P_1) }, + { "vmovwY", { XMScalar, Edw }, 0 }, + }, /* PREFIX_EVEX_MAP5_74 */ { { "vcvtbiasp%XH2bf8s", { XMxmmq, Vex, EXxh }, 0 }, @@ -591,6 +625,12 @@ { "vcvtp%XH2w", { XM, EXxh, EXxEVexR }, 0 }, { "vcvtuw2p%XH", { XM, EXxh, EXxEVexR }, 0 }, }, + /* PREFIX_EVEX_MAP5_7E_L_0 */ + { + { Bad_Opcode }, + { VEX_W_TABLE (EVEX_W_MAP5_7E_P_1) }, + { "vmovw", { Edw, XMScalar }, 0 }, + }, /* PREFIX_EVEX_MAP6_13 */ { { "vcvts%XH2ss", { XMScalar, VexScalar, EXw, EXxEVexS }, 0 }, diff --git a/opcodes/i386-dis-evex-w.h b/opcodes/i386-dis-evex-w.h index 7a10d5f4c9d..67d72220840 100644 --- a/opcodes/i386-dis-evex-w.h +++ b/opcodes/i386-dis-evex-w.h @@ -112,7 +112,7 @@ }, /* EVEX_W_0F7E_P_1 */ { - { Bad_Opcode }, + { EVEX_LEN_TABLE (EVEX_LEN_0F7E_P_1_W_1) }, { VEX_LEN_TABLE (VEX_LEN_0F7E_P_1) }, }, /* EVEX_W_0F7F_P_1 */ @@ -146,7 +146,7 @@ }, /* EVEX_W_0FD6 */ { - { Bad_Opcode }, + { EVEX_LEN_TABLE (EVEX_LEN_0FD6_P_2_W_0) }, { VEX_LEN_TABLE (VEX_LEN_0FD6) }, }, /* EVEX_W_0FE6_P_1 */ @@ -485,8 +485,16 @@ { "vcvttps2qqs", { XM, EXEvexHalfBcstXmmq, EXxEVexS }, 0 }, { "vcvttpd2qqs", { XM, EXx, EXxEVexS }, 0 }, }, + /* EVEX_W_MAP5_6E_P_1 */ + { + { "vmovw", { XMScalar, EXw }, 0 }, + }, /* EVEX_W_MAP5_7A_P_3 */ { { "vcvtudq2ph%XY", { XMxmmq, EXx, EXxEVexR }, 0 }, { "vcvtuqq2ph%XZ", { XMM, EXx, EXxEVexR }, 0 }, }, + /* EVEX_W_MAP5_7E_P_1 */ + { + { "vmovw", { EXwS, XMScalar }, 0 }, + }, diff --git a/opcodes/i386-dis-evex.h b/opcodes/i386-dis-evex.h index ab0471a06e9..13b8a3244ae 100644 --- a/opcodes/i386-dis-evex.h +++ b/opcodes/i386-dis-evex.h @@ -53,8 +53,8 @@ static const struct dis386 evex_table[][256] = { { "%XEvmovntpX", { Mx, XM }, PREFIX_OPCODE }, { PREFIX_TABLE (PREFIX_VEX_0F2C) }, { PREFIX_TABLE (PREFIX_VEX_0F2D) }, - { PREFIX_TABLE (PREFIX_0F2E) }, - { PREFIX_TABLE (PREFIX_0F2F) }, + { PREFIX_TABLE (PREFIX_EVEX_0F2E) }, + { PREFIX_TABLE (PREFIX_EVEX_0F2F) }, /* 30 */ { Bad_Opcode }, { Bad_Opcode }, @@ -676,8 +676,8 @@ static const struct dis386 evex_table[][256] = { /* 50 */ { "vrangep%XW", { XM, Vex, EXx, EXxEVexS, Ib }, PREFIX_DATA }, { "vranges%XW", { XMScalar, VexScalar, EXdq, EXxEVexS, Ib }, PREFIX_DATA }, - { Bad_Opcode }, - { Bad_Opcode }, + { PREFIX_TABLE (PREFIX_EVEX_0F3A52) }, + { PREFIX_TABLE (PREFIX_EVEX_0F3A53) }, { "vfixupimmp%XW", { XM, Vex, EXx, EXxEVexS, Ib }, PREFIX_DATA }, { "vfixupimms%XW", { XMScalar, VexScalar, EXdq, EXxEVexS, Ib }, PREFIX_DATA }, { PREFIX_TABLE (PREFIX_EVEX_0F3A56) }, @@ -1289,7 +1289,7 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_MAP5_6B) }, { PREFIX_TABLE (PREFIX_EVEX_MAP5_6C) }, { PREFIX_TABLE (PREFIX_EVEX_MAP5_6D) }, - { "vmovwY", { XMScalar, Edw }, PREFIX_DATA }, + { EVEX_LEN_TABLE (EVEX_LEN_MAP5_6E) }, { Bad_Opcode }, /* 70 */ { Bad_Opcode }, @@ -1307,7 +1307,7 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_MAP5_7B) }, { PREFIX_TABLE (PREFIX_EVEX_MAP5_7C) }, { PREFIX_TABLE (PREFIX_EVEX_MAP5_7D) }, - { "vmovw", { Edw, XMScalar }, PREFIX_DATA }, + { EVEX_LEN_TABLE (EVEX_LEN_MAP5_7E) }, { Bad_Opcode }, /* 80 */ { Bad_Opcode }, diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 63de116c917..8fe8e7d726e 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -1155,6 +1155,8 @@ enum PREFIX_VEX_MAP7_F6_L_0_W_0_R_0_X86_64, PREFIX_VEX_MAP7_F8_L_0_W_0_R_0_X86_64, + PREFIX_EVEX_0F2E, + PREFIX_EVEX_0F2F, PREFIX_EVEX_0F5B, PREFIX_EVEX_0F6F, PREFIX_EVEX_0F70, @@ -1207,6 +1209,8 @@ enum PREFIX_EVEX_0F3A26, PREFIX_EVEX_0F3A27, PREFIX_EVEX_0F3A42_W_0, + PREFIX_EVEX_0F3A52, + PREFIX_EVEX_0F3A53, PREFIX_EVEX_0F3A56, PREFIX_EVEX_0F3A57, PREFIX_EVEX_0F3A66, @@ -1245,6 +1249,7 @@ enum PREFIX_EVEX_MAP5_6B, PREFIX_EVEX_MAP5_6C, PREFIX_EVEX_MAP5_6D, + PREFIX_EVEX_MAP5_6E_L_0, PREFIX_EVEX_MAP5_74, PREFIX_EVEX_MAP5_78, PREFIX_EVEX_MAP5_79, @@ -1252,6 +1257,7 @@ enum PREFIX_EVEX_MAP5_7B, PREFIX_EVEX_MAP5_7C, PREFIX_EVEX_MAP5_7D, + PREFIX_EVEX_MAP5_7E_L_0, PREFIX_EVEX_MAP6_13, PREFIX_EVEX_MAP6_2C, @@ -1521,7 +1527,9 @@ enum enum { - EVEX_LEN_0F3816 = 0, + EVEX_LEN_0F7E_P_1_W_1 = 0, + EVEX_LEN_0FD6_P_2_W_0, + EVEX_LEN_0F3816, EVEX_LEN_0F3819, EVEX_LEN_0F381A, EVEX_LEN_0F381B, @@ -1541,7 +1549,10 @@ enum EVEX_LEN_0F3A39, EVEX_LEN_0F3A3A, EVEX_LEN_0F3A3B, - EVEX_LEN_0F3A43 + EVEX_LEN_0F3A43, + + EVEX_LEN_MAP5_6E, + EVEX_LEN_MAP5_7E, }; enum @@ -1777,7 +1788,9 @@ enum EVEX_W_MAP5_6C_P_2, EVEX_W_MAP5_6D_P_0, EVEX_W_MAP5_6D_P_2, + EVEX_W_MAP5_6E_P_1, EVEX_W_MAP5_7A_P_3, + EVEX_W_MAP5_7E_P_1, }; typedef bool (*op_rtn) (instr_info *ins, int bytemode, int sizeflag); @@ -3311,16 +3324,16 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_0F2E */ { - { "%XEVucomisYX", { XMScalar, EXd, EXxEVexS }, 0 }, + { "VucomisYX", { XMScalar, EXd, EXxEVexS }, 0 }, { Bad_Opcode }, - { "%XEVucomisYX", { XMScalar, EXq, EXxEVexS }, 0 }, + { "VucomisYX", { XMScalar, EXq, EXxEVexS }, 0 }, }, /* PREFIX_0F2F */ { - { "%XEVcomisYX", { XMScalar, EXd, EXxEVexS }, 0 }, + { "VcomisYX", { XMScalar, EXd, EXxEVexS }, 0 }, { Bad_Opcode }, - { "%XEVcomisYX", { XMScalar, EXq, EXxEVexS }, 0 }, + { "VcomisYX", { XMScalar, EXq, EXxEVexS }, 0 }, }, /* PREFIX_0F51 */ diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl index 502264cb78a..153efb41939 100644 --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -1930,10 +1930,10 @@ vcvtps2ph, 0x661d, F16C, Modrm|Vex=2|Space0F3A|VexW=1|NoSuf, { Imm8, RegYMM, Uns <fma:opc, 132:10, 213:20, 231:30> -<sdh:cpu:cpudq:fma:ppfx:spfx:pfx:spc1:spc2:opc:vex:vexlig:vexw:elem, + - s:AVX512F:AVX512DQ:FMA|AVX512F::f3:66:Space0F:Space0F38:0:Vex|EVexDYN:VexLIG|EVexLIG:VexW0:Dword, + - d:AVX512F:AVX512DQ:FMA|AVX512F:66:f2:66:Space0F:Space0F38:1:Vex|EVexDYN:VexLIG|EVexLIG:VexW1:Qword, + - h:AVX512_FP16:AVX512_FP16:AVX512_FP16::f3::Map5:Map6:0::EVexLIG:VexW0:Word> +<sdh:cpu:cpudq:fma:ppfx:spfx:pfx:spc1:spc2:opc:vex:vexlig:vexw:elem:sdisp8, + + s:AVX512F:AVX512DQ:FMA|AVX512F::f3:66:Space0F:Space0F38:0:Vex|EVexDYN:VexLIG|EVexLIG:VexW0:Dword:Disp8MemShift=2, + + d:AVX512F:AVX512DQ:FMA|AVX512F:66:f2:66:Space0F:Space0F38:1:Vex|EVexDYN:VexLIG|EVexLIG:VexW1:Qword:Disp8MemShift=3, + + h:AVX512_FP16:AVX512_FP16:AVX512_FP16::f3::Map5:Map6:0::EVexLIG:VexW0:Word:Disp8MemShift=1> v<fm><fma>p<sdh>, 0x66<fm:opc3> | 0x<fma:opc>, <sdh:fma>, Modrm|<sdh:vex>|Masking|<sdh:spc2>|Src1VVVV|<sdh:vexw>|Broadcast|Disp8ShiftVL|CheckOperandSize|NoSuf|StaticRounding|SAE, { RegXMM|RegYMM|RegZMM|<sdh:elem>|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM } v<fm><fma>s<sdh>, 0x66<fm:opc3> | 1 | 0x<fma:opc>, <sdh:fma>, Modrm|<sdh:vexlig>|Masking|<sdh:spc2>|Src1VVVV|<sdh:vexw>|Disp8MemShift|NoSuf|StaticRounding|SAE, { RegXMM|<sdh:elem>|Unspecified|BaseIndex, RegXMM, RegXMM } @@ -3510,4 +3510,15 @@ vcvttss2<sign>sis, 0xf3<sign:opc>, AVX10_2, Modrm|Map5|EVexLIG|Disp8MemShift=2|N <sign> +vminmaxpbf16, 0xf252, AVX10_2, Modrm|Masking|Space0F3A|Src1VVVV|VexW0|Disp8ShiftVL|Broadcast|CheckOperandSize|NoSuf, { Imm8, RegXMM|RegYMM|RegZMM|Word|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM } +vminmaxp<sdh>, 0x<sdh:pfx>52, AVX10_2, Modrm|Masking|Space0F3A|<sdh:vexw>|Broadcast|Src1VVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|SAE, { Imm8, RegXMM|RegYMM|RegZMM|<sdh:elem>|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM } +vminmaxs<sdh>, 0x<sdh:pfx>53, AVX10_2, Modrm|EVexLIG|Masking|Space0F3A|Src1VVVV|<sdh:vexw>|<sdh:sdisp8>|CheckOperandSize|NoSuf|SAE, { Imm8, RegXMM|<sdh:elem>|Unspecified|BaseIndex, RegXMM, RegXMM } + +vmovd, 0xf37e, AVX10_2, Load|Modrm|EVex128|VexW0|Space0F|Disp8MemShift=2|NoSuf, { Dword|Unspecified|BaseIndex|RegXMM, RegXMM } +vmovd, 0x66d6, AVX10_2, Modrm|EVex128|VexW0|Space0F|Disp8MemShift=2|NoSuf, { RegXMM, Dword|Unspecified|BaseIndex|RegXMM } +vmovw, 0xf36e, AVX10_2, D|Modrm|EVex128|VexW0|Map5|Disp8MemShift=1|NoSuf, { Word|Unspecified|BaseIndex|RegXMM, RegXMM } + +vcomxs<sdh>, 0x<sdh:spfx>2f, AVX10_2, Modrm|EVexLIG|<sdh:spc1>|<sdh:vexw>|<sdh:sdisp8>|NoSuf|SAE, { RegXMM|<sdh:elem>|Unspecified|BaseIndex, RegXMM } +vucomxs<sdh>, 0x<sdh:spfx>2e, AVX10_2, Modrm|EVexLIG|<sdh:spc1>|<sdh:vexw>|<sdh:sdisp8>|NoSuf|SAE, { RegXMM|<sdh:elem>|Unspecified|BaseIndex, RegXMM } + // AVX10.2 instructions end. -- 2.31.1