]>
git.ipfire.org Git - thirdparty/glibc.git/blob - sysdeps/x86_64/dl-hwcaps-subdirs.c
8810a822efe369628a5fe2d8672b17d9d56cedd6
1 /* Architecture-specific glibc-hwcaps subdirectories. x86 version.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
19 #include <dl-hwcaps.h>
20 #include <cpu-features.h>
22 const char _dl_hwcaps_subdirs
[] = "x86-64-v4:x86-64-v3:x86-64-v2";
23 enum { subdirs_count
= 3 }; /* Number of components in _dl_hwcaps_subdirs. */
26 _dl_hwcaps_subdirs_active (void)
30 /* Test in reverse preference order. */
33 if (!(CPU_FEATURE_USABLE (CMPXCHG16B
)
34 && CPU_FEATURE_USABLE (LAHF64_SAHF64
)
35 && CPU_FEATURE_USABLE (POPCNT
)
36 && CPU_FEATURE_USABLE (SSE3
)
37 && CPU_FEATURE_USABLE (SSE4_1
)
38 && CPU_FEATURE_USABLE (SSE4_2
)
39 && CPU_FEATURE_USABLE (SSSE3
)))
40 return _dl_hwcaps_subdirs_build_bitmask (subdirs_count
, active
);
44 if (!(CPU_FEATURE_USABLE (AVX
)
45 && CPU_FEATURE_USABLE (AVX2
)
46 && CPU_FEATURE_USABLE (BMI1
)
47 && CPU_FEATURE_USABLE (BMI2
)
48 && CPU_FEATURE_USABLE (F16C
)
49 && CPU_FEATURE_USABLE (FMA
)
50 && CPU_FEATURE_USABLE (LZCNT
)
51 && CPU_FEATURE_USABLE (MOVBE
)
52 && CPU_FEATURE_USABLE (OSXSAVE
)))
53 return _dl_hwcaps_subdirs_build_bitmask (subdirs_count
, active
);
57 if (!(CPU_FEATURE_USABLE (AVX512F
)
58 && CPU_FEATURE_USABLE (AVX512BW
)
59 && CPU_FEATURE_USABLE (AVX512CD
)
60 && CPU_FEATURE_USABLE (AVX512DQ
)
61 && CPU_FEATURE_USABLE (AVX512VL
)))
62 return _dl_hwcaps_subdirs_build_bitmask (subdirs_count
, active
);
65 return _dl_hwcaps_subdirs_build_bitmask (subdirs_count
, active
);