-
Notifications
You must be signed in to change notification settings - Fork 6.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ARM64 commits to 5.18.3 to create 5.18.4 (#6250)
* RocksDB CRC32c optimization with ARMv8 Intrinsic (#5221) Summary: 1. Add Arm linear crc32c implemtation for RocksDB. 2. Arm runtime check for crc32 Pull Request resolved: #5221 Differential Revision: D15013685 Pulled By: siying fbshipit-source-id: 2c2983743d26656d93f212dc7c1a3cf66a1acf12 * Support rocksdbjava aarch64 build and test (#5258) Summary: Verified with an Ampere Computing eMAG aarch64 system. Pull Request resolved: #5258 Differential Revision: D15807309 Pulled By: maysamyabandeh fbshipit-source-id: ab85d2fd3fe40e6094430ab0eba557b1e979510d * Cleanup the Arm64 CRC32 unused warning (#5565) Summary: When 'HAVE_ARM64_CRC' is set, the blew methods: - bool rocksdb::crc32c::isSSE42() - bool rocksdb::crc32c::isPCLMULQDQ() are defined but not used, the unused-function is raised when do rocksdb build. This patch try to cleanup these warnings by add ifndef, if it build under the HAVE_ARM64_CRC, we will not define `isSSE42` and `isPCLMULQDQ`. Pull Request resolved: #5565 Differential Revision: D16233654 fbshipit-source-id: c32a9dda7465dbf65f9ccafef159124db92cdffd * Fixes for building RocksJava releases on arm64v8 Summary: Pull Request resolved: #5674 Differential Revision: D16870338 fbshipit-source-id: c8dac644b1479fa734b491f3a8d50151772290f7 * Remove invalid comparison of va_list and nullptr (#5836) Summary: The comparison of va_list and nullptr is always False under any arch, and will raise invalid operands of types error in aarch64 env (`error: invalid operands of types ‘va_list {aka __va_list}’ and ‘std::nullptr_t’ to binary ‘operator!=’`). This patch removes this invalid assert. Closes: #4277 Pull Request resolved: #5836 Differential Revision: D17532470 fbshipit-source-id: ca98078ecbc6a9416c69de3bd6ffcfa33a0f0185 * Fix naming of library on PPC64LE (#6080) Summary: **NOTE**: This also needs to be back-ported to be 6.4.6 Fix a regression introduced in f2bf0b2 by #5674 whereby the compiled library would get the wrong name on PPC64LE platforms. On PPC64LE, the regression caused the library to be named `librocksdbjni-linux64.so` instead of `librocksdbjni-linux-ppc64le.so`. This PR corrects the name back to `librocksdbjni-linux-ppc64le.so` and also corrects the ordering of conditional arguments in the Makefile to match the expected order as defined in the documentation for Make. Pull Request resolved: #6080 Differential Revision: D18710351 fbshipit-source-id: d4db87ef378263b57de7f9edce1b7d15644cf9de Co-authored-by: Yuqi <yuqi.gu@arm.com> Co-authored-by: Patrick Zhang <cnqpzhang@163.com> Co-authored-by: Yikun Jiang <yikunkero@gmail.com>
- Loading branch information
Showing
10 changed files
with
165 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
// Copyright (c) 2018, Arm Limited and affiliates. All rights reserved. | ||
// This source code is licensed under both the GPLv2 (found in the | ||
// COPYING file in the root directory) and Apache 2.0 License | ||
// (found in the LICENSE.Apache file in the root directory). | ||
|
||
#include "util/crc32c_arm64.h" | ||
|
||
#if defined(__linux__) && defined(HAVE_ARM64_CRC) | ||
|
||
#include <asm/hwcap.h> | ||
#include <sys/auxv.h> | ||
#ifndef HWCAP_CRC32 | ||
#define HWCAP_CRC32 (1 << 7) | ||
#endif | ||
uint32_t crc32c_runtime_check(void) { | ||
uint64_t auxv = getauxval(AT_HWCAP); | ||
return (auxv & HWCAP_CRC32) != 0; | ||
} | ||
|
||
uint32_t crc32c_arm64(uint32_t crc, unsigned char const *data, | ||
unsigned len) { | ||
const uint8_t *buf1; | ||
const uint16_t *buf2; | ||
const uint32_t *buf4; | ||
const uint64_t *buf8; | ||
|
||
int64_t length = (int64_t)len; | ||
|
||
crc ^= 0xffffffff; | ||
buf8 = (const uint64_t *)data; | ||
while ((length -= sizeof(uint64_t)) >= 0) { | ||
crc = __crc32cd(crc, *buf8++); | ||
} | ||
|
||
/* The following is more efficient than the straight loop */ | ||
buf4 = (const uint32_t *)buf8; | ||
if (length & sizeof(uint32_t)) { | ||
crc = __crc32cw(crc, *buf4++); | ||
length -= 4; | ||
} | ||
|
||
buf2 = (const uint16_t *)buf4; | ||
if (length & sizeof(uint16_t)) { | ||
crc = __crc32ch(crc, *buf2++); | ||
length -= 2; | ||
} | ||
|
||
buf1 = (const uint8_t *)buf2; | ||
if (length & sizeof(uint8_t)) | ||
crc = __crc32cb(crc, *buf1); | ||
|
||
crc ^= 0xffffffff; | ||
return crc; | ||
} | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
// Copyright (c) 2018, Arm Limited and affiliates. All rights reserved. | ||
// This source code is licensed under both the GPLv2 (found in the | ||
// COPYING file in the root directory) and Apache 2.0 License | ||
// (found in the LICENSE.Apache file in the root directory). | ||
|
||
#ifndef UTIL_CRC32C_ARM64_H | ||
#define UTIL_CRC32C_ARM64_H | ||
|
||
#include <inttypes.h> | ||
|
||
#if defined(__aarch64__) || defined(__AARCH64__) | ||
#ifdef __ARM_FEATURE_CRC32 | ||
#define HAVE_ARM64_CRC | ||
#include <arm_acle.h> | ||
extern uint32_t crc32c_arm64(uint32_t crc, unsigned char const *data, unsigned len); | ||
extern uint32_t crc32c_runtime_check(void); | ||
#endif | ||
#endif | ||
|
||
|
||
#endif |