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

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by hongtao Liu <liuho...@gcc.gnu.org>:

https://gcc.gnu.org/g:07b86ab138bf8be8cb331015cd2b9775c6856ac6

commit r14-1640-g07b86ab138bf8be8cb331015cd2b9775c6856ac6
Author: liuhongt <hongtao....@intel.com>
Date:   Mon Jun 5 11:59:33 2023 +0800

    Fold _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple ABSU_EXPR +
VCE.

    r14-1145 fold the intrinsics into gimple ABS_EXPR which has UB for
    TYPE_MIN, but PABSB will store unsigned result into dst. The patch
    uses ABSU_EXPR + VCE instead of ABS_EXPR.

    Also don't fold _mm_abs_{pi8,pi16,pi32} w/o TARGET_64BIT since 64-bit
    vector absm2 is guarded with TARGET_MMX_WITH_SSE.

    gcc/ChangeLog:

            PR target/110108
            * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
            _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
            ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
            TARGET_64BIT.
            * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
            real codename for __builtin_ia32_pabs{b,w,d}.

    gcc/testsuite/ChangeLog:

            * gcc.target/i386/pr110108.c: New test.
            * gcc.target/i386/pr110108-3.c: New test.
            * gcc.target/i386/pr109900.c: Adjust testcase.

Reply via email to