If eliminating branches is your goal, then you may wish to consider math, or some non-portable solutions.
Consider the following example:
if (a < b)
y = C;
else
y = D;
This can be re-written as ...
x = -(a < b); /* x = -1 if a < b, x = 0 if a >= b */
x &= (C - D); /* x = C - D if a < b, x = 0 if a >= b */
x += D; /* x = C if a < b, x = D if a >= b */
For the above to work, it assumes that your processor can evaluate a < b without generating a branch instruction. It also kills readability.
Is it worth it? Sometimes, but usually not. If the branching or branch mis-prediction is costing you a lot because it is not biased towards one branch or the other it might be worth it. But probably not. As always, profile.
A little bit of math/arithmetic can go a long way in eliminating branches if that is your goal. Although it has been said a myriad of times before, just because you can do something, does not mean that you should.
Hope this helps.