Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(221)

Unified Diff: src/trusted/platform_qualify/arch/x86/vcpuid.c

Issue 1495033006: Fix a -Wunused-function warning with win/clang. (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: comments Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/trusted/platform_qualify/arch/x86/vcpuid.c
diff --git a/src/trusted/platform_qualify/arch/x86/vcpuid.c b/src/trusted/platform_qualify/arch/x86/vcpuid.c
index 9d123062bbedd88c67bd8fa76ee27f8f7b592002..b7258e1977c5c6750b901f0f6a1ac729e0bae56c 100644
--- a/src/trusted/platform_qualify/arch/x86/vcpuid.c
+++ b/src/trusted/platform_qualify/arch/x86/vcpuid.c
@@ -490,6 +490,12 @@ static int DoTest(int (*thetest)(void), const char *s) {
# error Please specify platform as NACL_LINUX, NACL_OSX or NACL_WINDOWS
#endif
+#if NACL_WINDOWS && (NACL_BUILD_SUBARCH == 64)
+static int CheckCPUFeatureDetection(NaClCPUFeaturesX86* cpuf) {
+ /* Unfortunately the asm_ tests will not work on 64-bit Windows */
+ return 0;
+}
+#else
static int DoCPUFeatureTest(NaClCPUFeaturesX86 *features,
NaClCPUFeatureX86ID id,
int (*thetest)(void)) {
@@ -499,12 +505,52 @@ static int DoCPUFeatureTest(NaClCPUFeaturesX86 *features,
return 0;
}
+/*
+ * Check if CPU feature detection is self-consistent.
+ * Returns 0 on success and non-0 else.
+ */
+static int CheckCPUFeatureDetection(NaClCPUFeaturesX86* cpuf) {
+ int rcode = 0;
+ rcode |= DoCPUFeatureTest(cpuf, NaClCPUFeatureX86_x87, asm_HasX87);
+ rcode |= DoCPUFeatureTest(cpuf, NaClCPUFeatureX86_MMX, asm_HasMMX);
+ rcode |= DoCPUFeatureTest(cpuf, NaClCPUFeatureX86_SSE, asm_HasSSE);
+ rcode |= DoCPUFeatureTest(cpuf, NaClCPUFeatureX86_SSE2, asm_HasSSE2);
+ rcode |= DoCPUFeatureTest(cpuf, NaClCPUFeatureX86_3DNOW, asm_Has3DNow);
+ rcode |= DoCPUFeatureTest(cpuf, NaClCPUFeatureX86_SSE3, asm_HasSSE3);
+ rcode |= DoCPUFeatureTest(cpuf, NaClCPUFeatureX86_SSSE3, asm_HasSSSE3);
+ rcode |= DoCPUFeatureTest(cpuf, NaClCPUFeatureX86_SSE41, asm_HasSSE41);
+ rcode |= DoCPUFeatureTest(cpuf, NaClCPUFeatureX86_SSE42, asm_HasSSE42);
+ rcode |= DoCPUFeatureTest(cpuf, NaClCPUFeatureX86_POPCNT, asm_HasPOPCNT);
+ rcode |= DoCPUFeatureTest(cpuf, NaClCPUFeatureX86_CMOV, asm_HasCMOV);
+ rcode |= DoCPUFeatureTest(cpuf, NaClCPUFeatureX86_TSC, asm_HasTSC);
+
+#define TEST_NEGATIVE_CASE 0
+#if TEST_NEGATIVE_CASE
+ printf("TESTING: simulating invalid CPUID implementation\n");
+ rcode |= DoTest(asm_HasSSSE3, "SSSE3");
+ rcode |= DoTest(asm_HasSSE41, "SSE41");
+ rcode |= DoTest(asm_HasSSE42, "SSE42");
+ rcode |= DoTest(asm_HasPOPCNT, "POPCNT");
+ rcode |= DoTest(asm_HasCMOV, "CMOV");
+#endif
+ /*
+ * TODO(brad): implement the rest of these tests
+ * rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_CX8, asm_HasCX8);
+ * rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_CX16, asm_HasCX16);
+ * DoTest(asm_HasSSE4a, "SSE4a");
+ * DoTest(asm_HasEMMX, "EMMX");
+ * DoTest(asm_HasE3DNow, "E3DNow");
+ * what about LZCNT?
+ */
+ return rcode;
+}
+#endif /* 64-bit Windows */
+
static void PrintFail(const char *why) {
fprintf(stderr, "ERROR: %s.\n", why);
fprintf(stderr, "Google Native Client cannot continue.\n");
}
-#define TEST_NEGATIVE_CASE 0
int CPUIDImplIsValid(void) {
NaClCPUFeaturesX86 cpuf;
NaClGetCurrentCPUFeaturesX86((NaClCPUFeatures *) &cpuf);
@@ -517,47 +563,10 @@ int CPUIDImplIsValid(void) {
PrintFail("CPU not supported");
return 0;
}
-
- /* Unfortunately the asm_ tests will not work on 64-bit Windows */
-#if !(NACL_WINDOWS && (NACL_BUILD_SUBARCH == 64))
- {
- int rcode = 0;
- rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_x87, asm_HasX87);
- rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_MMX, asm_HasMMX);
- rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_SSE, asm_HasSSE);
- rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_SSE2, asm_HasSSE2);
- rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_3DNOW, asm_Has3DNow);
- rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_SSE3, asm_HasSSE3);
- rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_SSSE3, asm_HasSSSE3);
- rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_SSE41, asm_HasSSE41);
- rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_SSE42, asm_HasSSE42);
- rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_POPCNT, asm_HasPOPCNT);
- rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_CMOV, asm_HasCMOV);
- rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_TSC, asm_HasTSC);
-
-#if TEST_NEGATIVE_CASE
- printf("TESTING: simulating invalid CPUID implementation\n");
- rcode |= DoTest(asm_HasSSSE3, "SSSE3");
- rcode |= DoTest(asm_HasSSE41, "SSE41");
- rcode |= DoTest(asm_HasSSE42, "SSE42");
- rcode |= DoTest(asm_HasPOPCNT, "POPCNT");
- rcode |= DoTest(asm_HasCMOV, "CMOV");
-#endif
- /*
- * TODO(brad): implement the rest of these tests
- * rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_CX8, asm_HasCX8);
- * rcode |= DoCPUFeatureTest(&cpuf, NaClCPUFeatureX86_CX16, asm_HasCX16);
- * DoTest(asm_HasSSE4a, "SSE4a");
- * DoTest(asm_HasEMMX, "EMMX");
- * DoTest(asm_HasE3DNow, "E3DNow");
- * what about LZCNT?
- */
- if (rcode != 0) {
- PrintFail("CPUID not implemented correctly.");
- return 0;
- }
+ if (CheckCPUFeatureDetection(&cpuf) != 0) {
+ PrintFail("CPUID not implemented correctly.");
+ return 0;
}
-#endif /* 64-bit Windows */
printf("[CPUID implementation looks okay]\n");
return 1;
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698