[Bug target/83008] [performance] Is it better to avoid extra instructions in data passing between loops?

sergey.shalnov at intel dot com gcc-bugzilla@gcc.gnu.org
Wed Jan 17 15:24:00 GMT 2018


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


More information about the Gcc-bugs mailing list