The work of ParseRegularReg() should remain to be parsing the register as it was specified, and not to try translate it to anything else. It's up to operand predicates to decide on what is and is not an acceptable register for an operand, including considering its expected register class, and for the rest of the AsmParser infrastructure to handle it respectively from there on.