i386: Fix up *avx_vperm_broadcast_v4df [PR93430]
Apparently my recent patch which moved the *avx_vperm_broadcast* and *vpermil* patterns before vpermpd broke the following testcase, the define_insn_and_split matched always but the splitter condition only split it if not -mavx2 for V4DFmode, basically relying on the vpermpd pattern to come first. The following patch fixes it by moving that part of SPLIT-CONDITION into CONDITION, so that when it is not met, we just don't match the pattern and thus match the later vpermpd pattern in that case. Except, for { 0, 0, 0, 0 } permutation, there is actually no reason to do that, vbroadcastsd from memory seems to be slightly cheaper than vpermpd $0. 2020-01-26 Jakub Jelinek <jakub@redhat.com> PR target/93430 * config/i386/sse.md (*avx_vperm_broadcast_<mode>): Disallow for TARGET_AVX2 and V4DFmode not in the split condition, but in the pattern condition, though allow { 0, 0, 0, 0 } broadcast always. * gcc.dg/pr93430.c: New test. * gcc.target/i386/avx2-pr93430.c: New test.
Showing
gcc/testsuite/gcc.dg/pr93430.c
0 → 100644
gcc/testsuite/gcc.target/i386/avx2-pr93430.c
0 → 100644
Please
register
or
sign in
to comment