Nekotekina
81a110f346
Fix system time wraparound
...
Implement utils::udiv128, utils::div128
2019-08-30 22:02:25 +03:00
Nekotekina
0333942795
Change utils::popcnt16 to popcnt32
...
Use __builtin_popcount if available.
2019-06-02 23:22:16 +03:00
Nekotekina
eae5b9e049
Rewrite mulh64/umulh64
...
Use __int128_t/__uint128_t idioms on GCC/Clang.
May result in better codegen by avoiding inline asm.
2019-03-13 00:16:43 +03:00
Nekotekina
7f6a410770
Add dummy __has_builtin macro, use rotate builtins if possible
2019-03-01 00:08:19 +03:00
Nekotekina
9ee2867247
Improve count leading/trailing zeros implementation
...
Use x86 intrinsics if compiled with appropriate instruction support
2019-03-01 00:08:19 +03:00
Nekotekina
96cabeadff
Rewrite condition variables
...
Implement helper functions balanced_wait_until and balanced_awaken
They include new path for Windows 8.1+ (WaitOnAddress)
shared_mutex, cond_variable, cond_one, cond_x16 modified to use it
Added helper function utils::popcnt16
Replace most semaphore<> with shared_mutex
2018-11-29 01:30:05 +03:00
Nekotekina
ed9fb8405b
Move rotate/cntlz/cnttz helpers to Utilities/asm.h
2018-09-08 00:32:04 +03:00