completely wrong. Chebychev (Remez), Padé, and maybe Taylor.
[fmap.git] / x86_64_sse2_x87 / fasm / examples / x86 / include / ext / avx512pf.inc
blobfd28cac0c752c2a250cb0cc01487b0a72a705e9d
1 \r
2 if ~ defined AVX_512\r
3 \r
4         include 'avx512f.inc'\r
5 \r
6 end if\r
7 \r
8 iterate <instr,postbyte>, gatherpf0,1 ,gatherpf1,2 ,scatterpf0,5, scatterpf1,6\r
9 \r
10         macro v#instr#dps? src*\r
11                 AVX_512.parse_vsib_operand_k1 @src,src\r
12                 if @src.type = 'mem' & @src.mask\r
13                         if @src.size and not 4 | @src.visize <> 64\r
14                                 err 'invalid operand size'\r
15                         end if\r
16                         @src.memsize = 4\r
17                         AVX_512.store_instruction 64,VEX_66_0F38_W0,EVEX_REQUIRED,0C6h,@src,@src.mask,postbyte,@src.index and 10000b\r
18                 else\r
19                         err 'invalid combination of operands'\r
20                 end if\r
21         end macro\r
23         macro v#instr#qps? src*\r
24                 AVX_512.parse_vsib_operand_k1 @src,src\r
25                 if @src.type = 'mem' & @src.mask\r
26                         if @src.size and not 8 | @src.visize <> 64\r
27                                 err 'invalid operand size'\r
28                         end if\r
29                         @src.memsize = 4\r
30                         AVX_512.store_instruction 64,VEX_66_0F38_W0,EVEX_REQUIRED,0C7h,@src,@src.mask,postbyte,@src.index and 10000b\r
31                 else\r
32                         err 'invalid combination of operands'\r
33                 end if\r
34         end macro\r
36         macro v#instr#dpd? src*\r
37                 AVX_512.parse_vsib_operand_k1 @src,src\r
38                 if @src.type = 'mem' & @src.mask\r
39                         if @src.size and not 4 | @src.visize <> 32\r
40                                 err 'invalid operand size'\r
41                         end if\r
42                         @src.memsize = 8\r
43                         AVX_512.store_instruction 64,VEX_66_0F38_W1,EVEX_REQUIRED,0C6h,@src,@src.mask,postbyte,@src.index and 10000b\r
44                 else\r
45                         err 'invalid combination of operands'\r
46                 end if\r
47         end macro\r
49         macro v#instr#qpd? src*\r
50                 AVX_512.parse_vsib_operand_k1 @src,src\r
51                 if @src.type = 'mem' & @src.mask\r
52                         if @src.size and not 8  | @src.visize <> 64\r
53                                 err 'invalid operand size'\r
54                         end if\r
55                         @src.memsize = 8\r
56                         AVX_512.store_instruction 64,VEX_66_0F38_W1,EVEX_REQUIRED,0C7h,@src,@src.mask,postbyte,@src.index and 10000b\r
57                 else\r
58                         err 'invalid combination of operands'\r
59                 end if\r
60         end macro\r
62 end iterate\r