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