Message ID | 20221015030030.204172-5-goldstein.w.n@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v10,1/6] x86: Update VEC macros to complete API for evex/evex512 impls | expand |
On Fri, Oct 14, 2022 at 8:03 PM Noah Goldstein via Libc-alpha <libc-alpha@sourceware.org> wrote: > > This commit does not change libc.so > > Tested build on x86-64 > --- > sysdeps/x86_64/multiarch/avx-rtm-vecs.h | 35 -------- > sysdeps/x86_64/multiarch/avx-vecs.h | 47 ----------- > sysdeps/x86_64/multiarch/evex-vecs-common.h | 39 --------- > sysdeps/x86_64/multiarch/evex256-vecs.h | 35 -------- > sysdeps/x86_64/multiarch/evex512-vecs.h | 35 -------- > sysdeps/x86_64/multiarch/sse2-vecs.h | 47 ----------- > sysdeps/x86_64/multiarch/vec-macros.h | 90 --------------------- > 7 files changed, 328 deletions(-) > delete mode 100644 sysdeps/x86_64/multiarch/avx-rtm-vecs.h > delete mode 100644 sysdeps/x86_64/multiarch/avx-vecs.h > delete mode 100644 sysdeps/x86_64/multiarch/evex-vecs-common.h > delete mode 100644 sysdeps/x86_64/multiarch/evex256-vecs.h > delete mode 100644 sysdeps/x86_64/multiarch/evex512-vecs.h > delete mode 100644 sysdeps/x86_64/multiarch/sse2-vecs.h > delete mode 100644 sysdeps/x86_64/multiarch/vec-macros.h > > diff --git a/sysdeps/x86_64/multiarch/avx-rtm-vecs.h b/sysdeps/x86_64/multiarch/avx-rtm-vecs.h > deleted file mode 100644 > index 6ca9f5e6ba..0000000000 > --- a/sysdeps/x86_64/multiarch/avx-rtm-vecs.h > +++ /dev/null > @@ -1,35 +0,0 @@ > -/* Common config for AVX-RTM VECs > - All versions must be listed in ifunc-impl-list.c. > - 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/>. */ > - > -#ifndef _AVX_RTM_VECS_H > -#define _AVX_RTM_VECS_H 1 > - > -#define COND_VZEROUPPER COND_VZEROUPPER_XTEST > -#define ZERO_UPPER_VEC_REGISTERS_RETURN \ > - ZERO_UPPER_VEC_REGISTERS_RETURN_XTEST > - > -#define VZEROUPPER_RETURN jmp L(return_vzeroupper) > - > -#define USE_WITH_RTM 1 > -#include "avx-vecs.h" > - > -#undef SECTION > -#define SECTION(p) p##.avx.rtm > - > -#endif > diff --git a/sysdeps/x86_64/multiarch/avx-vecs.h b/sysdeps/x86_64/multiarch/avx-vecs.h > deleted file mode 100644 > index 89680f5db8..0000000000 > --- a/sysdeps/x86_64/multiarch/avx-vecs.h > +++ /dev/null > @@ -1,47 +0,0 @@ > -/* Common config for AVX VECs > - All versions must be listed in ifunc-impl-list.c. > - 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/>. */ > - > -#ifndef _AVX_VECS_H > -#define _AVX_VECS_H 1 > - > -#ifdef VEC_SIZE > -# error "Multiple VEC configs included!" > -#endif > - > -#define VEC_SIZE 32 > -#include "vec-macros.h" > - > -#define USE_WITH_AVX 1 > -#define SECTION(p) p##.avx > - > -/* 4-byte mov instructions with AVX2. */ > -#define MOV_SIZE 4 > -/* 1 (ret) + 3 (vzeroupper). */ > -#define RET_SIZE 4 > -#define VZEROUPPER vzeroupper > - > -#define VMOVU vmovdqu > -#define VMOVA vmovdqa > -#define VMOVNT vmovntdq > - > -/* Often need to access xmm portion. */ > -#define VEC_xmm VEC_any_xmm > -#define VEC VEC_any_ymm > - > -#endif > diff --git a/sysdeps/x86_64/multiarch/evex-vecs-common.h b/sysdeps/x86_64/multiarch/evex-vecs-common.h > deleted file mode 100644 > index 99806ebcd7..0000000000 > --- a/sysdeps/x86_64/multiarch/evex-vecs-common.h > +++ /dev/null > @@ -1,39 +0,0 @@ > -/* Common config for EVEX256 and EVEX512 VECs > - All versions must be listed in ifunc-impl-list.c. > - 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/>. */ > - > -#ifndef _EVEX_VECS_COMMON_H > -#define _EVEX_VECS_COMMON_H 1 > - > -#include "vec-macros.h" > - > -/* 6-byte mov instructions with EVEX. */ > -#define MOV_SIZE 6 > -/* No vzeroupper needed. */ > -#define RET_SIZE 1 > -#define VZEROUPPER > - > -#define VMOVU vmovdqu64 > -#define VMOVA vmovdqa64 > -#define VMOVNT vmovntdq > - > -#define VEC_xmm VEC_hi_xmm > -#define VEC_ymm VEC_hi_ymm > -#define VEC_zmm VEC_hi_zmm > - > -#endif > diff --git a/sysdeps/x86_64/multiarch/evex256-vecs.h b/sysdeps/x86_64/multiarch/evex256-vecs.h > deleted file mode 100644 > index 222ba46dc7..0000000000 > --- a/sysdeps/x86_64/multiarch/evex256-vecs.h > +++ /dev/null > @@ -1,35 +0,0 @@ > -/* Common config for EVEX256 VECs > - All versions must be listed in ifunc-impl-list.c. > - 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/>. */ > - > -#ifndef _EVEX256_VECS_H > -#define _EVEX256_VECS_H 1 > - > -#ifdef VEC_SIZE > -# error "Multiple VEC configs included!" > -#endif > - > -#define VEC_SIZE 32 > -#include "evex-vecs-common.h" > - > -#define USE_WITH_EVEX256 1 > -#define SECTION(p) p##.evex > - > -#define VEC VEC_ymm > - > -#endif > diff --git a/sysdeps/x86_64/multiarch/evex512-vecs.h b/sysdeps/x86_64/multiarch/evex512-vecs.h > deleted file mode 100644 > index d1784d5368..0000000000 > --- a/sysdeps/x86_64/multiarch/evex512-vecs.h > +++ /dev/null > @@ -1,35 +0,0 @@ > -/* Common config for EVEX512 VECs > - All versions must be listed in ifunc-impl-list.c. > - 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/>. */ > - > -#ifndef _EVEX512_VECS_H > -#define _EVEX512_VECS_H 1 > - > -#ifdef VEC_SIZE > -# error "Multiple VEC configs included!" > -#endif > - > -#define VEC_SIZE 64 > -#include "evex-vecs-common.h" > - > -#define USE_WITH_EVEX512 1 > -#define SECTION(p) p##.evex512 > - > -#define VEC VEC_zmm > - > -#endif > diff --git a/sysdeps/x86_64/multiarch/sse2-vecs.h b/sysdeps/x86_64/multiarch/sse2-vecs.h > deleted file mode 100644 > index 2b77a59d56..0000000000 > --- a/sysdeps/x86_64/multiarch/sse2-vecs.h > +++ /dev/null > @@ -1,47 +0,0 @@ > -/* Common config for SSE2 VECs > - All versions must be listed in ifunc-impl-list.c. > - 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/>. */ > - > -#ifndef _SSE2_VECS_H > -#define _SSE2_VECS_H 1 > - > -#ifdef VEC_SIZE > -# error "Multiple VEC configs included!" > -#endif > - > -#define VEC_SIZE 16 > -#include "vec-macros.h" > - > -#define USE_WITH_SSE2 1 > -#define SECTION(p) p > - > -/* 3-byte mov instructions with SSE2. */ > -#define MOV_SIZE 3 > -/* No vzeroupper needed. */ > -#define RET_SIZE 1 > -#define VZEROUPPER > - > -#define VMOVU movups > -#define VMOVA movaps > -#define VMOVNT movntdq > - > -#define VEC_xmm VEC_any_xmm > -#define VEC VEC_any_xmm > - > - > -#endif > diff --git a/sysdeps/x86_64/multiarch/vec-macros.h b/sysdeps/x86_64/multiarch/vec-macros.h > deleted file mode 100644 > index 9f3ffecede..0000000000 > --- a/sysdeps/x86_64/multiarch/vec-macros.h > +++ /dev/null > @@ -1,90 +0,0 @@ > -/* Macro helpers for VEC_{type}({vec_num}) > - All versions must be listed in ifunc-impl-list.c. > - 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/>. */ > - > -#ifndef _VEC_MACROS_H > -#define _VEC_MACROS_H 1 > - > -#ifndef VEC_SIZE > -# error "Never include this file directly. Always include a vector config." > -#endif > - > -/* Defines so we can use SSE2 / AVX2 / EVEX / EVEX512 encoding with same > - VEC(N) values. */ > -#define VEC_hi_xmm0 xmm16 > -#define VEC_hi_xmm1 xmm17 > -#define VEC_hi_xmm2 xmm18 > -#define VEC_hi_xmm3 xmm19 > -#define VEC_hi_xmm4 xmm20 > -#define VEC_hi_xmm5 xmm21 > -#define VEC_hi_xmm6 xmm22 > -#define VEC_hi_xmm7 xmm23 > -#define VEC_hi_xmm8 xmm24 > -#define VEC_hi_xmm9 xmm25 > -#define VEC_hi_xmm10 xmm26 > -#define VEC_hi_xmm11 xmm27 > -#define VEC_hi_xmm12 xmm28 > -#define VEC_hi_xmm13 xmm29 > -#define VEC_hi_xmm14 xmm30 > -#define VEC_hi_xmm15 xmm31 > - > -#define VEC_hi_ymm0 ymm16 > -#define VEC_hi_ymm1 ymm17 > -#define VEC_hi_ymm2 ymm18 > -#define VEC_hi_ymm3 ymm19 > -#define VEC_hi_ymm4 ymm20 > -#define VEC_hi_ymm5 ymm21 > -#define VEC_hi_ymm6 ymm22 > -#define VEC_hi_ymm7 ymm23 > -#define VEC_hi_ymm8 ymm24 > -#define VEC_hi_ymm9 ymm25 > -#define VEC_hi_ymm10 ymm26 > -#define VEC_hi_ymm11 ymm27 > -#define VEC_hi_ymm12 ymm28 > -#define VEC_hi_ymm13 ymm29 > -#define VEC_hi_ymm14 ymm30 > -#define VEC_hi_ymm15 ymm31 > - > -#define VEC_hi_zmm0 zmm16 > -#define VEC_hi_zmm1 zmm17 > -#define VEC_hi_zmm2 zmm18 > -#define VEC_hi_zmm3 zmm19 > -#define VEC_hi_zmm4 zmm20 > -#define VEC_hi_zmm5 zmm21 > -#define VEC_hi_zmm6 zmm22 > -#define VEC_hi_zmm7 zmm23 > -#define VEC_hi_zmm8 zmm24 > -#define VEC_hi_zmm9 zmm25 > -#define VEC_hi_zmm10 zmm26 > -#define VEC_hi_zmm11 zmm27 > -#define VEC_hi_zmm12 zmm28 > -#define VEC_hi_zmm13 zmm29 > -#define VEC_hi_zmm14 zmm30 > -#define VEC_hi_zmm15 zmm31 > - > -#define PRIMITIVE_VEC(vec, num) vec##num > - > -#define VEC_any_xmm(i) PRIMITIVE_VEC(xmm, i) > -#define VEC_any_ymm(i) PRIMITIVE_VEC(ymm, i) > -#define VEC_any_zmm(i) PRIMITIVE_VEC(zmm, i) > - > -#define VEC_hi_xmm(i) PRIMITIVE_VEC(VEC_hi_xmm, i) > -#define VEC_hi_ymm(i) PRIMITIVE_VEC(VEC_hi_ymm, i) > -#define VEC_hi_zmm(i) PRIMITIVE_VEC(VEC_hi_zmm, i) > - > -#endif > -- > 2.34.1 > LGTM --Sunil
diff --git a/sysdeps/x86_64/multiarch/avx-rtm-vecs.h b/sysdeps/x86_64/multiarch/avx-rtm-vecs.h deleted file mode 100644 index 6ca9f5e6ba..0000000000 --- a/sysdeps/x86_64/multiarch/avx-rtm-vecs.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Common config for AVX-RTM VECs - All versions must be listed in ifunc-impl-list.c. - 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/>. */ - -#ifndef _AVX_RTM_VECS_H -#define _AVX_RTM_VECS_H 1 - -#define COND_VZEROUPPER COND_VZEROUPPER_XTEST -#define ZERO_UPPER_VEC_REGISTERS_RETURN \ - ZERO_UPPER_VEC_REGISTERS_RETURN_XTEST - -#define VZEROUPPER_RETURN jmp L(return_vzeroupper) - -#define USE_WITH_RTM 1 -#include "avx-vecs.h" - -#undef SECTION -#define SECTION(p) p##.avx.rtm - -#endif diff --git a/sysdeps/x86_64/multiarch/avx-vecs.h b/sysdeps/x86_64/multiarch/avx-vecs.h deleted file mode 100644 index 89680f5db8..0000000000 --- a/sysdeps/x86_64/multiarch/avx-vecs.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Common config for AVX VECs - All versions must be listed in ifunc-impl-list.c. - 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/>. */ - -#ifndef _AVX_VECS_H -#define _AVX_VECS_H 1 - -#ifdef VEC_SIZE -# error "Multiple VEC configs included!" -#endif - -#define VEC_SIZE 32 -#include "vec-macros.h" - -#define USE_WITH_AVX 1 -#define SECTION(p) p##.avx - -/* 4-byte mov instructions with AVX2. */ -#define MOV_SIZE 4 -/* 1 (ret) + 3 (vzeroupper). */ -#define RET_SIZE 4 -#define VZEROUPPER vzeroupper - -#define VMOVU vmovdqu -#define VMOVA vmovdqa -#define VMOVNT vmovntdq - -/* Often need to access xmm portion. */ -#define VEC_xmm VEC_any_xmm -#define VEC VEC_any_ymm - -#endif diff --git a/sysdeps/x86_64/multiarch/evex-vecs-common.h b/sysdeps/x86_64/multiarch/evex-vecs-common.h deleted file mode 100644 index 99806ebcd7..0000000000 --- a/sysdeps/x86_64/multiarch/evex-vecs-common.h +++ /dev/null @@ -1,39 +0,0 @@ -/* Common config for EVEX256 and EVEX512 VECs - All versions must be listed in ifunc-impl-list.c. - 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/>. */ - -#ifndef _EVEX_VECS_COMMON_H -#define _EVEX_VECS_COMMON_H 1 - -#include "vec-macros.h" - -/* 6-byte mov instructions with EVEX. */ -#define MOV_SIZE 6 -/* No vzeroupper needed. */ -#define RET_SIZE 1 -#define VZEROUPPER - -#define VMOVU vmovdqu64 -#define VMOVA vmovdqa64 -#define VMOVNT vmovntdq - -#define VEC_xmm VEC_hi_xmm -#define VEC_ymm VEC_hi_ymm -#define VEC_zmm VEC_hi_zmm - -#endif diff --git a/sysdeps/x86_64/multiarch/evex256-vecs.h b/sysdeps/x86_64/multiarch/evex256-vecs.h deleted file mode 100644 index 222ba46dc7..0000000000 --- a/sysdeps/x86_64/multiarch/evex256-vecs.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Common config for EVEX256 VECs - All versions must be listed in ifunc-impl-list.c. - 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/>. */ - -#ifndef _EVEX256_VECS_H -#define _EVEX256_VECS_H 1 - -#ifdef VEC_SIZE -# error "Multiple VEC configs included!" -#endif - -#define VEC_SIZE 32 -#include "evex-vecs-common.h" - -#define USE_WITH_EVEX256 1 -#define SECTION(p) p##.evex - -#define VEC VEC_ymm - -#endif diff --git a/sysdeps/x86_64/multiarch/evex512-vecs.h b/sysdeps/x86_64/multiarch/evex512-vecs.h deleted file mode 100644 index d1784d5368..0000000000 --- a/sysdeps/x86_64/multiarch/evex512-vecs.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Common config for EVEX512 VECs - All versions must be listed in ifunc-impl-list.c. - 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/>. */ - -#ifndef _EVEX512_VECS_H -#define _EVEX512_VECS_H 1 - -#ifdef VEC_SIZE -# error "Multiple VEC configs included!" -#endif - -#define VEC_SIZE 64 -#include "evex-vecs-common.h" - -#define USE_WITH_EVEX512 1 -#define SECTION(p) p##.evex512 - -#define VEC VEC_zmm - -#endif diff --git a/sysdeps/x86_64/multiarch/sse2-vecs.h b/sysdeps/x86_64/multiarch/sse2-vecs.h deleted file mode 100644 index 2b77a59d56..0000000000 --- a/sysdeps/x86_64/multiarch/sse2-vecs.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Common config for SSE2 VECs - All versions must be listed in ifunc-impl-list.c. - 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/>. */ - -#ifndef _SSE2_VECS_H -#define _SSE2_VECS_H 1 - -#ifdef VEC_SIZE -# error "Multiple VEC configs included!" -#endif - -#define VEC_SIZE 16 -#include "vec-macros.h" - -#define USE_WITH_SSE2 1 -#define SECTION(p) p - -/* 3-byte mov instructions with SSE2. */ -#define MOV_SIZE 3 -/* No vzeroupper needed. */ -#define RET_SIZE 1 -#define VZEROUPPER - -#define VMOVU movups -#define VMOVA movaps -#define VMOVNT movntdq - -#define VEC_xmm VEC_any_xmm -#define VEC VEC_any_xmm - - -#endif diff --git a/sysdeps/x86_64/multiarch/vec-macros.h b/sysdeps/x86_64/multiarch/vec-macros.h deleted file mode 100644 index 9f3ffecede..0000000000 --- a/sysdeps/x86_64/multiarch/vec-macros.h +++ /dev/null @@ -1,90 +0,0 @@ -/* Macro helpers for VEC_{type}({vec_num}) - All versions must be listed in ifunc-impl-list.c. - 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/>. */ - -#ifndef _VEC_MACROS_H -#define _VEC_MACROS_H 1 - -#ifndef VEC_SIZE -# error "Never include this file directly. Always include a vector config." -#endif - -/* Defines so we can use SSE2 / AVX2 / EVEX / EVEX512 encoding with same - VEC(N) values. */ -#define VEC_hi_xmm0 xmm16 -#define VEC_hi_xmm1 xmm17 -#define VEC_hi_xmm2 xmm18 -#define VEC_hi_xmm3 xmm19 -#define VEC_hi_xmm4 xmm20 -#define VEC_hi_xmm5 xmm21 -#define VEC_hi_xmm6 xmm22 -#define VEC_hi_xmm7 xmm23 -#define VEC_hi_xmm8 xmm24 -#define VEC_hi_xmm9 xmm25 -#define VEC_hi_xmm10 xmm26 -#define VEC_hi_xmm11 xmm27 -#define VEC_hi_xmm12 xmm28 -#define VEC_hi_xmm13 xmm29 -#define VEC_hi_xmm14 xmm30 -#define VEC_hi_xmm15 xmm31 - -#define VEC_hi_ymm0 ymm16 -#define VEC_hi_ymm1 ymm17 -#define VEC_hi_ymm2 ymm18 -#define VEC_hi_ymm3 ymm19 -#define VEC_hi_ymm4 ymm20 -#define VEC_hi_ymm5 ymm21 -#define VEC_hi_ymm6 ymm22 -#define VEC_hi_ymm7 ymm23 -#define VEC_hi_ymm8 ymm24 -#define VEC_hi_ymm9 ymm25 -#define VEC_hi_ymm10 ymm26 -#define VEC_hi_ymm11 ymm27 -#define VEC_hi_ymm12 ymm28 -#define VEC_hi_ymm13 ymm29 -#define VEC_hi_ymm14 ymm30 -#define VEC_hi_ymm15 ymm31 - -#define VEC_hi_zmm0 zmm16 -#define VEC_hi_zmm1 zmm17 -#define VEC_hi_zmm2 zmm18 -#define VEC_hi_zmm3 zmm19 -#define VEC_hi_zmm4 zmm20 -#define VEC_hi_zmm5 zmm21 -#define VEC_hi_zmm6 zmm22 -#define VEC_hi_zmm7 zmm23 -#define VEC_hi_zmm8 zmm24 -#define VEC_hi_zmm9 zmm25 -#define VEC_hi_zmm10 zmm26 -#define VEC_hi_zmm11 zmm27 -#define VEC_hi_zmm12 zmm28 -#define VEC_hi_zmm13 zmm29 -#define VEC_hi_zmm14 zmm30 -#define VEC_hi_zmm15 zmm31 - -#define PRIMITIVE_VEC(vec, num) vec##num - -#define VEC_any_xmm(i) PRIMITIVE_VEC(xmm, i) -#define VEC_any_ymm(i) PRIMITIVE_VEC(ymm, i) -#define VEC_any_zmm(i) PRIMITIVE_VEC(zmm, i) - -#define VEC_hi_xmm(i) PRIMITIVE_VEC(VEC_hi_xmm, i) -#define VEC_hi_ymm(i) PRIMITIVE_VEC(VEC_hi_ymm, i) -#define VEC_hi_zmm(i) PRIMITIVE_VEC(VEC_hi_zmm, i) - -#endif