In #168428, two helper functions were introduced. The identify opcodes and intrinsics that have no side effects.
We did not use the hasSideEffects = false for the opcode because this would cause the shared code in instruction selection to delete the instructions without updating the global registry. That can cause problems in instruction selection and later passes because there will be dangling pointers.
We need to determine a longer term strategy for handling these. Should we add a target specific property to intrinsics and opcodes? Are the extra bits in the opcode table worth it?
Can we remove our dependence on values cached in the global registry so that we can use the existing instructions for many of these opcodes and intrinsics?