summaryrefslogtreecommitdiff
path: root/numpy/random/src
diff options
context:
space:
mode:
authorKevin Sheppard <kevin.k.sheppard@gmail.com>2019-05-28 10:19:43 +0100
committerKevin Sheppard <kevin.k.sheppard@gmail.com>2019-05-28 18:44:47 +0100
commitb1b7605c68ad9d92295b2fde82f3624b4dac88c7 (patch)
treedaf9474f0ccd46129d28eab7b20e5106fc6ead97 /numpy/random/src
parent22239d120f59826e8a2c758f4bee9893e835f511 (diff)
downloadnumpy-b1b7605c68ad9d92295b2fde82f3624b4dac88c7.tar.gz
PERF: Use intrinsic rotr on Windows
Use _rotr64 on Windows to avoid compiler generated rotr instructions
Diffstat (limited to 'numpy/random/src')
-rw-r--r--numpy/random/src/pcg64/pcg64.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/numpy/random/src/pcg64/pcg64.h b/numpy/random/src/pcg64/pcg64.h
index a28c8eaa6..80db3bbc9 100644
--- a/numpy/random/src/pcg64/pcg64.h
+++ b/numpy/random/src/pcg64/pcg64.h
@@ -51,6 +51,7 @@
#include <inttypes.h>
#ifdef _WIN32
+#include <stdlib.h>
#define inline __forceinline
#endif
@@ -99,7 +100,11 @@ typedef struct {
}
static inline uint64_t pcg_rotr_64(uint64_t value, unsigned int rot) {
+#ifdef _WIN32
+ return _rotr64(value, rot);
+#else
return (value >> rot) | (value << ((-rot) & 63));
+#endif
}
#ifdef PCG_EMULATED_128BIT_MATH