rusticl: implement cl_khr_subgroup_shuffle and shuffle_relative

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26504>
This commit is contained in:
Karol Herbst
2023-12-04 16:31:42 +01:00
committed by Marge Bot
parent 7e78802028
commit e6249f97f1
3 changed files with 11 additions and 3 deletions

View File

@@ -944,8 +944,8 @@ Rusticl extensions that are not part of any OpenCL version:
cl_khr_subgroup_non_uniform_arithmetic not started
cl_khr_subgroup_non_uniform_vote not started
cl_khr_subgroup_rotate not started
cl_khr_subgroup_shuffle not started
cl_khr_subgroup_shuffle_relative not started
cl_khr_subgroup_shuffle DONE (iris, llvmpipe, radeonsi)
cl_khr_subgroup_shuffle_relative DONE (iris, llvmpipe, radeonsi)
cl_khr_suggested_local_work_size not started
cl_khr_terminate_context not started
cl_khr_throttle_hints not started

View File

@@ -643,6 +643,10 @@ impl Device {
// requires CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS
//add_ext(1, 0, 0, "cl_khr_subgroups");
add_feat(1, 0, 0, "__opencl_c_subgroups");
// we have lowering in `nir_lower_subgroups`, drivers can just use that
add_ext(1, 0, 0, "cl_khr_subgroup_shuffle");
add_ext(1, 0, 0, "cl_khr_subgroup_shuffle_relative");
}
if self.svm_supported() {
@@ -1021,6 +1025,7 @@ impl Device {
}
pub fn cl_features(&self) -> clc_optional_features {
let subgroups_supported = self.subgroups_supported();
clc_optional_features {
fp16: self.fp16_supported(),
fp64: self.fp64_supported(),
@@ -1029,7 +1034,9 @@ impl Device {
images_read_write: self.image_read_write_supported(),
images_write_3d: self.image_3d_write_supported(),
integer_dot_product: true,
subgroups: self.subgroups_supported(),
subgroups: subgroups_supported,
subgroups_shuffle: subgroups_supported,
subgroups_shuffle_relative: subgroups_supported,
..Default::default()
}
}

View File

@@ -334,6 +334,7 @@ impl SPIRVBin {
float64: true,
generic_pointers: true,
groups: true,
subgroup_shuffle: true,
int8: true,
int16: true,
int64: true,