]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
Support ymm rounding control for Intel AVX10.2
authorHaochen Jiang <haochen.jiang@intel.com>
Mon, 2 Sep 2024 02:53:59 +0000 (10:53 +0800)
committerHaochen Jiang <haochen.jiang@intel.com>
Mon, 2 Sep 2024 02:53:59 +0000 (10:53 +0800)
commit85e370a3d63f88386e98b435f43fa63e9e54130b
treeb72b97963f708c31065c55049479cea64866e768
parent073e508b618cc16902cc3ec64c99f87750c6b841
Support ymm rounding control for Intel AVX10.2

In the patch, in order to support ymm rounding for AVX10.2, we derive
evex attribute for all cases instead of only for rc_none to encode U bit.
Also changed some bad_opcode return due to the share of U bit with APX_F.

gas/ChangeLog:

* config/tc-i386.c
(cpu_flags_match): Handle AVX10_2.
(build_evex_prefix): Handle U bit. Derive evex attribute
for all cases.
(check_VecOperands): Handle AVX10.2 and ymm roundings.
* doc/c-i386.texi: Document .avx10.2.
* testsuite/gas/i386/i386.exp: Run AVX10.2 tests.
* testsuite/gas/i386/x86-64.exp: Ditto.
* testsuite/gas/i386/avx10_2-rounding-intel.d: New test.
* testsuite/gas/i386/avx10_2-rounding-inval.l: Ditto.
* testsuite/gas/i386/avx10_2-rounding-inval.s: Ditto.
* testsuite/gas/i386/avx10_2-rounding.d: Ditto.
* testsuite/gas/i386/avx10_2-rounding.s: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-rounding-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-rounding.d: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-rounding.s: Ditto.

opcodes/ChangeLog:

* i386-dis.c (struct instr_info): Add U bit.
(get_valid_dis386): Handle U bit.
* i386-gen.c (isa_dependencies): Add AVX10.2.
(cpu_flags): Ditto.
* i386-init.h: Regenerated.
* i386-opc.h (CpuAVX10_2): New.
(i386_cpu_flags): Add cpuavx10_2.
* i386-opc.tbl: Add rounding to old entries which do not
permit rounding previously. Also eliminate the redundant
RegXMM for vcvtps2uqq.
* i386-tbl.h: Regenerated.
18 files changed:
gas/config/tc-i386.c
gas/doc/c-i386.texi
gas/testsuite/gas/i386/avx10_2-rounding-intel.d [new file with mode: 0644]
gas/testsuite/gas/i386/avx10_2-rounding-inval.l [new file with mode: 0644]
gas/testsuite/gas/i386/avx10_2-rounding-inval.s [new file with mode: 0644]
gas/testsuite/gas/i386/avx10_2-rounding.d [new file with mode: 0644]
gas/testsuite/gas/i386/avx10_2-rounding.s [new file with mode: 0644]
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/x86-64-avx10_2-rounding-intel.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx10_2-rounding.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx10_2-rounding.s [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64.exp
opcodes/i386-dis.c
opcodes/i386-gen.c
opcodes/i386-init.h
opcodes/i386-opc.h
opcodes/i386-opc.tbl
opcodes/i386-tbl.h