https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101882
--- Comment #14 from Segher Boessenkool <segher at gcc dot gnu.org> --- (match_operand:DI 1 "register_operand" "r0") That means either a general register ("r"), or the same thing as operand 0 (that's what "0" means)! So the backend explicitly allows it here.