rocPRIM
Classes | Typedefs | Enumerations | Functions | Variables

Deprecated: Configuration of device-level scan primitives. More...

Classes

struct  adjacent_diff_helper
 
struct  adjacent_difference_config_fallback
 
struct  advance_iterator
 
struct  all_true
 
struct  all_true< false, values... >
 
struct  all_true< true, values... >
 
struct  binary_search_op
 
class  block_adjacent_difference_impl
 
class  block_histogram_atomic
 
class  block_histogram_sort
 
struct  block_permute_values_impl
 
struct  block_permute_values_impl< rocprim::empty_type, BlockSize, ItemsPerThread >
 
struct  block_permute_values_impl< Value, BlockSize, ItemsPerThread, std::enable_if_t<(std::is_trivially_copyable< Value >::value &&!rocprim::is_floating_point< Value >::value &&!std::is_integral< Value >::value)> >
 
class  block_radix_rank
 
class  block_radix_rank_match
 
class  block_reduce_raking_reduce
 
class  block_reduce_warp_reduce
 
class  block_scan_reduce_then_scan
 
class  block_scan_warp_scan
 
class  block_sort_bitonic
 
struct  block_sort_impl
 
struct  block_sort_impl< Key, rocprim::empty_type, BlockSize, ItemsPerThread, block_sort_algorithm::stable_merge_sort >
 
class  block_sort_merge
 
struct  block_store_impl
 
struct  block_store_impl< true, BlockSize, ItemsPerThread, Key, Value >
 
struct  convert_result_type_wrapper
 
struct  decrement_iterator
 
struct  default_adjacent_difference_config
 
struct  default_binary_search_config
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_binary_search_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_binary_search_config_base
 
struct  default_config_for_binary_search
 
struct  default_config_for_lower_bound
 
struct  default_config_for_upper_bound
 
struct  default_histogram_config
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx900), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx906), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx908), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==1) &&(active_channels==1))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==2) &&(active_channels==2))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==3) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==3))> >
 
struct  default_histogram_config< static_cast< unsigned int >(target_arch::unknown), value_type, channels, active_channels, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(channels==4) &&(active_channels==4))> >
 
struct  default_histogram_config_base
 
struct  default_histogram_config_base_helper
 
struct  default_lower_bound_config
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_lower_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_merge_config
 
struct  default_merge_sort_block_merge_config
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), double >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), float >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), int >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), int, float >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), int64_t >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), int64_t, double >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), int8_t >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), int8_t, int8_t >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), rocprim::half >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), rocprim::half, rocprim::half >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), short >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), short, short >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx906), uint8_t, uint8_t >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_merge_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), double, empty_type >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), float, empty_type >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int, empty_type >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int, float >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int64_t, double >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int64_t, empty_type >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int8_t, empty_type >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int8_t, int8_t >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), rocprim::half, empty_type >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), rocprim::half, rocprim::half >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), short, empty_type >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), short, short >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), uint8_t, uint8_t >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_merge_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), double >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), float >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int, double >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int, double2 >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int, float >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int64_t >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int64_t, double >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int64_t, float >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int8_t >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), int8_t, int8_t >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), rocprim::half >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), rocprim::half, rocprim::half >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), short >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx906), uint8_t, uint8_t >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_block_sort_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_radix_sort_onesweep_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  default_reduce_config
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx1102), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx1102), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx1102), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx1102), key_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx1102), key_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx900), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx900), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx900), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx900), key_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx900), key_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx906), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx906), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx906), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx906), key_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx906), key_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx908), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx908), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx908), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx908), key_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx908), key_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::unknown), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::unknown), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::unknown), key_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::unknown), key_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2))> >
 
struct  default_reduce_config< static_cast< unsigned int >(target_arch::unknown), key_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4))> >
 
struct  default_reduce_config_base
 
struct  default_reduce_config_base_helper
 
struct  default_scan_by_key_config
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx1030), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx900), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx906), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx908), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::gfx90a), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_by_key_config< static_cast< unsigned int >(target_arch::unknown), key_type, value_type, std::enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_by_key_config_base
 
struct  default_scan_by_key_config_base_helper
 
struct  default_scan_config
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx900), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx900), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx900), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx900), value_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx900), value_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx906), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx906), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx906), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx906), value_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx906), value_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx908), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx908), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx908), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx908), value_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx908), value_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::unknown), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::unknown), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::unknown), value_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::unknown), value_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  default_scan_config< static_cast< unsigned int >(target_arch::unknown), value_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  default_scan_config_base
 
struct  default_scan_config_base_helper
 
struct  default_segmented_radix_sort_config
 
struct  default_select_config
 
struct  default_transform_config
 
struct  default_transform_config_base
 
struct  default_transform_config_base_helper
 
struct  default_upper_bound_config
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1030), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx1102), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx900), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx906), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx908), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::gfx90a), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  default_upper_bound_config< static_cast< unsigned int >(target_arch::unknown), value_type, output_type, std::enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  DisabledWarpSortHelperConfig
 
struct  empty_storage_type
 
struct  enable_if< std::is_integral< Level >::value &&(sizeof(Level)<=4)>::type >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(key_type) > 1) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==1) &&(active_channels==1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==1) &&(active_channels==1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==1) &&(active_channels==1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==1) &&(active_channels==1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==1) &&(active_channels==1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==1) &&(active_channels==1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==1) &&(active_channels==1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==2) &&(active_channels==2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==2) &&(active_channels==2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==2) &&(active_channels==2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==2) &&(active_channels==2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==2) &&(active_channels==2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==2) &&(active_channels==2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==2) &&(active_channels==2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==3) &&(active_channels==3))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==3) &&(active_channels==3))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==3) &&(active_channels==3))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==3) &&(active_channels==3))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==3) &&(active_channels==3))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==3) &&(active_channels==3))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==3) &&(active_channels==3))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==4) &&(active_channels==3))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==4) &&(active_channels==3))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==4) &&(active_channels==3))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==4) &&(active_channels==3))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==4) &&(active_channels==3))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==4) &&(active_channels==3))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==4) &&(active_channels==3))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==4) &&(active_channels==4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==4) &&(active_channels==4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==4) &&(active_channels==4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==4) &&(active_channels==4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==4) &&(active_channels==4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==4) &&(active_channels==4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(channels==4) &&(active_channels==4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(!bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=16) &&(sizeof(value_type) > 8))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=2) &&(sizeof(value_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2) &&(std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=4) &&(sizeof(key_type) > 2) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< key_type >::value) &&(sizeof(key_type)<=8) &&(sizeof(key_type) > 4) &&(sizeof(value_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==1) &&(active_channels==1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==1) &&(active_channels==1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==1) &&(active_channels==1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==1) &&(active_channels==1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==1) &&(active_channels==1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==1) &&(active_channels==1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==1) &&(active_channels==1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==2) &&(active_channels==2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==2) &&(active_channels==2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==2) &&(active_channels==2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==2) &&(active_channels==2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==2) &&(active_channels==2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==2) &&(active_channels==2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==2) &&(active_channels==2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==3) &&(active_channels==3))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==3) &&(active_channels==3))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==3) &&(active_channels==3))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==3) &&(active_channels==3))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==3) &&(active_channels==3))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==3) &&(active_channels==3))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==3) &&(active_channels==3))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==4) &&(active_channels==3))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==4) &&(active_channels==3))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==4) &&(active_channels==3))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==4) &&(active_channels==3))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==4) &&(active_channels==3))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==4) &&(active_channels==3))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==4) &&(active_channels==3))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==4) &&(active_channels==4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==4) &&(active_channels==4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==4) &&(active_channels==4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==4) &&(active_channels==4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==4) &&(active_channels==4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==4) &&(active_channels==4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(channels==4) &&(active_channels==4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=2) &&(sizeof(output_type) > 1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=4) &&(sizeof(output_type) > 2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=8) &&(sizeof(output_type) > 4))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=2))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=4) &&(sizeof(value_type) > 2) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
struct  enable_if_t<(bool(rocprim::is_floating_point< value_type >::value) &&(sizeof(value_type)<=8) &&(sizeof(value_type) > 4) &&(sizeof(output_type)<=1))> >
 
class  enable_if_t<(sizeof(T) > sizeof(int32_t))> >
 
struct  enable_if_t<(sizeof(Value) > sizeof(int))> >
 
struct  enable_if_t<(sizeof(Value)<=sizeof(int))> >
 
struct  extract_type_impl
 
struct  extract_type_impl< T, void_t< typename T::type > >
 
class  fast_array
 
class  fixed_array
 
struct  float_bit_mask
 
struct  float_bit_mask< double >
 
struct  float_bit_mask< float >
 
struct  float_bit_mask< rocprim::bfloat16 >
 
struct  float_bit_mask< rocprim::half >
 
struct  guarded_inequality_op
 
struct  headflag_scan_op_wrapper
 
struct  histogram_config_params
 Provides the kernel parameters for histogram_even, multi_histogram_even, histogram_range, and multi_histogram_range based on autotuned configurations or user-provided configurations. More...
 
struct  ignore_t
 
struct  increment_iterator
 
struct  inequality_wrapper
 
struct  input_value_traits
 
struct  input_value_traits<::rocprim::future_value< T, Iter > >
 
struct  integer_sequence_cat
 
struct  integer_sequence_cat< T, ::rocprim::integer_sequence< T, Indices... > >
 
struct  invoke_impl
 
struct  invoke_impl< MT B::* >
 
struct  invoke_result
 
struct  invoke_result_impl
 
struct  invoke_result_impl< decltype(void(INVOKE(std::declval< F >(), std::declval< Args >()...))), F, Args... >
 
struct  is_final
 
struct  is_reference_wrapper
 
struct  is_reference_wrapper< std::reference_wrapper< U > >
 
struct  is_sample_vectorizable
 
struct  is_vectorizable
 
struct  is_warpsize_shuffleable
 
struct  kernel_config_params
 
struct  limit_block_size
 
struct  limit_block_size< MaxBlockSize, SharedMemoryPerThread, MinBlockSize, true >
 
struct  load_values_flagged
 
class  lookback_scan_prefix_op
 
struct  lookback_scan_state
 
struct  lookback_scan_state< T, UseSleep, false >
 
struct  lookback_scan_state< T, UseSleep, true >
 
struct  lower_bound_search_op
 
struct  make_integer_sequence_impl
 
struct  make_integer_sequence_impl< T, 0 >
 
struct  make_texture_type
 
struct  make_texture_type< char, 1 >
 
struct  make_texture_type< int, 1 >
 
struct  make_texture_type< short, 1 >
 
struct  make_tuple_return
 
struct  make_tuple_return< std::reference_wrapper< T > >
 
struct  make_vector_type
 
struct  match_fundamental_type
 
struct  match_result_type
 
struct  match_texture_type
 
struct  match_vector_type
 
struct  merge_config_1030
 
struct  merge_config_1030< Key, empty_type >
 
struct  merge_config_803
 
struct  merge_config_803< Key, empty_type >
 
struct  merge_config_900
 
struct  merge_config_900< Key, empty_type >
 
struct  merge_config_90a
 
struct  merge_config_90a< Key, empty_type >
 
struct  merge_sort_block_merge_config
 
struct  merge_sort_block_merge_config_base
 
struct  merge_sort_block_merge_config_params
 Default values are provided by merge_sort_block_merge_config_base. More...
 
struct  merge_sort_block_sort_config
 
struct  merge_sort_block_sort_config_base
 
struct  merge_sort_block_sort_config_params
 Default values are provided by merge_sort_block_sort_config_base. More...
 
struct  merge_sort_config_params
 Kernel parameters for device merge sort. More...
 
class  offset_lookback_scan_factory
 
class  offset_lookback_scan_prefix_op
 
struct  onesweep_histograms_helper
 
struct  onesweep_iteration_helper
 
struct  onesweep_lookback_state
 
struct  ordered_block_id
 
struct  radix_digit_count_helper
 
class  radix_key_codec
 
struct  radix_key_codec_base
 
struct  radix_key_codec_base< bool >
 
struct  radix_key_codec_base< double >
 
struct  radix_key_codec_base< float >
 
struct  radix_key_codec_base< Key, typename std::enable_if<::rocprim::is_integral< Key >::value >::type >
 
struct  radix_key_codec_base<::rocprim::bfloat16 >
 
struct  radix_key_codec_base<::rocprim::half >
 
struct  radix_key_codec_floating
 
struct  radix_key_codec_integral
 
struct  radix_key_codec_integral< Key, BitKey, typename std::enable_if<::rocprim::is_signed< Key >::value >::type >
 
struct  radix_key_codec_integral< Key, BitKey, typename std::enable_if<::rocprim::is_unsigned< Key >::value >::type >
 
struct  radix_merge_compare
 
struct  radix_merge_compare< Descending, true, T, typename std::enable_if<!rocprim::is_integral< T >::value >::type >
 
struct  radix_merge_compare< false, false, T >
 
struct  radix_merge_compare< false, true, T, typename std::enable_if< rocprim::is_integral< T >::value >::type >
 
struct  radix_merge_compare< true, false, T >
 
struct  radix_merge_compare< true, true, T, typename std::enable_if< rocprim::is_integral< T >::value >::type >
 
struct  radix_sort_and_scatter_helper
 
struct  radix_sort_block_sort_config_base
 
struct  radix_sort_onesweep_config_base
 
struct  radix_sort_onesweep_config_params
 Default values are provided by radix_sort_onesweep_config_base. More...
 
struct  radix_sort_single_helper
 
struct  range_t
 
struct  raw_storage
 
struct  reduce_config_params
 
class  replace_first_iterator
 
struct  reverse_binary_op_wrapper
 
struct  sample_to_bin_even
 
struct  sample_to_bin_even< Level, typename std::enable_if< rocprim::is_floating_point< Level >::value >::type >
 
struct  sample_to_bin_range
 
struct  sample_vector
 
struct  scan_by_key_config_params
 Provides the kernel parameters for exclusive_scan_by_key and inclusive_scan_by_key based on autotuned configurations or user-provided configurations. More...
 
struct  scan_config_params
 Provides the kernel parameters for exclusive_scan and inclusive_scan based on autotuned configurations or user-provided configurations. More...
 
struct  segmented_radix_sort_config_1030
 
struct  segmented_radix_sort_config_1030< Key, empty_type >
 
struct  segmented_radix_sort_config_803
 
struct  segmented_radix_sort_config_803< Key, empty_type >
 
struct  segmented_radix_sort_config_900
 
struct  segmented_radix_sort_config_900< Key, empty_type >
 
struct  segmented_radix_sort_config_90a
 
struct  segmented_radix_sort_config_90a< Key, empty_type >
 
class  segmented_radix_sort_helper
 
class  segmented_radix_sort_single_block_helper
 
class  segmented_radix_sort_single_block_helper< Key, Value, BlockSize, 0, Descending >
 
struct  segmented_warp_sort_helper
 
class  segmented_warp_sort_helper< Config, Key, Value, Descending, std::enable_if_t<!std::is_same< DisabledWarpSortHelperConfig, Config >::value > >
 
struct  select_arch
 
struct  select_arch< TargetArch, Universal >
 
struct  select_arch_case
 
struct  select_block_histogram_impl
 
struct  select_block_histogram_impl< block_histogram_algorithm::using_atomic >
 
struct  select_block_histogram_impl< block_histogram_algorithm::using_sort >
 
struct  select_block_radix_rank_impl
 
struct  select_block_radix_rank_impl< block_radix_rank_algorithm::basic >
 
struct  select_block_radix_rank_impl< block_radix_rank_algorithm::basic_memoize >
 
struct  select_block_radix_rank_impl< block_radix_rank_algorithm::match >
 
struct  select_block_reduce_impl
 
struct  select_block_reduce_impl< block_reduce_algorithm::raking_reduce >
 
struct  select_block_reduce_impl< block_reduce_algorithm::raking_reduce_commutative_only >
 
struct  select_block_reduce_impl< block_reduce_algorithm::using_warp_reduce >
 
struct  select_block_scan_impl
 
struct  select_block_scan_impl< block_scan_algorithm::reduce_then_scan >
 
struct  select_block_scan_impl< block_scan_algorithm::using_warp_scan >
 
struct  select_block_sort_impl
 
struct  select_block_sort_impl< block_sort_algorithm::bitonic_sort >
 
struct  select_block_sort_impl< block_sort_algorithm::merge_sort >
 
struct  select_block_sort_impl< block_sort_algorithm::stable_merge_sort >
 
struct  select_config_1030
 
struct  select_config_803
 
struct  select_config_900
 
struct  select_config_90a
 
struct  select_type_case
 
struct  select_type_impl
 
struct  select_type_impl< Fallback >
 
struct  select_type_impl< select_type_case< false, T > >
 
struct  select_type_impl< select_type_case< true, T > >
 
struct  select_warp_reduce_impl
 
struct  select_warp_scan_impl
 
union  storage_type
 
struct  ThreeWayPartitioner
 
struct  transform_config_params
 
struct  tuple_element_impl
 
struct  tuple_element_impl< 0, ::rocprim::tuple< T, Types... > >
 
struct  tuple_element_impl< I, ::rocprim::tuple< T, Types... > >
 
struct  tuple_element_impl< I, ::rocprim::tuple<> >
 
struct  tuple_equal_to
 
struct  tuple_equal_to< 0 >
 
struct  tuple_impl
 
struct  tuple_impl<::rocprim::index_sequence< Indices... >, Types... >
 
struct  tuple_less_than
 
struct  tuple_less_than< 0 >
 
struct  tuple_of_references
 
struct  tuple_of_references<::rocprim::tuple< Types... > >
 
struct  tuple_of_values
 
struct  tuple_of_values<::rocprim::tuple< Types... > >
 
struct  tuple_value
 
struct  tuple_value< I, T, true >
 
struct  TwoWayPartitioner
 
struct  type_identity
 
struct  uint_fast_div
 
struct  unpack_binary_op
 
struct  unwrap_store
 
struct  upper_bound_search_op
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1))> >
 
struct  value) &&(sizeof(key_type)<=1) &&(sizeof(value_type)<=1))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1) &&(!std::is_same< value_type, rocprim::empty_type >::value))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1))> >
 
struct  value) &&(sizeof(key_type)<=2) &&(sizeof(value_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=1) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
struct  value) &&(sizeof(value_type)<=2) &&(sizeof(output_type)<=1))> >
 
class  warp_reduce_dpp
 
class  warp_reduce_shared_mem
 
class  warp_reduce_shuffle
 
class  warp_scan_dpp
 
class  warp_scan_shared_mem
 
class  warp_scan_shuffle
 
class  warp_sort_shuffle
 
class  warp_sort_stable
 
class  warp_sort_stable< Key, BlockSize, WarpSize, 1, Value >
 
struct  WarpSortHelperConfig
 
struct  wrapped_histogram_config
 
struct  wrapped_histogram_config< default_config, Sample, Channels, ActiveChannels >
 
struct  wrapped_merge_sort_block_merge_config
 
struct  wrapped_merge_sort_block_merge_config< default_config, Key, Value >
 
struct  wrapped_merge_sort_block_sort_config
 
struct  wrapped_merge_sort_block_sort_config< default_config, Key, Value >
 
struct  wrapped_radix_sort_block_sort_config
 
struct  wrapped_radix_sort_block_sort_config< default_config, Key, Value >
 
struct  wrapped_radix_sort_onesweep_config
 
struct  wrapped_radix_sort_onesweep_config< default_config, Key, Value >
 
struct  wrapped_reduce_config
 
struct  wrapped_reduce_config< default_config, Value >
 
struct  wrapped_scan_by_key_config
 
struct  wrapped_scan_by_key_config< default_config, Key, Value >
 
struct  wrapped_scan_config
 
struct  wrapped_scan_config< default_config, Value >
 
struct  wrapped_transform_config
 
struct  wrapped_transform_config< default_config, Value >
 
struct  wrapped_transform_config< default_config_for_binary_search< Value, Output >, Unused >
 
struct  wrapped_transform_config< default_config_for_lower_bound< Value, Output >, Unused >
 
struct  wrapped_transform_config< default_config_for_upper_bound< Value, Output >, Unused >
 

Typedefs

template<class... >
using void_t = void
 
template<typename T >
using extract_type = typename extract_type_impl< T >::type
 
template<typename... Cases>
using select_type = typename select_type_impl< Cases... >::type
 
template<bool Value>
using bool_constant = std::integral_constant< bool, Value >
 
template<class Config , class Default >
using default_or_custom_config = typename std::conditional< std::is_same< Config, default_config >::value, Default, Config >::type
 
template<class Config >
using select_warp_sort_helper_config_small_t = std::conditional_t< std::is_same< DisabledWarpSortConfig, Config >::value, DisabledWarpSortHelperConfig, WarpSortHelperConfig< Config::logical_warp_size_small, Config::items_per_thread_small, Config::block_size_small > >
 
template<class Config >
using select_warp_sort_helper_config_medium_t = std::conditional_t< std::is_same< DisabledWarpSortConfig, Config >::value, DisabledWarpSortHelperConfig, WarpSortHelperConfig< Config::logical_warp_size_medium, Config::items_per_thread_medium, Config::block_size_medium > >
 
template<class Size >
using offset_type_t = std::conditional_t< sizeof(Size)<=4, unsigned int, size_t >
 
using default_run_length_encode_config = run_length_encode_config< default_config, default_config >
 
template<typename T >
using input_type_t = typename input_value_traits< T >::value_type
 
template<typename T >
using input_iterator_t = typename input_value_traits< T >::iterator_type
 
template<class... Types>
using tuple_base = tuple_impl< typename ::rocprim::index_sequence_for< Types... >, Types... >
 
template<class T >
using make_tuple_return_t = typename make_tuple_return< typename std::decay< T >::type >::type
 
template<class T , unsigned int WarpSize, bool UseAllReduce, bool UseDPP = ROCPRIM_DETAIL_USE_DPP>
using warp_reduce_crosslane = typename std::conditional< UseDPP, warp_reduce_dpp< T, WarpSize, UseAllReduce >, warp_reduce_shuffle< T, WarpSize, UseAllReduce > >::type
 
template<class T , unsigned int WarpSize, bool UseDPP = ROCPRIM_DETAIL_USE_DPP>
using warp_scan_crosslane = typename std::conditional< UseDPP, warp_scan_dpp< T, WarpSize >, warp_scan_shuffle< T, WarpSize > >::type
 

Enumerations

enum  target_arch : unsigned int {
  invalid = 0, gfx803 = 803, gfx900 = 900, gfx906 = 906,
  gfx908 = 908, gfx90a = 910, gfx1030 = 1030, gfx1102 = 1102,
  unknown = std::numeric_limits<unsigned int>::max()
}
 
enum  select_method { flag = 0, predicate = 1, unique = 2 }
 
enum  prefix_flag { PREFIX_INVALID = -1, PREFIX_EMPTY = 0, PREFIX_PARTIAL = 1, PREFIX_COMPLETE = 2 }
 

Functions

template<class T , class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE auto apply (BinaryFunction op, const T &a, const T &b, unsigned int index, bool_constant< true >, bool_constant< false >) -> decltype(op(b, a, index))
 
template<class T , class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE auto apply (BinaryFunction op, const T &a, const T &b, unsigned int index, bool_constant< true >, bool_constant< true >) -> decltype(op(b, a, index))
 
template<typename T , typename BinaryFunction , bool AsFlags>
ROCPRIM_DEVICE ROCPRIM_INLINE auto apply (BinaryFunction op, const T &a, const T &b, unsigned int, bool_constant< AsFlags >, bool_constant< false >) -> decltype(op(b, a))
 
template<typename T , typename BinaryFunction , bool AsFlags>
ROCPRIM_DEVICE ROCPRIM_INLINE auto apply (BinaryFunction op, const T &a, const T &b, unsigned int, bool_constant< AsFlags >, bool_constant< true >) -> decltype(op(b, a))
 
template<class F , class... Args, class Fd = typename std::decay<F>::type>
ROCPRIM_HOST_DEVICE auto INVOKE (F &&f, Args &&... args) -> decltype(invoke_impl< Fd >::call(std::forward< F >(f), std::forward< Args >(args)...))
 
template<class KeysInputIterator1 , class KeysInputIterator2 , class OffsetT , class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE OffsetT merge_path (KeysInputIterator1 keys_input1, KeysInputIterator2 keys_input2, const OffsetT input1_size, const OffsetT input2_size, const OffsetT diag, BinaryFunction compare_function)
 
template<class KeyType , unsigned int ItemsPerThread, class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE void serial_merge (KeyType *keys_shared, KeyType(&outputs)[ItemsPerThread], unsigned int(&index)[ItemsPerThread], range_t range, BinaryFunction compare_function)
 
template<class KeyType , unsigned int ItemsPerThread, class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE void serial_merge (KeyType *keys_shared, KeyType(&outputs)[ItemsPerThread], range_t range, BinaryFunction compare_function)
 
template<class KeyType , class ValueType , unsigned int ItemsPerThread, class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE void serial_merge (KeyType *keys_shared, KeyType(&outputs)[ItemsPerThread], ValueType *values_shared, ValueType(&values)[ItemsPerThread], range_t range, BinaryFunction compare_function)
 
template<class T >
ROCPRIM_HOST_DEVICE constexpr bool is_power_of_two (const T x)
 
template<class T >
ROCPRIM_HOST_DEVICE constexpr T next_power_of_two (const T x, const T acc=1)
 
template<typename T , typename U , std::enable_if_t<::rocprim::is_integral< T >::value &&::rocprim::is_unsigned< U >::value, int > = 0>
ROCPRIM_HOST_DEVICE constexpr auto ceiling_div (const T a, const U b)
 
ROCPRIM_HOST_DEVICE size_t align_size (size_t size, size_t alignment=256)
 
template<class T >
ROCPRIM_HOST_DEVICE constexpr T warp_size_in_class (const T warp_size)
 
template<class T >
ROCPRIM_HOST_DEVICE constexpr T get_min_warp_size (const T block_size, const T max_warp_size)
 
ROCPRIM_HOST_DEVICE constexpr unsigned int get_lds_banks_no ()
 
template<class Iterator1 , class Iterator2 >
bool can_iterators_alias (Iterator1, Iterator2, const size_t size)
 
template<typename Value1 , typename Value2 >
bool can_iterators_alias (Value1 *iter1, Value2 *iter2, const size_t size)
 
hipError_t memcpy_and_sync (void *dst, const void *src, size_t size_bytes, hipMemcpyKind kind, hipStream_t stream)
 Copy data from src to dest with stream ordering and synchronization. More...
 
template<typename T >
constexpr std::add_const_t< T > & as_const (T &t) noexcept
 
template<typename T >
void as_const (const T &&t)=delete
 
template<typename T >
constexpr std::add_const_t< T > * as_const_ptr (T *ptr)
 Add const to the top level pointed to object type. More...
 
template<class... Types, class Function , size_t... Indices>
ROCPRIM_HOST_DEVICE void for_each_in_tuple_impl (::rocprim::tuple< Types... > &t, Function f, ::rocprim::index_sequence< Indices... >)
 
template<class... Types, class Function >
ROCPRIM_HOST_DEVICE void for_each_in_tuple (::rocprim::tuple< Types... > &t, Function f)
 
constexpr bool prefix_equals (const char *lhs, const char *rhs, std::size_t n)
 Checks if the first n characters of rhs are equal to lhs More...
 
constexpr target_arch get_target_arch_from_name (const char *const arch_name, const std::size_t n)
 
constexpr target_arch device_target_arch ()
 Get the current architecture in device compilation. More...
 
template<class Config >
auto dispatch_target_arch (const target_arch target_arch)
 
template<typename Config >
constexpr auto device_params ()
 
target_arch parse_gcn_arch (const char *arch_name)
 
hipError_t get_device_arch (int device_id, target_arch &arch)
 
hipError_t get_device_from_stream (const hipStream_t stream, int &device_id)
 
hipError_t host_target_arch (const hipStream_t stream, target_arch &arch)
 
template<typename T , typename InputIterator >
ROCPRIM_DEVICE ROCPRIM_INLINE auto select_previous_values_iterator (T *previous_values, InputIterator, std::true_type)
 
template<typename T , typename InputIterator >
ROCPRIM_DEVICE ROCPRIM_INLINE auto select_previous_values_iterator (T *, InputIterator input, std::false_type)
 
template<typename Config , bool InPlace, bool Right, typename InputIt , typename OutputIt , typename BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void adjacent_difference_kernel_impl (const InputIt input, const OutputIt output, const std::size_t size, const BinaryFunction op, const typename std::iterator_traits< InputIt >::value_type *previous_values, const std::size_t starting_block)
 
template<class Size >
ROCPRIM_DEVICE ROCPRIM_INLINE Size get_binary_search_middle (Size left, Size right)
 
template<class RandomAccessIterator , class Size , class T , class BinaryPredicate >
ROCPRIM_DEVICE ROCPRIM_INLINE Size lower_bound_n (RandomAccessIterator first, Size size, const T &value, BinaryPredicate compare_op)
 
template<class RandomAccessIterator , class Size , class T , class BinaryPredicate >
ROCPRIM_DEVICE ROCPRIM_INLINE Size upper_bound_n (RandomAccessIterator first, Size size, const T &value, BinaryPredicate compare_op)
 
constexpr unsigned int merge_sort_items_per_thread (const unsigned int item_scale)
 
constexpr unsigned int merge_sort_block_size (const unsigned int item_scale)
 
template<class T >
ROCPRIM_HOST_DEVICE unsigned int upper_bound (const T *values, unsigned int count, T value)
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, unsigned int Channels, class Sample >
ROCPRIM_DEVICE ROCPRIM_INLINE std::enable_if< is_sample_vectorizable< ItemsPerThread, Channels, Sample >::value >::type load_samples (unsigned int flat_id, Sample *samples, sample_vector< Sample, Channels >(&values)[ItemsPerThread])
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, unsigned int Channels, class Sample >
ROCPRIM_DEVICE ROCPRIM_INLINE std::enable_if<!is_sample_vectorizable< ItemsPerThread, Channels, Sample >::value >::type load_samples (unsigned int flat_id, Sample *samples, sample_vector< Sample, Channels >(&values)[ItemsPerThread])
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, unsigned int Channels, class Sample , class SampleIterator >
ROCPRIM_DEVICE ROCPRIM_INLINE void load_samples (unsigned int flat_id, SampleIterator samples, sample_vector< Sample, Channels >(&values)[ItemsPerThread])
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, unsigned int Channels, class Sample , class SampleIterator >
ROCPRIM_DEVICE ROCPRIM_INLINE void load_samples (unsigned int flat_id, SampleIterator samples, sample_vector< Sample, Channels >(&values)[ItemsPerThread], unsigned int valid_count)
 
template<unsigned int BlockSize, unsigned int ActiveChannels, class Counter >
ROCPRIM_DEVICE ROCPRIM_INLINE void init_histogram (fixed_array< Counter *, ActiveChannels > histogram, fixed_array< unsigned int, ActiveChannels > bins)
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, unsigned int Channels, unsigned int ActiveChannels, class SampleIterator , class Counter , class SampleToBinOp >
ROCPRIM_DEVICE ROCPRIM_INLINE void histogram_shared (SampleIterator samples, unsigned int columns, unsigned int rows, unsigned int row_stride, unsigned int rows_per_block, unsigned int shared_histograms, fixed_array< Counter *, ActiveChannels > histogram, fixed_array< SampleToBinOp, ActiveChannels > sample_to_bin_op, fixed_array< unsigned int, ActiveChannels > bins, unsigned int *block_histogram_start)
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, unsigned int Channels, unsigned int ActiveChannels, class SampleIterator , class Counter , class SampleToBinOp >
ROCPRIM_DEVICE ROCPRIM_INLINE void histogram_global (SampleIterator samples, unsigned int columns, unsigned int row_stride, fixed_array< Counter *, ActiveChannels > histogram, fixed_array< SampleToBinOp, ActiveChannels > sample_to_bin_op, fixed_array< unsigned int, ActiveChannels > bins_bits)
 
ROCPRIM_DEVICE ROCPRIM_INLINE range_t compute_range (const unsigned int id, const unsigned int size1, const unsigned int size2, const unsigned int spacing, const unsigned int p1, const unsigned int p2)
 
template<class IndexIterator , class KeysInputIterator1 , class KeysInputIterator2 , class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE void partition_kernel_impl (IndexIterator indices, KeysInputIterator1 keys_input1, KeysInputIterator2 keys_input2, const size_t input1_size, const size_t input2_size, const unsigned int spacing, BinaryFunction compare_function)
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, class KeysInputIterator1 , class KeysInputIterator2 , class KeyType >
ROCPRIM_DEVICE ROCPRIM_INLINE void load (unsigned int flat_id, KeysInputIterator1 keys_input1, KeysInputIterator2 keys_input2, KeyType *keys_shared, const size_t input1_size, const size_t input2_size)
 
template<unsigned int BlockSize, class KeysInputIterator1 , class KeysInputIterator2 , class KeyType , unsigned int ItemsPerThread, class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE void merge_keys (unsigned int flat_id, KeysInputIterator1 keys_input1, KeysInputIterator2 keys_input2, KeyType(&key_inputs)[ItemsPerThread], unsigned int(&index)[ItemsPerThread], KeyType *keys_shared, range_t range, BinaryFunction compare_function)
 
template<bool WithValues, unsigned int BlockSize, class ValuesInputIterator1 , class ValuesInputIterator2 , class ValuesOutputIterator , unsigned int ItemsPerThread>
ROCPRIM_DEVICE ROCPRIM_INLINE std::enable_if< WithValues >::type merge_values (unsigned int flat_id, ValuesInputIterator1 values_input1, ValuesInputIterator2 values_input2, ValuesOutputIterator values_output, unsigned int(&index)[ItemsPerThread], const size_t input1_size, const size_t input2_size)
 
template<bool WithValues, unsigned int BlockSize, class ValuesInputIterator1 , class ValuesInputIterator2 , class ValuesOutputIterator , unsigned int ItemsPerThread>
ROCPRIM_DEVICE ROCPRIM_INLINE std::enable_if<!WithValues >::type merge_values (unsigned int flat_id, ValuesInputIterator1 values_input1, ValuesInputIterator2 values_input2, ValuesOutputIterator values_output, unsigned int(&index)[ItemsPerThread], const size_t input1_size, const size_t input2_size)
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, class IndexIterator , class KeysInputIterator1 , class KeysInputIterator2 , class KeysOutputIterator , class ValuesInputIterator1 , class ValuesInputIterator2 , class ValuesOutputIterator , class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void merge_kernel_impl (IndexIterator indices, KeysInputIterator1 keys_input1, KeysInputIterator2 keys_input2, KeysOutputIterator keys_output, ValuesInputIterator1 values_input1, ValuesInputIterator2 values_input2, ValuesOutputIterator values_output, const size_t input1_size, const size_t input2_size, BinaryFunction compare_function)
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, block_sort_algorithm Algo, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class OffsetT , class BinaryFunction , class ValueType = typename std::iterator_traits<ValuesInputIterator>::value_type>
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE auto block_sort_kernel_impl (KeysInputIterator keys_input, KeysOutputIterator keys_output, ValuesInputIterator values_input, ValuesOutputIterator values_output, const OffsetT input_size, BinaryFunction compare_function)
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class OffsetT , class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE void block_merge_oddeven_kernel (KeysInputIterator keys_input, KeysOutputIterator keys_output, ValuesInputIterator values_input, ValuesOutputIterator values_output, const OffsetT input_size, const OffsetT sorted_block_size, BinaryFunction compare_function)
 
template<unsigned int ItemsPerThread, class KeyT , class InputIterator >
ROCPRIM_DEVICE ROCPRIM_INLINE void gmem_to_reg (KeyT(&output)[ItemsPerThread], InputIterator input1, InputIterator input2, unsigned int count1, unsigned int count2, bool IsLastTile)
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, class KeyT , class OutputIterator >
ROCPRIM_DEVICE ROCPRIM_INLINE void reg_to_shared (OutputIterator output, KeyT(&input)[ItemsPerThread])
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class OffsetT , class BinaryFunction , class ValueType = typename std::iterator_traits<ValuesInputIterator>::value_type>
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE auto block_merge_process_tile (KeysInputIterator keys_input, KeysOutputIterator keys_output, ValuesInputIterator values_input, ValuesOutputIterator values_output, const OffsetT input_size, const OffsetT sorted_block_size, BinaryFunction compare_function, const OffsetT *merge_partitions) -> std::enable_if_t<(!std::is_trivially_copyable< ValueType >::value||rocprim::is_floating_point< ValueType >::value||std::is_integral< ValueType >::value), void >
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class OffsetT , class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void block_merge_mergepath_kernel (KeysInputIterator keys_input, KeysOutputIterator keys_output, ValuesInputIterator values_input, ValuesOutputIterator values_output, const OffsetT input_size, const OffsetT sorted_block_size, BinaryFunction compare_function, const OffsetT *merge_partitions)
 
template<select_method SelectMethod, unsigned int BlockSize, class BlockLoadFlagsType , class BlockDiscontinuityType , class InputIterator , class FlagIterator , class ValueType , unsigned int ItemsPerThread, class UnaryPredicate , class InequalityOp , class StorageType >
ROCPRIM_DEVICE ROCPRIM_INLINE auto partition_block_load_flags (InputIterator, FlagIterator block_flags, ValueType(&)[ItemsPerThread], bool(&is_selected)[ItemsPerThread], UnaryPredicate, InequalityOp, StorageType &storage, const bool, const unsigned int, const bool is_global_last_block, const unsigned int valid_in_global_last_block) -> typename std::enable_if< SelectMethod==select_method::flag >::type
 
template<select_method SelectMethod, unsigned int BlockSize, class BlockLoadFlagsType , class BlockDiscontinuityType , class InputIterator , class FlagIterator , class ValueType , unsigned int ItemsPerThread, class FirstUnaryPredicate , class SecondUnaryPredicate , class InequalityOp , class StorageType >
ROCPRIM_DEVICE ROCPRIM_INLINE void partition_block_load_flags (InputIterator, FlagIterator, ValueType(&values)[ItemsPerThread], bool(&is_selected)[2][ItemsPerThread], FirstUnaryPredicate select_first_part_op, SecondUnaryPredicate select_second_part_op, InequalityOp, StorageType &, const unsigned int, const unsigned int block_thread_id, const bool is_global_last_block, const unsigned int valid_in_global_last_block)
 
template<bool OnlySelected, unsigned int BlockSize, class ValueType , unsigned int ItemsPerThread, class OffsetType , class SelectType , class ScatterStorageType >
ROCPRIM_DEVICE ROCPRIM_INLINE auto partition_scatter (ValueType(&values)[ItemsPerThread], bool(&is_selected)[ItemsPerThread], OffsetType(&output_indices)[ItemsPerThread], tuple< SelectType, ::rocprim::empty_type *> output, const size_t total_size, const OffsetType selected_prefix, const OffsetType selected_in_block, ScatterStorageType &storage, const unsigned int flat_block_id, const unsigned int flat_block_thread_id, const bool is_global_last_block, const unsigned int valid_in_global_last_block, size_t(&prev_selected_count_values)[1], size_t prev_processed) -> typename std::enable_if<!OnlySelected >::type
 
template<bool OnlySelected, unsigned int BlockSize, class ValueType , unsigned int ItemsPerThread, class OffsetType , class SelectType , class RejectType , class ScatterStorageType >
ROCPRIM_DEVICE ROCPRIM_INLINE auto partition_scatter (ValueType(&values)[ItemsPerThread], bool(&is_selected)[ItemsPerThread], OffsetType(&output_indices)[ItemsPerThread], tuple< SelectType, RejectType > output, const size_t, const OffsetType selected_prefix, const OffsetType selected_in_block, ScatterStorageType &storage, const unsigned int flat_block_id, const unsigned int flat_block_thread_id, const bool is_global_last_block, const unsigned int valid_in_global_last_block, size_t(&prev_selected_count_values)[1], size_t prev_processed) -> typename std::enable_if<!OnlySelected >::type
 
template<bool OnlySelected, unsigned int BlockSize, class ValueType , unsigned int ItemsPerThread, class OffsetType , class OutputType , class ScatterStorageType >
ROCPRIM_DEVICE ROCPRIM_INLINE void partition_scatter (ValueType(&values)[ItemsPerThread], bool(&is_selected)[2][ItemsPerThread], OffsetType(&output_indices)[ItemsPerThread], OutputType output, const size_t, const OffsetType selected_prefix, const OffsetType selected_in_block, ScatterStorageType &storage, const unsigned int flat_block_id, const unsigned int flat_block_thread_id, const bool is_global_last_block, const unsigned int valid_in_global_last_block, size_t(&prev_selected_count_values)[2], size_t prev_processed)
 
template<unsigned int items_per_thread, class offset_type >
ROCPRIM_DEVICE ROCPRIM_INLINE void convert_selected_to_indices (offset_type(&output_indices)[items_per_thread], bool(&is_selected)[items_per_thread])
 
template<unsigned int items_per_thread>
ROCPRIM_DEVICE ROCPRIM_INLINE void convert_selected_to_indices (uint2(&output_indices)[items_per_thread], bool(&is_selected)[2][items_per_thread])
 
template<class OffsetT >
ROCPRIM_DEVICE ROCPRIM_INLINE void store_selected_count (size_t *selected_count, size_t(&prev_selected_count_values)[1], const OffsetT selected_prefix, const OffsetT selected_in_block)
 
ROCPRIM_DEVICE ROCPRIM_INLINE void store_selected_count (size_t *selected_count, size_t(&prev_selected_count_values)[2], const uint2 selected_prefix, const uint2 selected_in_block)
 
template<unsigned int Size>
ROCPRIM_DEVICE void load_selected_count (const size_t *const prev_selected_count, size_t(&loaded_values)[Size])
 
template<select_method SelectMethod, bool OnlySelected, class Config , class KeyIterator , class ValueIterator , class FlagIterator , class OutputKeyIterator , class OutputValueIterator , class InequalityOp , class OffsetLookbackScanState , class... UnaryPredicates>
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void partition_kernel_impl (KeyIterator keys_input, ValueIterator values_input, FlagIterator flags, OutputKeyIterator keys_output, OutputValueIterator values_output, size_t *selected_count, size_t *prev_selected_count, size_t prev_processed, const size_t total_size, InequalityOp inequality_op, OffsetLookbackScanState offset_scan_state, const unsigned int number_of_blocks, UnaryPredicates... predicates)
 
template<bool Descending = false, class SortType , class SortKey , class SortValue , unsigned int ItemsPerThread>
ROCPRIM_DEVICE ROCPRIM_INLINE void sort_block (SortType sorter, SortKey(&keys)[ItemsPerThread], SortValue(&values)[ItemsPerThread], typename SortType::storage_type &storage, unsigned int begin_bit, unsigned int end_bit)
 
template<bool Descending = false, class SortType , class SortKey , unsigned int ItemsPerThread>
ROCPRIM_DEVICE ROCPRIM_INLINE void sort_block (SortType sorter, SortKey(&keys)[ItemsPerThread], ::rocprim::empty_type(&values)[ItemsPerThread], typename SortType::storage_type &storage, unsigned int begin_bit, unsigned int end_bit)
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, bool Descending, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator >
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void sort_single (KeysInputIterator keys_input, KeysOutputIterator keys_output, ValuesInputIterator values_input, ValuesOutputIterator values_output, unsigned int size, unsigned int bit, unsigned int current_radix_bits)
 
template<class T >
ROCPRIM_DEVICE ROCPRIM_INLINE auto compare_nan_sensitive (const T &a, const T &b) -> typename std::enable_if< rocprim::is_floating_point< T >::value, bool >::type
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, unsigned int RadixBits, bool Descending, class KeysInputIterator , class Offset >
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void onesweep_histograms (KeysInputIterator keys_input, Offset *global_digit_counts, const Offset size, const Offset full_blocks, const unsigned int begin_bit, const unsigned int end_bit)
 
template<unsigned int BlockSize, unsigned int RadixBits, class Offset >
ROCPRIM_DEVICE void onesweep_scan_histograms (Offset *global_digit_offsets)
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, unsigned int RadixBits, bool Descending, block_radix_rank_algorithm RadixRankAlgorithm, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class Offset >
ROCPRIM_DEVICE void onesweep_iteration (KeysInputIterator keys_input, KeysOutputIterator keys_output, ValuesInputIterator values_input, ValuesOutputIterator values_output, const unsigned int size, Offset *global_digit_offsets_in, Offset *global_digit_offsets_out, onesweep_lookback_state *lookback_states, const unsigned int bit, const unsigned int current_radix_bits, const unsigned int full_blocks)
 
template<bool WithInitialValue, class T , class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE auto reduce_with_initial (T output, T initial_value, BinaryFunction reduce_op) -> typename std::enable_if< WithInitialValue, T >::type
 
template<bool WithInitialValue, class Config , class ResultType , class InputIterator , class OutputIterator , class InitValueType , class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void block_reduce_kernel_impl (InputIterator input, const size_t input_size, OutputIterator output, InitValueType initial_value, BinaryFunction reduce_op)
 
template<bool Exclusive, class BlockScan , class T , unsigned int ItemsPerThread, class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE auto single_scan_block_scan (T(&input)[ItemsPerThread], T(&output)[ItemsPerThread], T initial_value, typename BlockScan::storage_type &storage, BinaryFunction scan_op) -> typename std::enable_if< Exclusive >::type
 
template<bool Exclusive, class Config , class InputIterator , class OutputIterator , class BinaryFunction , class ResultType , class LookbackScanState >
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void lookback_scan_kernel_impl (InputIterator input, OutputIterator output, const size_t size, ResultType initial_value, BinaryFunction scan_op, LookbackScanState scan_state, const unsigned int number_of_blocks, ResultType *previous_last_element=nullptr, ResultType *new_last_element=nullptr, bool override_first_value=false, bool save_last_value=false)
 
template<bool Exclusive, typename Config , typename KeyInputIterator , typename InputIterator , typename OutputIterator , typename ResultType , typename CompareFunction , typename BinaryFunction , typename LookbackScanState >
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void device_scan_by_key_kernel_impl (KeyInputIterator keys, InputIterator values, OutputIterator output, ResultType initial_value, const CompareFunction compare, const BinaryFunction scan_op, LookbackScanState scan_state, const size_t size, const size_t starting_block, const size_t number_of_blocks, const rocprim::tuple< ResultType, bool > *const previous_last_value)
 
template<typename LookBackScanState , typename AccessFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE void access_indexed_lookback_value (LookBackScanState lookback_scan_state, const unsigned int number_of_blocks, unsigned int save_index, unsigned int flat_thread_id, AccessFunction access_function)
 
template<typename LookBackScanState >
ROCPRIM_DEVICE ROCPRIM_INLINE void init_lookback_scan_state (LookBackScanState lookback_scan_state, const unsigned int number_of_blocks, ordered_block_id< unsigned int > ordered_bid, unsigned int flat_thread_id)
 
template<typename LookBackScanState >
ROCPRIM_DEVICE ROCPRIM_INLINE void init_lookback_scan_state (LookBackScanState lookback_scan_state, const unsigned int number_of_blocks, unsigned int flat_thread_id)
 
template<typename LookBackScanState >
ROCPRIM_KERNEL __launch_bounds__ (ROCPRIM_DEFAULT_MAX_BLOCK_SIZE) void init_lookback_scan_state_kernel(LookBackScanState lookback_scan_state
 
class T unsigned int ItemsPerThread class BinaryFunction ROCPRIM_DEVICE ROCPRIM_INLINE auto lookback_block_scan (T(&values)[ItemsPerThread], T, T &reduction, typename BlockScan::storage_type &storage, BinaryFunction scan_op) -> typename std::enable_if<!Exclusive >::type
 
template<bool Exclusive, class BlockScan , class T , unsigned int ItemsPerThread, class PrefixCallback , class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE auto lookback_block_scan (T(&values)[ItemsPerThread], typename BlockScan::storage_type &storage, PrefixCallback &prefix_callback_op, BinaryFunction scan_op) -> typename std::enable_if<!Exclusive >::type
 
template<class Config , bool Descending, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class OffsetIterator >
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void segmented_sort (KeysInputIterator keys_input, typename std::iterator_traits< KeysInputIterator >::value_type *keys_tmp, KeysOutputIterator keys_output, ValuesInputIterator values_input, typename std::iterator_traits< ValuesInputIterator >::value_type *values_tmp, ValuesOutputIterator values_output, bool to_output, OffsetIterator begin_offsets, OffsetIterator end_offsets, unsigned int long_iterations, unsigned int short_iterations, unsigned int begin_bit, unsigned int end_bit)
 
template<class Config , bool Descending, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class SegmentIndexIterator , class OffsetIterator >
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void segmented_sort_large (KeysInputIterator keys_input, typename std::iterator_traits< KeysInputIterator >::value_type *keys_tmp, KeysOutputIterator keys_output, ValuesInputIterator values_input, typename std::iterator_traits< ValuesInputIterator >::value_type *values_tmp, ValuesOutputIterator values_output, bool to_output, SegmentIndexIterator segment_indices, OffsetIterator begin_offsets, OffsetIterator end_offsets, unsigned int long_iterations, unsigned int short_iterations, unsigned int begin_bit, unsigned int end_bit)
 
template<class Config , bool Descending, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class SegmentIndexIterator , class OffsetIterator >
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void segmented_sort_small (KeysInputIterator keys_input, typename std::iterator_traits< KeysInputIterator >::value_type *keys_tmp, KeysOutputIterator keys_output, ValuesInputIterator values_input, typename std::iterator_traits< ValuesInputIterator >::value_type *values_tmp, ValuesOutputIterator values_output, bool to_output, unsigned int num_segments, SegmentIndexIterator segment_indices, OffsetIterator begin_offsets, OffsetIterator end_offsets, unsigned int begin_bit, unsigned int end_bit)
 
template<class Config , class InputIterator , class OutputIterator , class OffsetIterator , class ResultType , class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void segmented_reduce (InputIterator input, OutputIterator output, OffsetIterator begin_offsets, OffsetIterator end_offsets, BinaryFunction reduce_op, ResultType initial_value)
 
template<bool Exclusive, bool UsePrefix, class BlockScanType , class T , unsigned int ItemsPerThread, class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE auto segmented_scan_block_scan (T(&input)[ItemsPerThread], T(&output)[ItemsPerThread], T &prefix, typename BlockScanType::storage_type &storage, BinaryFunction scan_op) -> typename std::enable_if< Exclusive >::type
 
template<bool Exclusive, class Config , class ResultType , class InputIterator , class OutputIterator , class OffsetIterator , class InitValueType , class BinaryFunction >
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void segmented_scan (InputIterator input, OutputIterator output, OffsetIterator begin_offsets, OffsetIterator end_offsets, InitValueType initial_value, BinaryFunction scan_op)
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, class ResultType , class InputIterator , class OutputIterator , class UnaryFunction >
ROCPRIM_DEVICE ROCPRIM_INLINE void transform_kernel_impl (InputIterator input, const size_t input_size, OutputIterator output, UnaryFunction transform_op)
 
hipError_t is_sleep_scan_state_used (bool &use_sleep)
 
ROCPRIM_HOST_DEVICE unsigned int operator/ (unsigned int n, const uint_fast_div &divisor)
 
template<typename Config , bool InPlace, bool Right, typename InputIt , typename OutputIt , typename BinaryFunction >
void ROCPRIM_KERNEL __launch_bounds__ (Config::block_size) adjacent_difference_kernel(const InputIt input
 
template<typename Config , bool InPlace, bool Right, typename InputIt , typename OutputIt , typename BinaryFunction >
hipError_t adjacent_difference_impl (void *const temporary_storage, std::size_t &storage_size, const InputIt input, const OutputIt output, const std::size_t size, const BinaryFunction op, const hipStream_t stream, const bool debug_synchronous)
 
template<class Config , class HaystackIterator , class NeedlesIterator , class OutputIterator , class SearchFunction , class CompareFunction >
hipError_t binary_search (void *temporary_storage, size_t &storage_size, HaystackIterator haystack, NeedlesIterator needles, OutputIterator output, size_t haystack_size, size_t needles_size, SearchFunction search_op, CompareFunction compare_op, hipStream_t stream, bool debug_synchronous)
 
template<class Config , unsigned int ActiveChannels, class Counter >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >() .histogram_config .block_size) void init_histogram_kernel(fixed_array< Counter *
 
 init_histogram< params.histogram_config.block_size, ActiveChannels > (histogram, bins)
 
template<class Config , unsigned int Channels, unsigned int ActiveChannels, class SampleIterator , class Counter , class SampleToBinOp >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >() .histogram_config .block_size) void histogram_shared_kernel(SampleIterator samples
 
 HIP_DYNAMIC_SHARED (unsigned int, block_histogram)
 
 histogram_shared< params.histogram_config.block_size, params.histogram_config.items_per_thread, Channels, ActiveChannels > (samples, columns, rows, row_stride, rows_per_block, shared_histograms, histogram, sample_to_bin_op, bins, block_histogram)
 
 histogram_global< params.histogram_config.block_size, params.histogram_config.items_per_thread, Channels, ActiveChannels > (samples, columns, row_stride, histogram, sample_to_bin_op, bins_bits)
 
template<unsigned int Channels, unsigned int ActiveChannels, class Config , class SampleIterator , class Counter , class SampleToBinOp >
hipError_t histogram_impl (void *temporary_storage, size_t &storage_size, SampleIterator samples, unsigned int columns, unsigned int rows, size_t row_stride_bytes, Counter *histogram[ActiveChannels], unsigned int levels[ActiveChannels], SampleToBinOp sample_to_bin_op[ActiveChannels], hipStream_t stream, bool debug_synchronous)
 
template<unsigned int Channels, unsigned int ActiveChannels, class Config , class SampleIterator , class Counter , class Level >
hipError_t histogram_even_impl (void *temporary_storage, size_t &storage_size, SampleIterator samples, unsigned int columns, unsigned int rows, size_t row_stride_bytes, Counter *histogram[ActiveChannels], unsigned int levels[ActiveChannels], Level lower_level[ActiveChannels], Level upper_level[ActiveChannels], hipStream_t stream, bool debug_synchronous)
 
template<unsigned int Channels, unsigned int ActiveChannels, class Config , class SampleIterator , class Counter , class Level >
hipError_t histogram_range_impl (void *temporary_storage, size_t &storage_size, SampleIterator samples, unsigned int columns, unsigned int rows, size_t row_stride_bytes, Counter *histogram[ActiveChannels], unsigned int levels[ActiveChannels], Level *level_values[ActiveChannels], hipStream_t stream, bool debug_synchronous)
 
template<typename HistogramConfig >
constexpr histogram_config_params wrap_histogram_config ()
 
template<class IndexIterator , class KeysInputIterator1 , class KeysInputIterator2 , class BinaryFunction >
ROCPRIM_KERNEL __launch_bounds__ (ROCPRIM_DEFAULT_MAX_BLOCK_SIZE) void partition_kernel(IndexIterator index
 
template<unsigned int BlockSize, unsigned int ItemsPerThread, class IndexIterator , class KeysInputIterator1 , class KeysInputIterator2 , class KeysOutputIterator , class ValuesInputIterator1 , class ValuesInputIterator2 , class ValuesOutputIterator , class BinaryFunction >
ROCPRIM_KERNEL __launch_bounds__ (BlockSize) void merge_kernel(IndexIterator index
 
template<class Config , class KeysInputIterator1 , class KeysInputIterator2 , class KeysOutputIterator , class ValuesInputIterator1 , class ValuesInputIterator2 , class ValuesOutputIterator , class BinaryFunction >
hipError_t merge_impl (void *temporary_storage, size_t &storage_size, KeysInputIterator1 keys_input1, KeysInputIterator2 keys_input2, KeysOutputIterator keys_output, ValuesInputIterator1 values_input1, ValuesInputIterator2 values_input2, ValuesOutputIterator values_output, const size_t input1_size, const size_t input2_size, BinaryFunction compare_function, const hipStream_t stream, bool debug_synchronous)
 
template<class Config , class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class OffsetT , class BinaryFunction >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >().block_sort_config.block_size) void block_sort_kernel(KeysInputIterator keys_input
 
 block_sort_kernel_impl< params.block_sort_config.block_size, params.block_sort_config.items_per_thread, params.block_sort_method > (keys_input, keys_output, values_input, values_output, sorted_block_size, compare_function)
 
template<class Config , class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class OffsetT , class BinaryFunction >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >() .merge_oddeven_config .block_size) void device_block_merge_oddeven_kernel(KeysInputIterator keys_input
 
 block_merge_oddeven_kernel< params.merge_oddeven_config.block_size, params.merge_oddeven_config.items_per_thread > (keys_input, keys_output, values_input, values_output, input_size, sorted_block_size, compare_function)
 
template<class Config , class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class OffsetT , class BinaryFunction >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >() .merge_mergepath_config .block_size) void device_block_merge_mergepath_kernel(KeysInputIterator keys_input
 
 block_merge_mergepath_kernel< params.merge_mergepath_config.block_size, params.merge_mergepath_config.items_per_thread > (keys_input, keys_output, values_input, values_output, input_size, sorted_block_size, compare_function, merge_partitions)
 
template<typename Config , typename KeysInputIterator , typename OffsetT , typename CompareOpT >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >() .merge_mergepath_partition_config .block_size) void device_block_merge_mergepath_partition_kernel(KeysInputIterator keys
 
 if (partition_id >=num_partitions)
 
template<class Config , class KeysIterator , class ValuesIterator , class OffsetT , class BinaryFunction >
hipError_t merge_sort_block_merge (void *temporary_storage, size_t &storage_size, KeysIterator keys, ValuesIterator values, const OffsetT size, unsigned int sorted_block_size, BinaryFunction compare_function, const hipStream_t stream, bool debug_synchronous, typename std::iterator_traits< KeysIterator >::value_type *keys_double_buffer=nullptr, typename std::iterator_traits< ValuesIterator >::value_type *values_double_buffer=nullptr)
 
template<class Config , class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class BinaryFunction >
hipError_t merge_sort_block_sort (KeysInputIterator keys_input, KeysOutputIterator keys_output, ValuesInputIterator values_input, ValuesOutputIterator values_output, const unsigned int size, unsigned int &sort_items_per_block, BinaryFunction compare_function, const hipStream_t stream, bool debug_synchronous)
 
template<unsigned int A, unsigned int B>
ROCPRIM_DEVICE void TAssertEqualGreater ()
 
template<class BlockSortConfig , class BlockMergeConfig >
ROCPRIM_KERNEL void device_merge_sort_compile_time_verifier ()
 
template<class Config , class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class BinaryFunction >
hipError_t merge_sort_impl (void *temporary_storage, size_t &storage_size, KeysInputIterator keys_input, KeysOutputIterator keys_output, ValuesInputIterator values_input, ValuesOutputIterator values_output, const unsigned int size, BinaryFunction compare_function, const hipStream_t stream, bool debug_synchronous, typename std::iterator_traits< KeysInputIterator >::value_type *keys_buffer=nullptr, typename std::iterator_traits< ValuesInputIterator >::value_type *values_buffer=nullptr)
 
template<select_method SelectMethod, bool OnlySelected, class Config , class KeyIterator , class ValueIterator , class FlagIterator , class OutputKeyIterator , class OutputValueIterator , class InequalityOp , class OffsetLookbackScanState , class... UnaryPredicates>
ROCPRIM_KERNEL __launch_bounds__ (Config::block_size) void partition_kernel(KeyIterator keys_input
 
template<select_method SelectMethod, bool OnlySelected, class Config , class OffsetT , class KeyIterator , class ValueIterator , class FlagIterator , class OutputKeyIterator , class OutputValueIterator , class InequalityOp , class SelectedCountOutputIterator , class... UnaryPredicates>
hipError_t partition_impl (void *temporary_storage, size_t &storage_size, KeyIterator keys_input, ValueIterator values_input, FlagIterator flags, OutputKeyIterator keys_output, OutputValueIterator values_output, SelectedCountOutputIterator selected_count_output, const size_t size, InequalityOp inequality_op, const hipStream_t stream, bool debug_synchronous, UnaryPredicates... predicates)
 
template<class Config , bool Descending, class KeysInputIterator , class Offset >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >().histogram.block_size) void onesweep_histograms_kernel(KeysInputIterator keys_input
 
 onesweep_histograms< params.histogram.block_size, params.histogram.items_per_thread, params.radix_bits_per_place, Descending > (keys_input, global_digit_counts, size, full_blocks, begin_bit, end_bit)
 
template<class Config , class Offset >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >() .histogram.block_size) void onesweep_scan_histograms_kernel(Offset *global_digit_offsets)
 
template<class Config , bool Descending, class KeysInputIterator , class ValuesInputIterator , class Offset >
hipError_t radix_sort_onesweep_global_offsets (KeysInputIterator keys_input, ValuesInputIterator, Offset *global_digit_offsets, const Offset size, const unsigned int digit_places, const unsigned begin_bit, const unsigned end_bit, const hipStream_t stream, const bool debug_synchronous)
 
template<class Config , bool Descending, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class Offset >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >().sort.block_size) void onesweep_iteration_kernel(KeysInputIterator keys_input
 
 onesweep_iteration< params.sort.block_size, params.sort.items_per_thread, params.radix_bits_per_place, Descending, params.radix_rank_algorithm > (keys_input, keys_output, values_input, values_output, size, global_digit_offsets_in, global_digit_offsets_out, lookback_states, bit, current_radix_bits, full_blocks)
 
template<class Config , bool Descending, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class Offset >
hipError_t radix_sort_onesweep_iteration (KeysInputIterator keys_input, typename std::iterator_traits< KeysInputIterator >::value_type *keys_tmp, KeysOutputIterator keys_output, ValuesInputIterator values_input, typename std::iterator_traits< ValuesInputIterator >::value_type *values_tmp, ValuesOutputIterator values_output, const Offset size, Offset *global_digit_offsets_in, Offset *global_digit_offsets_out, onesweep_lookback_state *lookback_states, const bool from_input, const bool to_output, const unsigned int bit, const unsigned int end_bit, const hipStream_t stream, const bool debug_synchronous)
 
template<class Config , bool Descending, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class Size >
hipError_t radix_sort_onesweep_impl (void *temporary_storage, size_t &storage_size, KeysInputIterator keys_input, typename std::iterator_traits< KeysInputIterator >::value_type *keys_tmp, KeysOutputIterator keys_output, ValuesInputIterator values_input, typename std::iterator_traits< ValuesInputIterator >::value_type *values_tmp, ValuesOutputIterator values_output, const Size size, bool &is_result_in_output, const unsigned int begin_bit, const unsigned int end_bit, const hipStream_t stream, const bool debug_synchronous)
 
template<class Config , bool Descending, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class Size >
hipError_t radix_sort_impl (void *temporary_storage, size_t &storage_size, KeysInputIterator keys_input, typename std::iterator_traits< KeysInputIterator >::value_type *keys_tmp, KeysOutputIterator keys_output, ValuesInputIterator values_input, typename std::iterator_traits< ValuesInputIterator >::value_type *values_tmp, ValuesOutputIterator values_output, Size size, bool &is_result_in_output, unsigned int begin_bit, unsigned int end_bit, hipStream_t stream, bool debug_synchronous)
 
template<bool WithInitialValue, class Config , class ResultType , class InputIterator , class OutputIterator , class InitValueType , class BinaryFunction >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >().reduce_config.block_size) void block_reduce_kernel(InputIterator input
 
template<bool WithInitialValue, class Config , class InputIterator , class OutputIterator , class InitValueType , class BinaryFunction >
hipError_t reduce_impl (void *temporary_storage, size_t &storage_size, InputIterator input, OutputIterator output, const InitValueType initial_value, const size_t size, BinaryFunction reduce_op, const hipStream_t stream, bool debug_synchronous)
 
template<bool Exclusive, class Config , class InputIterator , class OutputIterator , class BinaryFunction , class ResultType >
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void single_scan_kernel_impl (InputIterator input, const size_t input_size, ResultType initial_value, OutputIterator output, BinaryFunction scan_op)
 
template<bool Exclusive, class Config , class InputIterator , class OutputIterator , class BinaryFunction , class InitValueType >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >().kernel_config.block_size) void single_scan_kernel(InputIterator input
 
template<bool Exclusive, class Config , class InputIterator , class OutputIterator , class BinaryFunction , class InitValueType , class LookBackScanState >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >().kernel_config.block_size) void lookback_scan_kernel(InputIterator input
 
class InputIterator class OutputIterator class InitValueType class BinaryFunction inline auto scan_impl (void *temporary_storage, size_t &storage_size, InputIterator input, OutputIterator output, const InitValueType initial_value, const size_t size, BinaryFunction scan_op, const hipStream_t stream, bool debug_synchronous)
 
template<bool Exclusive, typename Config , typename KeyInputIterator , typename InputIterator , typename OutputIterator , typename InitialValueType , typename CompareFunction , typename BinaryFunction , typename LookbackScanState , typename ResultType >
void __global__ __launch_bounds__ (device_params< Config >().kernel_config.block_size) device_scan_by_key_kernel(const KeyInputIterator keys
 
template<bool Exclusive, typename Config , typename KeysInputIterator , typename InputIterator , typename OutputIterator , typename InitValueType , typename BinaryFunction , typename CompareFunction >
hipError_t scan_by_key_impl (void *const temporary_storage, size_t &storage_size, KeysInputIterator keys, InputIterator input, OutputIterator output, const InitValueType initial_value, const size_t size, const BinaryFunction scan_op, const CompareFunction compare, const hipStream_t stream, const bool debug_synchronous)
 
template<typename ScanByKeyConfig >
constexpr scan_by_key_config_params wrap_scan_by_key_config ()
 
template<typename ScanConfig >
constexpr scan_config_params wrap_scan_config ()
 
template<class Config , bool Descending, unsigned int BlockSize, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class OffsetIterator >
ROCPRIM_KERNEL __launch_bounds__ (BlockSize) void segmented_sort_kernel(KeysInputIterator keys_input
 
template<class Config , bool Descending, unsigned int BlockSize, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class SegmentIndexIterator , class OffsetIterator >
ROCPRIM_KERNEL __launch_bounds__ (BlockSize) void segmented_sort_large_kernel(KeysInputIterator keys_input
 
template<class Config , bool Descending, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator , class OffsetIterator >
hipError_t segmented_radix_sort_impl (void *temporary_storage, size_t &storage_size, KeysInputIterator keys_input, typename std::iterator_traits< KeysInputIterator >::value_type *keys_tmp, KeysOutputIterator keys_output, ValuesInputIterator values_input, typename std::iterator_traits< ValuesInputIterator >::value_type *values_tmp, ValuesOutputIterator values_output, unsigned int size, bool &is_result_in_output, unsigned int segments, OffsetIterator begin_offsets, OffsetIterator end_offsets, unsigned int begin_bit, unsigned int end_bit, hipStream_t stream, bool debug_synchronous)
 
template<class Config , class InputIterator , class OutputIterator , class OffsetIterator , class ResultType , class BinaryFunction >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >() .reduce_config.block_size) void segmented_reduce_kernel(InputIterator input
 
template<class Config , class InputIterator , class OutputIterator , class OffsetIterator , class InitValueType , class BinaryFunction >
hipError_t segmented_reduce_impl (void *temporary_storage, size_t &storage_size, InputIterator input, OutputIterator output, unsigned int segments, OffsetIterator begin_offsets, OffsetIterator end_offsets, BinaryFunction reduce_op, InitValueType initial_value, hipStream_t stream, bool debug_synchronous)
 
template<bool Exclusive, class Config , class ResultType , class InputIterator , class OutputIterator , class OffsetIterator , class InitValueType , class BinaryFunction >
ROCPRIM_KERNEL __launch_bounds__ (ROCPRIM_DEFAULT_MAX_BLOCK_SIZE) void segmented_scan_kernel(InputIterator input
 
template<bool Exclusive, class Config , class InputIterator , class OutputIterator , class OffsetIterator , class InitValueType , class BinaryFunction >
hipError_t segmented_scan_impl (void *temporary_storage, size_t &storage_size, InputIterator input, OutputIterator output, unsigned int segments, OffsetIterator begin_offsets, OffsetIterator end_offsets, const InitValueType initial_value, BinaryFunction scan_op, hipStream_t stream, bool debug_synchronous)
 
template<class Config , class ResultType , class InputIterator , class OutputIterator , class UnaryFunction >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >().kernel_config.block_size) void transform_kernel(InputIterator input
 
template<typename TransformConfig >
constexpr transform_config_params wrap_transform_config ()
 
template<class Config , bool Descending, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator >
ROCPRIM_KERNEL __launch_bounds__ (device_params< Config >().block_size) void radix_sort_block_sort_kernel(KeysInputIterator keys_input
 
 sort_single< params.block_size, params.items_per_thread, Descending > (keys_input, keys_output, values_input, values_output, size, bit, current_radix_bits)
 
template<class Config , bool Descending, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator >
hipError_t radix_sort_block_sort (KeysInputIterator keys_input, KeysOutputIterator keys_output, ValuesInputIterator values_input, ValuesOutputIterator values_output, unsigned int size, unsigned int &sort_items_per_block, unsigned int bit, unsigned int end_bit, hipStream_t stream, bool debug_synchronous)
 
template<class Config , bool Descending, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator >
hipError_t radix_sort_merge_impl (void *temporary_storage, size_t &storage_size, KeysInputIterator keys_input, typename std::iterator_traits< KeysInputIterator >::value_type *keys_buffer, KeysOutputIterator keys_output, ValuesInputIterator values_input, typename std::iterator_traits< ValuesInputIterator >::value_type *values_buffer, ValuesOutputIterator values_output, unsigned int size, unsigned int bit, unsigned int end_bit, hipStream_t stream, bool debug_synchronous)
 In device_radix_sort, we use this device_radix_sort_merge_sort specialization only for low input sizes (< 1M elements). More...
 
ROCPRIM_DEVICE ROCPRIM_INLINE unsigned int atomic_add (unsigned int *address, unsigned int value)
 
ROCPRIM_DEVICE ROCPRIM_INLINE int atomic_add (int *address, int value)
 
ROCPRIM_DEVICE ROCPRIM_INLINE float atomic_add (float *address, float value)
 
ROCPRIM_DEVICE ROCPRIM_INLINE unsigned long atomic_add (unsigned long *address, unsigned long value)
 
ROCPRIM_DEVICE ROCPRIM_INLINE unsigned long long atomic_add (unsigned long long *address, unsigned long long value)
 
ROCPRIM_DEVICE ROCPRIM_INLINE unsigned int atomic_wrapinc (unsigned int *address, unsigned int value)
 
ROCPRIM_DEVICE ROCPRIM_INLINE unsigned int atomic_exch (unsigned int *address, unsigned int value)
 
ROCPRIM_DEVICE ROCPRIM_INLINE unsigned long long atomic_exch (unsigned long long *address, unsigned long long value)
 
template<unsigned int Dim>
ROCPRIM_DEVICE ROCPRIM_INLINE unsigned int block_thread_id ()
 Returns thread identifier in a multidimensional block (tile) by dimension.
 
template<unsigned int Dim>
ROCPRIM_DEVICE ROCPRIM_INLINE unsigned int block_id ()
 Returns block identifier in a multidimensional grid by dimension.
 
template<unsigned int Dim>
ROCPRIM_DEVICE ROCPRIM_INLINE unsigned int block_size ()
 Returns block size in a multidimensional grid by dimension.
 
template<unsigned int Dim>
ROCPRIM_DEVICE ROCPRIM_INLINE unsigned int grid_size ()
 Returns grid size by dimension.
 
template<unsigned int LogicalWarpSize>
ROCPRIM_DEVICE ROCPRIM_INLINE auto logical_lane_id () -> typename std::enable_if< detail::is_power_of_two(LogicalWarpSize), unsigned int >::type
 
template<>
ROCPRIM_DEVICE ROCPRIM_INLINE unsigned int logical_lane_id< device_warp_size()> ()
 
template<unsigned int LogicalWarpSize>
ROCPRIM_DEVICE ROCPRIM_INLINE unsigned int logical_warp_id ()
 
template<>
ROCPRIM_DEVICE ROCPRIM_INLINE unsigned int logical_warp_id< device_warp_size()> ()
 
ROCPRIM_DEVICE ROCPRIM_INLINE void memory_fence_system ()
 
ROCPRIM_DEVICE ROCPRIM_INLINE void memory_fence_block ()
 
ROCPRIM_DEVICE ROCPRIM_INLINE void memory_fence_device ()
 
ROCPRIM_DEVICE ROCPRIM_INLINE int warp_any (int predicate)
 
ROCPRIM_DEVICE ROCPRIM_INLINE int warp_all (int predicate)
 
template<class T , class ShuffleOp >
ROCPRIM_DEVICE ROCPRIM_INLINE std::enable_if< std::is_trivially_copyable< T >::value &&(sizeof(T) % sizeof(int)==0), T >::type warp_shuffle_op (const T &input, ShuffleOp &&op)
 
template<class T , class ShuffleOp >
ROCPRIM_DEVICE ROCPRIM_INLINE std::enable_if<!(std::is_trivially_copyable< T >::value &&(sizeof(T) % sizeof(int)==0)), T >::type warp_shuffle_op (const T &input, ShuffleOp &&op)
 
template<class T , int dpp_ctrl, int row_mask = 0xf, int bank_mask = 0xf, bool bound_ctrl = false>
ROCPRIM_DEVICE ROCPRIM_INLINE T warp_move_dpp (const T &input)
 
template<class T , int mask>
ROCPRIM_DEVICE ROCPRIM_INLINE T warp_swizzle (const T &input)
 Swizzle for any data type. More...
 
 DEFINE_MAKE_TEXTURE_TYPE (char, 2)
 
 DEFINE_MAKE_TEXTURE_TYPE (char, 4)
 
 DEFINE_MAKE_TEXTURE_TYPE (int, 2)
 
 DEFINE_MAKE_TEXTURE_TYPE (int, 4)
 
 DEFINE_MAKE_TEXTURE_TYPE (short, 2)
 
 DEFINE_MAKE_TEXTURE_TYPE (short, 4)
 
template<class ReferenceTuple , class... Types, size_t... Indices>
ROCPRIM_HOST_DEVICE ReferenceTuple dereference_iterator_tuple_impl (const ::rocprim::tuple< Types... > &t, ::rocprim::index_sequence< Indices... >)
 
template<class ReferenceTuple , class... Types>
ROCPRIM_HOST_DEVICE ReferenceTuple dereference_iterator_tuple (const ::rocprim::tuple< Types... > &t)
 
template<cache_load_modifier MODIFIER = load_default, typename T >
ROCPRIM_DEVICE __forceinline__ T AsmThreadLoad (void *ptr)
 
 ROCPRIM_ASM_THREAD_LOAD_GROUP (load_ca, "glc", "")
 
 ROCPRIM_ASM_THREAD_LOAD_GROUP (load_cg, "glc slc", "")
 
 ROCPRIM_ASM_THREAD_LOAD_GROUP (load_cv, "glc", "vmcnt")
 
 ROCPRIM_ASM_THREAD_LOAD_GROUP (load_volatile, "glc", "vmcnt")
 
 ROCPRIM_ASM_THREAD_LOAD_GROUP (load_ldg, "", "")
 
 ROCPRIM_ASM_THREAD_LOAD_GROUP (load_cs, "", "")
 
template<class InputIteratorT , class OutputIteratorT , class BinaryFunction >
convert_result_type_wrapper< InputIteratorT, OutputIteratorT, BinaryFunction > convert_result_type (BinaryFunction op)
 
template<cache_store_modifier MODIFIER = store_default, typename T >
ROCPRIM_DEVICE __forceinline__ void AsmThreadStore (void *ptr, T val)
 
 ROCPRIM_ASM_THREAD_STORE_GROUP (store_wb, "glc", "")
 
 ROCPRIM_ASM_THREAD_STORE_GROUP (store_cg, "glc slc", "")
 
 ROCPRIM_ASM_THREAD_STORE_GROUP (store_wt, "glc", "vmcnt")
 
 ROCPRIM_ASM_THREAD_STORE_GROUP (store_volatile, "glc", "vmcnt")
 
 ROCPRIM_ASM_THREAD_STORE_GROUP (store_cs, "", "")
 
template<typename T >
ROCPRIM_HOST_DEVICE T get_input_value (const T value)
 Used for unpacking a future_value, basically just a cast but its more explicit this way. More...
 
template<typename T , typename Iter >
ROCPRIM_HOST_DEVICE T get_input_value (::rocprim::future_value< T, Iter > future)
 
template<class T >
ROCPRIM_HOST_DEVICE T && custom_forward (typename std::remove_reference< T >::type &t) noexcept
 
template<class T >
ROCPRIM_HOST_DEVICE T && custom_forward (typename std::remove_reference< T >::type &&t) noexcept
 
template<class... Types>
ROCPRIM_HOST_DEVICE void swallow (Types &&...) noexcept
 
 DEFINE_VECTOR_TYPE (char, char)
 
 DEFINE_VECTOR_TYPE (short, short)
 
 DEFINE_VECTOR_TYPE (int, int)
 
 DEFINE_VECTOR_TYPE (longlong, long long)
 
 DEFINE_MAKE_VECTOR_TYPE (char, char)
 
 DEFINE_MAKE_VECTOR_TYPE (short, short)
 
 DEFINE_MAKE_VECTOR_TYPE (int, int)
 
 DEFINE_MAKE_VECTOR_TYPE (longlong, long long)
 
template<bool HeadSegmented, unsigned int WarpSize, class Flag >
ROCPRIM_DEVICE ROCPRIM_INLINE auto last_in_warp_segment (Flag flag) -> typename std::enable_if<(WarpSize<=__AMDGCN_WAVEFRONT_SIZE), unsigned int >::type
 

Variables

ROCPRIM_KERNEL const unsigned int number_of_blocks
 
ROCPRIM_KERNEL const unsigned int ordered_block_id< unsigned int > ordered_bid
 
ROCPRIM_KERNEL const unsigned int ordered_block_id< unsigned int > unsigned int save_index = 0
 
ROCPRIM_KERNEL const unsigned int ordered_block_id< unsigned int > unsigned int LookBackScanState::value_type *const save_dest
 
void ROCPRIM_KERNEL const OutputIt output
 
void ROCPRIM_KERNEL const OutputIt const std::size_t size
 
void ROCPRIM_KERNEL const OutputIt const std::size_t const BinaryFunction op
 
void ROCPRIM_KERNEL const OutputIt const std::size_t const BinaryFunction const std::iterator_traits< InputIt >::value_type * previous_values
 
void ROCPRIM_KERNEL const OutputIt const std::size_t const BinaryFunction const std::iterator_traits< InputIt >::value_type const std::size_t starting_block
 
ROCPRIM_KERNEL ActiveChannels histogram
 
ROCPRIM_KERNEL ActiveChannels fixed_array< unsigned int, ActiveChannels > bins
 
ROCPRIM_KERNEL unsigned int columns
 
ROCPRIM_KERNEL unsigned int unsigned int rows
 
ROCPRIM_KERNEL unsigned int unsigned int unsigned int row_stride
 
ROCPRIM_KERNEL unsigned int unsigned int unsigned int unsigned int rows_per_block
 
ROCPRIM_KERNEL unsigned int unsigned int unsigned int unsigned int unsigned int shared_histograms
 
ROCPRIM_KERNEL unsigned int unsigned int unsigned int unsigned int unsigned int fixed_array< Counter *, ActiveChannels > fixed_array< SampleToBinOp, ActiveChannels > sample_to_bin_op
 
ROCPRIM_KERNEL unsigned int unsigned int fixed_array< Counter *, ActiveChannels > fixed_array< SampleToBinOp, ActiveChannels > fixed_array< unsigned int, ActiveChannels > bins_bits
 
ROCPRIM_KERNEL KeysInputIterator1 keys_input1
 
ROCPRIM_KERNEL KeysInputIterator1 KeysInputIterator2 keys_input2
 
ROCPRIM_KERNEL KeysInputIterator1 KeysInputIterator2 const size_t input1_size
 
ROCPRIM_KERNEL KeysInputIterator1 KeysInputIterator2 const size_t const size_t input2_size
 
ROCPRIM_KERNEL KeysInputIterator1 KeysInputIterator2 const size_t const size_t const unsigned int spacing
 
ROCPRIM_KERNEL KeysInputIterator1 KeysInputIterator2 const size_t const size_t const unsigned int BinaryFunction compare_function
 
ROCPRIM_KERNEL KeysInputIterator1 KeysInputIterator2 KeysOutputIterator keys_output
 
ROCPRIM_KERNEL KeysInputIterator1 KeysInputIterator2 KeysOutputIterator ValuesInputIterator1 values_input1
 
ROCPRIM_KERNEL KeysInputIterator1 KeysInputIterator2 KeysOutputIterator ValuesInputIterator1 ValuesInputIterator2 values_input2
 
ROCPRIM_KERNEL KeysInputIterator1 KeysInputIterator2 KeysOutputIterator ValuesInputIterator1 ValuesInputIterator2 ValuesOutputIterator values_output
 
ROCPRIM_KERNEL KeysOutputIterator ValuesInputIterator values_input
 
ROCPRIM_KERNEL KeysOutputIterator ValuesInputIterator ValuesOutputIterator const OffsetT sorted_block_size
 
ROCPRIM_KERNEL KeysOutputIterator ValuesInputIterator ValuesOutputIterator const OffsetT input_size
 
ROCPRIM_KERNEL KeysOutputIterator ValuesInputIterator ValuesOutputIterator const OffsetT const OffsetT BinaryFunction const OffsetT * merge_partitions
 
ROCPRIM_KERNEL const OffsetT const unsigned int num_partitions
 
ROCPRIM_KERNEL const OffsetT const unsigned int OffsetT const CompareOpT compare_op
 
const OffsetT partition_id = blockIdx.x * params.merge_mergepath_partition_config.block_size + threadIdx.x
 
const unsigned int merged_tiles = sorted_block_size / ItemsPerTile
 
const unsigned int target_merged_tiles = merged_tiles * 2
 
const unsigned int mask = target_merged_tiles - 1
 
const unsigned int tilegroup_start_id = ~mask & partition_id
 
const OffsetT tilegroup_start = ItemsPerTile * tilegroup_start_id
 
const unsigned int local_tile_id = mask & partition_id
 
const OffsetT keys1_beg = rocprim::min(input_size, tilegroup_start)
 
const OffsetT keys1_end = rocprim::min(input_size, tilegroup_start + sorted_block_size)
 
const OffsetT keys2_beg = keys1_end
 
const OffsetT keys2_end = rocprim::min(input_size, keys2_beg + sorted_block_size)
 
const OffsetT partition_at = rocprim::min<OffsetT>(keys2_end - keys1_beg, ItemsPerTile * local_tile_id)
 
const OffsetT partition_diag
 
ROCPRIM_KERNEL ValueIterator FlagIterator flags
 
ROCPRIM_KERNEL ValueIterator FlagIterator OutputKeyIterator OutputValueIterator size_t * selected_count
 
ROCPRIM_KERNEL ValueIterator FlagIterator OutputKeyIterator OutputValueIterator size_t size_t * prev_selected_count
 
ROCPRIM_KERNEL ValueIterator FlagIterator OutputKeyIterator OutputValueIterator size_t size_t size_t prev_processed
 
ROCPRIM_KERNEL ValueIterator FlagIterator OutputKeyIterator OutputValueIterator size_t size_t size_t const size_t total_size
 
ROCPRIM_KERNEL ValueIterator FlagIterator OutputKeyIterator OutputValueIterator size_t size_t size_t const size_t InequalityOp inequality_op
 
ROCPRIM_KERNEL ValueIterator FlagIterator OutputKeyIterator OutputValueIterator size_t size_t size_t const size_t InequalityOp OffsetLookbackScanState offset_scan_state
 
ROCPRIM_KERNEL ValueIterator FlagIterator OutputKeyIterator OutputValueIterator size_t size_t size_t const size_t InequalityOp OffsetLookbackScanState const unsigned int UnaryPredicates predicates
 
ROCPRIM_KERNEL Offset * global_digit_counts
 
ROCPRIM_KERNEL Offset const Offset const Offset full_blocks
 
ROCPRIM_KERNEL Offset const Offset const Offset const unsigned int begin_bit
 
ROCPRIM_KERNEL Offset const Offset const Offset const unsigned int const unsigned int end_bit
 
ROCPRIM_KERNEL KeysOutputIterator ValuesInputIterator ValuesOutputIterator const unsigned int Offset * global_digit_offsets_in
 
ROCPRIM_KERNEL KeysOutputIterator ValuesInputIterator ValuesOutputIterator const unsigned int Offset Offset * global_digit_offsets_out
 
ROCPRIM_KERNEL KeysOutputIterator ValuesInputIterator ValuesOutputIterator const unsigned int Offset Offset onesweep_lookback_statelookback_states
 
ROCPRIM_KERNEL KeysOutputIterator ValuesInputIterator ValuesOutputIterator const unsigned int Offset Offset onesweep_lookback_state const unsigned int bit
 
ROCPRIM_KERNEL KeysOutputIterator ValuesInputIterator ValuesOutputIterator const unsigned int Offset Offset onesweep_lookback_state const unsigned int const unsigned int current_radix_bits
 
ROCPRIM_KERNEL const size_t OutputIterator InitValueType initial_value
 
ROCPRIM_KERNEL const size_t OutputIterator InitValueType BinaryFunction reduce_op
 
ROCPRIM_KERNEL const size_t const InitValueType OutputIterator BinaryFunction scan_op
 
ROCPRIM_KERNEL OutputIterator const size_t const InitValueType BinaryFunction LookBackScanState lookback_scan_state
 
ROCPRIM_KERNEL OutputIterator const size_t const InitValueType BinaryFunction LookBackScanState const unsigned int input_type_t< InitValueType > * previous_last_element = nullptr
 
ROCPRIM_KERNEL OutputIterator const size_t const InitValueType BinaryFunction LookBackScanState const unsigned int input_type_t< InitValueType > input_type_t< InitValueType > * new_last_element = nullptr
 
ROCPRIM_KERNEL OutputIterator const size_t const InitValueType BinaryFunction LookBackScanState const unsigned int input_type_t< InitValueType > input_type_t< InitValueType > bool override_first_value = false
 
ROCPRIM_KERNEL OutputIterator const size_t const InitValueType BinaryFunction LookBackScanState const unsigned int input_type_t< InitValueType > input_type_t< InitValueType > bool bool save_last_value
 
void __global__ const InputIterator values
 
void __global__ const InputIterator const OutputIterator const InitialValueType const CompareFunction compare
 
void __global__ const InputIterator const OutputIterator const InitialValueType const CompareFunction const BinaryFunction const LookbackScanState scan_state
 
void __global__ const InputIterator const OutputIterator const InitialValueType const CompareFunction const BinaryFunction const LookbackScanState const size_t const size_t const size_t const ::rocprim::tuple< ResultType, bool > *const previous_last_value
 
ROCPRIM_KERNEL std::iterator_traits< KeysInputIterator >::value_type * keys_tmp
 
ROCPRIM_KERNEL std::iterator_traits< KeysInputIterator >::value_type KeysOutputIterator ValuesInputIterator std::iterator_traits< ValuesInputIterator >::value_type * values_tmp
 
ROCPRIM_KERNEL std::iterator_traits< KeysInputIterator >::value_type KeysOutputIterator ValuesInputIterator std::iterator_traits< ValuesInputIterator >::value_type ValuesOutputIterator bool to_output
 
ROCPRIM_KERNEL std::iterator_traits< KeysInputIterator >::value_type KeysOutputIterator ValuesInputIterator std::iterator_traits< ValuesInputIterator >::value_type ValuesOutputIterator bool OffsetIterator begin_offsets
 
ROCPRIM_KERNEL std::iterator_traits< KeysInputIterator >::value_type KeysOutputIterator ValuesInputIterator std::iterator_traits< ValuesInputIterator >::value_type ValuesOutputIterator bool OffsetIterator OffsetIterator end_offsets
 
ROCPRIM_KERNEL std::iterator_traits< KeysInputIterator >::value_type KeysOutputIterator ValuesInputIterator std::iterator_traits< ValuesInputIterator >::value_type ValuesOutputIterator bool OffsetIterator OffsetIterator unsigned int long_iterations
 
ROCPRIM_KERNEL std::iterator_traits< KeysInputIterator >::value_type KeysOutputIterator ValuesInputIterator std::iterator_traits< ValuesInputIterator >::value_type ValuesOutputIterator bool OffsetIterator OffsetIterator unsigned int unsigned int short_iterations
 
ROCPRIM_KERNEL std::iterator_traits< KeysInputIterator >::value_type KeysOutputIterator ValuesInputIterator std::iterator_traits< ValuesInputIterator >::value_type ValuesOutputIterator bool SegmentIndexIterator segment_indices
 
ROCPRIM_KERNEL std::iterator_traits< KeysInputIterator >::value_type KeysOutputIterator ValuesInputIterator std::iterator_traits< ValuesInputIterator >::value_type ValuesOutputIterator bool unsigned int num_segments
 
ROCPRIM_KERNEL const size_t OutputIterator UnaryFunction transform_op
 

Detailed Description

Deprecated: Configuration of device-level scan primitives.

Deprecated: Configuration of device-level scan-by-key operation.

Template Parameters
BlockSize- number of threads in a block.
ItemsPerThread- number of items processed by each thread.
UseLookback- deprecated, scan always uses lookback scan.
BlockLoadMethod- method for loading input values.
StoreLoadMethod- method for storing values.
BlockScanMethod- algorithm for block scan.
SizeLimit- limit on the number of items for a single scan kernel launch.

Function Documentation

◆ as_const_ptr()

template<typename T >
constexpr std::add_const_t<T>* detail::as_const_ptr ( T *  ptr)

Add const to the top level pointed to object type.

Template Parameters
Ttype of the pointed object
Parameters
ptrthe pointer to make constant
Returns
ptr

◆ device_target_arch()

constexpr target_arch detail::device_target_arch ( )

Get the current architecture in device compilation.

This function will always return unkown when called from the host, host could should instead call host_target_arch to query the current device from the HIP API.

Returns
target_arch the architecture currently being compiled for on the device.

◆ get_input_value()

template<typename T >
ROCPRIM_HOST_DEVICE T detail::get_input_value ( const T  value)

Used for unpacking a future_value, basically just a cast but its more explicit this way.

◆ memcpy_and_sync()

hipError_t detail::memcpy_and_sync ( void *  dst,
const void *  src,
size_t  size_bytes,
hipMemcpyKind  kind,
hipStream_t  stream 
)
inline

Copy data from src to dest with stream ordering and synchronization.

Equivalent to hipStreamMemcpyAsync(...,stream) followed by hipStreamSynchronize(stream), but is potentially more performant.

Parameters
[out]dstDestination to copy
[in]srcSource of copy
[in]size_bytesNumber of bytes to copy
[in]kindMemory copy type
[in]streamStream to perform the copy. The copy is performed after all prior operations on stream have been completed.
Returns
hipError_t error code

◆ partition_kernel_impl()

template<select_method SelectMethod, bool OnlySelected, class Config , class KeyIterator , class ValueIterator , class FlagIterator , class OutputKeyIterator , class OutputValueIterator , class InequalityOp , class OffsetLookbackScanState , class... UnaryPredicates>
ROCPRIM_DEVICE ROCPRIM_FORCE_INLINE void detail::partition_kernel_impl ( KeyIterator  keys_input,
ValueIterator  values_input,
FlagIterator  flags,
OutputKeyIterator  keys_output,
OutputValueIterator  values_output,
size_t *  selected_count,
size_t *  prev_selected_count,
size_t  prev_processed,
const size_t  total_size,
InequalityOp  inequality_op,
OffsetLookbackScanState  offset_scan_state,
const unsigned int  number_of_blocks,
UnaryPredicates...  predicates 
)

initial value

◆ prefix_equals()

constexpr bool detail::prefix_equals ( const char *  lhs,
const char *  rhs,
std::size_t  n 
)

Checks if the first n characters of rhs are equal to lhs

Parameters
lhsthe string to compare against
rhsthe string to compare with
nlength of the substring of rhs to chceck
Returns
true if the n character long prefix of rhs is equal to lhs

◆ radix_sort_merge_impl()

template<class Config , bool Descending, class KeysInputIterator , class KeysOutputIterator , class ValuesInputIterator , class ValuesOutputIterator >
hipError_t detail::radix_sort_merge_impl ( void *  temporary_storage,
size_t &  storage_size,
KeysInputIterator  keys_input,
typename std::iterator_traits< KeysInputIterator >::value_type *  keys_buffer,
KeysOutputIterator  keys_output,
ValuesInputIterator  values_input,
typename std::iterator_traits< ValuesInputIterator >::value_type *  values_buffer,
ValuesOutputIterator  values_output,
unsigned int  size,
unsigned int  bit,
unsigned int  end_bit,
hipStream_t  stream,
bool  debug_synchronous 
)
inline

In device_radix_sort, we use this device_radix_sort_merge_sort specialization only for low input sizes (< 1M elements).

◆ warp_swizzle()

template<class T , int mask>
ROCPRIM_DEVICE ROCPRIM_INLINE T detail::warp_swizzle ( const T &  input)

Swizzle for any data type.

Each thread in warp obtains input from src_lane-th thread in warp, where src_lane is current lane with a mask applied.

Parameters
input- input to pass to other threads

Variable Documentation

◆ bins

ROCPRIM_KERNEL unsigned int unsigned int unsigned int unsigned int unsigned int fixed_array< Counter *, ActiveChannels > fixed_array< SampleToBinOp, ActiveChannels > fixed_array< unsigned int, ActiveChannels > detail::bins
Initial value:
{
static constexpr histogram_config_params params = device_params<Config>()
Definition: test_device_binary_search.cpp:37

◆ bins_bits

ROCPRIM_KERNEL unsigned int unsigned int fixed_array<Counter*, ActiveChannels> fixed_array<SampleToBinOp, ActiveChannels> fixed_array<unsigned int, ActiveChannels> detail::bins_bits
Initial value:
{
static constexpr histogram_config_params params = device_params<Config>()
Definition: test_device_binary_search.cpp:37

◆ compare_function

ROCPRIM_KERNEL KeysOutputIterator ValuesInputIterator ValuesOutputIterator const OffsetT const OffsetT BinaryFunction detail::compare_function
Initial value:
{
partition_kernel_impl(
index, keys_input1, keys_input2, input1_size, input2_size,
spacing, compare_function
)

◆ current_radix_bits

ROCPRIM_KERNEL KeysOutputIterator ValuesInputIterator ValuesOutputIterator unsigned int unsigned int unsigned int detail::current_radix_bits
Initial value:
{
static constexpr kernel_config_params params = device_params<Config>()
Definition: test_device_binary_search.cpp:37

◆ end_bit

ROCPRIM_KERNEL std::iterator_traits< KeysInputIterator >::value_type KeysOutputIterator ValuesInputIterator std::iterator_traits< ValuesInputIterator >::value_type ValuesOutputIterator bool unsigned int SegmentIndexIterator OffsetIterator OffsetIterator unsigned int unsigned int detail::end_bit
Initial value:
{
static constexpr radix_sort_onesweep_config_params params = device_params<Config>()
Definition: test_device_binary_search.cpp:37

◆ full_blocks

ROCPRIM_KERNEL KeysOutputIterator ValuesInputIterator ValuesOutputIterator const unsigned int Offset Offset onesweep_lookback_state const unsigned int const unsigned int const unsigned int detail::full_blocks
Initial value:
{
static constexpr radix_sort_onesweep_config_params params = device_params<Config>()
Definition: test_device_binary_search.cpp:37

◆ initial_value

ROCPRIM_KERNEL OutputIterator OffsetIterator OffsetIterator InitValueType detail::initial_value
Initial value:
{
segmented_reduce<Config>(
input, output,
begin_offsets, end_offsets,
reduce_op, initial_value
)

◆ merge_partitions

ROCPRIM_KERNEL const OffsetT const unsigned int OffsetT * detail::merge_partitions
Initial value:
{
static constexpr merge_sort_block_merge_config_params params = device_params<Config>()
Definition: test_device_binary_search.cpp:37

◆ partition_diag

const OffsetT detail::partition_diag
Initial value:
= ::rocprim::detail::merge_path(keys + keys1_beg,
keys + keys2_beg,
keys1_end - keys1_beg,
keys2_end - keys2_beg,
partition_at,
compare_op)

◆ predicates

ROCPRIM_KERNEL ValueIterator FlagIterator OutputKeyIterator OutputValueIterator size_t size_t size_t const size_t InequalityOp OffsetLookbackScanState const unsigned int UnaryPredicates detail::predicates
Initial value:
{
partition_kernel_impl<SelectMethod, OnlySelected, Config>(keys_input,
values_input,
flags,
keys_output,
values_output,
selected_count,
prev_selected_count,
prev_processed,
total_size,
inequality_op,
offset_scan_state,
number_of_blocks,
predicates...)

◆ previous_last_value

void __global__ const InputIterator const OutputIterator const InitialValueType const CompareFunction const BinaryFunction const LookbackScanState const size_t const size_t const size_t const ::rocprim::tuple<ResultType, bool>* const detail::previous_last_value
Initial value:
{
device_scan_by_key_kernel_impl<Exclusive, Config>(keys,
values,
output,
get_input_value(initial_value),
compare,
scan_op,
scan_state,
size,
starting_block,
number_of_blocks,
previous_last_value)
ROCPRIM_HOST_DEVICE T get_input_value(const T value)
Used for unpacking a future_value, basically just a cast but its more explicit this way...
Definition: future_value.hpp:90

◆ reduce_op

ROCPRIM_KERNEL OutputIterator OffsetIterator OffsetIterator BinaryFunction detail::reduce_op
Initial value:
{
block_reduce_kernel_impl<WithInitialValue, Config, ResultType>(
input, size, output, initial_value, reduce_op
)

◆ scan_op

ROCPRIM_KERNEL OutputIterator OffsetIterator OffsetIterator InitValueType BinaryFunction detail::scan_op
Initial value:
{
single_scan_kernel_impl<Exclusive, Config>(input,
size,
get_input_value(initial_value),
output,
scan_op)
ROCPRIM_HOST_DEVICE T get_input_value(const T value)
Used for unpacking a future_value, basically just a cast but its more explicit this way...
Definition: future_value.hpp:90

◆ sorted_block_size

ROCPRIM_KERNEL const OffsetT const unsigned int OffsetT const CompareOpT const OffsetT detail::sorted_block_size
Initial value:
{
static constexpr merge_sort_block_merge_config_params params = device_params<Config>()
Definition: test_device_binary_search.cpp:37

◆ starting_block

void __global__ const InputIterator const OutputIterator const InitialValueType const CompareFunction const BinaryFunction const LookbackScanState const size_t const size_t detail::starting_block
Initial value:
{
adjacent_difference_kernel_impl<Config, InPlace, Right>(
input, output, size, op, previous_values, starting_block)

◆ transform_op

ROCPRIM_KERNEL const size_t OutputIterator UnaryFunction detail::transform_op
Initial value:
{
transform_kernel_impl<device_params<Config>().kernel_config.block_size,
device_params<Config>().kernel_config.items_per_thread,
ResultType>(input, size, output, transform_op)
static constexpr unsigned int block_size
Number of threads in a block.
Definition: config_types.hpp:89
Definition: test_device_histogram.cpp:94
Configuration of particular kernels launched by device-level operation.
Definition: config_types.hpp:84