mirror of git://gcc.gnu.org/git/gcc.git
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:
parent
ca0dea756c
commit
c3858c51a4
|
|
@ -5015,8 +5015,6 @@ from the code model of the callee function.
|
||||||
Like attribute @code{target}, these options also reflect the behavior of
|
Like attribute @code{target}, these options also reflect the behavior of
|
||||||
similar command line options.
|
similar command line options.
|
||||||
|
|
||||||
Note that this attribute requires GLIBC2.38 and newer that support HWCAP.
|
|
||||||
|
|
||||||
@code{string} can take the following values:
|
@code{string} can take the following values:
|
||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,17 @@ __init_loongarch_features_resolver (void)
|
||||||
if (CPUCFG3 & CPUCFG3_LD_SEQ_SA)
|
if (CPUCFG3 & CPUCFG3_LD_SEQ_SA)
|
||||||
setCPUFeature (FEAT_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
|
/* 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
|
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=
|
always disabled, and on Linux >= 6.18-rc1 the user can pass simd=
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue