We probably want to introduce pseudo-instructions at some point, like we have for binary operations, but this seems okay for now.
One thing I'm not sure about is whether we should be doing this as a DAGCombine instead of directly pattern-matching it. I don't see any big downside to doing it this way, but maybe there's some important heuristic I'm not thinking of.