]> gcc.gnu.org Git - gcc.git/commit
[i386] APX: Fix ICE due to movti postreload splitter [PR112394]
authorHongyu Wang <hongyu.wang@intel.com>
Tue, 7 Nov 2023 02:02:53 +0000 (10:02 +0800)
committerHongyu Wang <hongyu.wang@intel.com>
Wed, 8 Nov 2023 07:38:51 +0000 (15:38 +0800)
commitca281a7b97163273de9d73da556fb3f6dcc3b61b
tree3ec7c2acf0e534aab47c0ccaac61a5ef74ff5e7c
parentecb5ddd4f09f315f76b6a02cc68b56a9a6d2be94
[i386] APX: Fix ICE due to movti postreload splitter [PR112394]

When APX EGPR enabled, the TImode move pattern *movti_internal allows
move between gpr and sse reg using constraint pair ("r","Yd"). Then a
post-reload splitter transform such move to vec_extractv2di, while under
-msse4.1 -mno-avx EGPR is not allowed for its enabled alternative, which
caused ICE that insn does not match the constraint. To prevent such ICE,
we need to adjust the constraint correspond to "Yd". Add a new
constraint "jc" to disable EGPR under -mno-avx.

gcc/ChangeLog:

PR target/112394
* config/i386/constraints.md (jc): New constraint that prohibits
EGPR on -mno-avx.
* config/i386/i386.md (*movdi_internal): Change r constraint
corresponds to Yd.
(*movti_internal): Likewise.

gcc/testsuite/ChangeLog:

PR target/112394
* gcc.target/i386/pr112394.c: New test.
gcc/config/i386/constraints.md
gcc/config/i386/i386.md
gcc/testsuite/gcc.target/i386/pr112394.c [new file with mode: 0644]
This page took 0.065692 seconds and 6 git commands to generate.