In case of the following select pattern, where :
- the condition is a result of "x & 0x1"
- the select operand are (z ^ y) , y or (z | y) , y
we can eliminate the branch (there is no "cmov" in MCU) by generate bitwise sequence.
select (and (x & 0x1) == 0) , y, (z ^ y) )
to:
(-(and (x & 0x1)) & z ) ^ y