Skip to content

Commit a480528

Browse files
authored
[SYCL] Minor code refactoring.
2 parents 1a35ba5 + 13a7ee5 commit a480528

File tree

3 files changed

+112
-141
lines changed

3 files changed

+112
-141
lines changed

sycl/include/CL/__spirv/spirv_vars.hpp

+45
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,17 @@ extern "C" const __constant size_t_vec __spirv_BuiltInGlobalOffset;
2424
template <> size_t get##POSTFIX<1>() { return __spirv_BuiltIn##POSTFIX.y; } \
2525
template <> size_t get##POSTFIX<2>() { return __spirv_BuiltIn##POSTFIX.z; }
2626

27+
namespace __spirv {
28+
2729
DEFINE_INT_ID_TO_XYZ_CONVERTER(GlobalSize);
2830
DEFINE_INT_ID_TO_XYZ_CONVERTER(GlobalInvocationId)
2931
DEFINE_INT_ID_TO_XYZ_CONVERTER(WorkgroupSize)
3032
DEFINE_INT_ID_TO_XYZ_CONVERTER(LocalInvocationId)
3133
DEFINE_INT_ID_TO_XYZ_CONVERTER(WorkgroupId)
3234
DEFINE_INT_ID_TO_XYZ_CONVERTER(GlobalOffset)
3335

36+
} // namespace __spirv
37+
3438
#undef DEFINE_INT_ID_TO_XYZ_CONVERTER
3539

3640
extern "C" const __constant uint32_t __spirv_BuiltInSubgroupSize;
@@ -40,4 +44,45 @@ extern "C" const __constant uint32_t __spirv_BuiltInNumEnqueuedSubgroups;
4044
extern "C" const __constant uint32_t __spirv_BuiltInSubgroupId;
4145
extern "C" const __constant uint32_t __spirv_BuiltInSubgroupLocalInvocationId;
4246

47+
#define DEFINE_INIT_SIZES(POSTFIX) \
48+
\
49+
template <int Dim, class DstT> struct InitSizesST##POSTFIX; \
50+
\
51+
template <class DstT> struct InitSizesST##POSTFIX<1, DstT> { \
52+
static void initSize(DstT &Dst) { \
53+
Dst[0] = get##POSTFIX<0>(); \
54+
} \
55+
}; \
56+
\
57+
template <class DstT> struct InitSizesST##POSTFIX<2, DstT> { \
58+
static void initSize(DstT &Dst) { \
59+
Dst[1] = get##POSTFIX<1>(); \
60+
InitSizesST##POSTFIX<1, DstT>::initSize(Dst); \
61+
} \
62+
}; \
63+
\
64+
template <class DstT> struct InitSizesST##POSTFIX<3, DstT> { \
65+
static void initSize(DstT &Dst) { \
66+
Dst[2] = get##POSTFIX<2>(); \
67+
InitSizesST##POSTFIX<2, DstT>::initSize(Dst); \
68+
} \
69+
}; \
70+
\
71+
template <int Dims, class DstT> static void init##POSTFIX(DstT &Dst) { \
72+
InitSizesST##POSTFIX<Dims, DstT>::initSize(Dst); \
73+
}
74+
75+
namespace __spirv {
76+
77+
DEFINE_INIT_SIZES(GlobalSize);
78+
DEFINE_INIT_SIZES(GlobalInvocationId)
79+
DEFINE_INIT_SIZES(WorkgroupSize)
80+
DEFINE_INIT_SIZES(LocalInvocationId)
81+
DEFINE_INIT_SIZES(WorkgroupId)
82+
DEFINE_INIT_SIZES(GlobalOffset)
83+
84+
} // namespace __spirv
85+
86+
#undef DEFINE_INIT_SIZES
87+
4388
#endif // __SYCL_DEVICE_ONLY__

0 commit comments

Comments
 (0)