Using MMX intrinsics
MMX was the first and oldest SIMD extension and initially filled a
need for wider (64-bit) integer and additional registers. This is back when
processors were 32-bit and 8 x 32-bit registers was starting to cramp our
programming style. Now 64-bit processors, larger register sets, and 128-bit (or
larger) vector SIMD extensions are common. There is simply no good reason to
write new code using the (now) very limited MMX capabilities.
We recommend that existing MMX codes be rewritten to use the newer
SSE and VMX/VSX intrinsics or using the more portable GCC builtin vector
support or in the case of si64 operations use C scalar code. The MMX si64
scalars are just (64-bit) operations on long long int types and any
modern C compiler can handle this type. The char / short in SIMD operations
should all be promoted to 128-bit SIMD operations on GCC builtin vectors. Both
will improve cross platform portability and performance.