21 #ifndef ROCPRIM_DEVICE_DETAIL_CONFIG_DEVICE_UPPER_BOUND_HPP_ 22 #define ROCPRIM_DEVICE_DETAIL_CONFIG_DEVICE_UPPER_BOUND_HPP_ 24 #include "../../../type_traits.hpp" 25 #include "../device_config_helper.hpp" 26 #include <type_traits> 36 BEGIN_ROCPRIM_NAMESPACE
41 template<
unsigned int arch,
class value_type,
class output_type,
class enable =
void>
46 template<
class value_type,
class output_type>
48 static_cast<unsigned int>(target_arch::gfx1030),
51 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
52 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
53 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
58 template<
class value_type,
class output_type>
60 static_cast<unsigned int>(target_arch::gfx1030),
63 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
64 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
65 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
70 template<
class value_type,
class output_type>
72 static_cast<unsigned int>(target_arch::gfx1030),
75 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
76 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
77 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
82 template<
class value_type,
class output_type>
84 static_cast<unsigned int>(target_arch::gfx1030),
87 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
88 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
93 template<
class value_type,
class output_type>
95 static_cast<unsigned int>(target_arch::gfx1030),
98 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
99 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
100 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
105 template<
class value_type,
class output_type>
107 static_cast<unsigned int>(target_arch::gfx1030),
110 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
111 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
112 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
117 template<
class value_type,
class output_type>
119 static_cast<unsigned int>(target_arch::gfx1030),
122 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
123 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
124 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
129 template<
class value_type,
class output_type>
131 static_cast<unsigned int>(target_arch::gfx1030),
134 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
135 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
140 template<
class value_type,
class output_type>
142 static_cast<unsigned int>(target_arch::gfx1030),
145 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
146 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 8)
151 template<
class value_type,
class output_type>
153 static_cast<unsigned int>(target_arch::gfx1030),
156 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
157 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 4)
162 template<
class value_type,
class output_type>
164 static_cast<unsigned int>(target_arch::gfx1030),
167 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
168 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 2)
173 template<
class value_type,
class output_type>
175 static_cast<unsigned int>(target_arch::gfx1030),
178 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
179 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 1))>>
180 : upper_bound_config<64, 4>
184 template<class value_type, class output_type>
185 struct default_upper_bound_config<
186 static_cast<unsigned int>(target_arch::gfx1030),
189 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
190 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
191 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
192 : upper_bound_config<256, 1>
196 template<class value_type, class output_type>
197 struct default_upper_bound_config<
198 static_cast<unsigned int>(target_arch::gfx1030),
201 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
202 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
203 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
204 : upper_bound_config<256, 1>
208 template<class value_type, class output_type>
209 struct default_upper_bound_config<
210 static_cast<unsigned int>(target_arch::gfx1030),
213 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
214 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
215 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
216 : upper_bound_config<256, 1>
220 template<class value_type, class output_type>
221 struct default_upper_bound_config<
222 static_cast<unsigned int>(target_arch::gfx1030),
225 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
226 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
227 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
231 template<class value_type, class output_type>
232 struct default_upper_bound_config<
233 static_cast<unsigned int>(target_arch::gfx1030),
236 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
237 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
238 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
239 : upper_bound_config<256, 1>
243 template<class value_type, class output_type>
244 struct default_upper_bound_config<
245 static_cast<unsigned int>(target_arch::gfx1030),
248 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
249 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
250 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
251 : upper_bound_config<256, 1>
255 template<class value_type, class output_type>
256 struct default_upper_bound_config<
257 static_cast<unsigned int>(target_arch::gfx1030),
260 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
261 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
262 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
263 : upper_bound_config<256, 1>
267 template<class value_type, class output_type>
268 struct default_upper_bound_config<
269 static_cast<unsigned int>(target_arch::gfx1030),
272 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
273 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
274 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
278 template<class value_type, class output_type>
279 struct default_upper_bound_config<
280 static_cast<unsigned int>(target_arch::gfx1030),
283 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
284 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
285 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
286 : upper_bound_config<128, 4>
290 template<class value_type, class output_type>
291 struct default_upper_bound_config<
292 static_cast<unsigned int>(target_arch::gfx1030),
295 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
296 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
297 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
298 : upper_bound_config<128, 4>
302 template<class value_type, class output_type>
303 struct default_upper_bound_config<
304 static_cast<unsigned int>(target_arch::gfx1030),
307 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
308 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
309 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
310 : upper_bound_config<128, 4>
314 template<class value_type, class output_type>
315 struct default_upper_bound_config<
316 static_cast<unsigned int>(target_arch::gfx1030),
319 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
320 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
321 && (sizeof(output_type) <= 1))>> : upper_bound_config<128, 4>
325 template<class value_type, class output_type>
326 struct default_upper_bound_config<
327 static_cast<unsigned int>(target_arch::gfx1030),
330 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
331 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 8)
332 && (sizeof(output_type) > 4))>> : upper_bound_config<128, 4>
336 template<class value_type, class output_type>
337 struct default_upper_bound_config<
338 static_cast<unsigned int>(target_arch::gfx1030),
341 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
342 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 4)
343 && (sizeof(output_type) > 2))>> : upper_bound_config<256, 4>
347 template<class value_type, class output_type>
348 struct default_upper_bound_config<
349 static_cast<unsigned int>(target_arch::gfx1030),
352 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
353 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 2)
354 && (sizeof(output_type) > 1))>> : upper_bound_config<128, 4>
358 template<class value_type, class output_type>
359 struct default_upper_bound_config<
360 static_cast<unsigned int>(target_arch::gfx1030),
363 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
364 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 1))>>
365 : upper_bound_config<128, 4>
369 template<class value_type, class output_type>
370 struct default_upper_bound_config<
371 static_cast<unsigned int>(target_arch::gfx1102),
374 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
375 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
376 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
377 : upper_bound_config<256, 2>
381 template<class value_type, class output_type>
382 struct default_upper_bound_config<
383 static_cast<unsigned int>(target_arch::gfx1102),
386 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
387 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
388 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
389 : upper_bound_config<256, 1>
393 template<class value_type, class output_type>
394 struct default_upper_bound_config<
395 static_cast<unsigned int>(target_arch::gfx1102),
398 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
399 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
400 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
401 : upper_bound_config<256, 1>
405 template<class value_type, class output_type>
406 struct default_upper_bound_config<
407 static_cast<unsigned int>(target_arch::gfx1102),
410 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
411 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
412 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
416 template<class value_type, class output_type>
417 struct default_upper_bound_config<
418 static_cast<unsigned int>(target_arch::gfx1102),
421 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
422 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
423 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
424 : upper_bound_config<256, 1>
428 template<class value_type, class output_type>
429 struct default_upper_bound_config<
430 static_cast<unsigned int>(target_arch::gfx1102),
433 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
434 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
435 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
436 : upper_bound_config<256, 1>
440 template<class value_type, class output_type>
441 struct default_upper_bound_config<
442 static_cast<unsigned int>(target_arch::gfx1102),
445 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
446 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
447 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
448 : upper_bound_config<256, 1>
452 template<class value_type, class output_type>
453 struct default_upper_bound_config<
454 static_cast<unsigned int>(target_arch::gfx1102),
457 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
458 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
459 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
463 template<class value_type, class output_type>
464 struct default_upper_bound_config<
465 static_cast<unsigned int>(target_arch::gfx1102),
468 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
469 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 8)
470 && (sizeof(output_type) > 4))>> : upper_bound_config<128, 8>
474 template<class value_type, class output_type>
475 struct default_upper_bound_config<
476 static_cast<unsigned int>(target_arch::gfx1102),
479 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
480 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 4)
481 && (sizeof(output_type) > 2))>> : upper_bound_config<256, 4>
485 template<class value_type, class output_type>
486 struct default_upper_bound_config<
487 static_cast<unsigned int>(target_arch::gfx1102),
490 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
491 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 2)
492 && (sizeof(output_type) > 1))>> : upper_bound_config<64, 4>
496 template<class value_type, class output_type>
497 struct default_upper_bound_config<
498 static_cast<unsigned int>(target_arch::gfx1102),
501 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
502 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 1))>>
503 : upper_bound_config<64, 4>
507 template<class value_type, class output_type>
508 struct default_upper_bound_config<
509 static_cast<unsigned int>(target_arch::gfx1102),
512 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
513 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
514 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
515 : upper_bound_config<256, 1>
519 template<class value_type, class output_type>
520 struct default_upper_bound_config<
521 static_cast<unsigned int>(target_arch::gfx1102),
524 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
525 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
526 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
527 : upper_bound_config<256, 1>
531 template<class value_type, class output_type>
532 struct default_upper_bound_config<
533 static_cast<unsigned int>(target_arch::gfx1102),
536 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
537 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
538 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
539 : upper_bound_config<256, 1>
543 template<class value_type, class output_type>
544 struct default_upper_bound_config<
545 static_cast<unsigned int>(target_arch::gfx1102),
548 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
549 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
550 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
554 template<class value_type, class output_type>
555 struct default_upper_bound_config<
556 static_cast<unsigned int>(target_arch::gfx1102),
559 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
560 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
561 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
562 : upper_bound_config<256, 1>
566 template<class value_type, class output_type>
567 struct default_upper_bound_config<
568 static_cast<unsigned int>(target_arch::gfx1102),
571 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
572 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
573 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
574 : upper_bound_config<256, 1>
578 template<class value_type, class output_type>
579 struct default_upper_bound_config<
580 static_cast<unsigned int>(target_arch::gfx1102),
583 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
584 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
585 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
586 : upper_bound_config<256, 1>
590 template<class value_type, class output_type>
591 struct default_upper_bound_config<
592 static_cast<unsigned int>(target_arch::gfx1102),
595 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
596 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
597 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
601 template<class value_type, class output_type>
602 struct default_upper_bound_config<
603 static_cast<unsigned int>(target_arch::gfx1102),
606 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
607 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
608 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
609 : upper_bound_config<64, 8>
613 template<class value_type, class output_type>
614 struct default_upper_bound_config<
615 static_cast<unsigned int>(target_arch::gfx1102),
618 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
619 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
620 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
621 : upper_bound_config<128, 8>
625 template<class value_type, class output_type>
626 struct default_upper_bound_config<
627 static_cast<unsigned int>(target_arch::gfx1102),
630 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
631 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
632 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
633 : upper_bound_config<128, 4>
637 template<class value_type, class output_type>
638 struct default_upper_bound_config<
639 static_cast<unsigned int>(target_arch::gfx1102),
642 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
643 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
644 && (sizeof(output_type) <= 1))>> : upper_bound_config<64, 4>
648 template<class value_type, class output_type>
649 struct default_upper_bound_config<
650 static_cast<unsigned int>(target_arch::gfx1102),
653 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
654 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 8)
655 && (sizeof(output_type) > 4))>> : upper_bound_config<256, 4>
659 template<class value_type, class output_type>
660 struct default_upper_bound_config<
661 static_cast<unsigned int>(target_arch::gfx1102),
664 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
665 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 4)
666 && (sizeof(output_type) > 2))>> : upper_bound_config<128, 4>
670 template<class value_type, class output_type>
671 struct default_upper_bound_config<
672 static_cast<unsigned int>(target_arch::gfx1102),
675 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
676 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 2)
677 && (sizeof(output_type) > 1))>> : upper_bound_config<64, 4>
681 template<class value_type, class output_type>
682 struct default_upper_bound_config<
683 static_cast<unsigned int>(target_arch::gfx1102),
686 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
687 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 1))>>
688 : upper_bound_config<64, 8>
692 template<class value_type, class output_type>
693 struct default_upper_bound_config<
694 static_cast<unsigned int>(target_arch::gfx900),
697 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
698 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
699 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
700 : upper_bound_config<256, 1>
704 template<class value_type, class output_type>
705 struct default_upper_bound_config<
706 static_cast<unsigned int>(target_arch::gfx900),
709 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
710 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
711 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
712 : upper_bound_config<256, 1>
716 template<class value_type, class output_type>
717 struct default_upper_bound_config<
718 static_cast<unsigned int>(target_arch::gfx900),
721 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
722 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
723 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
724 : upper_bound_config<256, 1>
728 template<class value_type, class output_type>
729 struct default_upper_bound_config<
730 static_cast<unsigned int>(target_arch::gfx900),
733 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
734 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
735 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
739 template<class value_type, class output_type>
740 struct default_upper_bound_config<
741 static_cast<unsigned int>(target_arch::gfx900),
744 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
745 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
746 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
747 : upper_bound_config<256, 1>
751 template<class value_type, class output_type>
752 struct default_upper_bound_config<
753 static_cast<unsigned int>(target_arch::gfx900),
756 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
757 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
758 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
759 : upper_bound_config<256, 1>
763 template<class value_type, class output_type>
764 struct default_upper_bound_config<
765 static_cast<unsigned int>(target_arch::gfx900),
768 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
769 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
770 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
771 : upper_bound_config<256, 1>
775 template<class value_type, class output_type>
776 struct default_upper_bound_config<
777 static_cast<unsigned int>(target_arch::gfx900),
780 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
781 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
782 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
786 template<class value_type, class output_type>
787 struct default_upper_bound_config<
788 static_cast<unsigned int>(target_arch::gfx900),
791 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
792 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 8)
793 && (sizeof(output_type) > 4))>> : upper_bound_config<256, 1>
797 template<class value_type, class output_type>
798 struct default_upper_bound_config<
799 static_cast<unsigned int>(target_arch::gfx900),
802 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
803 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 4)
804 && (sizeof(output_type) > 2))>> : upper_bound_config<256, 1>
808 template<class value_type, class output_type>
809 struct default_upper_bound_config<
810 static_cast<unsigned int>(target_arch::gfx900),
813 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
814 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 2)
815 && (sizeof(output_type) > 1))>> : upper_bound_config<256, 1>
819 template<class value_type, class output_type>
820 struct default_upper_bound_config<
821 static_cast<unsigned int>(target_arch::gfx900),
824 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
825 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 1))>>
826 : upper_bound_config<256, 1>
830 template<class value_type, class output_type>
831 struct default_upper_bound_config<
832 static_cast<unsigned int>(target_arch::gfx900),
835 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
836 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
837 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
838 : upper_bound_config<256, 1>
842 template<class value_type, class output_type>
843 struct default_upper_bound_config<
844 static_cast<unsigned int>(target_arch::gfx900),
847 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
848 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
849 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
850 : upper_bound_config<256, 1>
854 template<class value_type, class output_type>
855 struct default_upper_bound_config<
856 static_cast<unsigned int>(target_arch::gfx900),
859 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
860 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
861 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
862 : upper_bound_config<256, 1>
866 template<class value_type, class output_type>
867 struct default_upper_bound_config<
868 static_cast<unsigned int>(target_arch::gfx900),
871 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
872 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
873 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
877 template<class value_type, class output_type>
878 struct default_upper_bound_config<
879 static_cast<unsigned int>(target_arch::gfx900),
882 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
883 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
884 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
885 : upper_bound_config<256, 1>
889 template<class value_type, class output_type>
890 struct default_upper_bound_config<
891 static_cast<unsigned int>(target_arch::gfx900),
894 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
895 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
896 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
897 : upper_bound_config<256, 1>
901 template<class value_type, class output_type>
902 struct default_upper_bound_config<
903 static_cast<unsigned int>(target_arch::gfx900),
906 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
907 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
908 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
909 : upper_bound_config<256, 1>
913 template<class value_type, class output_type>
914 struct default_upper_bound_config<
915 static_cast<unsigned int>(target_arch::gfx900),
918 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
919 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
920 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
924 template<class value_type, class output_type>
925 struct default_upper_bound_config<
926 static_cast<unsigned int>(target_arch::gfx900),
929 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
930 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
931 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
932 : upper_bound_config<256, 1>
936 template<class value_type, class output_type>
937 struct default_upper_bound_config<
938 static_cast<unsigned int>(target_arch::gfx900),
941 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
942 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
943 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
944 : upper_bound_config<256, 1>
948 template<class value_type, class output_type>
949 struct default_upper_bound_config<
950 static_cast<unsigned int>(target_arch::gfx900),
953 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
954 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
955 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
956 : upper_bound_config<256, 1>
960 template<class value_type, class output_type>
961 struct default_upper_bound_config<
962 static_cast<unsigned int>(target_arch::gfx900),
965 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
966 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
967 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
971 template<class value_type, class output_type>
972 struct default_upper_bound_config<
973 static_cast<unsigned int>(target_arch::gfx900),
976 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
977 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 8)
978 && (sizeof(output_type) > 4))>> : upper_bound_config<256, 1>
982 template<class value_type, class output_type>
983 struct default_upper_bound_config<
984 static_cast<unsigned int>(target_arch::gfx900),
987 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
988 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 4)
989 && (sizeof(output_type) > 2))>> : upper_bound_config<256, 1>
993 template<class value_type, class output_type>
994 struct default_upper_bound_config<
995 static_cast<unsigned int>(target_arch::gfx900),
998 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
999 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 2)
1000 && (sizeof(output_type) > 1))>> : upper_bound_config<256, 1>
1004 template<class value_type, class output_type>
1005 struct default_upper_bound_config<
1006 static_cast<unsigned int>(target_arch::gfx900),
1009 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1010 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 1))>>
1011 : upper_bound_config<256, 1>
1015 template<class value_type, class output_type>
1016 struct default_upper_bound_config<
1017 static_cast<unsigned int>(target_arch::gfx906),
1020 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1021 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1022 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1023 : upper_bound_config<256, 1>
1027 template<class value_type, class output_type>
1028 struct default_upper_bound_config<
1029 static_cast<unsigned int>(target_arch::gfx906),
1032 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1033 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1034 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1035 : upper_bound_config<256, 1>
1039 template<class value_type, class output_type>
1040 struct default_upper_bound_config<
1041 static_cast<unsigned int>(target_arch::gfx906),
1044 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1045 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1046 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1047 : upper_bound_config<256, 1>
1051 template<class value_type, class output_type>
1052 struct default_upper_bound_config<
1053 static_cast<unsigned int>(target_arch::gfx906),
1056 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1057 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1058 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
1062 template<class value_type, class output_type>
1063 struct default_upper_bound_config<
1064 static_cast<unsigned int>(target_arch::gfx906),
1067 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1068 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1069 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1070 : upper_bound_config<256, 1>
1074 template<class value_type, class output_type>
1075 struct default_upper_bound_config<
1076 static_cast<unsigned int>(target_arch::gfx906),
1079 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1080 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1081 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1082 : upper_bound_config<256, 1>
1086 template<class value_type, class output_type>
1087 struct default_upper_bound_config<
1088 static_cast<unsigned int>(target_arch::gfx906),
1091 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1092 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1093 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1094 : upper_bound_config<256, 1>
1098 template<class value_type, class output_type>
1099 struct default_upper_bound_config<
1100 static_cast<unsigned int>(target_arch::gfx906),
1103 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1104 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1105 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
1109 template<class value_type, class output_type>
1110 struct default_upper_bound_config<
1111 static_cast<unsigned int>(target_arch::gfx906),
1114 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1115 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 8)
1116 && (sizeof(output_type) > 4))>> : upper_bound_config<256, 4>
1120 template<class value_type, class output_type>
1121 struct default_upper_bound_config<
1122 static_cast<unsigned int>(target_arch::gfx906),
1125 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1126 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 4)
1127 && (sizeof(output_type) > 2))>> : upper_bound_config<256, 4>
1131 template<class value_type, class output_type>
1132 struct default_upper_bound_config<
1133 static_cast<unsigned int>(target_arch::gfx906),
1136 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1137 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 2)
1138 && (sizeof(output_type) > 1))>> : upper_bound_config<256, 4>
1142 template<class value_type, class output_type>
1143 struct default_upper_bound_config<
1144 static_cast<unsigned int>(target_arch::gfx906),
1147 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1148 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 1))>>
1149 : upper_bound_config<256, 4>
1153 template<class value_type, class output_type>
1154 struct default_upper_bound_config<
1155 static_cast<unsigned int>(target_arch::gfx906),
1158 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1159 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1160 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1161 : upper_bound_config<256, 1>
1165 template<class value_type, class output_type>
1166 struct default_upper_bound_config<
1167 static_cast<unsigned int>(target_arch::gfx906),
1170 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1171 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1172 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1173 : upper_bound_config<256, 1>
1177 template<class value_type, class output_type>
1178 struct default_upper_bound_config<
1179 static_cast<unsigned int>(target_arch::gfx906),
1182 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1183 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1184 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1185 : upper_bound_config<256, 1>
1189 template<class value_type, class output_type>
1190 struct default_upper_bound_config<
1191 static_cast<unsigned int>(target_arch::gfx906),
1194 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1195 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1196 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
1200 template<class value_type, class output_type>
1201 struct default_upper_bound_config<
1202 static_cast<unsigned int>(target_arch::gfx906),
1205 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1206 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1207 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1208 : upper_bound_config<256, 1>
1212 template<class value_type, class output_type>
1213 struct default_upper_bound_config<
1214 static_cast<unsigned int>(target_arch::gfx906),
1217 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1218 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1219 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1220 : upper_bound_config<256, 1>
1224 template<class value_type, class output_type>
1225 struct default_upper_bound_config<
1226 static_cast<unsigned int>(target_arch::gfx906),
1229 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1230 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1231 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1232 : upper_bound_config<256, 1>
1236 template<class value_type, class output_type>
1237 struct default_upper_bound_config<
1238 static_cast<unsigned int>(target_arch::gfx906),
1241 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1242 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1243 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
1247 template<class value_type, class output_type>
1248 struct default_upper_bound_config<
1249 static_cast<unsigned int>(target_arch::gfx906),
1252 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1253 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
1254 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1255 : upper_bound_config<256, 4>
1259 template<class value_type, class output_type>
1260 struct default_upper_bound_config<
1261 static_cast<unsigned int>(target_arch::gfx906),
1264 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1265 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
1266 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1267 : upper_bound_config<256, 4>
1271 template<class value_type, class output_type>
1272 struct default_upper_bound_config<
1273 static_cast<unsigned int>(target_arch::gfx906),
1276 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1277 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
1278 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1279 : upper_bound_config<256, 4>
1283 template<class value_type, class output_type>
1284 struct default_upper_bound_config<
1285 static_cast<unsigned int>(target_arch::gfx906),
1288 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1289 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
1290 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 4>
1294 template<class value_type, class output_type>
1295 struct default_upper_bound_config<
1296 static_cast<unsigned int>(target_arch::gfx906),
1299 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1300 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 8)
1301 && (sizeof(output_type) > 4))>> : upper_bound_config<256, 4>
1305 template<class value_type, class output_type>
1306 struct default_upper_bound_config<
1307 static_cast<unsigned int>(target_arch::gfx906),
1310 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1311 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 4)
1312 && (sizeof(output_type) > 2))>> : upper_bound_config<256, 4>
1316 template<class value_type, class output_type>
1317 struct default_upper_bound_config<
1318 static_cast<unsigned int>(target_arch::gfx906),
1321 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1322 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 2)
1323 && (sizeof(output_type) > 1))>> : upper_bound_config<256, 4>
1327 template<class value_type, class output_type>
1328 struct default_upper_bound_config<
1329 static_cast<unsigned int>(target_arch::gfx906),
1332 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1333 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 1))>>
1334 : upper_bound_config<256, 4>
1338 template<class value_type, class output_type>
1339 struct default_upper_bound_config<
1340 static_cast<unsigned int>(target_arch::gfx908),
1343 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1344 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1345 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1346 : upper_bound_config<256, 8>
1350 template<class value_type, class output_type>
1351 struct default_upper_bound_config<
1352 static_cast<unsigned int>(target_arch::gfx908),
1355 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1356 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1357 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1358 : upper_bound_config<64, 8>
1362 template<class value_type, class output_type>
1363 struct default_upper_bound_config<
1364 static_cast<unsigned int>(target_arch::gfx908),
1367 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1368 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1369 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1370 : upper_bound_config<256, 16>
1374 template<class value_type, class output_type>
1375 struct default_upper_bound_config<
1376 static_cast<unsigned int>(target_arch::gfx908),
1379 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1380 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1381 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
1385 template<class value_type, class output_type>
1386 struct default_upper_bound_config<
1387 static_cast<unsigned int>(target_arch::gfx908),
1390 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1391 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1392 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1393 : upper_bound_config<256, 1>
1397 template<class value_type, class output_type>
1398 struct default_upper_bound_config<
1399 static_cast<unsigned int>(target_arch::gfx908),
1402 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1403 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1404 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1405 : upper_bound_config<256, 1>
1409 template<class value_type, class output_type>
1410 struct default_upper_bound_config<
1411 static_cast<unsigned int>(target_arch::gfx908),
1414 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1415 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1416 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1417 : upper_bound_config<256, 1>
1421 template<class value_type, class output_type>
1422 struct default_upper_bound_config<
1423 static_cast<unsigned int>(target_arch::gfx908),
1426 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1427 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1428 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
1432 template<class value_type, class output_type>
1433 struct default_upper_bound_config<
1434 static_cast<unsigned int>(target_arch::gfx908),
1437 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1438 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 8)
1439 && (sizeof(output_type) > 4))>> : upper_bound_config<64, 4>
1443 template<class value_type, class output_type>
1444 struct default_upper_bound_config<
1445 static_cast<unsigned int>(target_arch::gfx908),
1448 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1449 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 4)
1450 && (sizeof(output_type) > 2))>> : upper_bound_config<64, 4>
1454 template<class value_type, class output_type>
1455 struct default_upper_bound_config<
1456 static_cast<unsigned int>(target_arch::gfx908),
1459 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1460 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 2)
1461 && (sizeof(output_type) > 1))>> : upper_bound_config<64, 4>
1465 template<class value_type, class output_type>
1466 struct default_upper_bound_config<
1467 static_cast<unsigned int>(target_arch::gfx908),
1470 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1471 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 1))>>
1472 : upper_bound_config<64, 4>
1476 template<class value_type, class output_type>
1477 struct default_upper_bound_config<
1478 static_cast<unsigned int>(target_arch::gfx908),
1481 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1482 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1483 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1484 : upper_bound_config<128, 1>
1488 template<class value_type, class output_type>
1489 struct default_upper_bound_config<
1490 static_cast<unsigned int>(target_arch::gfx908),
1493 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1494 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1495 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1496 : upper_bound_config<64, 1>
1500 template<class value_type, class output_type>
1501 struct default_upper_bound_config<
1502 static_cast<unsigned int>(target_arch::gfx908),
1505 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1506 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1507 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1508 : upper_bound_config<256, 16>
1512 template<class value_type, class output_type>
1513 struct default_upper_bound_config<
1514 static_cast<unsigned int>(target_arch::gfx908),
1517 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1518 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1519 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
1523 template<class value_type, class output_type>
1524 struct default_upper_bound_config<
1525 static_cast<unsigned int>(target_arch::gfx908),
1528 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1529 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1530 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1531 : upper_bound_config<256, 1>
1535 template<class value_type, class output_type>
1536 struct default_upper_bound_config<
1537 static_cast<unsigned int>(target_arch::gfx908),
1540 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1541 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1542 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1543 : upper_bound_config<256, 1>
1547 template<class value_type, class output_type>
1548 struct default_upper_bound_config<
1549 static_cast<unsigned int>(target_arch::gfx908),
1552 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1553 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1554 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1555 : upper_bound_config<256, 1>
1559 template<class value_type, class output_type>
1560 struct default_upper_bound_config<
1561 static_cast<unsigned int>(target_arch::gfx908),
1564 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1565 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1566 && (sizeof(output_type) <= 1))>> : upper_bound_config<128, 1>
1570 template<class value_type, class output_type>
1571 struct default_upper_bound_config<
1572 static_cast<unsigned int>(target_arch::gfx908),
1575 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1576 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
1577 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1578 : upper_bound_config<128, 1>
1582 template<class value_type, class output_type>
1583 struct default_upper_bound_config<
1584 static_cast<unsigned int>(target_arch::gfx908),
1587 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1588 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
1589 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1590 : upper_bound_config<128, 1>
1594 template<class value_type, class output_type>
1595 struct default_upper_bound_config<
1596 static_cast<unsigned int>(target_arch::gfx908),
1599 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1600 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
1601 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1602 : upper_bound_config<64, 4>
1606 template<class value_type, class output_type>
1607 struct default_upper_bound_config<
1608 static_cast<unsigned int>(target_arch::gfx908),
1611 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1612 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
1613 && (sizeof(output_type) <= 1))>> : upper_bound_config<64, 4>
1617 template<class value_type, class output_type>
1618 struct default_upper_bound_config<
1619 static_cast<unsigned int>(target_arch::gfx908),
1622 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1623 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 8)
1624 && (sizeof(output_type) > 4))>> : upper_bound_config<128, 1>
1628 template<class value_type, class output_type>
1629 struct default_upper_bound_config<
1630 static_cast<unsigned int>(target_arch::gfx908),
1633 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1634 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 4)
1635 && (sizeof(output_type) > 2))>> : upper_bound_config<128, 1>
1639 template<class value_type, class output_type>
1640 struct default_upper_bound_config<
1641 static_cast<unsigned int>(target_arch::gfx908),
1644 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1645 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 2)
1646 && (sizeof(output_type) > 1))>> : upper_bound_config<128, 1>
1650 template<class value_type, class output_type>
1651 struct default_upper_bound_config<
1652 static_cast<unsigned int>(target_arch::gfx908),
1655 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1656 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 1))>>
1657 : upper_bound_config<256, 4>
1661 template<class value_type, class output_type>
1662 struct default_upper_bound_config<
1663 static_cast<unsigned int>(target_arch::unknown),
1666 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1667 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1668 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1669 : upper_bound_config<256, 8>
1673 template<class value_type, class output_type>
1674 struct default_upper_bound_config<
1675 static_cast<unsigned int>(target_arch::unknown),
1678 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1679 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1680 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1681 : upper_bound_config<64, 8>
1685 template<class value_type, class output_type>
1686 struct default_upper_bound_config<
1687 static_cast<unsigned int>(target_arch::unknown),
1690 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1691 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1692 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1693 : upper_bound_config<256, 16>
1697 template<class value_type, class output_type>
1698 struct default_upper_bound_config<
1699 static_cast<unsigned int>(target_arch::unknown),
1702 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1703 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1704 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
1708 template<class value_type, class output_type>
1709 struct default_upper_bound_config<
1710 static_cast<unsigned int>(target_arch::unknown),
1713 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1714 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1715 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1716 : upper_bound_config<256, 1>
1720 template<class value_type, class output_type>
1721 struct default_upper_bound_config<
1722 static_cast<unsigned int>(target_arch::unknown),
1725 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1726 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1727 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1728 : upper_bound_config<256, 1>
1732 template<class value_type, class output_type>
1733 struct default_upper_bound_config<
1734 static_cast<unsigned int>(target_arch::unknown),
1737 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1738 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1739 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1740 : upper_bound_config<256, 1>
1744 template<class value_type, class output_type>
1745 struct default_upper_bound_config<
1746 static_cast<unsigned int>(target_arch::unknown),
1749 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1750 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1751 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
1755 template<class value_type, class output_type>
1756 struct default_upper_bound_config<
1757 static_cast<unsigned int>(target_arch::unknown),
1760 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1761 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 8)
1762 && (sizeof(output_type) > 4))>> : upper_bound_config<64, 4>
1766 template<class value_type, class output_type>
1767 struct default_upper_bound_config<
1768 static_cast<unsigned int>(target_arch::unknown),
1771 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1772 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 4)
1773 && (sizeof(output_type) > 2))>> : upper_bound_config<64, 4>
1777 template<class value_type, class output_type>
1778 struct default_upper_bound_config<
1779 static_cast<unsigned int>(target_arch::unknown),
1782 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1783 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 2)
1784 && (sizeof(output_type) > 1))>> : upper_bound_config<64, 4>
1788 template<class value_type, class output_type>
1789 struct default_upper_bound_config<
1790 static_cast<unsigned int>(target_arch::unknown),
1793 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1794 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 1))>>
1795 : upper_bound_config<64, 4>
1799 template<class value_type, class output_type>
1800 struct default_upper_bound_config<
1801 static_cast<unsigned int>(target_arch::unknown),
1804 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1805 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1806 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1807 : upper_bound_config<128, 1>
1811 template<class value_type, class output_type>
1812 struct default_upper_bound_config<
1813 static_cast<unsigned int>(target_arch::unknown),
1816 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1817 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1818 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1819 : upper_bound_config<64, 1>
1823 template<class value_type, class output_type>
1824 struct default_upper_bound_config<
1825 static_cast<unsigned int>(target_arch::unknown),
1828 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1829 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1830 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1831 : upper_bound_config<256, 16>
1835 template<class value_type, class output_type>
1836 struct default_upper_bound_config<
1837 static_cast<unsigned int>(target_arch::unknown),
1840 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1841 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1842 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
1846 template<class value_type, class output_type>
1847 struct default_upper_bound_config<
1848 static_cast<unsigned int>(target_arch::unknown),
1851 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1852 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1853 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1854 : upper_bound_config<256, 1>
1858 template<class value_type, class output_type>
1859 struct default_upper_bound_config<
1860 static_cast<unsigned int>(target_arch::unknown),
1863 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1864 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1865 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1866 : upper_bound_config<256, 1>
1870 template<class value_type, class output_type>
1871 struct default_upper_bound_config<
1872 static_cast<unsigned int>(target_arch::unknown),
1875 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1876 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1877 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1878 : upper_bound_config<256, 1>
1882 template<class value_type, class output_type>
1883 struct default_upper_bound_config<
1884 static_cast<unsigned int>(target_arch::unknown),
1887 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1888 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
1889 && (sizeof(output_type) <= 1))>> : upper_bound_config<128, 1>
1893 template<class value_type, class output_type>
1894 struct default_upper_bound_config<
1895 static_cast<unsigned int>(target_arch::unknown),
1898 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1899 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
1900 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1901 : upper_bound_config<128, 1>
1905 template<class value_type, class output_type>
1906 struct default_upper_bound_config<
1907 static_cast<unsigned int>(target_arch::unknown),
1910 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1911 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
1912 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
1913 : upper_bound_config<128, 1>
1917 template<class value_type, class output_type>
1918 struct default_upper_bound_config<
1919 static_cast<unsigned int>(target_arch::unknown),
1922 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1923 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
1924 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
1925 : upper_bound_config<64, 4>
1929 template<class value_type, class output_type>
1930 struct default_upper_bound_config<
1931 static_cast<unsigned int>(target_arch::unknown),
1934 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1935 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
1936 && (sizeof(output_type) <= 1))>> : upper_bound_config<64, 4>
1940 template<class value_type, class output_type>
1941 struct default_upper_bound_config<
1942 static_cast<unsigned int>(target_arch::unknown),
1945 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1946 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 8)
1947 && (sizeof(output_type) > 4))>> : upper_bound_config<128, 1>
1951 template<class value_type, class output_type>
1952 struct default_upper_bound_config<
1953 static_cast<unsigned int>(target_arch::unknown),
1956 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1957 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 4)
1958 && (sizeof(output_type) > 2))>> : upper_bound_config<128, 1>
1962 template<class value_type, class output_type>
1963 struct default_upper_bound_config<
1964 static_cast<unsigned int>(target_arch::unknown),
1967 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1968 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 2)
1969 && (sizeof(output_type) > 1))>> : upper_bound_config<128, 1>
1973 template<class value_type, class output_type>
1974 struct default_upper_bound_config<
1975 static_cast<unsigned int>(target_arch::unknown),
1978 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
1979 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 1))>>
1980 : upper_bound_config<256, 4>
1984 template<class value_type, class output_type>
1985 struct default_upper_bound_config<
1986 static_cast<unsigned int>(target_arch::gfx90a),
1989 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
1990 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
1991 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
1992 : upper_bound_config<256, 8>
1996 template<class value_type, class output_type>
1997 struct default_upper_bound_config<
1998 static_cast<unsigned int>(target_arch::gfx90a),
2001 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
2002 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
2003 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
2004 : upper_bound_config<64, 8>
2008 template<class value_type, class output_type>
2009 struct default_upper_bound_config<
2010 static_cast<unsigned int>(target_arch::gfx90a),
2013 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
2014 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
2015 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
2016 : upper_bound_config<256, 16>
2020 template<class value_type, class output_type>
2021 struct default_upper_bound_config<
2022 static_cast<unsigned int>(target_arch::gfx90a),
2025 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
2026 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
2027 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
2031 template<class value_type, class output_type>
2032 struct default_upper_bound_config<
2033 static_cast<unsigned int>(target_arch::gfx90a),
2036 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
2037 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
2038 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
2039 : upper_bound_config<256, 1>
2043 template<class value_type, class output_type>
2044 struct default_upper_bound_config<
2045 static_cast<unsigned int>(target_arch::gfx90a),
2048 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
2049 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
2050 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
2051 : upper_bound_config<256, 1>
2055 template<class value_type, class output_type>
2056 struct default_upper_bound_config<
2057 static_cast<unsigned int>(target_arch::gfx90a),
2060 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
2061 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
2062 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
2063 : upper_bound_config<256, 1>
2067 template<class value_type, class output_type>
2068 struct default_upper_bound_config<
2069 static_cast<unsigned int>(target_arch::gfx90a),
2072 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
2073 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
2074 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
2078 template<class value_type, class output_type>
2079 struct default_upper_bound_config<
2080 static_cast<unsigned int>(target_arch::gfx90a),
2083 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
2084 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 8)
2085 && (sizeof(output_type) > 4))>> : upper_bound_config<64, 4>
2089 template<class value_type, class output_type>
2090 struct default_upper_bound_config<
2091 static_cast<unsigned int>(target_arch::gfx90a),
2094 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
2095 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 4)
2096 && (sizeof(output_type) > 2))>> : upper_bound_config<64, 4>
2100 template<class value_type, class output_type>
2101 struct default_upper_bound_config<
2102 static_cast<unsigned int>(target_arch::gfx90a),
2105 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
2106 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 2)
2107 && (sizeof(output_type) > 1))>> : upper_bound_config<64, 4>
2111 template<class value_type, class output_type>
2112 struct default_upper_bound_config<
2113 static_cast<unsigned int>(target_arch::gfx90a),
2116 std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
2117 && (sizeof(value_type) <= 2) && (sizeof(output_type) <= 1))>>
2118 : upper_bound_config<64, 4>
2122 template<class value_type, class output_type>
2123 struct default_upper_bound_config<
2124 static_cast<unsigned int>(target_arch::gfx90a),
2127 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2128 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
2129 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
2130 : upper_bound_config<128, 1>
2134 template<class value_type, class output_type>
2135 struct default_upper_bound_config<
2136 static_cast<unsigned int>(target_arch::gfx90a),
2139 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2140 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
2141 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
2142 : upper_bound_config<64, 1>
2146 template<class value_type, class output_type>
2147 struct default_upper_bound_config<
2148 static_cast<unsigned int>(target_arch::gfx90a),
2151 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2152 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
2153 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
2154 : upper_bound_config<256, 16>
2158 template<class value_type, class output_type>
2159 struct default_upper_bound_config<
2160 static_cast<unsigned int>(target_arch::gfx90a),
2163 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2164 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4)
2165 && (sizeof(output_type) <= 1))>> : upper_bound_config<256, 1>
2169 template<class value_type, class output_type>
2170 struct default_upper_bound_config<
2171 static_cast<unsigned int>(target_arch::gfx90a),
2174 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2175 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
2176 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
2177 : upper_bound_config<256, 1>
2181 template<class value_type, class output_type>
2182 struct default_upper_bound_config<
2183 static_cast<unsigned int>(target_arch::gfx90a),
2186 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2187 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
2188 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
2189 : upper_bound_config<256, 1>
2193 template<class value_type, class output_type>
2194 struct default_upper_bound_config<
2195 static_cast<unsigned int>(target_arch::gfx90a),
2198 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2199 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
2200 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
2201 : upper_bound_config<256, 1>
2205 template<class value_type, class output_type>
2206 struct default_upper_bound_config<
2207 static_cast<unsigned int>(target_arch::gfx90a),
2210 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2211 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2)
2212 && (sizeof(output_type) <= 1))>> : upper_bound_config<128, 1>
2216 template<class value_type, class output_type>
2217 struct default_upper_bound_config<
2218 static_cast<unsigned int>(target_arch::gfx90a),
2221 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2222 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
2223 && (sizeof(output_type) <= 8) && (sizeof(output_type) > 4))>>
2224 : upper_bound_config<128, 1>
2228 template<class value_type, class output_type>
2229 struct default_upper_bound_config<
2230 static_cast<unsigned int>(target_arch::gfx90a),
2233 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2234 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
2235 && (sizeof(output_type) <= 4) && (sizeof(output_type) > 2))>>
2236 : upper_bound_config<128, 1>
2240 template<class value_type, class output_type>
2241 struct default_upper_bound_config<
2242 static_cast<unsigned int>(target_arch::gfx90a),
2245 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2246 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
2247 && (sizeof(output_type) <= 2) && (sizeof(output_type) > 1))>>
2248 : upper_bound_config<64, 4>
2252 template<class value_type, class output_type>
2253 struct default_upper_bound_config<
2254 static_cast<unsigned int>(target_arch::gfx90a),
2257 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2258 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1)
2259 && (sizeof(output_type) <= 1))>> : upper_bound_config<64, 4>
2263 template<class value_type, class output_type>
2264 struct default_upper_bound_config<
2265 static_cast<unsigned int>(target_arch::gfx90a),
2268 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2269 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 8)
2270 && (sizeof(output_type) > 4))>> : upper_bound_config<128, 1>
2274 template<class value_type, class output_type>
2275 struct default_upper_bound_config<
2276 static_cast<unsigned int>(target_arch::gfx90a),
2279 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2280 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 4)
2281 && (sizeof(output_type) > 2))>> : upper_bound_config<128, 1>
2285 template<class value_type, class output_type>
2286 struct default_upper_bound_config<
2287 static_cast<unsigned int>(target_arch::gfx90a),
2290 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2291 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 2)
2292 && (sizeof(output_type) > 1))>> : upper_bound_config<128, 1>
2296 template<class value_type, class output_type>
2297 struct default_upper_bound_config<
2298 static_cast<unsigned int>(target_arch::gfx90a),
2301 std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
2302 && (sizeof(value_type) <= 1) && (sizeof(output_type) <= 1))>>
2303 : upper_bound_config<256, 4>
2308 END_ROCPRIM_NAMESPACE
Definition: device_upper_bound.hpp:42
Deprecated: Configuration of device-level scan primitives.
Definition: block_histogram.hpp:62
Definition: device_config_helper.hpp:598
Configuration for the device-level upper bound operation.
Definition: device_config_helper.hpp:581