@@ -871,11 +871,12 @@ EnableIfNativeShuffle<T> Shuffle(GroupT g, T x, id<1> local_id) {
871
871
return result;
872
872
} else if constexpr (ext::oneapi::experimental::is_user_constructed_group_v<
873
873
GroupT>) {
874
- return __spirv_GroupNonUniformShuffle (group_scope<GroupT>::value,
875
- convertToOpenCLType (x), LocalId);
874
+ return convertFromOpenCLTypeFor<T>( __spirv_GroupNonUniformShuffle (
875
+ group_scope<GroupT>::value, convertToOpenCLType (x), LocalId) );
876
876
} else {
877
877
// Subgroup.
878
- return __spirv_SubgroupShuffleINTEL (convertToOpenCLType (x), LocalId);
878
+ return convertFromOpenCLTypeFor<T>(
879
+ __spirv_SubgroupShuffleINTEL (convertToOpenCLType (x), LocalId));
879
880
}
880
881
#else
881
882
if constexpr (ext::oneapi::experimental::is_user_constructed_group_v<
@@ -908,12 +909,12 @@ EnableIfNativeShuffle<T> ShuffleXor(GroupT g, T x, id<1> mask) {
908
909
// general, and simple so we go with that.
909
910
id<1 > TargetLocalId = g.get_local_id () ^ mask;
910
911
uint32_t TargetId = MapShuffleID (g, TargetLocalId);
911
- return __spirv_GroupNonUniformShuffle (group_scope<GroupT>::value,
912
- convertToOpenCLType (x), TargetId);
912
+ return convertFromOpenCLTypeFor<T>( __spirv_GroupNonUniformShuffle (
913
+ group_scope<GroupT>::value, convertToOpenCLType (x), TargetId) );
913
914
} else {
914
915
// Subgroup.
915
- return __spirv_SubgroupShuffleXorINTEL (convertToOpenCLType (x),
916
- static_cast <uint32_t >(mask.get (0 )));
916
+ return convertFromOpenCLTypeFor<T>( __spirv_SubgroupShuffleXorINTEL (
917
+ convertToOpenCLType (x), static_cast <uint32_t >(mask.get (0 ) )));
917
918
}
918
919
#else
919
920
if constexpr (ext::oneapi::experimental::is_user_constructed_group_v<
@@ -956,12 +957,12 @@ EnableIfNativeShuffle<T> ShuffleDown(GroupT g, T x, uint32_t delta) {
956
957
if (TargetLocalId[0 ] + delta < g.get_local_linear_range ())
957
958
TargetLocalId[0 ] += delta;
958
959
uint32_t TargetId = MapShuffleID (g, TargetLocalId);
959
- return __spirv_GroupNonUniformShuffle (group_scope<GroupT>::value,
960
- convertToOpenCLType (x), TargetId);
960
+ return convertFromOpenCLTypeFor<T>( __spirv_GroupNonUniformShuffle (
961
+ group_scope<GroupT>::value, convertToOpenCLType (x), TargetId) );
961
962
} else {
962
963
// Subgroup.
963
- return __spirv_SubgroupShuffleDownINTEL (convertToOpenCLType (x),
964
- convertToOpenCLType (x), delta);
964
+ return convertFromOpenCLTypeFor<T>( __spirv_SubgroupShuffleDownINTEL (
965
+ convertToOpenCLType (x), convertToOpenCLType (x), delta) );
965
966
}
966
967
#else
967
968
if constexpr (ext::oneapi::experimental::is_user_constructed_group_v<
@@ -1000,12 +1001,12 @@ EnableIfNativeShuffle<T> ShuffleUp(GroupT g, T x, uint32_t delta) {
1000
1001
if (TargetLocalId[0 ] >= delta)
1001
1002
TargetLocalId[0 ] -= delta;
1002
1003
uint32_t TargetId = MapShuffleID (g, TargetLocalId);
1003
- return __spirv_GroupNonUniformShuffle (group_scope<GroupT>::value,
1004
- convertToOpenCLType (x), TargetId);
1004
+ return convertFromOpenCLTypeFor<T>( __spirv_GroupNonUniformShuffle (
1005
+ group_scope<GroupT>::value, convertToOpenCLType (x), TargetId) );
1005
1006
} else {
1006
1007
// Subgroup.
1007
- return __spirv_SubgroupShuffleUpINTEL (convertToOpenCLType (x),
1008
- convertToOpenCLType (x), delta);
1008
+ return convertFromOpenCLTypeFor<T>( __spirv_SubgroupShuffleUpINTEL (
1009
+ convertToOpenCLType (x), convertToOpenCLType (x), delta) );
1009
1010
}
1010
1011
#else
1011
1012
if constexpr (ext::oneapi::experimental::is_user_constructed_group_v<
0 commit comments