diff options
author | Jakub Jelinek <jakub@redhat.com> | 2020-02-13 08:17:07 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2020-02-13 08:17:07 +0100 |
commit | dc6d0f89d4be3ed7fde73417606a78c73d954cdf (patch) | |
tree | 44ad40e0e78ecd109cdfee1d6a5d61a6e139d840 /gcc/fold-const.c | |
parent | 74ddc9b8e550c6138862f9ca1eec4374d46667fc (diff) | |
download | gcc-dc6d0f89d4be3ed7fde73417606a78c73d954cdf.zip gcc-dc6d0f89d4be3ed7fde73417606a78c73d954cdf.tar.gz gcc-dc6d0f89d4be3ed7fde73417606a78c73d954cdf.tar.bz2 |
i386: Fix k*shift* intrinsics [PR93673]
As mentioned in the PR, the intrinsics allow counts from 0 to 255, but
we actually reject values from 128 to 255. That is because QImode
CONST_INTs can be only -128 to 127. Fixed by using const_0_to_255_operand
and dropping the modes for the operands with those predicates
(the IL actually contains the CONST_INT which has VOIDmode).
2020-02-13 Jakub Jelinek <jakub@redhat.com>
PR target/93673
* config/i386/sse.md (k<code><mode>): Drop mode from last operand and
use const_0_to_255_operand predicate instead of immediate_operand.
(avx512dq_fpclass<mode><mask_scalar_merge_name>,
avx512dq_vmfpclass<mode><mask_scalar_merge_name>,
vgf2p8affineinvqb_<mode><mask_name>,
vgf2p8affineqb_<mode><mask_name>): Drop mode from
const_0_to_255_operand predicated operands.
* gcc.target/i386/avx512f-pr93673.c: New test.
* gcc.target/i386/avx512dq-pr93673.c: New test.
* gcc.target/i386/avx512bw-pr93673.c: New test.
Diffstat (limited to 'gcc/fold-const.c')
0 files changed, 0 insertions, 0 deletions