> (gcc doesn't seem to be emitting CMOVs though)
AFAIK, gcc is capable to emit CMOV's.
You should just use proper switches.
>From gcc docs:
While picking a specific CPU-TYPE will schedule things
appropriately for that particular chip, the compiler will not
generate any code that does not run on the i386 without the
`-march=CPU-TYPE' option being used.