29#ifndef PSFOUNDATION_PSUNIXINTRINSICS_H
30#define PSFOUNDATION_PSUNIXINTRINSICS_H
32#include "foundation/PxAssert.h"
38#if !(PX_LINUX || PX_APPLE_FAMILY)
39#error "This file should only be included by unix builds!!"
58 return uint32_t(31 - __builtin_clz(v));
66 return uint32_t(__builtin_ctz(v));
75 return uint32_t(__builtin_clz(v));
85 __builtin_prefetch(
reinterpret_cast<const char*
PX_RESTRICT>(ptr) + offset, 0, 3);
93 const char* cp =
reinterpret_cast<const char*
>(ptr);
94 uint64_t p = size_t(ptr);
95 uint64_t startLine = p >> 6, endLine = (p + count - 1) >> 6;
96 uint64_t lines = endLine - startLine + 1;
#define PX_RESTRICT
Definition PxPreprocessor.h:355
#define PX_FORCE_INLINE
Definition PxPreprocessor.h:335
#define PX_INLINE
Definition PxPreprocessor.h:320
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
PX_INLINE uint32_t PxLowestSetBitUnsafe(uint32_t v)
Definition PxUnixIntrinsics.h:64
PX_FORCE_INLINE void PxPrefetch(const void *ptr, uint32_t count=1)
Definition PxUnixIntrinsics.h:91
PX_INLINE uint32_t PxCountLeadingZeros(uint32_t v)
Definition PxUnixIntrinsics.h:72
PX_INLINE uint32_t PxHighestSetBitUnsafe(uint32_t v)
Definition PxUnixIntrinsics.h:55
PX_FORCE_INLINE void PxPrefetchLine(const void *ptr, uint32_t offset=0)
Definition PxUnixIntrinsics.h:83