diff --git a/sycl/include/syclcompat/util.hpp b/sycl/include/syclcompat/util.hpp index c7a53522c8e51..a02ef7d030bf8 100644 --- a/sycl/include/syclcompat/util.hpp +++ b/sycl/include/syclcompat/util.hpp @@ -161,6 +161,13 @@ inline double cast_ints_to_double(int high32, int low32) { template inline T reverse_bits(T a) { static_assert(std::is_unsigned::value && std::is_integral::value, "unsigned integer required"); +#if defined(__NVPTX__) + if constexpr (sizeof(T) == 4) { + unsigned result; + asm volatile("brev.b32 %0, %1;" : "=r"(result) : "r"(a)); + return result; + } +#endif // __NVPTX__ if (!a) return 0; T mask = 0;