From 3bab634221b45ccdae547b8536cb2bc722e75ea0 Mon Sep 17 00:00:00 2001
From: Andrey Turetskiy <andrey.turetskiy@intel.com>
Date: Fri, 4 Sep 2015 08:51:44 +0000
Subject: tm.texi.in (TARGET_VECTORIZE_BUILTIN_SCATTER): New.

gcc/
	* doc/tm.texi.in (TARGET_VECTORIZE_BUILTIN_SCATTER): New.
	* doc/tm.texi: Regenerate.
	* target.def: Add scatter builtin.
	* tree-vectorizer.h: Rename gather_p to gather_scatter_p and use it
	for loads/stores in case of gather/scatter accordingly.
	(STMT_VINFO_GATHER_SCATTER_P(S)): Use it instead of STMT_VINFO_GATHER_P(S).
	(vect_check_gather): Rename to ...
	(vect_check_gather_scatter): this.
	* tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Use
	STMT_VINFO_GATHER_SCATTER_P instead of STMT_VINFO_SCATTER_P.
	(vect_check_gather_scatter): Use it instead of vect_check_gather.
	(vect_analyze_data_refs): Add gatherscatter enum and maybe_scatter variable
	and new checkings for it accordingly.
	* tree-vect-stmts.c
	(STMT_VINFO_GATHER_SCATTER_P(S)): Use it instead of STMT_VINFO_GATHER_P(S).
	(vect_check_gather_scatter): Use it instead of vect_check_gather.
	(vectorizable_store): Add checkings for STMT_VINFO_GATHER_SCATTER_P.

Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Petr Murzin <petr.murzin@intel.com>

From-SVN: r227481
---
 gcc/target.def | 12 ++++++++++++
 1 file changed, 12 insertions(+)

(limited to 'gcc/target.def')

diff --git a/gcc/target.def b/gcc/target.def
index 4edc209..aa5a1f1 100644
--- a/gcc/target.def
+++ b/gcc/target.def
@@ -1801,6 +1801,18 @@ loads.",
  (const_tree mem_vectype, const_tree index_type, int scale),
  NULL)
 
+/* Target builtin that implements vector scatter operation.  */
+DEFHOOK
+(builtin_scatter,
+"Target builtin that implements vector scatter operation.  @var{vectype}\n\
+is the vector type of the store and @var{index_type} is scalar type of\n\
+the index, scaled by @var{scale}.\n\
+The default is @code{NULL_TREE} which means to not vectorize scatter\n\
+stores.",
+ tree,
+ (const_tree vectype, const_tree index_type, int scale),
+ NULL)
+
 /* Target function to initialize the cost model for a loop or block.  */
 DEFHOOK
 (init_cost,
-- 
cgit v1.1

