This saves materializing the immediate. The additional forms are less common, but they're still relevant in some situations.
I had to add a new target hook to prevent DAGCombine from reversing the transform. That isn't the only possible way to solve the conflict, but it seems straightforward enough.