Besides better codegen, the motivation is to be able to canonicalize this pattern in IR (currently we don't) knowing that the backend is prepared for that.
This may also allow removing code for special constant cases in DAGCombiner::foldSelectOfConstants() that was added in D30180.
!LegalOperations check first? Also why not check if the xor/zext are legal?