1. static SSEFloat Select(SSEFloat v1, SSEFloat v2, SSEFloat control)
  2. {
  3. SSEFloat vTemp1 = new SSEFloat(
  4. i2f(~f2i(control.r0) & f2i(v1.r0)),
  5. i2f(~f2i(control.r1) & f2i(v1.r1)),
  6. i2f(~f2i(control.r2) & f2i(v1.r2)),
  7. i2f(~f2i(control.r3) & f2i(v1.r3)));
  8. SSEFloat vTemp2 = new SSEFloat(
  9. i2f(f2i(v2.r0) & f2i(control.r0)),
  10. i2f(f2i(v2.r1) & f2i(control.r1)),
  11. i2f(f2i(v2.r2) & f2i(control.r2)),
  12. i2f(f2i(v2.r3) & f2i(control.r3)));
  13. return new SSEFloat(
  14. i2f(f2i(vTemp1.r0) | f2i(vTemp2.r0)),
  15. i2f(f2i(vTemp1.r1) | f2i(vTemp2.r1)),
  16. i2f(f2i(vTemp1.r2) | f2i(vTemp2.r2)),
  17. i2f(f2i(vTemp1.r3) | f2i(vTemp2.r3)));
  18. }