Update copyright dates with scripts/update-copyrights
[glibc.git] / sysdeps / x86_64 / multiarch / memset-sse2-unaligned-erms.S
blobefb172fefeba57cb5884a83c676acfda7e79ec29
1 /* memset with SSE2.
2    All versions must be listed in ifunc-impl-list.c.
3    Copyright (C) 2014-2023 Free Software Foundation, Inc.
4    This file is part of the GNU C Library.
6    The GNU C Library is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Lesser General Public
8    License as published by the Free Software Foundation; either
9    version 2.1 of the License, or (at your option) any later version.
11    The GNU C Library is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    Lesser General Public License for more details.
16    You should have received a copy of the GNU Lesser General Public
17    License along with the GNU C Library; if not, see
18    <https://www.gnu.org/licenses/>.  */
20 #include <isa-level.h>
22 /* MINIMUM_X86_ISA_LEVEL <= 2 because there is no V2 implementation
23    so we need this to build for ISA V2 builds. */
24 #if ISA_SHOULD_BUILD (2)
26 # include <sysdep.h>
27 # define USE_WITH_SSE2  1
29 # include "x86-sse2-vecs.h"
31 # define MEMSET_SET_VEC0_AND_SET_RETURN(d, r) \
32   movd d, %xmm0; \
33   movq r, %rax; \
34   punpcklbw %xmm0, %xmm0; \
35   punpcklwd %xmm0, %xmm0; \
36   pshufd $0, %xmm0, %xmm0
38 # define WMEMSET_SET_VEC0_AND_SET_RETURN(d, r) \
39   movd d, %xmm0; \
40   pshufd $0, %xmm0, %xmm0; \
41   movq r, %rax
43 # define MEMSET_VDUP_TO_VEC0_HIGH()
44 # define MEMSET_VDUP_TO_VEC0_LOW()
46 # define WMEMSET_VDUP_TO_VEC0_HIGH()
47 # define WMEMSET_VDUP_TO_VEC0_LOW()
49 # ifndef MEMSET_SYMBOL
50 #  define MEMSET_SYMBOL(p,s)    p##_sse2_##s
51 # endif
53 # ifndef WMEMSET_SYMBOL
54 #  define WMEMSET_SYMBOL(p,s)   p##_sse2_##s
55 # endif
57 # include "memset-vec-unaligned-erms.S"
59 #endif