Skip to content

Commit af1e56a

Browse files
fbusatodavebayer
authored andcommitted
Fix broken _CCCL_BUILTIN_ASSUME macro (NVIDIA#3314)
* add compiler-specific path * fix device code path * add _CCC_ASSUME
1 parent 330e976 commit af1e56a

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

libcudacxx/include/cuda/std/__cccl/attributes.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,4 +134,10 @@
134134
# define _CCCL_RESTRICT __restrict__
135135
#endif // ^^^ !_CCCL_COMPILER(MSVC) ^^^
136136

137+
#if _CCCL_HAS_CPP_ATTRIBUTE(assume)
138+
# define _CCCL_ASSUME(...) [[assume(__VA_ARGS__)]]
139+
#else // ^^^ _CCCL_COMPILER(MSVC) ^^^ / vvv !_CCCL_COMPILER(MSVC) vvv
140+
# define _CCCL_ASSUME(...) _CCCL_BUILTIN_ASSUME(__VA_ARGS__)
141+
#endif // ^^^ !_CCCL_COMPILER(MSVC) ^^^
142+
137143
#endif // __CCCL_ATTRIBUTES_H

libcudacxx/include/cuda/std/__cccl/builtin.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,14 @@
101101
# define _CCCL_BUILTIN_ADDRESSOF(...) __builtin_addressof(__VA_ARGS__)
102102
#endif // _CCCL_CHECK_BUILTIN(builtin_addressof)
103103

104-
#if _CCCL_CHECK_BUILTIN(builtin_assume)
104+
#if _CCCL_CHECK_BUILTIN(builtin_assume) || _CCCL_COMPILER(CLANG) || _CCCL_COMPILER(NVHPC)
105105
# define _CCCL_BUILTIN_ASSUME(...) __builtin_assume(__VA_ARGS__)
106+
#elif _CCCL_COMPILER(GCC, >=, 13)
107+
# define _CCCL_BUILTIN_ASSUME(...) \
108+
NV_IF_ELSE_TARGET(NV_IS_DEVICE, (__builtin_assume(__VA_ARGS__);), (__attribute__((__assume__(__VA_ARGS__)));))
109+
#elif _CCCL_COMPILER(MSVC)
110+
# define _CCCL_BUILTIN_ASSUME(...) \
111+
NV_IF_ELSE_TARGET(NV_IS_DEVICE, (__builtin_assume(__VA_ARGS__);), (__assume(__VA_ARGS__);))
106112
#endif // _CCCL_CHECK_BUILTIN(builtin_assume)
107113

108114
// NVCC prior to 11.2 cannot handle __builtin_assume

0 commit comments

Comments
 (0)