We can centralize the base opcode and some of the asserts in the implementing function. We can also add an assert that validates the predicate register range and also make the offset assertions much more informative.