Re: [PATCH] tree-vect.h: Compile check_vect with -O0

"H.J. Lu" <[email protected]>
Newsgroups gmane.comp.gcc.patches
Message-ID <CAMe9rOpGhwkuWrMN_Z_ugUoGGpcb5L_-pLtjgfkSyJSr8HCyKg@mail.gmail.com>
On Fri, Aug 7, 2026 at 3:14 PM Liu, Hongtao <[email protected]> wrote:
>
>
>
> > -----Original Message-----
> > From: H.J. Lu <[email protected]>
> > Sent: Friday, August 7, 2026 2:51 PM
> > To: Hongtao Liu <[email protected]>
> > Cc: [email protected]; GCC Patches <[email protected]>; Uros
> > Bizjak <[email protected]>; Liu, Hongtao <[email protected]>; Jiang,
> > Haochen <[email protected]>
> > Subject: Re: [PATCH] tree-vect.h: Compile check_vect with -O0
> >
> > On Fri, Aug 7, 2026 at 2:19 PM Hongtao Liu <[email protected]> wrote:
> > >
> > > On Fri, Aug 7, 2026 at 10:59 AM H.J. Lu <[email protected]> wrote:
> > > >
> > > > On Fri, Aug 7, 2026 at 6:12 AM H.J. Lu <[email protected]> wrote:
> > > > >
> > > > > commit 44cc8e5718efd0cc1ef57c68052dbe33b047f158
> > > > > Author: Ewan <[email protected]>
> > > > > Date:   Tue Mar 17 16:12:15 2026 +0800
> > > > >
> > > > >     i386: Fix __get_cpuid() and __get_cpuid_count() for
> > > > > Centaur/Zhaoxin CPUID range
> > > > >
> > > > > caused many regressions, like
> > > > >
> > > > > FAIL: gcc.dg/vect/vect-100.c scan-tree-dump-not optimized "Invalid
> > sum"
> > > > >
> > > > > on Linux/x86-64 with -m32.  The commit above changed
> > > > > __get_cpuid_count which is used by check_vect in tree-vect.h.
> > > > > When GCC tried to vectorize check_vect, it outputted
> > > > >
> > > > > __attribute__((noinline))
> > > > > void check_vect ()
> > > > > {
> > > > > ...
> > > > > ;;   Invalid sum of incoming counts 966367640 (estimated locally, freq
> > > > > 0.9000), should be 719407024 (estimated locally, freq 0.6700)
> > > > >
> > > > > which failed
> > > > >
> > > > > /* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } }
> > > > > */
> > > > >
> > > > > Compile check_vect with -O0 to avoid it.
> > > > >
> > > > > * gcc.dg/vect/tree-vect.h (check_vect): Compile with -O0.
> > > > >
> > > > >
> > > > > --
> > > > > H.J.
> > > >
> > > > This fixes:
> > > >
> > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126697
> > >
> > > Can we use
> > >
> > > unsigned int __ext = __leaf & 0xC0000000;
> > >
> > > Assume it can also support zhaoxin's maximum secondary extended
> > > level(0xC0000000);?
> >
> > Or we can fold it into __get_cpuid_max.
> That would be better, then we don't need 2 duplicated parts in __get_cpuid and __get_cpuid_count
>

Should it be reverted for now and reimplement it in __get_cpuid_max?


-- 
H.J.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.