IA64 vectors modes are of course all UNITS_PER_WORD. I see no reason to prevent the transformation of a V4HImode divmod, or even of V2SImode.
Jakub, was there another reason you added this condition? r~ * tree-vect-patterns.c (vect_recog_divmod_pattern): Do not require vectors larger than UNITS_PER_WORD. --- gcc/ChangeLog | 3 +++ gcc/tree-vect-patterns.c | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c index 05202a8..d990c4f 100644 --- a/gcc/tree-vect-patterns.c +++ b/gcc/tree-vect-patterns.c @@ -1679,8 +1679,7 @@ vect_recog_divmod_pattern (VEC (gimple, heap) **stmts, { enum machine_mode vec_mode = TYPE_MODE (vectype); int icode = (int) optab_handler (optab, vec_mode); - if (icode != CODE_FOR_nothing - || GET_MODE_SIZE (vec_mode) == UNITS_PER_WORD) + if (icode != CODE_FOR_nothing) return NULL; }