diff --git a/compiler-rt/lib/builtins/cpu_model.c b/compiler-rt/lib/builtins/cpu_model.c index 54f1add91679..239122ffb60f 100644 --- a/compiler-rt/lib/builtins/cpu_model.c +++ b/compiler-rt/lib/builtins/cpu_model.c @@ -462,12 +462,12 @@ static void getAvailableFeatures(unsigned ECX, unsigned EDX, unsigned MaxLeaf, unsigned Features2 = 0; unsigned EAX, EBX; -#define setFeature(F) \ - do { \ - if (F < 32) \ - Features |= 1 << F; \ - else if (F < 64) \ - Features2 |= 1 << (F - 32); \ +#define setFeature(F) \ + do { \ + if (F < 32) \ + Features |= 1 << (F & 0x1f) \ + else if (F < 64) \ + Features2 |= 1 << (F & 0x1f); \ } while (0) if ((EDX >> 15) & 1)