3e77e61914
[*] As I said, blame clang and gcc devs for being retarded cunts.
...
// Even if clang (and gcc) has these intrins available, you must enable them globally, unlike see for some fucking reason.
// I mean, we can do runtime branching around SSE4 paths no problem. Why all of a sudden am i being gated out of the intrins im electing to use by hand?
// No, you (the compiler) may not use these in your baseline feature set (or incl in stl locks). Yes, i still want them. Now fuck off.
// If these end up being wrong, blame clang and gnu for being cunts, not me.
No, I will not raise our requirements above ivybridge; no, I will not expose feature macros to the STL (et al) that boosts our requirements to modern intelaviv slop and amd atomic ackers
2024-08-19 08:05:01 +01:00
23a80b8039
[*] Refactor ConditionEx -> IFlexibleConditionVariable
2024-08-08 20:21:03 +01:00
f2acc253b7
[*] Amend [*] Linux: Update antidbus message for clarity
2024-07-15 00:12:53 +01:00
fa900d0f78
[*] Linux: Update antidbus message for clarity
2024-06-30 04:40:37 +01:00
bd034aec31
[*] AuOSThread harden set piro and name against race conditions
...
amend: i didnt want to lock so deep of a callstack, but oh well.
amend: win32 regression
2024-06-29 07:33:30 +01:00
035d822ec1
[*] Explicit memory order access barrier when reading WOA_SEMAPHORE_MODE-less bAlive under weakly ordered systems. ( 5b193411
cont: "[*] Improve regressed AuWoA time to wake"
...
In all other cases, the memory is either thread-local write-local or followed up by an indirect aquire/release of the processors pipeline and L1 cache by virtue of the containers dumb spinlock ::Lock, ::Unlock (...release, ...barrier)
Clang doesn't have /volatile:ms anymore so we cant rely on that
Assuming MSVC-like or x86 isnt good enough
(and, no retard midwits, volatile is a fine keyword. take ur spec sperging and shove it. i just need to control over-optimization of defacto-weakly ordered access between explicit lockless semaphore yields)
2024-06-23 04:29:21 +01:00
5b19341186
[*] Improve regressed AuWoA time to wake
2024-06-19 22:05:17 +01:00
efa26dd99d
[*] YieldPollNs nonzero timeout check
2024-05-27 16:02:54 +01:00
a5a9fa3887
[*] Updated AuTheading::WaitFor prototype
...
[+/*] Missing YieldPoll MS prototype in public header
2024-05-27 15:04:21 +01:00
e4fa5d549e
[*] Refactor IAuroraThread
2024-05-27 13:28:57 +01:00
67894b399b
[*] Revert clang 'optimization' because this piece of shit compiler wont listen to me.
...
Even worse, im just going to fucking nuke all clang related checks from orbit in our global build_scripts (8b00dc69fceea62ecbbf5a21255a41e2f23921a4), because they admit they cause a 2x slowdown.
2024-05-13 23:43:19 +01:00
c3f7e625ba
[*] Clang has check_stack, strict_gs_check is msvc specific
2024-05-10 22:37:51 +01:00
d589ce3549
[*] After 2 or 3 years, redo the spinlock
2024-05-07 16:46:12 +01:00
631624dc55
[*] Linux build regressions, and shrink the size of Linux RWLocks to 48 bytes from 64
2024-05-07 14:57:19 +01:00
8e1c74a5df
[*] i swore i replaced this with a tpause before
...
[*] ...and the docs arent clear on whether or not this clock value is relative or absolute
2024-05-06 22:47:45 +01:00
f3ba901f71
[+] Zen3 on top of AlderLake optimizations
...
[*] Minor alderlake adjustments
2024-05-05 19:42:10 +01:00
459a9a789b
[*] Switch C0.2 and C0.1 powerstates around
2024-05-03 15:52:50 +01:00
134816e128
[*] Optimize primitives SMTYield for Alderlake+ user-space, BIOS-ring mwait, and AARCH
2024-05-03 12:22:38 +01:00
c79a709f96
[*] RWLock: "I didn't like what I saw emitted" cont
2024-04-30 22:57:45 +01:00
07ef822bfa
[*] AURORA_FORCE_SRW_LOCKS isn't officially supported but it should at least build
2024-04-30 20:37:00 +01:00
410a67d842
[*] RWLock: I didn't like what I saw emitted
2024-04-30 20:29:20 +01:00
22a4d3383d
[*] NT/Win32-only: improved AuThreading::SleepNs(qwTimeout)
2024-04-30 19:02:05 +01:00
9d4c5a8cfc
[*] (optimize) RunOSWaitOnAddressEQNoTimedNoErrors wasn't NT aware
2024-04-28 14:24:13 +01:00
44c7898c29
[*] Developers developers developers developers
...
Absolute expiration times track any changes in the system time; relative expiration times are not affected by system time changes.
2024-04-23 23:20:53 +01:00
0164919cd9
[+] while_bc
2024-04-13 22:49:05 +01:00
9f5c0e559c
[*] Minor ConditionVariableNT optimization (SteadyClockNS() may syscall under vms)
2024-04-11 19:58:42 +01:00
ec44cc1d69
[*] Ensure these fallback primitives can be accessed by -> operator
2024-03-27 03:19:18 +00:00
1fa12f141f
[*] Fix TryWaitOnAddressSpecialEx from UntilEqual -> Special update
2024-03-24 15:30:38 +00:00
c87ec4e4b6
[*] Linux build regressions
2024-03-21 00:32:13 +00:00
5c34a8435b
[*] d14ba6cf
revert one force inline
2024-03-12 23:32:32 +00:00
d14ba6cfd4
[+] AuThreading::EWaitMethod
...
[+] AuThreading::TryWaitOnAddressSpecial
[+] AuThreading::TryWaitOnAddressSpecialEx
[+] AuThreading::WaitOnAddressSpecial
[+] AuThreading::WaitOnAddressSpecialSteady
2024-03-12 22:50:22 +00:00
afbe942ffd
[*] These config fields were switched to abs values, not relative to the user signal range
2024-03-08 21:59:50 +00:00
2163a58892
[*] Linux runtime regressions
2024-03-04 11:55:54 +00:00
65c78ef182
[*] Move some platform specific code from AuWakeOnAddress to AuProcAddresses.*.*
2024-03-03 00:28:36 +00:00
9591fc9d30
[*] Harden detached spawn
2024-03-02 23:47:58 +00:00
3004c3de19
[+] Experimental AuThreading::TryWaitOnAddressUntilEqualEx, WaitOnAddressUntilEqual, WaitOnAddressUntilEqualSteady
2024-03-02 23:23:16 +00:00
03623dfa48
[*] c111dee8
cont. Simplification of if (SignalSpuriously()) AddWatcher() continued
2024-02-14 01:03:14 +00:00
c111dee855
[*] Harden WinXP-7 semaphores [ 2b0ed797
cont] [more paranoia]
...
[*] Dont overspin spurious modernnt condvar wakes
[*] Revert 2943ffdb's add waiter, if under modern nt
1: While spuriously waking a blocked keyed event, don't leave the condition variable in a state where signals can be ignored.
2024-02-11 06:22:19 +00:00
2b0ed79729
[*] NT Condvar hardening: Windows XP-7 hardening of the spin condition when racing against multiple threads
2024-02-08 13:14:18 +00:00
12fd03a6dd
[*] WoA acbd6266
cont (?). I think I'm still getting messed up by over-optimizations as opposed to there being a genuine bug in the primitives. Made the accesses to the comparison volatile during deep sleeps, whereas before we were just casting to regular integer pointers or performing a memcmp.
...
00:29:11:820 15> 1 functions were new in current compilation
00:29:11:820 15> 51 functions had inline decision re-evaluated but remain unchanged
(it did *something*)
2024-02-08 01:55:16 +00:00
899e505b1e
[*] NT Win8+ FastPath: Fix missing BSL
2024-02-04 17:24:46 +00:00
62b6fa20f8
[*] Update the copyright header of most of the primitives
...
[*] Fix generic mutex abs yield always returning true
2024-01-29 14:48:04 +00:00
2943ffdbc2
[*] Harden Windows XP - 7 condvar; where signalers can lock up pending scheduling n threads whilst a spurious wake is occurring and trying to preemptively require the lock under the signal
2024-01-28 08:23:13 +00:00
d1c668b2c1
[*] wtf happened here? what the actual fuck ( 5cc811be19
5 months ago)
2024-01-27 09:15:31 +00:00
9e7615d80c
[*] Same thread name identity in these constructors
2024-01-23 23:31:09 +00:00
7038787001
[+] Thread name identities
2024-01-23 23:03:52 +00:00
cf3d4fc001
[*] Amend 4fcdc798
WoA configuration
2024-01-23 18:21:10 +00:00
4fcdc798cf
[+] AuWoASemaphore.hpp configuration
2024-01-22 08:32:30 +00:00
34e49d2d10
[*] Removed redundant branches from AuThreadPrimitives
2024-01-21 21:15:57 +00:00
acbd62666f
[*] WoA: This member must be marked volatile due to over ::WaitOn optimization of assumed single-threaded control flow
2024-01-19 21:37:31 +00:00