> +(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

Reply via email to