x86 and x86-64 specific stuff:

All this assumes you're using gcc as your compiler.

Add -march=FOO to your CFLAGS, where FOO is your processor: athlon,
athlon-xp, pentium4, core2, etc. (Not all gcc versions support all
these; see the documentation for your installation.)

For example (Requires gcc 4.3 or better):

CFLAGS="-O -march=core2" ./configure -C

-march will create executables that are tuned for a particular CPU's
timings and potentially use CPU-specific instructions. Intel and AMD
CPU feature sets tend to be forward but not backwards compatible; a
binary created for Core 2 might not run on Core. Use -mtune instead
for instruction scheduling optimized for a particular chip but generic
supported-by-everything instructions. When in doubt about your CPU
version, try -march=native.

When/if doing this, to get vector instructions, used by a few things,
mainly the random number generator code:

On Pentium-M and better, add --enable-sse2 to your configure options
to get a SIMD version of the pseudo random number generator and some
other code.

On Prescott Pentium-4 and better, add --enable-sse3 to your configure
options. Implies --enable-sse2

On Core 2 and better (And some more recent AMD CPUS), add
--enable-ssse3 to your configure options. Implies --enable-sse3.

On Newhalem and better, add --enable-sse42 to your configure
options. Implies --enable-ssse3.

On x86-64, SSE2 is automatically enabled by gcc, since all 64-bit CPUS
implement it. SSE3, SSSE3 and SSE4.2 still have to be manually
specified (Or use -march).

On 32 bit systems, consider adding -momit-leaf-frame-pointer to your
CFLAGS. (This might someday be done for you by configure).

