Hacker News new | ask | show | jobs
by mmozeiko 68 days ago
xor swap trick was useful in older simd (sse1/sse2) when based on some condition you want to swap values or not:

  tmp = (a ^ b) & mask
  a ^= tmp
  b ^= tmp
If mask = 0xfff...fff then a/b will be swapped, otherwise if mask = 0 then they'll remain the same.
4 comments

Oh, that is cool, I’ve never seen that. I might add that to an extended version of the post sometime, I’ll be sure to credit you.
So mask is marking the bits you want swapped and leaving the others in place.
Could this still be the ideal way for vectors of Ints in WebGL2?
That's hella cute