3 ms·
What if you wrote this in a branchless way? bool v = BLQS_CMP(x, piv); int* ptr = v ? lwr : rwr; *ptr = x; ptr += int(v) * 2 - 1;
by xyzsparetimexyz 3mo ago
What if you wrote this in a branchless way?
bool v = BLQS_CMP(x, piv);
int* ptr = v ? lwr : rwr;
*ptr = x;
ptr += int(v) * 2 - 1;
- tredre3 3mo agoThe ternary isn't guaranteed to be branchless. In your case it should almost always be on a modern compiler, but it really shouldn't be present in what one would call branchless code.
- misev 3mo agoYou could rewrite it to int* ptr = ((v != 0) * lwr) + ((v == 0) * rwr); I doubt it would be faster than the ternary though.
- xyzsparetimexyz 3mo agoDoes any standard library have a glsl-like select(condition, true_val, false_val) that is more or less guaranteed to correspond to a csel?