[Bug target/93673] Fake error given by gcc when compiling for _kshift intrinsics

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Feb 14 16:40:00 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93673

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-8 branch has been updated by Jakub Jelinek
<jakub@gcc.gnu.org>:

https://gcc.gnu.org/g:fbb4d21086a20cd996049309d6c24d7fb3099123

commit r8-10019-gfbb4d21086a20cd996049309d6c24d7fb3099123
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri Feb 14 15:49:32 2020 +0100

    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.


More information about the Gcc-bugs mailing list