public inbox for gcc-cvs@sourceware.org help / color / mirror / Atom feed
From: Richard Sandiford <rsandifo@gcc.gnu.org> To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-1103] aarch64: Revert bogus fix for PR105254 Date: Wed, 15 Jun 2022 10:13:07 +0000 (GMT) [thread overview] Message-ID: <20220615101307.3E026384859C@sourceware.org> (raw) https://gcc.gnu.org/g:2636660b6f35423e0cfbf53bfad5c5fed6ae6471 commit r13-1103-g2636660b6f35423e0cfbf53bfad5c5fed6ae6471 Author: Richard Sandiford <richard.sandiford@arm.com> Date: Wed Jun 15 11:12:51 2022 +0100 aarch64: Revert bogus fix for PR105254 In f2ebf2d98efe0ac2314b58cf474f44cb8ebd5244 I'd forced the chosen unroll factor to be a factor of the VF, in order to work around an exact_div ICE in PR105254. This was completely bogus -- clearly I didn't look in enough detail at why we ended up with an unrolled VF that wasn't a multiple of the UF. Kewen has since fixed the bug properly for PR105940, so this patch reverts my earlier attempt. Sorry for the stupidity. gcc/ PR tree-optimization/105254 PR tree-optimization/105940 Revert: * config/aarch64/aarch64.cc (aarch64_vector_costs::determine_suggested_unroll_factor): Take a loop_vec_info as argument. Restrict the unroll factor to values that divide the VF. (aarch64_vector_costs::finish_cost): Update call accordingly. gcc/testsuite/ * gcc.target/aarch64/sve/cost_model_14.c: New test. Diff: --- gcc/config/aarch64/aarch64.cc | 12 ++++-------- gcc/testsuite/gcc.target/aarch64/sve/cost_model_14.c | 13 +++++++++++++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index d21e041eccb..d049f9a9819 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -15631,7 +15631,7 @@ private: unsigned int adjust_body_cost (loop_vec_info, const aarch64_vector_costs *, unsigned int); bool prefer_unrolled_loop () const; - unsigned int determine_suggested_unroll_factor (loop_vec_info); + unsigned int determine_suggested_unroll_factor (); /* True if we have performed one-time initialization based on the vec_info. */ @@ -16740,8 +16740,7 @@ adjust_body_cost_sve (const aarch64_vec_op_count *ops, } unsigned int -aarch64_vector_costs:: -determine_suggested_unroll_factor (loop_vec_info loop_vinfo) +aarch64_vector_costs::determine_suggested_unroll_factor () { bool sve = m_vec_flags & VEC_ANY_SVE; /* If we are trying to unroll an Advanced SIMD main loop that contains @@ -16755,7 +16754,6 @@ determine_suggested_unroll_factor (loop_vec_info loop_vinfo) return 1; unsigned int max_unroll_factor = 1; - auto vf = LOOP_VINFO_VECT_FACTOR (loop_vinfo); for (auto vec_ops : m_ops) { aarch64_simd_vec_issue_info const *vec_issue @@ -16764,8 +16762,7 @@ determine_suggested_unroll_factor (loop_vec_info loop_vinfo) return 1; /* Limit unroll factor to a value adjustable by the user, the default value is 4. */ - unsigned int unroll_factor = MIN (aarch64_vect_unroll_limit, - (int) known_alignment (vf)); + unsigned int unroll_factor = aarch64_vect_unroll_limit; unsigned int factor = vec_ops.reduction_latency > 1 ? vec_ops.reduction_latency : 1; unsigned int temp; @@ -16943,8 +16940,7 @@ aarch64_vector_costs::finish_cost (const vector_costs *uncast_scalar_costs) { m_costs[vect_body] = adjust_body_cost (loop_vinfo, scalar_costs, m_costs[vect_body]); - m_suggested_unroll_factor - = determine_suggested_unroll_factor (loop_vinfo); + m_suggested_unroll_factor = determine_suggested_unroll_factor (); } /* Apply the heuristic described above m_stp_sequence_cost. Prefer diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cost_model_14.c b/gcc/testsuite/gcc.target/aarch64/sve/cost_model_14.c new file mode 100644 index 00000000000..b65826b0889 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/sve/cost_model_14.c @@ -0,0 +1,13 @@ +/* { dg-options "-O3 -mtune=neoverse-v1" } */ + +#include <stdint.h> + +uint64_t f2(uint64_t *ptr, int n) { + uint64_t res = 0; + for (int i = 0; i < n; ++i) + res += ptr[i]; + return res; +} + +/* { dg-final { scan-assembler-times {\tld1d\tz[0-9]+\.d,} 5 } } */ +/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.d,} 8 } } */
reply other threads:[~2022-06-15 10:13 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220615101307.3E026384859C@sourceware.org \ --to=rsandifo@gcc.gnu.org \ --cc=gcc-cvs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).