Branch free Clamp()
One of my work mates had some code with a lot of floating point clamps in it the other day so I wrote this little branch free version using the PS3's floating point select intrinsic:
float Clamp(float x, float lower, float upper) { float t = __fsels(x-lower, x, lower); return __fsels(t-upper, upper, t); }
__fsels basically does this:
float __fsels(float x, float a, float b) { return (x >= 0.0f) ? a : b }
I measured it to be 8% faster than a standard implementation, not a whole lot but quite fun to write. The SPUs have quite general selection functionality which is more useful, some stuff about it here:
http://realtimecollisiondetection.net/blog/?p=90
(Not sure about this free Wordpress code formatting, I may have to move it to my own host soon)