public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [hsa-branch] Outline HSA function attribute modification
@ 2016-08-03 14:36 Martin Jambor
  0 siblings, 0 replies; only message in thread
From: Martin Jambor @ 2016-08-03 14:36 UTC (permalink / raw)
  To: GCC Patches

Hi,

since future changes will want to do this from two places, this patch
outlines function attribute changes to a special private method.

Martin

2016-07-20  Martin Jambor  <mjambor@suse.cz>

	* hsa.h (hsa_summary_t): Add provate member function
	process_gpu_implementation_attributes.
	* hsa.c (process_gpu_implementation_attributes): New function.
	(link_functions): Move some functionality into it.
---
 gcc/hsa.c | 31 +++++++++++++++++++------------
 gcc/hsa.h |  3 +++
 2 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/gcc/hsa.c b/gcc/hsa.c
index fdadcb1..caca939 100644
--- a/gcc/hsa.c
+++ b/gcc/hsa.c
@@ -813,6 +813,24 @@ hsa_get_declaration_name (tree decl)
   return name;
 }
 
+/* Add a flatten attribute and disable vectorization for gpu implementation
+   function decl GDECL.  */
+
+void hsa_summary_t::process_gpu_implementation_attributes (tree gdecl)
+{
+  DECL_ATTRIBUTES (gdecl)
+    = tree_cons (get_identifier ("flatten"), NULL_TREE,
+		 DECL_ATTRIBUTES (gdecl));
+
+  tree fn_opts = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (gdecl);
+  if (fn_opts == NULL_TREE)
+    fn_opts = optimization_default_node;
+  fn_opts = copy_node (fn_opts);
+  TREE_OPTIMIZATION (fn_opts)->x_flag_tree_loop_vectorize = false;
+  TREE_OPTIMIZATION (fn_opts)->x_flag_tree_slp_vectorize = false;
+  DECL_FUNCTION_SPECIFIC_OPTIMIZATION (gdecl) = fn_opts;
+}
+
 void
 hsa_summary_t::link_functions (cgraph_node *gpu, cgraph_node *host,
 			       hsa_function_kind kind, bool gridified_kernel_p)
@@ -832,18 +850,7 @@ hsa_summary_t::link_functions (cgraph_node *gpu, cgraph_node *host,
   gpu_summary->m_binded_function = host;
   host_summary->m_binded_function = gpu;
 
-  tree gdecl = gpu->decl;
-  DECL_ATTRIBUTES (gdecl)
-    = tree_cons (get_identifier ("flatten"), NULL_TREE,
-		 DECL_ATTRIBUTES (gdecl));
-
-  tree fn_opts = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (gdecl);
-  if (fn_opts == NULL_TREE)
-    fn_opts = optimization_default_node;
-  fn_opts = copy_node (fn_opts);
-  TREE_OPTIMIZATION (fn_opts)->x_flag_tree_loop_vectorize = false;
-  TREE_OPTIMIZATION (fn_opts)->x_flag_tree_slp_vectorize = false;
-  DECL_FUNCTION_SPECIFIC_OPTIMIZATION (gdecl) = fn_opts;
+  process_gpu_implementation_attributes (gpu->decl);
 
   /* Create reference between a kernel and a corresponding host implementation
      to quarantee LTO streaming to a same LTRANS.  */
diff --git a/gcc/hsa.h b/gcc/hsa.h
index f13e216..4d98bb3 100644
--- a/gcc/hsa.h
+++ b/gcc/hsa.h
@@ -1322,6 +1322,9 @@ public:
 
   void link_functions (cgraph_node *gpu, cgraph_node *host,
 		       hsa_function_kind kind, bool gridified_kernel_p);
+
+private:
+  void process_gpu_implementation_attributes (tree gdecl);
 };
 
 /* OMP simple builtin describes behavior that should be done for
-- 
2.9.0

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2016-08-03 14:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-03 14:36 [hsa-branch] Outline HSA function attribute modification Martin Jambor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).