mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-05 14:02:21 +00:00
496 lines
6.1 KiB
NASM
496 lines
6.1 KiB
NASM
; This file is generated from a similarly-named Perl script in the BoringSSL
|
|
; source tree. Do not edit by hand.
|
|
|
|
default rel
|
|
%define XMMWORD
|
|
%define YMMWORD
|
|
%define ZMMWORD
|
|
|
|
%ifdef BORINGSSL_PREFIX
|
|
%include "boringssl_prefix_symbols_nasm.inc"
|
|
%endif
|
|
section .text code align=64
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
global gcm_gmult_ssse3
|
|
ALIGN 16
|
|
gcm_gmult_ssse3:
|
|
|
|
$L$gmult_seh_begin:
|
|
sub rsp,40
|
|
$L$gmult_seh_allocstack:
|
|
movdqa XMMWORD[rsp],xmm6
|
|
$L$gmult_seh_save_xmm6:
|
|
movdqa XMMWORD[16+rsp],xmm10
|
|
$L$gmult_seh_save_xmm10:
|
|
$L$gmult_seh_prolog_end:
|
|
movdqu xmm0,XMMWORD[rcx]
|
|
movdqa xmm10,XMMWORD[$L$reverse_bytes]
|
|
movdqa xmm2,XMMWORD[$L$low4_mask]
|
|
|
|
|
|
DB 102,65,15,56,0,194
|
|
|
|
|
|
movdqa xmm1,xmm2
|
|
pandn xmm1,xmm0
|
|
psrld xmm1,4
|
|
pand xmm0,xmm2
|
|
|
|
|
|
|
|
|
|
pxor xmm2,xmm2
|
|
pxor xmm3,xmm3
|
|
mov rax,5
|
|
$L$oop_row_1:
|
|
movdqa xmm4,XMMWORD[rdx]
|
|
lea rdx,[16+rdx]
|
|
|
|
|
|
movdqa xmm6,xmm2
|
|
DB 102,15,58,15,243,1
|
|
movdqa xmm3,xmm6
|
|
psrldq xmm2,1
|
|
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
DB 102,15,56,0,224
|
|
DB 102,15,56,0,233
|
|
|
|
|
|
pxor xmm2,xmm5
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
psllq xmm5,60
|
|
movdqa xmm6,xmm5
|
|
pslldq xmm6,8
|
|
pxor xmm3,xmm6
|
|
|
|
|
|
psrldq xmm5,8
|
|
pxor xmm2,xmm5
|
|
psrlq xmm4,4
|
|
pxor xmm2,xmm4
|
|
|
|
sub rax,1
|
|
jnz NEAR $L$oop_row_1
|
|
|
|
|
|
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,5
|
|
pxor xmm2,xmm3
|
|
pxor xmm3,xmm3
|
|
mov rax,5
|
|
$L$oop_row_2:
|
|
movdqa xmm4,XMMWORD[rdx]
|
|
lea rdx,[16+rdx]
|
|
|
|
|
|
movdqa xmm6,xmm2
|
|
DB 102,15,58,15,243,1
|
|
movdqa xmm3,xmm6
|
|
psrldq xmm2,1
|
|
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
DB 102,15,56,0,224
|
|
DB 102,15,56,0,233
|
|
|
|
|
|
pxor xmm2,xmm5
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
psllq xmm5,60
|
|
movdqa xmm6,xmm5
|
|
pslldq xmm6,8
|
|
pxor xmm3,xmm6
|
|
|
|
|
|
psrldq xmm5,8
|
|
pxor xmm2,xmm5
|
|
psrlq xmm4,4
|
|
pxor xmm2,xmm4
|
|
|
|
sub rax,1
|
|
jnz NEAR $L$oop_row_2
|
|
|
|
|
|
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,5
|
|
pxor xmm2,xmm3
|
|
pxor xmm3,xmm3
|
|
mov rax,6
|
|
$L$oop_row_3:
|
|
movdqa xmm4,XMMWORD[rdx]
|
|
lea rdx,[16+rdx]
|
|
|
|
|
|
movdqa xmm6,xmm2
|
|
DB 102,15,58,15,243,1
|
|
movdqa xmm3,xmm6
|
|
psrldq xmm2,1
|
|
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
DB 102,15,56,0,224
|
|
DB 102,15,56,0,233
|
|
|
|
|
|
pxor xmm2,xmm5
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
psllq xmm5,60
|
|
movdqa xmm6,xmm5
|
|
pslldq xmm6,8
|
|
pxor xmm3,xmm6
|
|
|
|
|
|
psrldq xmm5,8
|
|
pxor xmm2,xmm5
|
|
psrlq xmm4,4
|
|
pxor xmm2,xmm4
|
|
|
|
sub rax,1
|
|
jnz NEAR $L$oop_row_3
|
|
|
|
|
|
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,5
|
|
pxor xmm2,xmm3
|
|
pxor xmm3,xmm3
|
|
|
|
DB 102,65,15,56,0,210
|
|
movdqu XMMWORD[rcx],xmm2
|
|
|
|
|
|
pxor xmm0,xmm0
|
|
pxor xmm1,xmm1
|
|
pxor xmm2,xmm2
|
|
pxor xmm3,xmm3
|
|
pxor xmm4,xmm4
|
|
pxor xmm5,xmm5
|
|
pxor xmm6,xmm6
|
|
movdqa xmm6,XMMWORD[rsp]
|
|
movdqa xmm10,XMMWORD[16+rsp]
|
|
add rsp,40
|
|
DB 0F3h,0C3h ;repret
|
|
$L$gmult_seh_end:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
global gcm_ghash_ssse3
|
|
ALIGN 16
|
|
gcm_ghash_ssse3:
|
|
$L$ghash_seh_begin:
|
|
|
|
sub rsp,56
|
|
$L$ghash_seh_allocstack:
|
|
movdqa XMMWORD[rsp],xmm6
|
|
$L$ghash_seh_save_xmm6:
|
|
movdqa XMMWORD[16+rsp],xmm10
|
|
$L$ghash_seh_save_xmm10:
|
|
movdqa XMMWORD[32+rsp],xmm11
|
|
$L$ghash_seh_save_xmm11:
|
|
$L$ghash_seh_prolog_end:
|
|
movdqu xmm0,XMMWORD[rcx]
|
|
movdqa xmm10,XMMWORD[$L$reverse_bytes]
|
|
movdqa xmm11,XMMWORD[$L$low4_mask]
|
|
|
|
|
|
and r9,-16
|
|
|
|
|
|
|
|
DB 102,65,15,56,0,194
|
|
|
|
|
|
pxor xmm3,xmm3
|
|
$L$oop_ghash:
|
|
|
|
movdqu xmm1,XMMWORD[r8]
|
|
DB 102,65,15,56,0,202
|
|
pxor xmm0,xmm1
|
|
|
|
|
|
movdqa xmm1,xmm11
|
|
pandn xmm1,xmm0
|
|
psrld xmm1,4
|
|
pand xmm0,xmm11
|
|
|
|
|
|
|
|
|
|
pxor xmm2,xmm2
|
|
|
|
mov rax,5
|
|
$L$oop_row_4:
|
|
movdqa xmm4,XMMWORD[rdx]
|
|
lea rdx,[16+rdx]
|
|
|
|
|
|
movdqa xmm6,xmm2
|
|
DB 102,15,58,15,243,1
|
|
movdqa xmm3,xmm6
|
|
psrldq xmm2,1
|
|
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
DB 102,15,56,0,224
|
|
DB 102,15,56,0,233
|
|
|
|
|
|
pxor xmm2,xmm5
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
psllq xmm5,60
|
|
movdqa xmm6,xmm5
|
|
pslldq xmm6,8
|
|
pxor xmm3,xmm6
|
|
|
|
|
|
psrldq xmm5,8
|
|
pxor xmm2,xmm5
|
|
psrlq xmm4,4
|
|
pxor xmm2,xmm4
|
|
|
|
sub rax,1
|
|
jnz NEAR $L$oop_row_4
|
|
|
|
|
|
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,5
|
|
pxor xmm2,xmm3
|
|
pxor xmm3,xmm3
|
|
mov rax,5
|
|
$L$oop_row_5:
|
|
movdqa xmm4,XMMWORD[rdx]
|
|
lea rdx,[16+rdx]
|
|
|
|
|
|
movdqa xmm6,xmm2
|
|
DB 102,15,58,15,243,1
|
|
movdqa xmm3,xmm6
|
|
psrldq xmm2,1
|
|
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
DB 102,15,56,0,224
|
|
DB 102,15,56,0,233
|
|
|
|
|
|
pxor xmm2,xmm5
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
psllq xmm5,60
|
|
movdqa xmm6,xmm5
|
|
pslldq xmm6,8
|
|
pxor xmm3,xmm6
|
|
|
|
|
|
psrldq xmm5,8
|
|
pxor xmm2,xmm5
|
|
psrlq xmm4,4
|
|
pxor xmm2,xmm4
|
|
|
|
sub rax,1
|
|
jnz NEAR $L$oop_row_5
|
|
|
|
|
|
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,5
|
|
pxor xmm2,xmm3
|
|
pxor xmm3,xmm3
|
|
mov rax,6
|
|
$L$oop_row_6:
|
|
movdqa xmm4,XMMWORD[rdx]
|
|
lea rdx,[16+rdx]
|
|
|
|
|
|
movdqa xmm6,xmm2
|
|
DB 102,15,58,15,243,1
|
|
movdqa xmm3,xmm6
|
|
psrldq xmm2,1
|
|
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
DB 102,15,56,0,224
|
|
DB 102,15,56,0,233
|
|
|
|
|
|
pxor xmm2,xmm5
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
psllq xmm5,60
|
|
movdqa xmm6,xmm5
|
|
pslldq xmm6,8
|
|
pxor xmm3,xmm6
|
|
|
|
|
|
psrldq xmm5,8
|
|
pxor xmm2,xmm5
|
|
psrlq xmm4,4
|
|
pxor xmm2,xmm4
|
|
|
|
sub rax,1
|
|
jnz NEAR $L$oop_row_6
|
|
|
|
|
|
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,5
|
|
pxor xmm2,xmm3
|
|
pxor xmm3,xmm3
|
|
movdqa xmm0,xmm2
|
|
|
|
|
|
lea rdx,[((-256))+rdx]
|
|
|
|
|
|
lea r8,[16+r8]
|
|
sub r9,16
|
|
jnz NEAR $L$oop_ghash
|
|
|
|
|
|
DB 102,65,15,56,0,194
|
|
movdqu XMMWORD[rcx],xmm0
|
|
|
|
|
|
pxor xmm0,xmm0
|
|
pxor xmm1,xmm1
|
|
pxor xmm2,xmm2
|
|
pxor xmm3,xmm3
|
|
pxor xmm4,xmm4
|
|
pxor xmm5,xmm5
|
|
pxor xmm6,xmm6
|
|
movdqa xmm6,XMMWORD[rsp]
|
|
movdqa xmm10,XMMWORD[16+rsp]
|
|
movdqa xmm11,XMMWORD[32+rsp]
|
|
add rsp,56
|
|
DB 0F3h,0C3h ;repret
|
|
$L$ghash_seh_end:
|
|
|
|
|
|
|
|
ALIGN 16
|
|
|
|
|
|
$L$reverse_bytes:
|
|
DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
|
|
|
|
$L$low4_mask:
|
|
DQ 0x0f0f0f0f0f0f0f0f,0x0f0f0f0f0f0f0f0f
|
|
section .pdata rdata align=4
|
|
ALIGN 4
|
|
DD $L$gmult_seh_begin wrt ..imagebase
|
|
DD $L$gmult_seh_end wrt ..imagebase
|
|
DD $L$gmult_seh_info wrt ..imagebase
|
|
|
|
DD $L$ghash_seh_begin wrt ..imagebase
|
|
DD $L$ghash_seh_end wrt ..imagebase
|
|
DD $L$ghash_seh_info wrt ..imagebase
|
|
|
|
section .xdata rdata align=8
|
|
ALIGN 8
|
|
$L$gmult_seh_info:
|
|
DB 1
|
|
DB $L$gmult_seh_prolog_end-$L$gmult_seh_begin
|
|
DB 5
|
|
DB 0
|
|
|
|
DB $L$gmult_seh_save_xmm10-$L$gmult_seh_begin
|
|
DB 168
|
|
DW 1
|
|
|
|
DB $L$gmult_seh_save_xmm6-$L$gmult_seh_begin
|
|
DB 104
|
|
DW 0
|
|
|
|
DB $L$gmult_seh_allocstack-$L$gmult_seh_begin
|
|
DB 66
|
|
|
|
ALIGN 8
|
|
$L$ghash_seh_info:
|
|
DB 1
|
|
DB $L$ghash_seh_prolog_end-$L$ghash_seh_begin
|
|
DB 7
|
|
DB 0
|
|
|
|
DB $L$ghash_seh_save_xmm11-$L$ghash_seh_begin
|
|
DB 184
|
|
DW 2
|
|
|
|
DB $L$ghash_seh_save_xmm10-$L$ghash_seh_begin
|
|
DB 168
|
|
DW 1
|
|
|
|
DB $L$ghash_seh_save_xmm6-$L$ghash_seh_begin
|
|
DB 104
|
|
DW 0
|
|
|
|
DB $L$ghash_seh_allocstack-$L$ghash_seh_begin
|
|
DB 98
|