1#if IS_IN (libc)
2# define USE_WITH_AVX2 1
3
4# define VEC_SIZE 32
5# define MOV_SIZE 4
6# define RET_SIZE 4
7
8# define VEC(i) ymm##i
9
10# define VMOVU vmovdqu
11# define VMOVA vmovdqa
12
13# define MEMSET_SET_VEC0_AND_SET_RETURN(d, r) \
14 vmovd d, %xmm0; \
15 movq r, %rax;
16
17# define WMEMSET_SET_VEC0_AND_SET_RETURN(d, r) \
18 MEMSET_SET_VEC0_AND_SET_RETURN(d, r)
19
20# define MEMSET_VDUP_TO_VEC0_HIGH() vpbroadcastb %xmm0, %ymm0
21# define MEMSET_VDUP_TO_VEC0_LOW() vpbroadcastb %xmm0, %xmm0
22
23# define WMEMSET_VDUP_TO_VEC0_HIGH() vpbroadcastd %xmm0, %ymm0
24# define WMEMSET_VDUP_TO_VEC0_LOW() vpbroadcastd %xmm0, %xmm0
25
26# ifndef SECTION
27# define SECTION(p) p##.avx
28# endif
29# ifndef MEMSET_SYMBOL
30# define MEMSET_SYMBOL(p,s) p##_avx2_##s
31# endif
32# ifndef WMEMSET_SYMBOL
33# define WMEMSET_SYMBOL(p,s) p##_avx2_##s
34# endif
35
36# define USE_XMM_LESS_VEC
37# include "memset-vec-unaligned-erms.S"
38#endif
39

source code of glibc/sysdeps/x86_64/multiarch/memset-avx2-unaligned-erms.S