KGC_TEST/miracl/source/gcclmul.mcs

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