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