Add an empty_mask_is_expensive hook

Programming / Compilers / GCC - rsandifo [138bc75d-0d04-0410-961f-82ee72b054a4] - 13 January 2018 17:59 EST

This patch adds a hook to control whether we avoid executing masked (predicated) stores when the mask is all false. We don't want to do that by default for SVE.

2018-01-13 Richard Sandiford Alan Hayward David Sherwood

gcc/
- target.def (empty_mask_is_expensive): New hook.
- doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
- doc/tm.texi: Regenerate.
- targhooks.h (default_empty_mask_is_expensive): Declare.
- targhooks.c (default_empty_mask_is_expensive): New function.
- tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores if the target says that empty masks are expensive.
- config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive): New function. (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.

e75a667086c Add an empty_mask_is_expensive hook
gcc/ChangeLog | 15 +++++++++++++++
gcc/config/aarch64/aarch64.c | 13 +++++++++++++
gcc/doc/tm.texi | 6 ++++++
gcc/doc/tm.texi.in | 2 ++
gcc/target.def | 11 +++++++++++
gcc/targhooks.c | 8 ++++++++
gcc/targhooks.h | 1 +
gcc/tree-vectorizer.c | 3 ++-
8 files changed, 58 insertions(+), 1 deletion(-)

Upstream: gcc.gnu.org


  • Share