From: Wilco Dijkstra Date: Wed, 6 May 2026 15:28:25 +0000 (+0000) Subject: Arch64: Add support for SVE2 ifuncs X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=b26cc4fbb74f516fc2b26bdfe7e524392d940250;p=thirdparty%2Fglibc.git Arch64: Add support for SVE2 ifuncs Add support for SVE2 in cpu-features. Minor cleanup of init-arch.h. Reviewed-by: Yury Khrustalev --- diff --git a/sysdeps/aarch64/cpu-features.h b/sysdeps/aarch64/cpu-features.h index d6367a4596..d1377c0dca 100644 --- a/sysdeps/aarch64/cpu-features.h +++ b/sysdeps/aarch64/cpu-features.h @@ -69,6 +69,7 @@ struct cpu_features bool sve; bool unused; bool mops; + bool sve2; }; #endif /* _CPU_FEATURES_AARCH64_H */ diff --git a/sysdeps/aarch64/dl-diagnostics-cpu.c b/sysdeps/aarch64/dl-diagnostics-cpu.c index 697868cb25..cbc2645f56 100644 --- a/sysdeps/aarch64/dl-diagnostics-cpu.c +++ b/sysdeps/aarch64/dl-diagnostics-cpu.c @@ -48,6 +48,7 @@ _dl_diagnostics_cpu (void) print_cpu_features_value ("mte_state", GLRO (dl_aarch64_cpu_features).mte_state); print_cpu_features_value ("sve", GLRO (dl_aarch64_cpu_features).sve); + print_cpu_features_value ("sve2", GLRO (dl_aarch64_cpu_features).sve2); print_cpu_features_value ("zva_size", GLRO (dl_aarch64_cpu_features).zva_size); diff --git a/sysdeps/aarch64/multiarch/init-arch.h b/sysdeps/aarch64/multiarch/init-arch.h index 8afd91164f..e00d1746d8 100644 --- a/sysdeps/aarch64/multiarch/init-arch.h +++ b/sysdeps/aarch64/multiarch/init-arch.h @@ -19,22 +19,13 @@ #include #include -/* Make glibc MTE-safe on a system that supports MTE in case user code - enables tag checks independently of the mte_status of glibc. There - is currently no ABI contract for enabling tag checks in user code, - but this can be useful for debugging with MTE. */ -#define MTE_ENABLED() (GLRO(dl_hwcap2) & HWCAP2_MTE) - #define INIT_ARCH() \ uint64_t __attribute__((unused)) midr = \ GLRO(dl_aarch64_cpu_features).midr_el1; \ unsigned __attribute__((unused)) zva_size = \ GLRO(dl_aarch64_cpu_features).zva_size; \ - bool __attribute__((unused)) bti = \ - GLRO(dl_aarch64_cpu_features).bti; \ - bool __attribute__((unused)) mte = \ - MTE_ENABLED (); \ - bool __attribute__((unused)) sve = \ - GLRO(dl_aarch64_cpu_features).sve; \ - bool __attribute__((unused)) mops = \ - GLRO(dl_aarch64_cpu_features).mops; + bool __attribute__((unused)) bti = GLRO(dl_aarch64_cpu_features).bti; \ + bool __attribute__((unused)) mte = GLRO(dl_hwcap2) & HWCAP2_MTE; \ + bool __attribute__((unused)) sve = GLRO(dl_aarch64_cpu_features).sve; \ + bool __attribute__((unused)) sve2 = GLRO(dl_aarch64_cpu_features).sve2; \ + bool __attribute__((unused)) mops = GLRO(dl_aarch64_cpu_features).mops; diff --git a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c index 36bd72bb12..2e8887ce23 100644 --- a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c +++ b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c @@ -125,6 +125,7 @@ init_cpu_features (struct cpu_features *cpu_features) /* Check if SVE is supported. */ cpu_features->sve = GLRO (dl_hwcap) & HWCAP_SVE; + cpu_features->sve2 = GLRO (dl_hwcap2) & HWCAP2_SVE2; /* Check if MOPS is supported. */ cpu_features->mops = GLRO (dl_hwcap2) & HWCAP2_MOPS;