1# x86 specific tunables. 2# Copyright (C) 2017-2022 Free Software Foundation, Inc. 3# This file is part of the GNU C Library. 4 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. 9 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. 14 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/>. 18 19glibc { 20 cpu { 21 hwcaps { 22 type: STRING 23 } 24 x86_ibt { 25 type: STRING 26 } 27 x86_shstk { 28 type: STRING 29 } 30 x86_non_temporal_threshold { 31 type: SIZE_T 32 } 33 x86_rep_movsb_threshold { 34 type: SIZE_T 35 # Since there is overhead to set up REP MOVSB operation, REP 36 # MOVSB isn't faster on short data. The memcpy micro benchmark 37 # in glibc shows that 2KB is the approximate value above which 38 # REP MOVSB becomes faster than SSE2 optimization on processors 39 # with Enhanced REP MOVSB. Since larger register size can move 40 # more data with a single load and store, the threshold is 41 # higher with larger register size. Micro benchmarks show AVX 42 # REP MOVSB becomes faster apprximately at 8KB. The AVX512 43 # threshold is extrapolated to 16KB. For machines with FSRM the 44 # threshold is universally set at 2112 bytes. Note: Since the 45 # REP MOVSB threshold must be greater than 8 times of vector 46 # size and the default value is 4096 * (vector size / 16), the 47 # default value and the minimum value must be updated at 48 # run-time. NB: Don't set the default value since we can't tell 49 # if the tunable value is set by user or not [BZ #27069]. 50 minval: 1 51 } 52 x86_rep_stosb_threshold { 53 type: SIZE_T 54 # Since there is overhead to set up REP STOSB operation, REP STOSB 55 # isn't faster on short data. The memset micro benchmark in glibc 56 # shows that 2KB is the approximate value above which REP STOSB 57 # becomes faster on processors with Enhanced REP STOSB. Since the 58 # stored value is fixed, larger register size has minimal impact 59 # on threshold. 60 minval: 1 61 default: 2048 62 } 63 x86_data_cache_size { 64 type: SIZE_T 65 } 66 x86_shared_cache_size { 67 type: SIZE_T 68 } 69 } 70} 71