Re: the difference between -mtune and -march

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

 



ali hagigat <hagigatali@xxxxxxxxx> writes:
> So why do we need -mtune? We can compile by -march from the beginning.

My understanding:

   -march=FOO:  specifies which instructions are OK to use: anything that
                works on a FOO (or compatible) CPU

   -mtune=BAR:  specifies which CPU to optimize for when
                choosing/scheduling instructions (taken from the set
                which is OK for FOO)

So if FOO and BAR are _the same_, it's pretty obvious: it will require
that CPU, and be optimized for it.

If FOO and BAR are _different_, then you the result is guaranteed to run
on FOO, but will run best on BAR -- of course BAR should be a subset of
FOO!

A common case, I think is to be fairly conservative with FOO, so the
software will run on a wide range of CPUs, but try to choose BAR to
match the most common model in current use.

E.g., "-march=i386 -mtune=core2" will run on any i386 derivative, but
will work best on a core2.

For personal use, it's usually OK to just use -march (e.g.,
-march=native to run on the current machine), but somebody who ships
software may need more flexibility.

-Miles

-- 
"Most attacks seem to take place at night, during a rainstorm, uphill,
 where four map sheets join."   -- Anon. British Officer in WW I


[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