https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83008
--- Comment #28 from sergey.shalnov at intel dot com --- Richard, Thank you for your comments. I see that TYPE_VECTOR_SUBPARTS is constant for for the test case but multiple_p (group_size, const_nunits) returns 1 in the code: if (TYPE_VECTOR_SUBPARTS (vectype).is_constant (&const_nunits) && ! multiple_p (group_size, const_nunits)) { num_vects_to_check = ncopies_for_cost * const_nunits / group_size; nelt_limit = const_nunits; } else { num_vects_to_check = 1; nelt_limit = group_size; } This is because group_size = 16 and const_nunits = 8 in the test case with -march=skylake-avx512. And control flow goes to "num_vects_to_check = 1". Anyway, the ncopies_for_cost = 2 and equation " ncopies_for_cost * const_nunits / group_size " will be 1. Do you think we have any possibility to make a conditional clause to make num_vects_to_check = 2? Sergey