LoongArch: fmv: Fix compilation errors when using glibc versions earlier than 2.38.

The macros HWCAP_LOONGARCH_LSX and HWCAP_LOONGARCH_LASX were defined
in glibc 2.38.  However, r16-5155 uses these two macros directly
without checking whether they are defined.  This causes errors when
compiling libgcc with glibc versions earlier than 2.38.

gcc/ChangeLog:

	* doc/extend.texi: Remove the incorrect prompt message.

libgcc/ChangeLog:

	* config/loongarch/cpuinfo.c (HWCAP_LOONGARCH_LSX): Define
	it if it is not defined.
	(HWCAP_LOONGARCH_LASX): Likewise.
This commit is contained in:
Lulu Cheng 2025-11-24 17:03:49 +08:00
parent ca0dea756c
commit c3858c51a4
2 changed files with 11 additions and 2 deletions

View File

@ -5015,8 +5015,6 @@ from the code model of the callee function.
Like attribute @code{target}, these options also reflect the behavior of
similar command line options.
Note that this attribute requires GLIBC2.38 and newer that support HWCAP.
@code{string} can take the following values:
@itemize @bullet

View File

@ -73,6 +73,17 @@ __init_loongarch_features_resolver (void)
if (CPUCFG3 & CPUCFG3_LD_SEQ_SA)
setCPUFeature (FEAT_LD_SEQ_SA);
/* The macros HWCAP_LOONGARCH_LSX and HWCAP_LOONGARCH_LASX are not defined
in glibc versions earlier than 2.38. If these two macros are not defined,
define them with reference to asm/hwcap.h. */
#ifndef HWCAP_LOONGARCH_LSX
#define HWCAP_LOONGARCH_LSX (1 << 4)
#endif
#ifndef HWCAP_LOONGARCH_LASX
#define HWCAP_LOONGARCH_LASX (1 << 5)
#endif
/* LSX and LASX can be disabled/enabled by kernel: on some old kernel
versions the vector context switch wasn't implemented and so they are
always disabled, and on Linux >= 6.18-rc1 the user can pass simd=