]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
Add AMD znver6 processor support
authorUmesh Kalvakuntla <umesh.kalvakuntla@amd.com>
Fri, 5 Dec 2025 09:12:51 +0000 (10:12 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 5 Dec 2025 09:12:51 +0000 (10:12 +0100)
commit2abac9c95cc1852c25cf8d67322e0af10d688b8a
tree94561c190d6fc65027eb5ad701e67d103228958a
parent4c1e38095bd659f3d3f64de8f78bb49cafbd795e
Add AMD znver6 processor support

In --help option, adds znver6 to the list of CPUs under -march.

Please find the ISA descriptions for AVX512_BMM instructions below.

AVX512 Bit Manipulation Instructions
====================================
The AVX512BMM instructions include Bit Matrix Multiply and Bit Reversal
operations.

CPUID
-----
Support is indicated by the new CPUID 8000_0021, EAX bit 23, labeled AVX512_BMM.

Encoding
--------
VBMACOR16x16x16
EVEX.256.NP.MAP6.W0 80 /r VBMACOR16x16x16  ymm1, ymm2, ymm3/m256
EVEX.512.NP.MAP6.W0 80 /r VBMACOR16x16x16  zmm1, zmm2, zmm3/m512

VBMACXOR16x16x16
EVEX.256.NP.MAP6.W1 80 /r VBMACXOR16x16x16  ymm1, ymm2, ymm3/m256
EVEX.512.NP.MAP6.W1 80 /r VBMACXOR16x16x16  zmm1, zmm2, zmm3/m512

DESCRIPTION
-----------
256 BIT VERSIONS
----------------
16x16 non-transposed fused BMM-accumulate (BMAC) with OR/XOR reduction.
A ymm register holds a 16x16 bit matrix. The third source matrix for
accumulation is in ymm1.

512 BIT VERSIONS
----------------
2 parallel 16x16 non-transposed fused BMM-accumulate (BMAC) with OR/XOR
reduction.
Each 256-bit chunk of a zmm register holds a 16x16 bit matrix. The third source
matrices for accumulation are in zmm1.

VBITREVB
--------
EVEX.128.NP.MAP6.W0 81 /r VBITREVB  xmm1{k1}{z}, xmm2/m128
EVEX.256.NP.MAP6.W0 81 /r VBITREVB  ymm1{k1}{z}, ymm2/m256
EVEX.512.NP.MAP6.W0 81 /r VBITREVB  zmm1{k1}{z}, zmm2/m512

DESCRIPTION
-----------
Bit reversal within a byte boundary. Only applied to input bytes where the
corresponding mask bit is set; otherwise, bytes are left untouched or zeroed out
if zero masking is indicated.

gas/ChangeLog:

* NEWS: Add znver6 ARCH.
* config/tc-i386.c: Add znver6 ARCH, avx512_bmm SUBARCH.
* doc/c-i386.texi: Likewise.
* testsuite/gas/i386/i386.exp: Add znver6 test cases.
* testsuite/gas/i386/x86-64.exp: Add znver6 test cases.
* testsuite/gas/i386/arch-16-znver6.d: New test.
* testsuite/gas/i386/arch-16.d: New test.
* testsuite/gas/i386/arch-16.s: New test.
* testsuite/gas/i386/avx512_bmm.d: New test.
* testsuite/gas/i386/avx512_bmm.s: New test.
* testsuite/gas/i386/avx512_bmm_vl-inval.l: New test.
* testsuite/gas/i386/avx512_bmm_vl-inval.s: New test.
* testsuite/gas/i386/avx512_bmm_vl.d: New test.
* testsuite/gas/i386/avx512_bmm_vl.s: New test.
* testsuite/gas/i386/x86-64-arch-6-znver6.d: New test.
* testsuite/gas/i386/x86-64-arch-6.d: New test.
* testsuite/gas/i386/x86-64-arch-6.s: New test.
* testsuite/gas/i386/x86-64-avx512_bmm-bad.d: New test.
* testsuite/gas/i386/x86-64-avx512_bmm-bad.s: New test.
* testsuite/gas/i386/x86-64-avx512_bmm.d: New test.
* testsuite/gas/i386/x86-64-avx512_bmm.s: New test.
* testsuite/gas/i386/x86-64-avx512_bmm_vl-inval.l: New test.
* testsuite/gas/i386/x86-64-avx512_bmm_vl-inval.s: New test.
* testsuite/gas/i386/x86-64-avx512_bmm_vl.d: New test.
* testsuite/gas/i386/x86-64-avx512_bmm_vl.s: New test.

opcodes/ChangeLog:

* i386-dis-evex-len.h: Likewise.
* i386-dis-evex-w.h: Likewise.
* i386-dis-evex.h: Likewise.
* i386-dis.c: Add EVEX_W_MAP6_80, EVEX_W_MAP6_81,
  EVEX_LEN_MAP6_80_W_0, EVEX_LEN_MAP6_80_W_1.
* i386-gen.c: Likewise.
* i386-init.h: Re-generated.
* i386-mnem.h: Re-generated.
* i386-opc.h (enum i386_cpu): Add CpuAVX512_BMM.
(i386_cpu_flags): Add cpuvavx512_bmm.
* i386-opc.tbl: Add vbmacor16x16x16, vbmacxor16x16x16, vbitrevb.
* i386-tbl.h: Re-generated.
35 files changed:
gas/NEWS
gas/config/tc-i386.c
gas/doc/c-i386.texi
gas/testsuite/gas/i386/arch-16-znver6.d [new file with mode: 0644]
gas/testsuite/gas/i386/arch-16.d [new file with mode: 0644]
gas/testsuite/gas/i386/arch-16.s [new file with mode: 0644]
gas/testsuite/gas/i386/avx512_bmm.d [new file with mode: 0644]
gas/testsuite/gas/i386/avx512_bmm.s [new file with mode: 0644]
gas/testsuite/gas/i386/avx512_bmm_vl-inval.l [new file with mode: 0644]
gas/testsuite/gas/i386/avx512_bmm_vl-inval.s [new file with mode: 0644]
gas/testsuite/gas/i386/avx512_bmm_vl.d [new file with mode: 0644]
gas/testsuite/gas/i386/avx512_bmm_vl.s [new file with mode: 0644]
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/x86-64-arch-6-znver6.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-arch-6.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-arch-6.s [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx512_bmm-bad.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx512_bmm-bad.s [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx512_bmm.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx512_bmm.s [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx512_bmm_vl-inval.l [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx512_bmm_vl-inval.s [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx512_bmm_vl.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx512_bmm_vl.s [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64.exp
opcodes/i386-dis-evex-len.h
opcodes/i386-dis-evex-w.h
opcodes/i386-dis-evex.h
opcodes/i386-dis.c
opcodes/i386-gen.c
opcodes/i386-init.h
opcodes/i386-mnem.h
opcodes/i386-opc.h
opcodes/i386-opc.tbl
opcodes/i386-tbl.h