https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113221
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #4) > Actually `(match_operand 0 "register_operand")` should be used instead of > the current `(match_code "reg,subreg")`. Except that does not work since register_operand checks the mode ... and then we fail to match: ``` (insn 46 45 47 2 (parallel [ (set (reg:V4SI 148) (unspec:V4SI [ (mem/c:V2x16QI (reg:DI 147) [0 +0 S32 A128]) ] UNSPEC_LDP_FST)) (set (reg:V4SI 149) (unspec:V4SI [ (mem/c:V2x16QI (reg:DI 147) [0 +0 S32 A128]) ] UNSPEC_LDP_SND)) ]) "../../../libgcc/libgcov-interface.c":211:2 -1 (nil)) ``` Because we only define the load_pair_16 for TImode and TImode != V4SImode here ... So Back to changing it to only test for reg and subreg of a reg then.