diff options
author | Noah Goldstein <goldstein.w.n@gmail.com> | 2022-06-22 16:51:19 -0700 |
---|---|---|
committer | Noah Goldstein <goldstein.w.n@gmail.com> | 2022-06-22 19:41:35 -0700 |
commit | 703f4341083afa7d71987aa96a35eab81309e634 (patch) | |
tree | 9e1c48a7cf7baf41599d03bc852ae88b8a75d263 /sysdeps/x86_64 | |
parent | 464d189b9622932a75302290625de84931656ec0 (diff) | |
download | glibc-703f4341083afa7d71987aa96a35eab81309e634.zip glibc-703f4341083afa7d71987aa96a35eab81309e634.tar.gz glibc-703f4341083afa7d71987aa96a35eab81309e634.tar.bz2 |
x86: Add defines / utilities for making ISA specific x86 builds
1. Factor out some of the ISA level defines in isa-level.c to
standalone header isa-level.h
2. Add new headers with ISA level dependent macros for handling
ifuncs.
Note, this file does not change any code.
Tested with and without multiarch on x86_64 for ISA levels:
{generic, x86-64-v2, x86-64-v3, x86-64-v4}
And m32 with and without multiarch.
Diffstat (limited to 'sysdeps/x86_64')
-rw-r--r-- | sysdeps/x86_64/isa-default-impl.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/sysdeps/x86_64/isa-default-impl.h b/sysdeps/x86_64/isa-default-impl.h new file mode 100644 index 0000000..3463466 --- /dev/null +++ b/sysdeps/x86_64/isa-default-impl.h @@ -0,0 +1,49 @@ +/* Utility for including proper default function based on ISA level + Copyright (C) 2022 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#include <isa-level.h> + +#ifndef DEFAULT_IMPL_V1 +# error "Must have at least ISA V1 Version" +#endif + +#ifndef DEFAULT_IMPL_V2 +# define DEFAULT_IMPL_V2 DEFAULT_IMPL_V1 +#endif + +#ifndef DEFAULT_IMPL_V3 +# define DEFAULT_IMPL_V3 DEFAULT_IMPL_V2 +#endif + +#ifndef DEFAULT_IMPL_V4 +# define DEFAULT_IMPL_V4 DEFAULT_IMPL_V3 +#endif + +#if MINIMUM_X86_ISA_LEVEL == 1 +# define ISA_DEFAULT_IMPL DEFAULT_IMPL_V1 +#elif MINIMUM_X86_ISA_LEVEL == 2 +# define ISA_DEFAULT_IMPL DEFAULT_IMPL_V2 +#elif MINIMUM_X86_ISA_LEVEL == 3 +# define ISA_DEFAULT_IMPL DEFAULT_IMPL_V3 +#elif MINIMUM_X86_ISA_LEVEL == 4 +# define ISA_DEFAULT_IMPL DEFAULT_IMPL_V4 +#else +# error "Unsupported ISA Level!" +#endif + +#include ISA_DEFAULT_IMPL |