]> git.ipfire.org Git - thirdparty/gcc.git/commit
i386: Fix TARGET_USE_VECTOR_FP_CONVERTS SF->DF float_extend splitter [PR113133]
authorUros Bizjak <ubizjak@gmail.com>
Fri, 29 Dec 2023 08:47:43 +0000 (09:47 +0100)
committerUros Bizjak <ubizjak@gmail.com>
Fri, 29 Dec 2023 08:53:01 +0000 (09:53 +0100)
commit1e7f9abb892443719c82bb17910caa8fb5eeec15
treec86b2baf022cef8783c23e9d1ce291dd6ad6e5cd
parent200531d5b9fb99eca2b0d6b8d1e42d176413225f
i386: Fix TARGET_USE_VECTOR_FP_CONVERTS SF->DF float_extend splitter [PR113133]

The post-reload splitter currently allows xmm16+ registers with TARGET_EVEX512.
The splitter changes SFmode of the output operand to V4SFmode, but the vector
mode is currently unsupported in xmm16+ without TARGET_AVX512VL. lowpart_subreg
returns NULL_RTX in this case and the compilation fails with invalid RTX.

The patch removes support for x/ymm16+ registers with TARGET_EVEX512.  The
support should be restored once ix86_hard_regno_mode_ok is fixed to allow
16-byte modes in x/ymm16+ with TARGET_EVEX512.

PR target/113133

gcc/ChangeLog:

* config/i386/i386.md
(TARGET_USE_VECTOR_FP_CONVERTS SF->DF float_extend splitter):
Do not handle xmm16+ with TARGET_EVEX512.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pr113133-1.c: New test.
* gcc.target/i386/pr113133-2.c: New test.
gcc/config/i386/i386.md
gcc/testsuite/gcc.target/i386/pr113133-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr113133-2.c [new file with mode: 0644]