---
id: pr-cccl-cub-3588
repo: NVIDIA/cccl
pr: 3588
title: Function-like macros for FP6/BF16 macros
author: fbusato
date: '2025-02-04'
url: https://github.com/NVIDIA/cccl/pull/3588
source_category: upstream-code
architectures:
- sm100
tags:
- fp8
techniques: []
hardware_features:
- fp8
kernel_types: []
languages: []
captured_at: '2026-05-16'
status: merged
merge_sha: 56d5803c2fc4186f13f3178dbe61465e35298495
inclusion_reason: Search-matched CUDA kernel optimization PR; materialize diff/source before synthesis.
changed_paths:
- c2h/generators.cu
- c2h/include/c2h/extended_types.h
- c2h/include/c2h/generators.h
- cmake/header_test.cu.in
- cub/cmake/CubHeaderTesting.cmake
- cub/cub/agent/agent_sub_warp_merge_sort.cuh
- cub/cub/device/dispatch/dispatch_histogram.cuh
- cub/cub/thread/thread_operators.cuh
- cub/cub/thread/thread_reduce.cuh
- cub/cub/thread/thread_search.cuh
- cub/cub/util_type.cuh
- cub/test/catch2_test_block_radix_sort.cu
- docs/cccl_development/macro.rst
- libcudacxx/include/cuda/std/__cccl/extended_data_types.h
- libcudacxx/include/cuda/std/__internal/features.h
- libcudacxx/include/cuda/std/__type_traits/is_extended_floating_point.h
- libcudacxx/include/cuda/std/limits
- libcudacxx/test/libcudacxx/libcxx/macros/extended_data_types.bf16.fail.cpp
- libcudacxx/test/libcudacxx/libcxx/macros/extended_data_types.fp16.fail.cpp
- libcudacxx/test/libcudacxx/libcxx/macros/extended_data_types.pass.cpp
- libcudacxx/test/libcudacxx/libcxx/utilities/meta/meta.unary/meta.unary.cat/is_floating_point.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/is_specialized.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/common.h
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/const_data_members.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/denorm_min.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/digits.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/digits10.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/epsilon.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_infinity.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_quiet_NaN.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_signaling_NaN.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/infinity.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/is_bounded.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/is_exact.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/is_iec559.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/is_integer.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/is_modulo.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/is_signed.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/max_digits10.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/max_exponent.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/max_exponent10.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/min_exponent.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/min_exponent10.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/quiet_NaN.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/radix.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/round_error.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/round_style.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/signaling_NaN.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/tinyness_before.pass.cpp
- libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp
- thrust/testing/cuda/sort.cu
- thrust/thrust/system/cuda/detail/sort.h
artifact_dir: evidence/pull-bundles/cccl-cub/gh-3588
head_ref_oid: b01f1acb61df1543b309fe8781730925ba6df2d8
---
# Function-like macros for FP6/BF16 macros

- Repository: `NVIDIA/cccl`
- PR: [3588](https://github.com/NVIDIA/cccl/pull/3588)
- Decision: `Search-matched CUDA kernel optimization PR; materialize diff/source before synthesis.`
- Reason: Search-matched CUDA kernel optimization PR; materialize diff/source before synthesis.

## Changed Paths

- `c2h/generators.cu`
- `c2h/include/c2h/extended_types.h`
- `c2h/include/c2h/generators.h`
- `cmake/header_test.cu.in`
- `cub/cmake/CubHeaderTesting.cmake`
- `cub/cub/agent/agent_sub_warp_merge_sort.cuh`
- `cub/cub/device/dispatch/dispatch_histogram.cuh`
- `cub/cub/thread/thread_operators.cuh`
- `cub/cub/thread/thread_reduce.cuh`
- `cub/cub/thread/thread_search.cuh`
- `cub/cub/util_type.cuh`
- `cub/test/catch2_test_block_radix_sort.cu`
- `docs/cccl_development/macro.rst`
- `libcudacxx/include/cuda/std/__cccl/extended_data_types.h`
- `libcudacxx/include/cuda/std/__internal/features.h`
- `libcudacxx/include/cuda/std/__type_traits/is_extended_floating_point.h`
- `libcudacxx/include/cuda/std/limits`
- `libcudacxx/test/libcudacxx/libcxx/macros/extended_data_types.bf16.fail.cpp`
- `libcudacxx/test/libcudacxx/libcxx/macros/extended_data_types.fp16.fail.cpp`
- `libcudacxx/test/libcudacxx/libcxx/macros/extended_data_types.pass.cpp`
- `libcudacxx/test/libcudacxx/libcxx/utilities/meta/meta.unary/meta.unary.cat/is_floating_point.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/is_specialized.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/common.h`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/const_data_members.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/denorm_min.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/digits.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/digits10.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/epsilon.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_infinity.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_quiet_NaN.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_signaling_NaN.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/infinity.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/is_bounded.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/is_exact.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/is_iec559.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/is_integer.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/is_modulo.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/is_signed.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/max_digits10.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/max_exponent.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/max_exponent10.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/min_exponent.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/min_exponent10.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/quiet_NaN.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/radix.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/round_error.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/round_style.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/signaling_NaN.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/tinyness_before.pass.cpp`
- `libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp`
- `thrust/testing/cuda/sort.cu`
- `thrust/thrust/system/cuda/detail/sort.h`

## Evidence Bundle

`evidence/pull-bundles/cccl-cub/gh-3588`
