Stop cpuid from sign-extending every returned register
__cpuidex writes into an int[4], and the results were widened straight into the 64-bit cells, so any register with bit 31 set came back as 0xFFFFFFFF________. CPUID.0x80000000:EAX is 0x8000000x and CPUID.1:ECX[31] is the hypervisor-present bit, so this was not theoretical: bit tests still worked, but shifts, comparisons and equality against a 32-bit constant did not. Every other native converts through an unsigned type.
N
namazso committed
e793f260d7c799e1316881277106a4718196fb8d
Parent: 2c79c51