30 lines
590 B
Plaintext
30 lines
590 B
Plaintext
; MCS file for Gnu GCC AMD64 compiler
|
|
;
|
|
; Sorry about all the %'s! Each % must be input here as %%
|
|
;
|
|
; "Triple register" is %xmm2
|
|
;
|
|
MACRO MULB_START
|
|
ASM (
|
|
"movq %%0,%%%%rbx\n"
|
|
"movq %%1,%%%%rsi\n"
|
|
"movq %%2,%%%%rdi\n"
|
|
"pxor %%%%xmm2,%%%%xmm2\n"
|
|
ENDM
|
|
MACRO STEPB
|
|
"movq 8*%d(%%%%rbx),%%%%xmm0\n"
|
|
"movq 8*%d(%%%%rsi),%%%%xmm1\n"
|
|
"pclmulqdq $0,%%%%xmm0,%%%%xmm1\n"
|
|
"pxor %%%%xmm1,%%%%xmm2\n"
|
|
ENDM
|
|
MACRO MBFIN
|
|
"movq %%%%xmm2,8*%d(%%%%rdi)\n"
|
|
"psrldq $8,%%%%xmm2\n"
|
|
ENDM
|
|
MACRO MULB_END
|
|
:
|
|
:"m"(a),"m"(b),"m"(c)
|
|
:"rdi","rsi","rbx","xmm0","xmm1","xmm2","memory"
|
|
);
|
|
ENDM
|