]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
Support Intel AVX10.2 media instructions
authorHaochen Jiang <haochen.jiang@intel.com>
Thu, 30 Jul 2020 03:01:01 +0000 (11:01 +0800)
committerHaochen Jiang <haochen.jiang@intel.com>
Fri, 11 Oct 2024 02:38:27 +0000 (10:38 +0800)
commit873e7b6cf61b5e3fca8ab55ea1b8574dd00a3caf
tree2d94b7c992bac3b280784a06e6bc5eeee766ee27
parent7fbaef8e801a4a212972aafc380fedae46204837
Support Intel AVX10.2 media instructions

In disassembler part, for vnni instructions, we extended previous
VEX part using %XE in disassembler to promote them to EVEX by reusing
the original VEX table. For vmpsadbw, we will also use %XE. However,
it is hard to reuse the VEX table, so we are using new ones.

In assmbler part, we put the vnni table entries with previous vnni
instructions since they are just promotion from AVX-VNNI-INT{8,16}.
Since we will prefer VEX encoding, we need to use the different table
order in template <vnni>, which prefers EVEX due to earlier introduction
for AVX512_VNNI than AVX_VNNI. This means a new <vnni>. For vdpphps
and vmpsadbw, we put them at the end of the table, with future AVX10.2
instructions.

Nit: I will remove the arch requirement for avx_vnni_int{8,16} in
evex-promote testcases after AVX10.2 implies AVX-VNNI-INT{8,16}.

gas/Changelog:

* testsuite/gas/i386/i386.exp: Add AVX10.2 tests.
* testsuite/gas/i386/x86-64.exp: Ditto.
* testsuite/gas/i386/avx10_2-256-1-intel.d: New.
* testsuite/gas/i386/avx10_2-256-1.d: Ditto.
* testsuite/gas/i386/avx10_2-256-1.s: Ditto.
* testsuite/gas/i386/avx10_2-512-1-intel.d: Ditto.
* testsuite/gas/i386/avx10_2-512-1.d: Ditto.
* testsuite/gas/i386/avx10_2-512-1.s: Ditto.
* testsuite/gas/i386/avx10_2-promote.d: Ditto.
* testsuite/gas/i386/avx10_2-promote.s: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-256-1-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-256-1.d: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-256-1.s: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-512-1-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-512-1.d: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-512-1.s: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-promote.d: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-promote.s: Ditto.

opcodes/Changelog:

* i386-dis-evex-prefix.h: Adjust PREFIX_EVEX_0F3852.
Add PREFIX_EVEX_0F3A42_W_0.
* i386-dis-evex-w.h: Adjust EVEX_W_0F3A42.
* i386-dis-evex.h: Add table pass for AVX10.2
instructions.
* i386-dis.c: Adjust PREFIX_VEX_0F3850_W_0, PREFIX_VEX_0F3851_W_0,
PREFIX_VEX_0F38D2_W_0 and PREFIX_VEX_0F38D3_W_0.
* i386-opc.tbl: Add AVX10.2 instructions.
* i386-mnem.h: Regenerated.
* i386-tbl.h: Ditto.

Co-authored-by: Lili Cui <lili.cui@intel.com>
25 files changed:
gas/testsuite/gas/i386/avx10_2-256-1-intel.d [new file with mode: 0644]
gas/testsuite/gas/i386/avx10_2-256-1.d [new file with mode: 0644]
gas/testsuite/gas/i386/avx10_2-256-1.s [new file with mode: 0644]
gas/testsuite/gas/i386/avx10_2-512-1-intel.d [new file with mode: 0644]
gas/testsuite/gas/i386/avx10_2-512-1.d [new file with mode: 0644]
gas/testsuite/gas/i386/avx10_2-512-1.s [new file with mode: 0644]
gas/testsuite/gas/i386/avx10_2-evex-promote.d [new file with mode: 0644]
gas/testsuite/gas/i386/avx10_2-evex-promote.s [new file with mode: 0644]
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/x86-64-avx10_2-256-1-intel.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx10_2-256-1.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx10_2-256-1.s [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx10_2-512-1-intel.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx10_2-512-1.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx10_2-512-1.s [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx10_2-evex-promote.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx10_2-evex-promote.s [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64.exp
opcodes/i386-dis-evex-prefix.h
opcodes/i386-dis-evex-w.h
opcodes/i386-dis-evex.h
opcodes/i386-dis.c
opcodes/i386-mnem.h
opcodes/i386-opc.tbl
opcodes/i386-tbl.h