6 #include <dmlc/endian.h>
12 #if defined(xgboost_IS_WIN)
19 #if defined(__CUDA_ARCH__)
22 [[nodiscard]] __device__ T
ByteSwap(T v);
25 inline __device__ std::uint16_t
ByteSwap(std::uint16_t v) {
26 #if defined(__clang__)
27 return __builtin_bswap16(v);
29 return __nv_bswap16(v);
34 inline __device__ std::uint32_t
ByteSwap(std::uint32_t v) {
35 #if defined(__clang__)
36 return __builtin_bswap32(v);
38 return __nv_bswap32(v);
43 inline __device__ std::uint64_t
ByteSwap(std::uint64_t v) {
44 #if defined(__clang__)
45 return __builtin_bswap64(v);
47 return __nv_bswap64(v);
51 #elif defined(__GLIBC__)
57 inline std::uint16_t
ByteSwap(std::uint16_t v) {
58 return __builtin_bswap16(v);
62 inline std::uint32_t
ByteSwap(std::uint32_t v) {
63 return __builtin_bswap32(v);
67 inline std::uint64_t
ByteSwap(std::uint64_t v) {
68 return __builtin_bswap64(v);
71 #elif defined(xgboost_IS_WIN) && !defined(__MINGW32__)
77 inline std::uint16_t
ByteSwap(std::uint16_t v) {
78 return _byteswap_ushort(v);
82 inline std::uint32_t
ByteSwap(std::uint32_t v) {
83 return _byteswap_ulong(v);
87 inline std::uint64_t
ByteSwap(std::uint64_t v) {
88 return _byteswap_uint64(v);
Defines configuration macros and basic types for xgboost.
Learner interface that integrates objective, gbm and evaluation together. This is the user facing XGB...
Definition: base.h:89
T ByteSwap(T v)
Definition: byteswap.h:94