summaryrefslogtreecommitdiff
path: root/gcc/brig-builtins.def
diff options
context:
space:
mode:
authorPekka Jääskeläinen <visit0r@gcc.gnu.org>2018-05-04 19:43:57 +0000
committerPekka Jääskeläinen <visit0r@gcc.gnu.org>2018-05-04 19:43:57 +0000
commit080dc24383a602a5a4095eb05b04100f15ba1ad4 (patch)
treea0d2a78948f718293527ac76c53bdee3303d989f /gcc/brig-builtins.def
parent1e25c5a9bb7042d7bca5a4fa840666dcb16f4918 (diff)
[BRIGFE] phsa-specific optimizations
Add flag -fassume-phsa that is on by default. If -fno-assume-phsa is given, these optimizations are disabled. With this flag, gccbrig can generate GENERIC that assumes we are targeting a phsa-runtime based implementation, which allows us to expose the work-item context accesses to retrieve WI IDs etc. which helps optimizers. First optimization that takes advantage of this is to get rid of the setworkitemid calls whenever we have non-inlined calls that use IDs internally. Other optimizations added in this commit: - expand absoluteid to similar level of simplicity as workitemid. At the moment absoluteid is the best indexing ID to end up with WG vectorization. - propagate ID variables closer to their uses. This is mainly to avoid known useless casts, which confuse at least scalar evolution analysis. - use signed long long for storing IDs. Unsigned integers have defined wraparound semantics, which confuse at least scalar evolution analysis, leading to unvectorizable WI loops. - also refactor some BRIG function generation helpers to brig_function. - no point in having the wi-loop as a for-loop. It's really a do...while and SCEV can analyze it just fine still. - add consts to ptrs etc. in BRIG builtin defs. Improves optimization opportunities. - add qualifiers to generated function parameters. Const and restrict on the hidden local/private pointers, the arg buffer and the context pointer help some optimizations. From-SVN: r259957
Diffstat (limited to 'gcc/brig-builtins.def')
-rw-r--r--gcc/brig-builtins.def27
1 files changed, 14 insertions, 13 deletions
diff --git a/gcc/brig-builtins.def b/gcc/brig-builtins.def
index f94f7e62bb2..c2e8d2c034d 100644
--- a/gcc/brig-builtins.def
+++ b/gcc/brig-builtins.def
@@ -45,25 +45,25 @@ DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_GRIDSIZE, BRIG_OPCODE_GRIDSIZE,
DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMFLATABSID_U32,
BRIG_OPCODE_WORKITEMFLATABSID, BRIG_TYPE_U32,
- "__hsail_workitemflatabsid_u32", BT_FN_UINT_PTR,
- ATTR_NOTHROW_LEAF_LIST)
+ "__hsail_workitemflatabsid_u32", BT_FN_UINT_CONST_PTR,
+ ATTR_PURE_NOTHROW_LEAF_LIST)
DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMFLATABSID_U64,
BRIG_OPCODE_WORKITEMFLATABSID, BRIG_TYPE_U64,
- "__hsail_workitemflatabsid_u64", BT_FN_ULONG_PTR,
- ATTR_NOTHROW_LEAF_LIST)
+ "__hsail_workitemflatabsid_u64", BT_FN_ULONG_CONST_PTR,
+ ATTR_PURE_NOTHROW_LEAF_LIST)
DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMFLATID, BRIG_OPCODE_WORKITEMFLATID,
- BRIG_TYPE_U32, "__hsail_workitemflatid", BT_FN_UINT_PTR,
- ATTR_NOTHROW_LEAF_LIST)
+ BRIG_TYPE_U32, "__hsail_workitemflatid", BT_FN_UINT_CONST_PTR,
+ ATTR_PURE_NOTHROW_LEAF_LIST)
DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMID, BRIG_OPCODE_WORKITEMID,
- BRIG_TYPE_U32, "__hsail_workitemid", BT_FN_UINT_UINT_PTR,
- ATTR_NOTHROW_LEAF_LIST)
+ BRIG_TYPE_U32, "__hsail_workitemid",
+ BT_FN_UINT_UINT_CONST_PTR, ATTR_PURE_NOTHROW_LEAF_LIST)
DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKGROUPID, BRIG_OPCODE_WORKGROUPID,
- BRIG_TYPE_U32, "__hsail_workgroupid", BT_FN_UINT_UINT_PTR,
- ATTR_PURE_NOTHROW_LEAF_LIST)
+ BRIG_TYPE_U32, "__hsail_workgroupid",
+ BT_FN_UINT_UINT_CONST_PTR, ATTR_PURE_NOTHROW_LEAF_LIST)
DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CURRENTWORKITEMFLATID,
BRIG_OPCODE_CURRENTWORKITEMFLATID,
@@ -90,11 +90,12 @@ DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_PACKETCOMPLETIONSIG_SIG32,
DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CURRENTWORKGROUPSIZE,
BRIG_OPCODE_CURRENTWORKGROUPSIZE, BRIG_TYPE_U32,
- "__hsail_currentworkgroupsize", BT_FN_UINT_UINT_PTR,
+ "__hsail_currentworkgroupsize", BT_FN_UINT_UINT_CONST_PTR,
ATTR_PURE_NOTHROW_LEAF_LIST)
DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKGROUPSIZE, BRIG_OPCODE_WORKGROUPSIZE,
- BRIG_TYPE_U32, "__hsail_workgroupsize", BT_FN_UINT_UINT_PTR,
+ BRIG_TYPE_U32, "__hsail_workgroupsize",
+ BT_FN_UINT_UINT_CONST_PTR,
ATTR_PURE_NOTHROW_LEAF_LIST)
DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_DIM, BRIG_OPCODE_DIM,
@@ -565,7 +566,7 @@ DEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_SETWORKITEMID, "__hsail_setworkitemid",
DEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_LAUNCH_WG_FUNC,
"__hsail_launch_wg_function",
- BT_FN_VOID_PTR_PTR_PTR, ATTR_NOTHROW_LEAF_LIST)
+ BT_FN_VOID_PTR_PTR_UINT32, ATTR_NOTHROW_LEAF_LIST)
DEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_LAUNCH_KERNEL,
"__hsail_launch_kernel",