re PR target/85328 (accessing ymm16 with non-avx512 instruction form)
authorJakub Jelinek <jakub@redhat.com>
Thu, 12 Apr 2018 11:17:23 +0000 (13:17 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 12 Apr 2018 11:17:23 +0000 (13:17 +0200)
commitdcd88195e7c18ad57165f24b7f15e2fa6d239876
treeef6d60a25efd9ae462b61bb5fcabcbd03584c6c6
parentb9dd1a79284dd9883c1eec0412145108135e3d75
re PR target/85328 (accessing ymm16 with non-avx512 instruction form)

PR target/85328
* config/i386/sse.md
(<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
and output is a reg, avoid creating invalid lowpart subreg, but
instead split into a 512-bit move.  Don't split if not AVX512VL,
input is xmm16+ reg and output is a mem.
(vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
xmm16+ reg and output is a mem.

* gcc.target/i386/pr85328.c: New test.

From-SVN: r259344
gcc/ChangeLog
gcc/config/i386/sse.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr85328.c [new file with mode: 0644]