git://people.freedesktop.org/~sandmann/pixman in the branch "cpudetectfiles".
Hi, The following patches contains some cleanups to the CPU detection in general, and some improvements to the x86 specific parts in particular. I was looking at making use of some of the newer x86 SIMD instruction sets and realized that (a) we don't ever call cpuid on x86-64, we just assume that MMX and SSE2 are present, and (b) pixman-cpu.c is a royal mess. The following patches split pixman-cpu.c into four different files: pixman-arm.c, pixman-mips.c, pixman-ppc.c, and pixman-x86.c. All the files are still compiled on all arhicitectures, but they have #ifdefs in them that make them no-ops on the ones that they are not specific to. The remaining bits of pixman-cpu.c are moved into pixman-implementation.c There are also some cleanups to the logic for all architectures. In particular, all the have_<feature>() functions are gone and replaced with a single function that detects all the features that the CPU offers. This function is implemented by each #ifdef variation, and then this is called from shared code. The changes to x86 are the most involved. There is now a pixman_cpuid() function that uses inline assembly on GCC and the cpuid__ intrinsic on MSVC. The assembly is written such that it will work on both 32 and 64 bit; the main change required was the save %ebx in %esi instead of on the stack. There is also a have_cpuid() function that detects the presence of cpuid. On MSVC, this simply returns TRUE, so the an MSVC-compiled pixman will now not work on old 486s. I am very tempted to remove this on GCC as well and just require cpuid to be present for pixman work. These two functions together make it possible to write the CPU detection code in plain C, rather than the #ifdef ridden mess of assembly it used to be. I have tested the patches on ppc64, x86-64, x86-32, and on an ARM Cortex A8 running Linux, but more testing would definitely be appreciated. In particular if you use MSVC, MIPS, XO-1, or ARM on Android/iPhone. Thanks, Soren _______________________________________________ Pixman mailing list Pixman@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pixman