Re: how to get -march=native's value?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Sep 27, 2021 at 4:28 PM Segher Boessenkool
<segher@xxxxxxxxxxxxxxxxxxx> wrote:
>
> On Mon, Sep 27, 2021 at 07:25:58PM +0100, Jonathan Wakely wrote:
> > On Mon, 27 Sept 2021 at 19:16, L A Walsh <gcc@xxxxxxxxx> wrote:
> > > On 2021/09/27 10:13, Segher Boessenkool wrote:
> > > > On Mon, Sep 27, 2021 at 02:55:28PM +0200, Vincent Lefevre wrote:
> > > >> On 2021-09-17 12:53:25 -0500, Segher Boessenkool wrote:
> > > >>
> > > >>> For x86 -march=something is the same as -march=native, _if_ the compiler
> > > >>> knows about your CPU.
> > > >>>
> > > ----
> > > I have a question, as someone reading this conversation ....
> > >
> > > If one is using cross-compilation -- as it sounded like the original
> > > author might be doing, what could the compiler know about the target
> > > machine?
> >
> > Only what you tell it.
> >
> > > Is there some sort of "profile-this-cpu-for-pertinent-options" binary
> > > or compiler-option that one should(or could) run on the target
> > > machine in order that the correct compiler switches be set?
> > >
> > > Otherwise, it would seem that -march=native would only be useful for
> > > the (probably majority of) cases where one is compiling for their own
> > > machine (?).
> >
> > Yes, -march=native is for native compilation, not cross compilation.
> > The clue is in the name :-)
>
> And in fact you get something like
>
> $ x86_64-linux-gcc-12.0.0 -Wall -W -O2 -S at.c -march=native
> cc1: error: bad value ('native') for '-march=' switch
> cc1: note: valid arguments to '-march=' switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client rocketlake icelake-server cascadelake tigerlake cooperlake sapphirerapids alderlake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm x86-64 x86-64-v2 x86-64-v3 x86-64-v4 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 znver3 btver1 btver2
>
> when you try.  Not the friendliest error message perhaps, but it is a
> pretty silly thing to try as well :-)  (This has been the same since at
> least 5.4.1 (but the note is newer)).

There are cases where that's a reasonable thing to do, for instance
when running a mingw-w64 cross compiler on cygwin.  Anytime the host
computer can run a target binary, then native makes sense.  There is
probably a Linux / Wine use case, too.




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux