On Tue, May 19, 2020 at 11:10 PM Uros Bizjak <ubiz...@gmail.com> wrote:
>
> On Tue, May 19, 2020 at 11:40 PM H.J. Lu <hjl.to...@gmail.com> wrote:
>
> > > > > > > > > I will take a look to see if we share the same CPU detection 
> > > > > > > > > code between
> > > > > > > > > libgcc and config/i386/driver-i386.c.
> > > > > > > >
> > > > > > > > I don't think it will bring any benefit, this is mainly one huge
> > > > > > > > switch statement that maps to different stuff in libgcc and
> > > > > > > > driver-i386.
> > > > > > >
> > > > > > > libgcc and config/i386/driver-i386.c differ even before my patch.
> > > > > > > I think we can do better.
> > > > > > >
> > > > > >
> > > > > > Move cpuinfo.h from libgcc to common/config/i386 so that 
> > > > > > get_intel_cpu
> > > > > > can be shared by libgcc, GCC driver, 
> > > > > > gcc.target/i386/builtin_target.c
> > > > > > and libgfortran to detect the specific type of Intel CPU.  Update
> > > > > > libgfortran to use has_cpu_feature to detect x86 CPU features.
> > > > > >
> > > > > > Tested on Linux/x86 and Linux/x86-64.  OK for master?
> > > > >
> > > > > Handling only Intel targets and not others is a sure way for patch to
> > > > > be ignored.
> > > > >
> > > >
> > > > Here is the updated patch to cover AMD CPU.  It also fixes:
> > > >
> > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95212
> > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95220
> > > >
> > > > OK for master?
> > >
> > > Huh... I didn't think the solution will be this messy... I have to
> > > rethink the approach a bit.
> >
> > That is what will happen when we have the same info in more than one place
> > There should only one place for CPU info.
>
> Looking at the patch, it is clear that cpuinfo.c and driver-i386.c
> should stay apart. They are two different things, and they are
> orthogonal to each other; one can be updated without affecting the
> other one. driver-i386.c handles way more targets than cpuinfo.c and
> your patch only handles a subset of them. The unification does not
> bring any benefit, it even complicates things more.

There should one place to check a CPU feature, not 2.  It can
be done with a proper cpuinfo.h.

> I think that unifying libgcc and i386-builtins.c is the way to go.
> libgfortran should benefit from this unification, too.
>

libgfortran shouldn't include cpuinfo.h.  It should use __builtin_cpu_is
and  __builtin_cpu_supports.

-- 
H.J.

Reply via email to