The following changes since commit 5ca54c1ba2db849dfaef5fe3aec60329b3df0bd1: Makefile: add -Wno-stringop-truncation for y.tab.o (2023-01-24 21:07:37 -0700) are available in the Git repository at: git://git.kernel.dk/fio.git master for you to fetch changes up to 1e8ec88fd5f3ab4b7bbd0119708d94fd64a4e7ad: Enable crc32c accelleration for arm64 on OSX (2023-01-25 08:01:30 -0700) ---------------------------------------------------------------- Jens Axboe (1): Enable crc32c accelleration for arm64 on OSX configure | 8 +++++--- os/os-mac.h | 10 ++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) --- Diff of recent changes: diff --git a/configure b/configure index a17d1cda..182cd3c3 100755 --- a/configure +++ b/configure @@ -2685,20 +2685,22 @@ print_config "libblkio engine" "$libblkio" ########################################## # check march=armv8-a+crc+crypto -if test "$march_armv8_a_crc_crypto" != "yes" ; then - march_armv8_a_crc_crypto="no" -fi +march_armv8_a_crc_crypto="no" if test "$cpu" = "arm64" ; then cat > $TMPC <<EOF +#if __linux__ #include <arm_acle.h> #include <arm_neon.h> #include <sys/auxv.h> +#endif int main(void) { /* Can we also do a runtime probe? */ #if __linux__ return getauxval(AT_HWCAP); +#elif defined(__APPLE__) + return 0; #else # error "Don't know how to do runtime probe for ARM CRC32c" #endif diff --git a/os/os-mac.h b/os/os-mac.h index ec2cc1e5..c9103c45 100644 --- a/os/os-mac.h +++ b/os/os-mac.h @@ -14,12 +14,14 @@ #include <machine/endian.h> #include <libkern/OSByteOrder.h> +#include "../arch/arch.h" #include "../file.h" #define FIO_USE_GENERIC_INIT_RANDOM_STATE #define FIO_HAVE_GETTID #define FIO_HAVE_CHARDEV_SIZE #define FIO_HAVE_NATIVE_FALLOCATE +#define FIO_HAVE_CPU_HAS #define OS_MAP_ANON MAP_ANON @@ -106,4 +108,12 @@ static inline bool fio_fallocate(struct fio_file *f, uint64_t offset, uint64_t l return false; } +static inline bool os_cpu_has(cpu_features feature) +{ + /* just check for arm on OSX for now, we know that has it */ + if (feature != CPU_ARM64_CRC32C) + return false; + return FIO_ARCH == arch_aarch64; +} + #endif