]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Arch64: Add support for SVE2 ifuncs
authorWilco Dijkstra <wilco.dijkstra@arm.com>
Wed, 6 May 2026 15:28:25 +0000 (15:28 +0000)
committerWilco Dijkstra <wilco.dijkstra@arm.com>
Wed, 27 May 2026 13:21:37 +0000 (13:21 +0000)
Add support for SVE2 in cpu-features. Minor cleanup of init-arch.h.

Reviewed-by: Yury Khrustalev <yury.khrustalev@arm.com>
sysdeps/aarch64/cpu-features.h
sysdeps/aarch64/dl-diagnostics-cpu.c
sysdeps/aarch64/multiarch/init-arch.h
sysdeps/unix/sysv/linux/aarch64/cpu-features.c

index d6367a4596bdfb348d9de3a021c680f8d1348547..d1377c0dcaf5bdb2d6b9010947af521d88e88734 100644 (file)
@@ -69,6 +69,7 @@ struct cpu_features
   bool sve;
   bool unused;
   bool mops;
+  bool sve2;
 };
 
 #endif /* _CPU_FEATURES_AARCH64_H  */
index 697868cb25a6b52616791d8538b529a4bfcafb07..cbc2645f568f5ed0e59da34cf604a6fd1e6b7168 100644 (file)
@@ -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);
 
index 8afd91164fadb683367229a424612224c5f5ee20..e00d1746d864ecb72a6f0e4730cb162ee3ec33bb 100644 (file)
 #include <ldsodefs.h>
 #include <sys/auxv.h>
 
-/* 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;
index 36bd72bb12d989bccafa5a9dd5ce1ac7c702a86f..2e8887ce23fb0d3283dd3bc19e2b642ccefbac48 100644 (file)
@@ -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;