From: Mika Lindqvist Date: Fri, 22 Dec 2023 14:59:03 +0000 (+0200) Subject: Add support for __attribute__((__target__(...))) to overcome limitations of -march... X-Git-Tag: 2.1.6~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ece1a480cbd3601f273b3f81578478e611c62b9;p=thirdparty%2Fzlib-ng.git Add support for __attribute__((__target__(...))) to overcome limitations of -march=native. --- diff --git a/arch/arm/acle_intrins.h b/arch/arm/acle_intrins.h index e9eef12d..531b8a7f 100644 --- a/arch/arm/acle_intrins.h +++ b/arch/arm/acle_intrins.h @@ -8,6 +8,14 @@ # include #endif +#ifdef ARM_ACLE +#if defined(__aarch64__) +# define Z_TARGET_CRC Z_TARGET("+crc") +#else +# define Z_TARGET_CRC +#endif +#endif + #ifdef ARM_SIMD #ifdef _MSC_VER typedef uint32_t uint16x2_t; diff --git a/arch/arm/crc32_acle.c b/arch/arm/crc32_acle.c index 978d97d7..ac7d6ff6 100644 --- a/arch/arm/crc32_acle.c +++ b/arch/arm/crc32_acle.c @@ -6,14 +6,10 @@ */ #ifdef ARM_ACLE -#ifdef _MSC_VER -# include -#else -# include -#endif +#include "acle_intrins.h" #include "../../zbuild.h" -Z_INTERNAL uint32_t crc32_acle(uint32_t crc, const uint8_t *buf, size_t len) { +Z_INTERNAL Z_TARGET_CRC uint32_t crc32_acle(uint32_t crc, const uint8_t *buf, size_t len) { Z_REGISTER uint32_t c; Z_REGISTER const uint16_t *buf2; Z_REGISTER const uint32_t *buf4; diff --git a/arch/arm/insert_string_acle.c b/arch/arm/insert_string_acle.c index 9ac3ccb4..aa8385c7 100644 --- a/arch/arm/insert_string_acle.c +++ b/arch/arm/insert_string_acle.c @@ -6,9 +6,7 @@ */ #ifdef ARM_ACLE -#ifndef _MSC_VER -# include -#endif +#include "acle_intrins.h" #include "../../zbuild.h" #include "../../deflate.h" @@ -18,9 +16,9 @@ #define HASH_CALC_VAR h #define HASH_CALC_VAR_INIT uint32_t h = 0 -#define UPDATE_HASH update_hash_acle -#define INSERT_STRING insert_string_acle -#define QUICK_INSERT_STRING quick_insert_string_acle +#define UPDATE_HASH Z_TARGET_CRC update_hash_acle +#define INSERT_STRING Z_TARGET_CRC insert_string_acle +#define QUICK_INSERT_STRING Z_TARGET_CRC quick_insert_string_acle #include "../../insert_string_tpl.h" #endif diff --git a/zbuild.h b/zbuild.h index bb964d6c..d78c3a15 100644 --- a/zbuild.h +++ b/zbuild.h @@ -61,6 +61,14 @@ # endif #endif +#ifndef Z_TARGET +# if Z_HAS_ATTRIBUTE(__target__) +# define Z_TARGET(x) __attribute__((__target__(x))) +# else +# define Z_TARGET(x) +# endif +#endif + /* This has to be first include that defines any types */ #if defined(_MSC_VER) # if defined(_WIN64)