From 767af11ad00a806a03e389e940d80082ef1972b7 Mon Sep 17 00:00:00 2001 From: Zixuan Fu Date: Tue, 3 Oct 2023 19:42:53 +0800 Subject: [PATCH] fixed #1587: update crc64_sse42_dispatch(), add appropriate parameters to inline asm --- deps/oblib/src/lib/checksum/ob_crc64.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/deps/oblib/src/lib/checksum/ob_crc64.cpp b/deps/oblib/src/lib/checksum/ob_crc64.cpp index b0aa172b9..b959cd701 100644 --- a/deps/oblib/src/lib/checksum/ob_crc64.cpp +++ b/deps/oblib/src/lib/checksum/ob_crc64.cpp @@ -1121,11 +1121,8 @@ uint64_t crc64_sse42_dispatch(uint64_t crc, const char *buf, int64_t len) uint32_t d = 0; uint32_t vendor_info[4]; - __asm__("mov $0x0, %eax\n\t"); - __asm__("cpuid\n\t"); - __asm__("mov %%ebx, %0\n\t":"=r" (vendor_info[0])); - __asm__("mov %%edx, %0\n\t":"=r" (vendor_info[1])); - __asm__("mov %%ecx, %0\n\t":"=r" (vendor_info[2])); + uint32_t leaf = 0; + asm("cpuid" : "+a"(leaf), "=b"(vendor_info[0]), "=d"(vendor_info[1]), "=c"(vendor_info[2])); vendor_info[3]='\0'; if (strcmp((char*)vendor_info, "GenuineIntel") == 0) {