- Make ATOMIC_I, ATOMIC_NRI, AtomicLoad, AtomicStore classes and make other operations inherit from them
- Factor the common opcode prefix '0xfe' out from the opcodes into the common class
- Reorder instructions in the order of increasing opcodes
Nice! LGTM with nits.
It looks like this multiclass isn't used anywhere. Can it be omitted for simplicity?
Why make the kind an argument when it only ever has one value? This could just be a def : Pat<...> instead of a class. Same with other NotifyPat... classes with only one instantiation. If you want to keep the classes for symmetry with other instructions, I think it would still make sense to inline the kind argument.