#elif (HH_SIMD == HH_SIMD_CELL_PPU)
// (zzzz.x() - zzzz.y()) + (yyyy.w() - yyyy.z())
// (zzzz.w() - zzzz.z()) + (xxxx.x() - xxxx.y())
// (yyyy.x() - yyyy.y()) + (xxxx.w() - xxxx.z())
// u = z0 z3 y0 __
// v = z1 z2 y1 __
// s = y3 x0 x3 __
// t = y2 x1 x2 __
// u = z0 y0 z3 __ | vmh z0z3____ y0y3____
// v = z1 y1 z2 __ | vml ____z1z2 ____y1y2
// s = x0 __ x3 y3 | vmh x0x3____ y0y3____
// t = x1 __ x2 y2 | vml ____x1x2 ____y1y2
vec_float4 z0z3z1z2 = vec_perm(zzzz._v4(), zzzz._v4(), HH_VEC_PERM(x, w, y, z));
vec_float4 y0y3y1y2 = vec_perm(yyyy._v4(), yyyy._v4(), HH_VEC_PERM(x, w, y, z));
vec_float4 x0x3x1x2 = vec_perm(xxxx._v4(), xxxx._v4(), HH_VEC_PERM(x, w, y, z));
vec_float4 z0y0z3__ = vec_mergeh(z0z3z1z2, y0y3y1y2);
vec_float4 z1y1z2__ = vec_mergel(z0z3z1z2, y0y3y1y2);
vec_float4 x0__x3y3 = vec_mergeh(x0x3x1x2, y0y3y1y2);
vec_float4 x1__x2y2 = vec_mergel(x0x3x1x2, y0y3y1y2);
vec_float4 se0 = vec_sub(z0y0z3__, z1y1z2__);
vec_float4 se1 = vec_sub(x0__x3y3, x1__x2y2);
// z0y0z3__ -> z0z3y0__ // Swizzle<0,2,1,3>()
// z1y1z2__ -> z1z2y1__ // Swizzle<0,2,1,3>()
// x0__x3y3 -> y3x0x3__ // Swizzle<3,0,2,1>()
// x1__x2y2 -> y2x1x2__ // Swizzle<3,0,2,1>()
vec_float4 uv = vec_perm(se0, se0, HH_VEC_PERM(x, z, y, w)); // FIXME: use __vpermwi on Xenon
vec_float4 st = vec_perm(se1, se1, HH_VEC_PERM(w, x, z, y)); // FIXME: use __vpermwi on Xenon
vec_float4 uvst = vec_add(uv, st);
vec_float4 result = vec_madd(uvst, vec_splats(m_DNorm), (vec_float4)(0.0f));
return result;
#else
float x = ((zzzz.x() - zzzz.y()) - (yyyy.z() - yyyy.w())).ToFloat() * m_DNorm;
float y = ((xxxx.x() - xxxx.y()) - (zzzz.z() - zzzz.w())).ToFloat() * m_DNorm;
float z = ((yyyy.x() - yyyy.y()) - (xxxx.z() - xxxx.w())).ToFloat() * m_DNorm;
return SIMD::Float4(x, y, z, 0.0f);
#endif

HURRRR !