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
