SIGN IN SIGN UP

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