.macro red16 r,rs=0,x=12 vpmulhw %ymm1,%ymm\r,%ymm\x .if \rs vpmulhrsw %ymm\rs,%ymm\x,%ymm\x .else vpsraw $10,%ymm\x,%ymm\x .endif vpmullw %ymm0,%ymm\x,%ymm\x vpsubw %ymm\x,%ymm\r,%ymm\r .endm .macro csubq r,x=12 vpsubw %ymm0,%ymm\r,%ymm\r vpsraw $15,%ymm\r,%ymm\x vpand %ymm0,%ymm\x,%ymm\x vpaddw %ymm\x,%ymm\r,%ymm\r .endm .macro caddq r,x=12 vpsraw $15,%ymm\r,%ymm\x vpand %ymm0,%ymm\x,%ymm\x vpaddw %ymm\x,%ymm\r,%ymm\r .endm .macro fqmulprecomp al,ah,b,x=12 vpmullw %ymm\al,%ymm\b,%ymm\x vpmulhw %ymm\ah,%ymm\b,%ymm\b vpmulhw %ymm0,%ymm\x,%ymm\x vpsubw %ymm\x,%ymm\b,%ymm\b .endm