https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93932
--- Comment #2 from Segher Boessenkool <segher at gcc dot gnu.org> --- So the issue is that input_operand allows too much? Other patterns that could use such a fix are float<QHI:mode><FP_ISA3:mode>2, floatuns<QHI:mode><FP_ISA3:mode>2, movsd_store, movsd_load, *vsx_le_permute_<mode>, vsx_set_v1ti, vsx_extract_<mode>_var, vsx_extract_v4sf_var, vsx_extract_<mode>_var, *vsx_extract_<mode>_<VS_scalar>mode_var, vsx_splat_<mode>. A few of those are probably safe, the define_expand ones for example; but those are all uses of input_operand in an insn that isn't a movM (which is the only place this predicate should be used).