// // Copyright (C) 2009-2021 Intel Corporation // // SPDX-License-Identifier: MIT // // module radix_sort; kernel_module radix_kernels ("morton_radix_sort.cl") { links lsc_intrinsics; kernel opencl_build_morton_kernel_sort_bin_items < kernelFunction="sort_morton_codes_bin_items">; kernel opencl_build_morton_kernel_sort_reduce_bins < kernelFunction="sort_morton_codes_reduce_bins">; kernel opencl_build_morton_kernel_sort_scatter_items < kernelFunction="sort_morton_codes_scatter_items">; kernel opencl_build_morton_codes_sort_merged < kernelFunction="sort_morton_codes_merged">; kernel opencl_build_morton_kernel_sort_reduce_bins_wide_partial_sum < kernelFunction="sort_morton_codes_reduce_bins_wide_partial_sum">; kernel opencl_build_morton_kernel_sort_reduce_bins_wide_add_reduce < kernelFunction="sort_morton_codes_reduce_bins_wide_add_reduce">; } metakernel sort( qword build_globals, dword shift, qword global_histogram, qword input0, qword input1, dword input0_offset, dword input1_offset, dword iteration, dword threads) { dispatch opencl_build_morton_kernel_sort_bin_items (threads, 1, 1) args( build_globals, shift, global_histogram, input0, input1, input0_offset, input1_offset, iteration); control(wait_idle); dispatch opencl_build_morton_kernel_sort_reduce_bins (1, 1, 1) args( threads, global_histogram); control(wait_idle); dispatch opencl_build_morton_kernel_sort_scatter_items (threads, 1, 1) args( build_globals, shift, global_histogram, input0, input1, input0_offset, input1_offset, iteration); control(wait_idle); } metakernel sort_bin_items( qword build_globals, qword global_histogram, qword wg_flags, qword input0, dword iteration, dword threads, dword update_wg_flags ) { dispatch opencl_build_morton_kernel_sort_bin_items (threads, 1, 1) args( build_globals, global_histogram, wg_flags, input0, iteration, threads, update_wg_flags ); } metakernel sort_reduce_bins( qword build_globals, qword global_histogram, dword threads, dword iteration) { dispatch opencl_build_morton_kernel_sort_reduce_bins (1, 1, 1) args( build_globals, threads, global_histogram, iteration); } metakernel sort_scatter_items( qword build_globals, qword global_histogram, qword input0, qword input1, dword iteration, dword threads, dword update_morton_sort_in_flight ) { dispatch opencl_build_morton_kernel_sort_scatter_items( threads, 1, 1 ) args( build_globals, global_histogram, input0, input1, iteration, threads, update_morton_sort_in_flight ); } metakernel sort_bin_items_merged( qword build_globals, qword global_histogram, qword input0, dword iteration, dword threads) { dispatch opencl_build_morton_codes_sort_merged (threads, 1, 1) args( build_globals, global_histogram, input0, iteration, threads ); } metakernel sort_reduce_bins_wide( qword build_globals, qword global_histogram, qword global_histogram_tmp, qword wg_flags, dword threads, dword threads_groups, dword iteration) { dispatch opencl_build_morton_kernel_sort_reduce_bins_wide_partial_sum(threads_groups, 1, 1) args( build_globals, threads, threads_groups, global_histogram, global_histogram_tmp, wg_flags, iteration); control(wait_idle); dispatch opencl_build_morton_kernel_sort_reduce_bins_wide_add_reduce(threads_groups, 1, 1) args( build_globals, threads, threads_groups, global_histogram, global_histogram_tmp, iteration); }