Blame winpr/libwinpr/sysinfo/test/TestCPUFeatures.c

Packit Service fa4841
Packit Service fa4841
#include <winpr/crt.h>
Packit Service fa4841
#include <winpr/sysinfo.h>
Packit Service fa4841
#include <winpr/platform.h>
Packit Service fa4841
Packit Service b1ea74
#define TEST_FEATURE(feature) \
Packit Service b1ea74
	printf("\t" #feature ":  %s\n", IsProcessorFeaturePresent(feature) ? "yes" : "no")
Packit Service b1ea74
#define TEST_FEATURE_EX(feature) \
Packit Service b1ea74
	printf("\t" #feature ":  %s\n", IsProcessorFeaturePresentEx(feature) ? "yes" : "no")
Packit Service fa4841
int TestCPUFeatures(int argc, char* argv[])
Packit Service fa4841
{
Packit Service fa4841
	printf("Base CPU Flags:\n");
Packit Service fa4841
#ifdef _M_IX86_AMD64
Packit Service fa4841
	TEST_FEATURE(PF_MMX_INSTRUCTIONS_AVAILABLE);
Packit Service fa4841
	TEST_FEATURE(PF_XMMI_INSTRUCTIONS_AVAILABLE);
Packit Service fa4841
	TEST_FEATURE(PF_XMMI64_INSTRUCTIONS_AVAILABLE);
Packit Service fa4841
	TEST_FEATURE(PF_3DNOW_INSTRUCTIONS_AVAILABLE);
Packit Service fa4841
	TEST_FEATURE(PF_SSE3_INSTRUCTIONS_AVAILABLE);
Packit Service fa4841
	printf("\n");
Packit Service fa4841
	printf("Extended CPU Flags (not found in windows API):\n");
Packit Service fa4841
	TEST_FEATURE_EX(PF_EX_3DNOW_PREFETCH);
Packit Service fa4841
	TEST_FEATURE_EX(PF_EX_SSSE3);
Packit Service fa4841
	TEST_FEATURE_EX(PF_EX_SSE41);
Packit Service fa4841
	TEST_FEATURE_EX(PF_EX_SSE42);
Packit Service fa4841
	TEST_FEATURE_EX(PF_EX_AVX);
Packit Service fa4841
	TEST_FEATURE_EX(PF_EX_FMA);
Packit Service fa4841
	TEST_FEATURE_EX(PF_EX_AVX_AES);
Packit Service fa4841
	TEST_FEATURE_EX(PF_EX_AVX_PCLMULQDQ);
Packit Service fa4841
#elif defined(_M_ARM)
Packit Service fa4841
	TEST_FEATURE(PF_ARM_NEON_INSTRUCTIONS_AVAILABLE);
Packit Service fa4841
	TEST_FEATURE(PF_ARM_THUMB);
Packit Service fa4841
	TEST_FEATURE(PF_ARM_VFP_32_REGISTERS_AVAILABLE);
Packit Service fa4841
	TEST_FEATURE(PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE);
Packit Service fa4841
	TEST_FEATURE(PF_ARM_VFP3);
Packit Service fa4841
	TEST_FEATURE(PF_ARM_THUMB);
Packit Service fa4841
	TEST_FEATURE(PF_ARM_JAZELLE);
Packit Service fa4841
	TEST_FEATURE(PF_ARM_DSP);
Packit Service fa4841
	TEST_FEATURE(PF_ARM_THUMB2);
Packit Service fa4841
	TEST_FEATURE(PF_ARM_T2EE);
Packit Service fa4841
	TEST_FEATURE(PF_ARM_INTEL_WMMX);
Packit Service fa4841
	printf("Extended CPU Flags (not found in windows API):\n");
Packit Service fa4841
	TEST_FEATURE_EX(PF_EX_ARM_VFP1);
Packit Service fa4841
	TEST_FEATURE_EX(PF_EX_ARM_VFP3D16);
Packit Service fa4841
	TEST_FEATURE_EX(PF_EX_ARM_VFP4);
Packit Service fa4841
	TEST_FEATURE_EX(PF_EX_ARM_IDIVA);
Packit Service fa4841
	TEST_FEATURE_EX(PF_EX_ARM_IDIVT);
Packit Service fa4841
#endif
Packit Service fa4841
	printf("\n");
Packit Service fa4841
	return 0;
Packit Service fa4841
}