While working on uniform branching, I've hit a few cases where we emit
i1 SETCC operations.
Details
Details
Diff Detail
Diff Detail
Event Timeline
Comment Actions
The basic block order is swapped by SelectionDAG, so an i1 xor is inserted before the branch instruction. This is optimized to an i1 setcc instruction by the DAGCombine. This isn't an issue now, because SIISelLowering::LowerBRCOND was folding these into the branch intrinsic, but it will be an issue when we switch to uniform branching.
Comment Actions
Can you swap the block order and insert the xor here for the same effect so the DAG builder doesn't do this?