Merge #13611: [bugfix] Use __cpuid_count for gnu C to avoid gitian build fail.

63c16ed507 Use __cpuid_count for gnu C to avoid gitian build fail. (Chun Kuan Lee)

Pull request description:

  Fixes #13538

Tree-SHA512: 161ae4db022288ae8631a166eaea2d08cf2c90bcd27218a094a754276de30b92ca9cfb5a79aa899c5a9d0534c5d7261037e7e915e1b92bc7067ab1539dc2b51e
This commit is contained in:
Wladimir J. van der Laan 2018-07-09 15:05:40 +02:00
commit b55f0c31d4
No known key found for this signature in database
GPG key ID: 1E4AED62986CD25D

View file

@ -9,7 +9,7 @@
#include <string.h> #include <string.h>
#include <atomic> #include <atomic>
#if defined(__x86_64__) || defined(__amd64__) #if defined(__x86_64__) || defined(__amd64__) || defined(__i386__)
#if defined(USE_ASM) #if defined(USE_ASM)
#include <cpuid.h> #include <cpuid.h>
namespace sha256_sse4 namespace sha256_sse4
@ -534,7 +534,11 @@ bool SelfTest() {
// We can't use cpuid.h's __get_cpuid as it does not support subleafs. // We can't use cpuid.h's __get_cpuid as it does not support subleafs.
void inline cpuid(uint32_t leaf, uint32_t subleaf, uint32_t& a, uint32_t& b, uint32_t& c, uint32_t& d) void inline cpuid(uint32_t leaf, uint32_t subleaf, uint32_t& a, uint32_t& b, uint32_t& c, uint32_t& d)
{ {
#ifdef __GNUC__
__cpuid_count(leaf, subleaf, a, b, c, d);
#else
__asm__ ("cpuid" : "=a"(a), "=b"(b), "=c"(c), "=d"(d) : "0"(leaf), "2"(subleaf)); __asm__ ("cpuid" : "=a"(a), "=b"(b), "=c"(c), "=d"(d) : "0"(leaf), "2"(subleaf));
#endif
} }
/** Check whether the OS has enabled AVX registers. */ /** Check whether the OS has enabled AVX registers. */