completely wrong. Chebychev (Remez), Padé, and maybe Taylor.
[fmap.git] / x86_64_sse2_x87 / fasm / examples / x86 / include / ext / vaes.inc
blob00e83db4318ba7b91f23c8ffc16141af5a799a73
1 \r
2 include 'aes.inc'\r
3 \r
4 if defined AVX_512\r
5 \r
6         iterate <instr,opcode>, aesenc,0DCh, aesenclast,0DDh, aesdec,0DEh, aesdeclast,0DFh\r
7 \r
8                 macro v#instr? dest*,src*,src2*\r
9                         AVX_512.parse_operand @dest,dest\r
10                         AVX_512.parse_operand @src,src\r
11                         AVX_512.parse_operand @src2,src2\r
12                         if @dest.type = 'mmreg' & @src.type = 'mmreg' & (@src2.type = 'mem' | @src2.type = 'mmreg')\r
13                                 if @dest.size <> @src.size | @src2.size and not @dest.size\r
14                                         err 'operand sizes do not match'\r
15                                 end if\r
16                                 @src2.memsize = 0\r
17                                 AVX_512.store_instruction @dest.size,VEX_66_0F38_W0,EVEX_AS_VEX+EVEX_VL,opcode,@src2,0,@dest.rm,@src.rm\r
18                         else\r
19                                 err 'invalid combination of operands'\r
20                         end if\r
21                 end macro\r
23         end iterate\r
25 else\r
27         include 'avx.inc'\r
29         iterate <instr,opcode>, aesenc,0DCh, aesenclast,0DDh, aesdec,0DEh, aesdeclast,0DFh\r
31                 macro v#instr? dest*,src*,src2*\r
32                         AVX.basic_instruction VEX_66_0F38_W0,opcode,0,dest,src,src2\r
33                 end macro\r
35         end iterate\r
37 end if\r