Param for controlling FFR code generation.

Adds this to relevant tests that would otherwise break.
gcc/ChangeLog:

        * params.opt (-param=vect-ffr-usage): New param

gcc/testsuite/ChangeLog:

        * gcc.target/aarch64/sve/noeffect11.c: Add --param=vect-ffr-usage=0
        * gcc.target/aarch64/sve/peel_ind_12.c: Ditto.
        * gcc.target/aarch64/sve/peel_ind_12_run.c: Ditto.
---
 gcc/params.opt                                         | 4 ++++
 gcc/testsuite/gcc.target/aarch64/sve/noeffect11.c      | 2 +-
 gcc/testsuite/gcc.target/aarch64/sve/peel_ind_12.c     | 2 +-
 gcc/testsuite/gcc.target/aarch64/sve/peel_ind_12_run.c | 2 +-
 4 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/gcc/params.opt b/gcc/params.opt
index 90f9943c8cb..f385795fcb7 100644
--- a/gcc/params.opt
+++ b/gcc/params.opt
@@ -1291,6 +1291,10 @@ Bound on number of runtime checks inserted by the 
vectorizer's loop versioning f
 Common Joined UInteger Var(param_vect_partial_vector_usage) Init(2) 
IntegerRange(0, 2) Param Optimization NoOffload
 Controls how loop vectorizer uses partial vectors.  0 means never, 1 means 
only for loops whose need to iterate can be removed, 2 means for all loops.  
The default value is 2.
 
+-param=vect-ffr-usage=
+Common Joined UInteger Var(param_vect_ffr_usage) Init(1) IntegerRange(0, 2) 
Param Optimization NoOffload
+Controls how loop vectorizer uses first faulting loads.  0 means never, 1 
means only when profitable, 2 means whenever possible.  The default value is 2.
+
 -param=vect-inner-loop-cost-factor=
 Common Joined UInteger Var(param_vect_inner_loop_cost_factor) Init(50) 
IntegerRange(1, 10000) Param Optimization NoOffload
 The maximum factor which the loop vectorizer applies to the cost of statements 
in an inner loop relative to the loop being vectorized.
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/noeffect11.c 
b/gcc/testsuite/gcc.target/aarch64/sve/noeffect11.c
index 5c8c3565da6..e64ae8ed732 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/noeffect11.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/noeffect11.c
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target lp64 } */
-/* { dg-options "-O3 -march=armv8-a+sve 
--param=aarch64-autovec-preference=sve-only -msve-vector-bits=scalable" } */
+/* { dg-options "-O3 -march=armv8-a+sve 
--param=aarch64-autovec-preference=sve-only -msve-vector-bits=scalable 
--param=vect-ffr-usage=0" } */
 /* { dg-final { check-function-bodies "**" "" "" } } */
 
 /*
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_12.c 
b/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_12.c
index e3ed63afb05..eaa0bae1daf 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_12.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_12.c
@@ -1,6 +1,6 @@
 /* Peeling for alignment with masking together with versioning in VLA modes.  
*/
 /* { dg-do compile } */
-/* { dg-options "-Ofast -msve-vector-bits=scalable --param 
aarch64-autovec-preference=sve-only -fdump-tree-vect-details" } */
+/* { dg-options "-Ofast -msve-vector-bits=scalable --param 
aarch64-autovec-preference=sve-only -fdump-tree-vect-details 
--param=vect-ffr-usage=0" } */
 
 #define START 5
 #define END 509
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_12_run.c 
b/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_12_run.c
index ba978fe01ea..993af6b514f 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_12_run.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/peel_ind_12_run.c
@@ -1,6 +1,6 @@
 /* Peeling for alignment with masking together with versioning in VLA modes.  
*/
 /* { dg-do run { target aarch64_sve_hw } } */
-/* { dg-options "-Ofast -msve-vector-bits=scalable --param 
aarch64-autovec-preference=sve-only" } */
+/* { dg-options "-Ofast -msve-vector-bits=scalable --param 
aarch64-autovec-preference=sve-only --param=vect-ffr-usage=0" } */
 
 #include "peel_ind_12.c"
 #include <stdio.h>
-- 
2.34.1

Reply via email to