Adds a target hook TARGET_HW_MAX_MEM_READ_STREAMS. Loop unroller, if defined, will try to limit the unrolling factor based on this.
gcc/ChangeLog: 2018-02-12 Kugan Vivekanandarajah <kug...@linaro.org> * doc/tm.texi.in (TARGET_HW_MAX_MEM_READ_STREAMS): Dcoument. * doc/tm.texi: Regenerate. * target.def (hw_max_mem_read_streams): New target hook.
From 95287a11980ff64ee473406d832d75f96204c6e9 Mon Sep 17 00:00:00 2001 From: Kugan Vivekanandarajah <kugan.vivekanandara...@linaro.org> Date: Mon, 12 Feb 2018 10:42:29 +1100 Subject: [PATCH 1/4] add-target-hook Change-Id: I1789769c27786babc6a071d12049c72d7afed00e --- gcc/doc/tm.texi | 6 ++++++ gcc/doc/tm.texi.in | 2 ++ gcc/target.def | 9 +++++++++ 3 files changed, 17 insertions(+) diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 7f02b0d..08f4e2a 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -11718,6 +11718,12 @@ is required only when the target has special constraints like maximum number of memory accesses. @end deftypefn +@deftypefn {Target Hook} signed TARGET_HW_MAX_MEM_READ_STREAMS (void) +This target hook returns the maximum number of memory read streams + that hw prefers. Tree loop unroller will use this while deciding + unroll factor. +@end deftypefn + @defmac POWI_MAX_MULTS If defined, this macro is interpreted as a signed integer C expression that specifies the maximum number of floating point multiplications diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in index 90c24be..e222372 100644 --- a/gcc/doc/tm.texi.in +++ b/gcc/doc/tm.texi.in @@ -7927,6 +7927,8 @@ build_type_attribute_variant (@var{mdecl}, @hook TARGET_LOOP_UNROLL_ADJUST +@hook TARGET_HW_MAX_MEM_READ_STREAMS + @defmac POWI_MAX_MULTS If defined, this macro is interpreted as a signed integer C expression that specifies the maximum number of floating point multiplications diff --git a/gcc/target.def b/gcc/target.def index aeb41df..29295ae 100644 --- a/gcc/target.def +++ b/gcc/target.def @@ -2751,6 +2751,15 @@ number of memory accesses.", unsigned, (unsigned nunroll, struct loop *loop), NULL) +/* Return a new value for loop unroll size. */ +DEFHOOK +(hw_max_mem_read_streams, + "This target hook returns the maximum number of memory read streams\n\ + that hw prefers. Tree loop unroller will use this while deciding\n\ + unroll factor.", + signed, (void), + NULL) + /* True if X is a legitimate MODE-mode immediate operand. */ DEFHOOK (legitimate_constant_p, -- 2.7.4