19 inline namespace _V1 {
27 for (
int i = 0; i < 4; ++i) {
28 MemberMask[i] = TmpMArray[i];
33 #ifdef __SYCL_DEVICE_ONLY__
37 return __spirv_GroupNonUniformBallotBitCount(
43 template <
typename NonUniformGroup>
48 template <
typename NonUniformGroup>
51 #if defined(__NVPTX__)
52 return __nvvm_fns(MemberMask[0], 0, Id + 1);
56 for (
int i = 0; i < 4; ++i) {
57 for (
int b = 0;
b < 32; ++
b) {
58 if (MemberMask[i] & (1 <<
b)) {
72 namespace ext::oneapi::experimental {
75 template <
typename ParentGroup>
class ballot_group;
76 template <
size_t PartitionSize,
typename ParentGroup>
class fixed_size_group;
77 template <
typename ParentGroup>
class tangle_group;
78 class opportunistic_group;
Provides a cross-platform math array class template that works on SYCL devices as well as in host C++...
class sycl::vec ///////////////////////// Provides a cross-patform vector class template that works e...
auto convertToOpenCLType(T &&x)
uint32_t IdToMaskPosition(NonUniformGroup Group, uint32_t Id)
ext::oneapi::sub_group_mask GetMask(NonUniformGroup Group)
sycl::vec< unsigned, 4 > ExtractMask(ext::oneapi::sub_group_mask Mask)
void extract_bits(Type &bits, id< 1 > pos=0) const