[PATCH] D22181: Add runtime support for __cpu_model (__builtin_cpu_supports)
Eric Christopher via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 11 15:05:44 PDT 2016
echristo added a comment.
Couple of small comments, otherwise looks much better.
Thanks!
-eric
================
Comment at: lib/builtins/cpu_model.c:16-18
@@ +15,5 @@
+
+#if defined(i386) || defined(__i386__) || defined(__x86__) || \
+ defined(_M_IX86) || defined(__x86_64__) || defined(_M_AMD64) || \
+ defined(_M_X64)
+
----------------
Can probably use a smaller set here maybe (and a couple of times later)?
Union of x86, x86_64, and windows provide is probably good enough.
================
Comment at: lib/builtins/cpu_model.c:126-147
@@ +125,24 @@
+
+// The check below fori386 was copied from clang's cpuid.h.
+static bool isCpuIdSupported() {
+#if defined(i386) || defined(__i386__)
+ int __cpuid_supported;
+ __asm(" pushfl\n"
+ " popl %%eax\n"
+ " movl %%eax,%%ecx\n"
+ " xorl $0x00200000,%%eax\n"
+ " pushl %%eax\n"
+ " popfl\n"
+ " pushfl\n"
+ " popl %%eax\n"
+ " movl $0,%0\n"
+ " cmpl %%eax,%%ecx\n"
+ " je 1f\n"
+ " movl $1,%0\n"
+ "1:"
+ : "=r"(__cpuid_supported)
+ :
+ : "eax", "ecx");
+ if (!__cpuid_supported)
+ return 0;
+#endif
----------------
The comment and everything else feels weird here. Can you elaborate more? Also, the ifdefs seem unnecessary.
http://reviews.llvm.org/D22181
More information about the llvm-commits
mailing list