aboutsummaryrefslogtreecommitdiff
path: root/gcc/hsa.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2016-03-31 19:10:15 +0200
committerMartin Liska <marxin@gcc.gnu.org>2016-03-31 17:10:15 +0000
commit320c1a36793e0f408924b38bc006e6b791dceff7 (patch)
tree5ed5ca7dff70ab72534570302bae6e0c19e1b345 /gcc/hsa.c
parent8f80cbdb26ca754ff3b6fe6c735eca6dd01401fa (diff)
downloadgcc-320c1a36793e0f408924b38bc006e6b791dceff7.zip
gcc-320c1a36793e0f408924b38bc006e6b791dceff7.tar.gz
gcc-320c1a36793e0f408924b38bc006e6b791dceff7.tar.bz2
HSA: support alignment for hsa_symbols (PR hsa/70391)
PR hsa/70391 * hsa-brig.c (emit_directive_variable): Emit alignment according to hsa_symbol::m_align. * hsa-dump.c (hsa_byte_alignment): Move the function to another file. (dump_hsa_symbol): Dump alignment of HSA symbols. * hsa-gen.c (get_symbol_for_decl): Set-up alignment of a symbol. (gen_hsa_addr_with_align): New function. (hsa_bitmemref_alignment): Use newly added function. (gen_hsa_insns_for_load): Likewise. (gen_hsa_insns_for_store): Likewise. (gen_hsa_memory_copy): New argument added. (gen_hsa_insns_for_single_assignment): Respect alignment for assignments processed via gen_hsa_memory_copy. (gen_hsa_insns_for_direct_call): Likewise. (gen_hsa_insns_for_return): Likewise. (gen_function_def_parameters): Set default alignment. * hsa.c (hsa_object_alignment): New function. (hsa_byte_alignment): Pasted function. * hsa.h (hsa_symbol::m_align): New field. From-SVN: r234643
Diffstat (limited to 'gcc/hsa.c')
-rw-r--r--gcc/hsa.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/hsa.c b/gcc/hsa.c
index 9eacb59..ff97870 100644
--- a/gcc/hsa.c
+++ b/gcc/hsa.c
@@ -39,6 +39,7 @@ along with GCC; see the file COPYING3. If not see
#include "hsa.h"
#include "internal-fn.h"
#include "ctype.h"
+#include "builtins.h"
/* Structure containing intermediate HSA representation of the generated
function. */
@@ -570,6 +571,25 @@ hsa_alignment_encoding (unsigned n)
}
}
+/* Return HSA alignment encoding alignment of T got
+ by get_object_alignment. */
+
+BrigAlignment8_t
+hsa_object_alignment (tree t)
+{
+ return hsa_alignment_encoding (get_object_alignment (t));
+}
+
+/* Return byte alignment for given BrigAlignment8_t value. */
+
+unsigned
+hsa_byte_alignment (BrigAlignment8_t alignment)
+{
+ gcc_assert (alignment != BRIG_ALIGNMENT_NONE);
+
+ return 1 << (alignment - 1);
+}
+
/* Return natural alignment of HSA TYPE. */
BrigAlignment8_t