Found another place where we can just factor out a bunch of intrinsics and make it a bit easier to add more of these. The only difference between a "simple intrinsic" and, say, the overflow intrinsics is that simple intrinsics only have a single result.
This teaches translateSimpleIntrinsic to handle an arbitrary number of destination registers. Then we can factor out all of the overflow intrinsics, and delete translateOverflowIntrinsic entirely. Also makes the overflow intrinsics respect IR flags, which weren't being copied over in translateOverflowIntrinsic.
By doing this, we can add IRTranslator support for any intrinsic that can be "straight-line" translated by adding it to getSimpleIntrinsicOpcode.
I don't think you need to copy the ArrayRef to a SmallVector, you should be able to use the ArrayRef as is