3
#include <winpr/sysinfo.h>
4
#include <winpr/platform.h>
6
#define TEST_FEATURE(feature) printf("\t" #feature ": %s\n", IsProcessorFeaturePresent(feature) ? "yes" : "no")
7
#define TEST_FEATURE_EX(feature) printf("\t" #feature ": %s\n", IsProcessorFeaturePresentEx(feature) ? "yes" : "no")
8
int TestCPUFeatures(int argc, char* argv[])
10
printf("Base CPU Flags:\n");
12
TEST_FEATURE(PF_MMX_INSTRUCTIONS_AVAILABLE);
13
TEST_FEATURE(PF_XMMI_INSTRUCTIONS_AVAILABLE);
14
TEST_FEATURE(PF_XMMI64_INSTRUCTIONS_AVAILABLE);
15
TEST_FEATURE(PF_3DNOW_INSTRUCTIONS_AVAILABLE);
16
TEST_FEATURE(PF_SSE3_INSTRUCTIONS_AVAILABLE);
18
printf("Extended CPU Flags (not found in windows API):\n");
19
TEST_FEATURE_EX(PF_EX_3DNOW_PREFETCH);
20
TEST_FEATURE_EX(PF_EX_SSSE3);
21
TEST_FEATURE_EX(PF_EX_SSE41);
22
TEST_FEATURE_EX(PF_EX_SSE42);
23
TEST_FEATURE_EX(PF_EX_AVX);
24
TEST_FEATURE_EX(PF_EX_FMA);
25
TEST_FEATURE_EX(PF_EX_AVX_AES);
26
TEST_FEATURE_EX(PF_EX_AVX_PCLMULQDQ);
28
TEST_FEATURE(PF_ARM_NEON_INSTRUCTIONS_AVAILABLE);
29
TEST_FEATURE(PF_ARM_THUMB);
30
TEST_FEATURE(PF_ARM_VFP_32_REGISTERS_AVAILABLE);
31
TEST_FEATURE(PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE);
32
TEST_FEATURE(PF_ARM_VFP3);
33
TEST_FEATURE(PF_ARM_THUMB);
34
TEST_FEATURE(PF_ARM_JAZELLE);
35
TEST_FEATURE(PF_ARM_DSP);
36
TEST_FEATURE(PF_ARM_THUMB2);
37
TEST_FEATURE(PF_ARM_T2EE);
38
TEST_FEATURE(PF_ARM_INTEL_WMMX);
39
printf("Extended CPU Flags (not found in windows API):\n");
40
TEST_FEATURE_EX(PF_EX_ARM_VFP1);
41
TEST_FEATURE_EX(PF_EX_ARM_VFP3D16);
42
TEST_FEATURE_EX(PF_EX_ARM_VFP4);
43
TEST_FEATURE_EX(PF_EX_ARM_IDIVA);
44
TEST_FEATURE_EX(PF_EX_ARM_IDIVT);