On Wed, Jan 27, 2021 at 5:03 PM Jakub Jelinek <ja...@redhat.com> wrote:
>
> On Wed, Jan 27, 2021 at 03:22:45PM +0800, Hongtao Liu wrote:
> > Hi:
> >   As desribed in PR, also remove the relevant and useless expanders
> > and builtins, the user can
> > directly use == and >, without calling the builtin function.
> >   Bootstrapped and regtested on x86_64-linux-gnu{-m32,}.
> >
> > gcc/ChangeLog:
> >
> >         PR target/98833
> >         * config/i386/i386-builtin.def (BDESC): Delete
> >         __builtin_ia32_pcmpeqb128, __builtin_ia32_pcmpeqw128,
> >         __builtin_ia32_pcmpeqd128, __builtin_ia32_pcmpgtb128,
> >         __builtin_ia32_pcmpgtw128, __builtin_ia32_pcmpgtd128,
> >         __builtin_ia32_pcmpeqb256, __builtin_ia32_pcmpeqw256,
> >         __builtin_ia32_pcmpeqd256, __builtin_ia32_pcmpeqq256,
> >         __builtin_ia32_pcmpgtb256, __builtin_ia32_pcmpgtw256,
> >         __builtin_ia32_pcmpgtd256, __builtin_ia32_pcmpgtq256.
> >         * config/i386/sse.md (avx2_eq<mode>3): Deleted.
> >         (sse2_eq<mode>3): Ditto.
> >         (sse2_gt<mode>3): Renamed to ..
> >         (*sse2_gt<mode>3): And drop !TARGET_XOP in condition.
> >         (*sse2_eq<mode>3): Drop !TARGET_XOP in condition.
> >
> > gcc/testsuite/ChangeLog:
> >
> >         PR target/98833
> >         * gcc.target/i386/pr98833.c: New test.
> >
> > libcpp/
> >
> >         PR target/98833
> >         * lex.c (search_line_sse2): Replace builtins with == operator.
>
> Oops, I wasn't aware of the libcpp use, I'm afraid that means we should
> reconsider removing the builtins, because that means that e.g.
> GCC 10 will not build with GCC 11 as system compiler anymore, people
> bisecting GCC changes will have troubles etc.
> And a codesearch seems to show that other projects do use these builtins
> (even the AVX2 ones) too :(.
> I think the libcpp/ change is ok, as we've bumped minimum GCC version
> for building GCC to GCC 4.8 in GCC 11.  Note that GCC 4.7 in C++
> doesn't handle the == operators:
> error: invalid operands of types ‘v16qi {aka __vector(16) char}’ and ‘v16qi 
> {aka __vector(16) char}’ to binary ‘operator==’
> but 4.8 seems to work fine already.
>
> But, can we perhaps keep the builtins, but fold them immediately in
> ix86_gimple_fold_builtin so that we don't need the named patterns?
>
> Though, I guess that we could defer those changes to GCC 12.
>
> So can you just drop the !TARGET_XOP from conditions, add testcase and
> change libcpp/ for GCC 11 and do the rest for GCC 12?
>
Yes, and update patch.
> Thanks.
>
>         Jakub
>


-- 
BR,
Hongtao

Attachment: 0001-Fix-ICE-for-PR-target-98833_v2.patch
Description: Binary data

Reply via email to