aboutsummaryrefslogtreecommitdiff
path: root/gcc/brig
diff options
context:
space:
mode:
authorPekka Jääskeläinen <pekka.jaaskelainen@parmance.com>2018-05-04 16:47:34 +0000
committerPekka Jääskeläinen <visit0r@gcc.gnu.org>2018-05-04 16:47:34 +0000
commitf986735ac51029172a62e9e705a658cd0ee241e8 (patch)
tree84a491a892e61aa0e2eaac3d3328b9837a8d4c7b /gcc/brig
parent637f3cdec3168c4acf42b067cf511e0aecfcfcae (diff)
downloadgcc-f986735ac51029172a62e9e705a658cd0ee241e8.zip
gcc-f986735ac51029172a62e9e705a658cd0ee241e8.tar.gz
gcc-f986735ac51029172a62e9e705a658cd0ee241e8.tar.bz2
[BRIGFE] The modulo in ID computation should not be needed.
The case where a dim is greater than the grid size doesn't seem to be mentioned in the specs nor tested by PRM test suite. From-SVN: r259944
Diffstat (limited to 'gcc/brig')
-rw-r--r--gcc/brig/ChangeLog5
-rw-r--r--gcc/brig/brigfrontend/brig-code-entry-handler.cc10
2 files changed, 6 insertions, 9 deletions
diff --git a/gcc/brig/ChangeLog b/gcc/brig/ChangeLog
index 57d44b7..c68c8dd 100644
--- a/gcc/brig/ChangeLog
+++ b/gcc/brig/ChangeLog
@@ -1,5 +1,10 @@
2018-05-04 Pekka Jääskeläinen <pekka.jaaskelainen@parmance.com>
+ * brig/brigfrontend/brig-code-entry-handler.cc: The modulo in
+ ID computation should not be needed.
+
+2018-05-04 Pekka Jääskeläinen <pekka.jaaskelainen@parmance.com>
+
* brig/brig-lang.c: Add support for whole program
optimizations by marking the kernels externally visible.
* brig/brigfrontend/brig-branch-inst-handler.cc: See above.
diff --git a/gcc/brig/brigfrontend/brig-code-entry-handler.cc b/gcc/brig/brigfrontend/brig-code-entry-handler.cc
index 54b53fd..36a8deb 100644
--- a/gcc/brig/brigfrontend/brig-code-entry-handler.cc
+++ b/gcc/brig/brigfrontend/brig-code-entry-handler.cc
@@ -1048,7 +1048,6 @@ brig_code_entry_handler::expand_builtin (BrigOpcode16_t brig_opcode,
tree local_id_var = m_parent.m_cf->m_local_id_vars[dim];
tree wg_id_var = m_parent.m_cf->m_wg_id_vars[dim];
tree wg_size_var = m_parent.m_cf->m_wg_size_vars[dim];
- tree grid_size_var = m_parent.m_cf->m_grid_size_vars[dim];
tree wg_id_x_wg_size = build2 (MULT_EXPR, uint32_type_node,
convert (uint32_type_node, wg_id_var),
@@ -1056,15 +1055,8 @@ brig_code_entry_handler::expand_builtin (BrigOpcode16_t brig_opcode,
tree sum
= build2 (PLUS_EXPR, uint32_type_node, wg_id_x_wg_size, local_id_var);
- /* We need a modulo here because of work-groups which have dimensions
- larger than the grid size :( TO CHECK: is this really allowed in the
- specs? */
- tree modulo
- = build2 (TRUNC_MOD_EXPR, uint32_type_node, sum, grid_size_var);
-
return add_temp_var (std::string ("workitemabsid_")
- + (char) ((int) 'x' + dim),
- modulo);
+ + (char) ((int) 'x' + dim), sum);
}
else if (brig_opcode == BRIG_OPCODE_WORKITEMFLATID)
{