Hi All,

This is a (hopefully) non-functional change that introduces a tree node
for the number of scalar iterations processed in a vector iteration.

Notably, LOOP_VINFO_IV_INCREMENT is allowed to be determined in the loop
body or loop header as well as statically.

This value then replaces LOOP_VINFO_VECT_FACTOR for the amount to increment
an IV by. This is why I've called it LOOP_VINFO_IV_INCREMENT (bike shedding 
welcome).

The motivation for this patch is an upcoming AArch64 first faulting read
patch series where the IV_INCREMENT varies. This patch allows us to share logic 
that
are currently SELECT_VL special cases.

Possibly the most notable effect is a change to how data pointers are
calculated.

I have tried to describe the change in the commit message but I am
a little concerned this may affect IVOPTS but am not currently aware
of any cases that regress (will do more investication if this is warmly
recieved).

This passes reg test and bootstrap-O3 on aarch64 and x86-64.

Additionally, I've tried to do some testing on risc-v, and it passes
bootstrap but I havent been able to finish a full regression test run.

Thoughts?

KR,
Alfie Richards

Alfie Richards (2):
  vect: add null check for ptr_incr optional in vect_create_data_ref_ptr
  vect: Introduce LOOP_VINFO_IV_INCREMENT

 gcc/tree-ssa-loop-manip.cc  |   7 +-
 gcc/tree-vect-data-refs.cc  |  43 +------
 gcc/tree-vect-loop-manip.cc |  69 +++++++---
 gcc/tree-vect-loop.cc       |  76 +++--------
 gcc/tree-vect-stmts.cc      | 248 ++++++++++++++++++------------------
 gcc/tree-vectorizer.h       |   8 +-
 6 files changed, 208 insertions(+), 243 deletions(-)

-- 
2.34.1

Reply via email to