i386: Fix up V2SFmode vcond* with -mxop [PR100581]
authorUros Bizjak <ubizjak@gmail.com>
Thu, 13 May 2021 09:09:53 +0000 (11:09 +0200)
committerUros Bizjak <ubizjak@gmail.com>
Thu, 13 May 2021 09:10:50 +0000 (11:10 +0200)
commitf1693741cb2b2db519bb82155a3c0880fd820ea3
tree0be1b8a2b7cd93aecf794200670ce33e5c102e01
parent23eb66d1d46a34cb28c4acbdf8a1deb80a7c5a05
i386: Fix up V2SFmode vcond* with -mxop [PR100581]

ix86_expand_sse_movcc has special TARGET_XOP handling and the recent
addition of support of v*cond* patterns for V2SFmode results in
ICEs because the expected pattern doesn't exist.  We can handle it
using 128-bit vpcmov (if we ignore the upper 64 bits like we ignore in
other TARGET_MMX_WITH_SSE support).

2021-05-13  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
PR target/100581
* config/i386/i386-expand.c (ix86_expand_sse_movcc): Force mode
sizes < 16 to a register when constructing vpcmov pattern.
* config/i386/mmx.md (*xop_pcmov_<mode>): Use MMXMODE124 mode.

gcc/testsuite/

PR target/100581
* g++.target/i386/pr100581.C: New test.
gcc/config/i386/i386-expand.c
gcc/config/i386/mmx.md
gcc/testsuite/g++.target/i386/pr100581.C [new file with mode: 0644]