Support Intel AVX-IFMA
authorHongyu Wang <hongyu.wang@intel.com>
Tue, 1 Nov 2022 02:49:29 +0000 (10:49 +0800)
committerCui,Lili <lili.cui@intel.com>
Wed, 2 Nov 2022 01:19:20 +0000 (09:19 +0800)
commit4321af3e4d269851aed31e94b3e115a6884b21b4
tree76494bf481a3f6dee85a231dceb01577c40ccbbf
parente8572cd6aaff78d5afdb415416db7da5a3b1ca1c
Support Intel AVX-IFMA

x86: Support Intel AVX-IFMA

Intel AVX IFMA instructions are marked with CpuVEX_PREFIX, which is
cleared by default.  Without {vex} pseudo prefix, Intel IFMA instructions
are encoded with EVEX prefix.  {vex} pseudo prefix will turn on VEX
encoding for Intel IFMA instructions.

gas/

* NEWS: Support Intel AVX-IFMA.
* config/tc-i386.c (cpu_arch): Add avx_ifma.
* doc/c-i386.texi: Document .avx_ifma.
* testsuite/gas/i386/avx-ifma.d: New file.
* testsuite/gas/i386/avx-ifma-intel.d: Likewise.
* testsuite/gas/i386/avx-ifma.s: Likewise.
* testsuite/gas/i386/x86-64-avx-ifma.d: Likewise.
* testsuite/gas/i386/x86-64-avx-ifma-intel.d: Likewise.
* testsuite/gas/i386/x86-64-avx-ifma.s: Likewise.
* testsuite/gas/i386/i386.exp: Run AVX IFMA tests.

opcodes/

* i386-dis.c (PREFIX_VEX_0F38B4): New.
(PREFIX_VEX_0F38B5): Likewise.
(VEX_W_0F38B4_P_2): Likewise.
(VEX_W_0F38B5_P_2): Likewise.
(prefix_table): Add PREFIX_VEX_0F38B4 and PREFIX_VEX_0F38B5.
(vex_table): Add VEX_W_0F38B4_P_2 and VEX_W_0F38B5_P_2.
* i386-dis-evex.h: Fold AVX512IFMA entries to AVX-IFMA.
* i386-gen.c (cpu_flag_init): Clear the CpuAVX_IFMA bit in
CPU_UNKNOWN_FLAGS. Add CPU_AVX_IFMA_FLGAS and
CPU_ANY_AVX_IFMA_FLAGS. Add CpuAVX_IFMA to CPU_AVX2_FLAGS.
(cpu_flags): Add CpuAVX_IFMA.
* i386-opc.h (CpuAVX_IFMA): New.
(i386_cpu_flags): Add cpuavx_ifma.
* i386-opc.tbl: Add Intel AVX IFMA instructions.
* i386-init.h: Regenerated.
* i386-tbl.h: Likewise.

Co-authored-by: Haochen Jiang <haochen.jiang@intel.com>
22 files changed:
gas/NEWS
gas/config/tc-i386.c
gas/doc/c-i386.texi
gas/testsuite/gas/i386/avx-ifma-intel.d [new file with mode: 0644]
gas/testsuite/gas/i386/avx-ifma-inval.l [new file with mode: 0644]
gas/testsuite/gas/i386/avx-ifma-inval.s [new file with mode: 0644]
gas/testsuite/gas/i386/avx-ifma.d [new file with mode: 0644]
gas/testsuite/gas/i386/avx-ifma.s [new file with mode: 0644]
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/noavx512-1.l
gas/testsuite/gas/i386/x86-64-avx-ifma-intel.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx-ifma-inval.l [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx-ifma-inval.s [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx-ifma.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx-ifma.s [new file with mode: 0644]
opcodes/i386-dis-evex.h
opcodes/i386-dis.c
opcodes/i386-gen.c
opcodes/i386-init.h
opcodes/i386-opc.h
opcodes/i386-opc.tbl
opcodes/i386-tbl.h