29#ifndef PX_WINDOWS_INTRINSICS_H
30#define PX_WINDOWS_INTRINSICS_H
32#include "foundation/PxAssert.h"
38#error "This file should only be included by Windows builds!!"
43#pragma warning(disable : 4668)
45#pragma warning(disable : 4987)
51#pragma warning(disable : 4985)
61#pragma intrinsic(_BitScanForward)
62#pragma intrinsic(_BitScanReverse)
87 _BitScanReverse(&retval, v);
97 _BitScanForward(&retval, v);
108 unsigned long bsr = (
unsigned long)-1;
109 _BitScanReverse(&bsr, v);
119#if !PX_ARM && !PX_A64
126 _mm_prefetch(((
const char*)ptr + offset), _MM_HINT_NTA);
132 __prefetch(((
const char*)ptr + offset));
142 const char* cp = (
char*)ptr;
144 uint64_t startLine = p >> 6, endLine = (p + count - 1) >> 6;
145 uint64_t lines = endLine - startLine + 1;
155 const char* cp = (
char*)ptr;
157 uint32_t startLine = p >> 5, endLine = (p + count - 1) >> 5;
158 uint32_t lines = endLine - startLine + 1;
#define PX_FORCE_INLINE
Definition PxPreprocessor.h:335
uint64 uint64_t
Definition fwd.hpp:145
uint32 uint32_t
Definition fwd.hpp:131
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