> +(define_mode_iterator ZVQWDOTI_SRCMODE [ > + (RVVMF8QI "TARGET_ZVQWDOTA8I && TARGET_VECTOR_ELEN_64") > + (RVVMF4QI "TARGET_ZVQWDOTA8I") > + (RVVMF2QI "TARGET_ZVQWDOTA8I") > + (RVVM1QI "TARGET_ZVQWDOTA8I") > + (RVVM2QI "TARGET_ZVQWDOTA8I") > + (RVVM4QI "TARGET_ZVQWDOTA8I") > + (RVVM8QI "TARGET_ZVQWDOTA8I") > + > + (RVVMF4HI "TARGET_ZVQWDOTA16I && TARGET_VECTOR_ELEN_64") > + (RVVMF2HI "TARGET_ZVQWDOTA16I && TARGET_VECTOR_ELEN_64") > + (RVVM1HI "TARGET_ZVQWDOTA16I && TARGET_VECTOR_ELEN_64") > + (RVVM2HI "TARGET_ZVQWDOTA16I && TARGET_VECTOR_ELEN_64") > + (RVVM4HI "TARGET_ZVQWDOTA16I && TARGET_VECTOR_ELEN_64") > + (RVVM8HI "TARGET_ZVQWDOTA16I && TARGET_VECTOR_ELEN_64") > +])
I think these are special cases of VQEXTI or V_QUAD_TRUNC. Can they be reused? > + > +(define_mode_attr ZVQWDOTI_ACC [ > + (RVVMF8QI "RVVM1SI") > + (RVVMF4QI "RVVM1SI") > + (RVVMF2QI "RVVM1SI") > + (RVVM1QI "RVVM1SI") > + (RVVM2QI "RVVM1SI") > + (RVVM4QI "RVVM1SI") > + (RVVM8QI "RVVM1SI") > + > + (RVVMF4HI "RVVM1DI") > + (RVVMF2HI "RVVM1DI") > + (RVVM1HI "RVVM1DI") > + (RVVM2HI "RVVM1DI") > + (RVVM4HI "RVVM1DI") > + (RVVM8HI "RVVM1DI") > +]) The naming doesn't really help understanding. I'd rather call the iterators/attributes by their properties rather than the instruction they belong to. In this case we already have V_EXT_LMUL1 for widening reductions. So something like V_EXT2X_LMUL1 might work. -- Regards Robin
