From: Jens Axboe Date: Wed, 25 Jan 2023 15:01:30 +0000 (-0700) Subject: Enable crc32c accelleration for arm64 on OSX X-Git-Tag: fio-3.34~46 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=1e8ec88fd5f3ab4b7bbd0119708d94fd64a4e7ad;p=fio.git Enable crc32c accelleration for arm64 on OSX Before: jensaxboe@Jenss-MacBook-Pro fio % ./fio --crctest=crc32c crc32c: 440.18 MiB/sec After: ensaxboe@Jenss-MacBook-Pro fio % ./fio --crctest=crc32c crc32c: 23923.00 MiB/sec We know we have it on osx on arm hardware, enabling it is pretty straightforward with that assumption. Signed-off-by: Jens Axboe --- 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 < #include #include +#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 #include +#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