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 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)).


Segher



[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