@@ -27,5 +27,9 @@ along with GCC; see the file COPYING3. If not see
/* The reason why they aren't in gcc/builtins.def is that the Fortran front end
doesn't source those. */
+DEF_HSA_BUILTIN (BUILT_IN_HSA_GET_WORKGROUP_ID, "hsa_get_workgroup_id",
+ BT_FN_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_HSA_BUILTIN (BUILT_IN_HSA_GET_WORKITEM_ID, "hsa_get_workitem_id",
+ BT_FN_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
DEF_HSA_BUILTIN (BUILT_IN_HSA_GET_WORKITEM_ABSID, "hsa_get_workitem_absid",
BT_FN_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
@@ -5783,6 +5783,36 @@ gen_hsa_insns_for_call (gimple *stmt, hsa_bb *hbb)
hbb->append_insn (atominsn);
break;
}
+
+ case BUILT_IN_HSA_GET_WORKGROUP_ID:
+ {
+ hsa_op_immed *bdim = new hsa_op_immed (gimple_call_arg (stmt, 0), true);
+ if (bdim->m_type != BRIG_TYPE_U32)
+ bdim->get_in_type (BRIG_TYPE_U32, hbb);
+ query_hsa_grid (stmt, BRIG_OPCODE_WORKGROUPID, bdim, hbb);
+ break;
+ }
+ case BUILT_IN_HSA_GET_WORKITEM_ID:
+ {
+ hsa_op_immed *bdim = new hsa_op_immed (gimple_call_arg (stmt, 0), true);
+ if (bdim->m_type != BRIG_TYPE_U32)
+ bdim->get_in_type (BRIG_TYPE_U32, hbb);
+ query_hsa_grid (stmt, BRIG_OPCODE_WORKITEMID, bdim, hbb);
+ break;
+ }
+ case BUILT_IN_HSA_GET_WORKITEM_ABSID:
+ {
+ hsa_op_immed *bdim = new hsa_op_immed (gimple_call_arg (stmt, 0), true);
+ if (bdim->m_type != BRIG_TYPE_U32)
+ bdim->get_in_type (BRIG_TYPE_U32, hbb);
+ query_hsa_grid (stmt, BRIG_OPCODE_WORKITEMABSID, bdim, hbb);
+ break;
+ }
+
+ case BUILT_IN_GOMP_BARRIER:
+ hbb->append_insn (new hsa_insn_br (0, BRIG_OPCODE_BARRIER, BRIG_TYPE_NONE,
+ BRIG_WIDTH_ALL));
+ break;
case BUILT_IN_GOMP_PARALLEL:
{
gcc_checking_assert (gimple_call_num_args (stmt) == 4);
@@ -5798,14 +5828,6 @@ gen_hsa_insns_for_call (gimple *stmt, hsa_bb *hbb)
break;
}
- case BUILT_IN_HSA_GET_WORKITEM_ABSID:
- {
- hsa_op_immed *bdim = new hsa_op_immed (gimple_call_arg (stmt, 0), true);
- if (bdim->m_type != BRIG_TYPE_U32)
- bdim->get_in_type (BRIG_TYPE_U32, hbb);
- query_hsa_grid (stmt, BRIG_OPCODE_WORKITEMABSID, bdim, hbb);
- break;
- }
case BUILT_IN_OMP_GET_THREAD_NUM:
{
query_hsa_grid (stmt, BRIG_OPCODE_WORKITEMABSID, 0, hbb);