-march=<name of native> doesn't seem to set flags -march=native does?

Jonathan Wakely jwakely.gcc@gmail.com
Thu Jul 14 09:19:00 GMT 2016


On 14 July 2016 at 01:05, Roger Pack wrote:
> Hello.
> As a note after a discussion [1]
>
> I ran into this oddness:
>
>
> $ gcc-6 -march=native -Q --help=target | grep march
>   -march=                               ivybridge
> $ gcc-6 -march=native -Q --help=target | grep sse3
>   -msse3                                [enabled]
>   -mssse3                               [enabled]
> $ gcc-6 -march=ivybridge -Q --help=target | grep sse3
>   -msse3                                [disabled]
>   -mssse3                               [disabled]
>
> It appears that specifying (in this case) "-march=ivybridge" which is
> the native, isn't enough/the same as specifying -march=native?
> In addition, the "cache sizes" don't seem to be called out with
> "-march=ivybridge" as they are with "-march=native"
> Anybody know what I'm missing here?

The named arch is a pre-configured set of supported instructions,
which should be true for all processors in that range.

Whereas "native" probes the CPU flags and enables precisely the set of
instructions it supports.

That they are different suggests either the preconfigured settings for
ivybridge are wrong, or not all processors in that family support all
the instructions your particular model supports.

Ivybridge should enable SSE3 and SSSE3 though, so I'm nto sure what's
happening there.



More information about the Gcc-help mailing list