Fold the two following sequences:
Sequence 1 (xor with 0):
%cond1 = xor i1:%cond0 Constant<i1>0
%res = select %cond1, m, n
into:
%res = select %cond0, m, n
Sequence 2 (xor with 1):
%cond1 = xor i1:%cond0 Constant<i1>1
%res = select %cond1, m, n
into:
%res = select %cond0, n, m
It seems like this will be generally profitable regardless of how many uses N0 has (because it will break the dependence on the xor result, plus handles the case where several selects depend on the same condition).