|
|
|
# This file is generated from a similarly-named Perl script in the BoringSSL
|
|
|
|
# source tree. Do not edit by hand.
|
|
|
|
|
|
|
|
#if defined(__i386__)
|
|
|
|
#if defined(BORINGSSL_PREFIX)
|
|
|
|
#include <boringssl_prefix_symbols_asm.h>
|
|
|
|
#endif
|
|
|
|
.text
|
|
|
|
.globl gcm_gmult_ssse3
|
|
|
|
.hidden gcm_gmult_ssse3
|
|
|
|
.type gcm_gmult_ssse3,@function
|
|
|
|
.align 16
|
|
|
|
gcm_gmult_ssse3:
|
|
|
|
.L_gcm_gmult_ssse3_begin:
|
|
|
|
pushl %ebp
|
|
|
|
pushl %ebx
|
|
|
|
pushl %esi
|
|
|
|
pushl %edi
|
|
|
|
movl 20(%esp),%edi
|
|
|
|
movl 24(%esp),%esi
|
|
|
|
movdqu (%edi),%xmm0
|
|
|
|
call .L000pic_point
|
|
|
|
.L000pic_point:
|
|
|
|
popl %eax
|
|
|
|
movdqa .Lreverse_bytes-.L000pic_point(%eax),%xmm7
|
|
|
|
movdqa .Llow4_mask-.L000pic_point(%eax),%xmm2
|
|
|
|
.byte 102,15,56,0,199
|
|
|
|
movdqa %xmm2,%xmm1
|
|
|
|
pandn %xmm0,%xmm1
|
|
|
|
psrld $4,%xmm1
|
|
|
|
pand %xmm2,%xmm0
|
|
|
|
pxor %xmm2,%xmm2
|
|
|
|
pxor %xmm3,%xmm3
|
|
|
|
movl $5,%eax
|
|
|
|
.L001loop_row_1:
|
|
|
|
movdqa (%esi),%xmm4
|
|
|
|
leal 16(%esi),%esi
|
|
|
|
movdqa %xmm2,%xmm6
|
|
|
|
.byte 102,15,58,15,243,1
|
|
|
|
movdqa %xmm6,%xmm3
|
|
|
|
psrldq $1,%xmm2
|
|
|
|
movdqa %xmm4,%xmm5
|
|
|
|
.byte 102,15,56,0,224
|
|
|
|
.byte 102,15,56,0,233
|
|
|
|
pxor %xmm5,%xmm2
|
|
|
|
movdqa %xmm4,%xmm5
|
|
|
|
psllq $60,%xmm5
|
|
|
|
movdqa %xmm5,%xmm6
|
|
|
|
pslldq $8,%xmm6
|
|
|
|
pxor %xmm6,%xmm3
|
|
|
|
psrldq $8,%xmm5
|
|
|
|
pxor %xmm5,%xmm2
|
|
|
|
psrlq $4,%xmm4
|
|
|
|
pxor %xmm4,%xmm2
|
|
|
|
subl $1,%eax
|
|
|
|
jnz .L001loop_row_1
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $1,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $1,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $5,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
pxor %xmm3,%xmm3
|
|
|
|
movl $5,%eax
|
|
|
|
.L002loop_row_2:
|
|
|
|
movdqa (%esi),%xmm4
|
|
|
|
leal 16(%esi),%esi
|
|
|
|
movdqa %xmm2,%xmm6
|
|
|
|
.byte 102,15,58,15,243,1
|
|
|
|
movdqa %xmm6,%xmm3
|
|
|
|
psrldq $1,%xmm2
|
|
|
|
movdqa %xmm4,%xmm5
|
|
|
|
.byte 102,15,56,0,224
|
|
|
|
.byte 102,15,56,0,233
|
|
|
|
pxor %xmm5,%xmm2
|
|
|
|
movdqa %xmm4,%xmm5
|
|
|
|
psllq $60,%xmm5
|
|
|
|
movdqa %xmm5,%xmm6
|
|
|
|
pslldq $8,%xmm6
|
|
|
|
pxor %xmm6,%xmm3
|
|
|
|
psrldq $8,%xmm5
|
|
|
|
pxor %xmm5,%xmm2
|
|
|
|
psrlq $4,%xmm4
|
|
|
|
pxor %xmm4,%xmm2
|
|
|
|
subl $1,%eax
|
|
|
|
jnz .L002loop_row_2
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $1,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $1,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $5,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
pxor %xmm3,%xmm3
|
|
|
|
movl $6,%eax
|
|
|
|
.L003loop_row_3:
|
|
|
|
movdqa (%esi),%xmm4
|
|
|
|
leal 16(%esi),%esi
|
|
|
|
movdqa %xmm2,%xmm6
|
|
|
|
.byte 102,15,58,15,243,1
|
|
|
|
movdqa %xmm6,%xmm3
|
|
|
|
psrldq $1,%xmm2
|
|
|
|
movdqa %xmm4,%xmm5
|
|
|
|
.byte 102,15,56,0,224
|
|
|
|
.byte 102,15,56,0,233
|
|
|
|
pxor %xmm5,%xmm2
|
|
|
|
movdqa %xmm4,%xmm5
|
|
|
|
psllq $60,%xmm5
|
|
|
|
movdqa %xmm5,%xmm6
|
|
|
|
pslldq $8,%xmm6
|
|
|
|
pxor %xmm6,%xmm3
|
|
|
|
psrldq $8,%xmm5
|
|
|
|
pxor %xmm5,%xmm2
|
|
|
|
psrlq $4,%xmm4
|
|
|
|
pxor %xmm4,%xmm2
|
|
|
|
subl $1,%eax
|
|
|
|
jnz .L003loop_row_3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $1,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $1,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $5,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
pxor %xmm3,%xmm3
|
|
|
|
.byte 102,15,56,0,215
|
|
|
|
movdqu %xmm2,(%edi)
|
|
|
|
pxor %xmm0,%xmm0
|
|
|
|
pxor %xmm1,%xmm1
|
|
|
|
pxor %xmm2,%xmm2
|
|
|
|
pxor %xmm3,%xmm3
|
|
|
|
pxor %xmm4,%xmm4
|
|
|
|
pxor %xmm5,%xmm5
|
|
|
|
pxor %xmm6,%xmm6
|
|
|
|
popl %edi
|
|
|
|
popl %esi
|
|
|
|
popl %ebx
|
|
|
|
popl %ebp
|
|
|
|
ret
|
|
|
|
.size gcm_gmult_ssse3,.-.L_gcm_gmult_ssse3_begin
|
|
|
|
.globl gcm_ghash_ssse3
|
|
|
|
.hidden gcm_ghash_ssse3
|
|
|
|
.type gcm_ghash_ssse3,@function
|
|
|
|
.align 16
|
|
|
|
gcm_ghash_ssse3:
|
|
|
|
.L_gcm_ghash_ssse3_begin:
|
|
|
|
pushl %ebp
|
|
|
|
pushl %ebx
|
|
|
|
pushl %esi
|
|
|
|
pushl %edi
|
|
|
|
movl 20(%esp),%edi
|
|
|
|
movl 24(%esp),%esi
|
|
|
|
movl 28(%esp),%edx
|
|
|
|
movl 32(%esp),%ecx
|
|
|
|
movdqu (%edi),%xmm0
|
|
|
|
call .L004pic_point
|
|
|
|
.L004pic_point:
|
|
|
|
popl %ebx
|
|
|
|
movdqa .Lreverse_bytes-.L004pic_point(%ebx),%xmm7
|
|
|
|
andl $-16,%ecx
|
|
|
|
.byte 102,15,56,0,199
|
|
|
|
pxor %xmm3,%xmm3
|
|
|
|
.L005loop_ghash:
|
|
|
|
movdqa .Llow4_mask-.L004pic_point(%ebx),%xmm2
|
|
|
|
movdqu (%edx),%xmm1
|
|
|
|
.byte 102,15,56,0,207
|
|
|
|
pxor %xmm1,%xmm0
|
|
|
|
movdqa %xmm2,%xmm1
|
|
|
|
pandn %xmm0,%xmm1
|
|
|
|
psrld $4,%xmm1
|
|
|
|
pand %xmm2,%xmm0
|
|
|
|
pxor %xmm2,%xmm2
|
|
|
|
movl $5,%eax
|
|
|
|
.L006loop_row_4:
|
|
|
|
movdqa (%esi),%xmm4
|
|
|
|
leal 16(%esi),%esi
|
|
|
|
movdqa %xmm2,%xmm6
|
|
|
|
.byte 102,15,58,15,243,1
|
|
|
|
movdqa %xmm6,%xmm3
|
|
|
|
psrldq $1,%xmm2
|
|
|
|
movdqa %xmm4,%xmm5
|
|
|
|
.byte 102,15,56,0,224
|
|
|
|
.byte 102,15,56,0,233
|
|
|
|
pxor %xmm5,%xmm2
|
|
|
|
movdqa %xmm4,%xmm5
|
|
|
|
psllq $60,%xmm5
|
|
|
|
movdqa %xmm5,%xmm6
|
|
|
|
pslldq $8,%xmm6
|
|
|
|
pxor %xmm6,%xmm3
|
|
|
|
psrldq $8,%xmm5
|
|
|
|
pxor %xmm5,%xmm2
|
|
|
|
psrlq $4,%xmm4
|
|
|
|
pxor %xmm4,%xmm2
|
|
|
|
subl $1,%eax
|
|
|
|
jnz .L006loop_row_4
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $1,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $1,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $5,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
pxor %xmm3,%xmm3
|
|
|
|
movl $5,%eax
|
|
|
|
.L007loop_row_5:
|
|
|
|
movdqa (%esi),%xmm4
|
|
|
|
leal 16(%esi),%esi
|
|
|
|
movdqa %xmm2,%xmm6
|
|
|
|
.byte 102,15,58,15,243,1
|
|
|
|
movdqa %xmm6,%xmm3
|
|
|
|
psrldq $1,%xmm2
|
|
|
|
movdqa %xmm4,%xmm5
|
|
|
|
.byte 102,15,56,0,224
|
|
|
|
.byte 102,15,56,0,233
|
|
|
|
pxor %xmm5,%xmm2
|
|
|
|
movdqa %xmm4,%xmm5
|
|
|
|
psllq $60,%xmm5
|
|
|
|
movdqa %xmm5,%xmm6
|
|
|
|
pslldq $8,%xmm6
|
|
|
|
pxor %xmm6,%xmm3
|
|
|
|
psrldq $8,%xmm5
|
|
|
|
pxor %xmm5,%xmm2
|
|
|
|
psrlq $4,%xmm4
|
|
|
|
pxor %xmm4,%xmm2
|
|
|
|
subl $1,%eax
|
|
|
|
jnz .L007loop_row_5
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $1,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $1,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $5,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
pxor %xmm3,%xmm3
|
|
|
|
movl $6,%eax
|
|
|
|
.L008loop_row_6:
|
|
|
|
movdqa (%esi),%xmm4
|
|
|
|
leal 16(%esi),%esi
|
|
|
|
movdqa %xmm2,%xmm6
|
|
|
|
.byte 102,15,58,15,243,1
|
|
|
|
movdqa %xmm6,%xmm3
|
|
|
|
psrldq $1,%xmm2
|
|
|
|
movdqa %xmm4,%xmm5
|
|
|
|
.byte 102,15,56,0,224
|
|
|
|
.byte 102,15,56,0,233
|
|
|
|
pxor %xmm5,%xmm2
|
|
|
|
movdqa %xmm4,%xmm5
|
|
|
|
psllq $60,%xmm5
|
|
|
|
movdqa %xmm5,%xmm6
|
|
|
|
pslldq $8,%xmm6
|
|
|
|
pxor %xmm6,%xmm3
|
|
|
|
psrldq $8,%xmm5
|
|
|
|
pxor %xmm5,%xmm2
|
|
|
|
psrlq $4,%xmm4
|
|
|
|
pxor %xmm4,%xmm2
|
|
|
|
subl $1,%eax
|
|
|
|
jnz .L008loop_row_6
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $1,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $1,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
psrlq $5,%xmm3
|
|
|
|
pxor %xmm3,%xmm2
|
|
|
|
pxor %xmm3,%xmm3
|
|
|
|
movdqa %xmm2,%xmm0
|
|
|
|
leal -256(%esi),%esi
|
|
|
|
leal 16(%edx),%edx
|
|
|
|
subl $16,%ecx
|
|
|
|
jnz .L005loop_ghash
|
|
|
|
.byte 102,15,56,0,199
|
|
|
|
movdqu %xmm0,(%edi)
|
|
|
|
pxor %xmm0,%xmm0
|
|
|
|
pxor %xmm1,%xmm1
|
|
|
|
pxor %xmm2,%xmm2
|
|
|
|
pxor %xmm3,%xmm3
|
|
|
|
pxor %xmm4,%xmm4
|
|
|
|
pxor %xmm5,%xmm5
|
|
|
|
pxor %xmm6,%xmm6
|
|
|
|
popl %edi
|
|
|
|
popl %esi
|
|
|
|
popl %ebx
|
|
|
|
popl %ebp
|
|
|
|
ret
|
|
|
|
.size gcm_ghash_ssse3,.-.L_gcm_ghash_ssse3_begin
|
|
|
|
.align 16
|
|
|
|
.Lreverse_bytes:
|
|
|
|
.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
|
|
|
|
.align 16
|
|
|
|
.Llow4_mask:
|
|
|
|
.long 252645135,252645135,252645135,252645135
|
|
|
|
#endif
|
|
|
|
.section .note.GNU-stack,"",@progbits
|