This is a followup to D73803, which uses the replaceOperand() helper in more places.
In some cases, I have instead replaced multiple setOperand() calls with creating a new instruction (those cases where we set multiple operands, and there is nothing subtle going on with preservation of instruction flags or so). That seems to be more idiomatic nowadays. This is also what causes the test changes. Is this reasonable, or do we prefer in-place modification here?
This is different than the CreateXor() changes below because of overflow flag propagation? If yes, it's worth a code comment.