diff --git a/include/cpuinfo_x86.h b/include/cpuinfo_x86.h index c0fcc6b..56a0069 100644 --- a/include/cpuinfo_x86.h +++ b/include/cpuinfo_x86.h @@ -76,6 +76,8 @@ typedef struct { int movbe : 1; int rdrnd : 1; + int dca : 1; + int ss : 1; // Make sure to update X86FeaturesEnum below if you add a field here. } X86Features; @@ -179,6 +181,8 @@ typedef enum { X86_POPCNT, X86_MOVBE, X86_RDRND, + X86_DCA, + X86_SS, X86_LAST_, } X86FeaturesEnum; diff --git a/src/cpuinfo_x86.c b/src/cpuinfo_x86.c index 1de7b01..564f295 100644 --- a/src/cpuinfo_x86.c +++ b/src/cpuinfo_x86.c @@ -151,9 +151,11 @@ static void ParseCpuId(const uint32_t max_cpuid_leaf, X86Info* info) { features->cx8 = IsBitSet(leaf_1.edx, 8); features->clfsh = IsBitSet(leaf_1.edx, 19); features->mmx = IsBitSet(leaf_1.edx, 23); + features->ss = IsBitSet(leaf_1.edx, 27); features->pclmulqdq = IsBitSet(leaf_1.ecx, 1); features->smx = IsBitSet(leaf_1.ecx, 6); features->cx16 = IsBitSet(leaf_1.ecx, 13); + features->dca = IsBitSet(leaf_1.ecx, 18); features->movbe = IsBitSet(leaf_1.ecx, 22); features->popcnt = IsBitSet(leaf_1.ecx, 23); features->aes = IsBitSet(leaf_1.ecx, 25); @@ -430,6 +432,10 @@ int GetX86FeaturesEnumValue(const X86Features* features, return features->movbe; case X86_RDRND: return features->rdrnd; + case X86_DCA: + return features->dca; + case X86_SS: + return features->ss; case X86_LAST_: break; } @@ -536,6 +542,10 @@ const char* GetX86FeaturesEnumName(X86FeaturesEnum value) { return "movbe"; case X86_RDRND: return "rdrnd"; + case X86_DCA: + return "dca"; + case X86_SS: + return "ss"; case X86_LAST_: break; }