LWN.net Logo

Why 64 bit?

Why 64 bit?

Posted Sep 14, 2006 2:42 UTC (Thu) by raven667 (subscriber, #5198)
In reply to: Why 64 bit? by nix
Parent article: What you should (and shouldn't) expect from 64-bit Linux (Linux.com)

> Doesn't that depend on the software?

I don't believe so, what I understand is that if you use both -march and -mcpu gcc will put in
optimized code paths seperate for each. There will be a fallback for i386 but optimized code for
i686. The binary will obviously be larger as it may contain multiple implementations of the same
code.

At least that's how I understand how it works, but I can't find a find a reference quickly. Maybe
someone more knowledgable than I can comment?


(Log in to post comments)

Why 64 bit?

Posted Sep 14, 2006 6:47 UTC (Thu) by khim (subscriber, #9252) [Link]

When everything else fails, RTFM.

And here we go:
-mtune=cpu-type: Tune to cpu-type everything applicable about the generated code, except for the ABI and the set of available instructions.
-march=cpu-type: Generate instructions for the machine type cpu-type. The choices for cpu-type are the same as for -mtune. Moreover, specifying -march=cpu-type implies -mtune=cpu-type.
-mcpu=cpu-type: A deprecated synonym for -mtune.

Nothing like "separate code path", "fallback for i386" and other such nonsense. If you are specifying "-mcpu=i386 -mtune=i686" it just means: "try to optimize for i686, but don't use anything except i386 instructions". Quite sad, really: C++ code expirience can slowdown up to 30-40% with such options but usually just 5-10%.

Autoselection can be done (kernel does it in some configuration, OpenSSL does it, GLibC does it, some other programs are doing it - but that's up to application developer, compiler will not help you there... Where have you got ridiculous idea that it's task for the compiler - I do not know...

Why 64 bit?

Posted Sep 14, 2006 18:57 UTC (Thu) by nix (subscriber, #2304) [Link]

OpenSSL doesn't do it, as far as I know (it can't; many critical-path
things are macro-expanded). Instead, distributors use glibc's hwcap
mechanism to select appropriately-compiled OpenSSL libraries for the
hardware at dynamic link time. (This is especially useful on e.g. SPARC,
because of SPARCv7's lack of integer multiply instructions.)

Copyright © 2008, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds
Powered by Rackspace Managed Hosting.