On 4/20/11 1:59 PM, Jerry James wrote:
I'm packaging a library that does some heavy mathematical
computations. The build system tries to cleverly determine whether an
Intel CPU with vector instructions is being used. Until I can
convince upstream to do this at runtime, I'll need to build the
package (a library) for the lowest common denominator. The package
checks for MMX, SSE, SSE2, SSE3, and SSSE3. For i686, can I assume
MMX? SSE?
The least capable processor we've gone out of our way to fix things for
is the AMD Geode GX, which has MMX and 3DNow, but is also slightly less
than a proper Pentium Pro in that it doesn't have nopl or cmov.
However, rpm sets --march=i686, which implies only Pentium Pro and does
not imply MMX or anything newer. Not that I know of anyone who's tried
running Fedora on a bare i686 in recent memory.
I believe I can also build an SSE2 version of the library
and drop it into /usr/lib/sse2. How about for x86_64? Can I assume
SSE2 is available? (I thought I could, but I see that /usr/lib64/sse2
exists on my machine, so now I'm uncertain.) I don't see a
/usr/lib64/sse3 or /usr/lib64/ssse3, so I just have to forget those,
right?
All AMD64 and compatible chips support SSE and SSE2, correct. I'm
reasonably sure that path is simply for symmetry with i686 in case some
application was relying on it.
- ajax