1 | #include <isa-level.h> |
2 | |
3 | #if ISA_SHOULD_BUILD (4) |
4 | |
5 | # define USE_WITH_AVX512 1 |
6 | |
7 | # define VEC_SIZE 64 |
8 | # define MOV_SIZE 6 |
9 | # define RET_SIZE 1 |
10 | |
11 | # define XMM0 xmm16 |
12 | # define YMM0 ymm16 |
13 | # define VEC0 zmm16 |
14 | # define VEC(i) VEC##i |
15 | |
16 | # define VMOVU vmovdqu64 |
17 | # define VMOVA vmovdqa64 |
18 | |
19 | # define VZEROUPPER |
20 | |
21 | # define MEMSET_SET_VEC0_AND_SET_RETURN(d, r) \ |
22 | vpbroadcastb d, %VEC0; \ |
23 | movq r, %rax |
24 | |
25 | # define WMEMSET_SET_VEC0_AND_SET_RETURN(d, r) \ |
26 | vpbroadcastd d, %VEC0; \ |
27 | movq r, %rax |
28 | |
29 | # define MEMSET_VDUP_TO_VEC0_HIGH() |
30 | # define MEMSET_VDUP_TO_VEC0_LOW() |
31 | |
32 | # define WMEMSET_VDUP_TO_VEC0_HIGH() |
33 | # define WMEMSET_VDUP_TO_VEC0_LOW() |
34 | |
35 | # define SECTION(p) p##.evex512 |
36 | |
37 | #ifndef MEMSET_SYMBOL |
38 | # define MEMSET_SYMBOL(p,s) p##_avx512_##s |
39 | #endif |
40 | #ifndef WMEMSET_SYMBOL |
41 | # define WMEMSET_SYMBOL(p,s) p##_avx512_##s |
42 | #endif |
43 | |
44 | |
45 | # define USE_LESS_VEC_MASK_STORE 1 |
46 | # include "memset-vec-unaligned-erms.S" |
47 | #endif |
48 | |