@@ -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
new file mode 100644
@@ -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 } } */