2020-10-14 20:45:32 +00:00
|
|
|
# This file is generated from a similarly-named Perl script in the BoringSSL
|
|
|
|
# source tree. Do not edit by hand.
|
|
|
|
|
|
|
|
#if defined(__has_feature)
|
|
|
|
#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM)
|
|
|
|
#define OPENSSL_NO_ASM
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM)
|
|
|
|
#if defined(BORINGSSL_PREFIX)
|
|
|
|
#include <boringssl_prefix_symbols_asm.h>
|
|
|
|
#endif
|
|
|
|
.text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.type gcm_gmult_ssse3, @function
|
|
|
|
.globl gcm_gmult_ssse3
|
|
|
|
.hidden gcm_gmult_ssse3
|
|
|
|
.align 16
|
|
|
|
gcm_gmult_ssse3:
|
|
|
|
.cfi_startproc
|
|
|
|
.Lgmult_seh_begin:
|
|
|
|
movdqu (%rdi),%xmm0
|
|
|
|
movdqa .Lreverse_bytes(%rip),%xmm10
|
|
|
|
movdqa .Llow4_mask(%rip),%xmm2
|
|
|
|
|
|
|
|
|
|
|
|
.byte 102,65,15,56,0,194
|
|
|
|
|
|
|
|
|
|
|
|
movdqa %xmm2,%xmm1
|
|
|
|
pandn %xmm0,%xmm1
|
|
|
|
psrld $4,%xmm1
|
|
|
|
pand %xmm2,%xmm0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pxor %xmm2,%xmm2
|
|
|
|
pxor %xmm3,%xmm3
|
|
|
|
movq $5,%rax
|
|
|
|
.Loop_row_1:
|
|
|
|
movdqa (%rsi),%xmm4
|
|
|
|
leaq 16(%rsi),%rsi
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
subq $1,%rax
|
|
|
|
jnz .Loop_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
|
|
|
|
movq $5,%rax
|
|
|
|
.Loop_row_2:
|
|
|
|
movdqa (%rsi),%xmm4
|
|
|
|
leaq 16(%rsi),%rsi
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
subq $1,%rax
|
|
|
|
jnz .Loop_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
|
|
|
|
movq $6,%rax
|
|
|
|
.Loop_row_3:
|
|
|
|
movdqa (%rsi),%xmm4
|
|
|
|
leaq 16(%rsi),%rsi
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
subq $1,%rax
|
|
|
|
jnz .Loop_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,65,15,56,0,210
|
|
|
|
movdqu %xmm2,(%rdi)
|
|
|
|
|
|
|
|
|
|
|
|
pxor %xmm0,%xmm0
|
|
|
|
pxor %xmm1,%xmm1
|
|
|
|
pxor %xmm2,%xmm2
|
|
|
|
pxor %xmm3,%xmm3
|
|
|
|
pxor %xmm4,%xmm4
|
|
|
|
pxor %xmm5,%xmm5
|
|
|
|
pxor %xmm6,%xmm6
|
|
|
|
.byte 0xf3,0xc3
|
|
|
|
.Lgmult_seh_end:
|
|
|
|
.cfi_endproc
|
|
|
|
.size gcm_gmult_ssse3,.-gcm_gmult_ssse3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.type gcm_ghash_ssse3, @function
|
|
|
|
.globl gcm_ghash_ssse3
|
|
|
|
.hidden gcm_ghash_ssse3
|
|
|
|
.align 16
|
|
|
|
gcm_ghash_ssse3:
|
|
|
|
.Lghash_seh_begin:
|
|
|
|
.cfi_startproc
|
|
|
|
movdqu (%rdi),%xmm0
|
|
|
|
movdqa .Lreverse_bytes(%rip),%xmm10
|
|
|
|
movdqa .Llow4_mask(%rip),%xmm11
|
|
|
|
|
|
|
|
|
|
|
|
andq $-16,%rcx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.byte 102,65,15,56,0,194
|
|
|
|
|
|
|
|
|
|
|
|
pxor %xmm3,%xmm3
|
|
|
|
.Loop_ghash:
|
|
|
|
|
|
|
|
movdqu (%rdx),%xmm1
|
|
|
|
.byte 102,65,15,56,0,202
|
|
|
|
pxor %xmm1,%xmm0
|
|
|
|
|
|
|
|
|
|
|
|
movdqa %xmm11,%xmm1
|
|
|
|
pandn %xmm0,%xmm1
|
|
|
|
psrld $4,%xmm1
|
|
|
|
pand %xmm11,%xmm0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pxor %xmm2,%xmm2
|
|
|
|
|
|
|
|
movq $5,%rax
|
|
|
|
.Loop_row_4:
|
|
|
|
movdqa (%rsi),%xmm4
|
|
|
|
leaq 16(%rsi),%rsi
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
subq $1,%rax
|
|
|
|
jnz .Loop_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
|
|
|
|
movq $5,%rax
|
|
|
|
.Loop_row_5:
|
|
|
|
movdqa (%rsi),%xmm4
|
|
|
|
leaq 16(%rsi),%rsi
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
subq $1,%rax
|
|
|
|
jnz .Loop_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
|
|
|
|
movq $6,%rax
|
|
|
|
.Loop_row_6:
|
|
|
|
movdqa (%rsi),%xmm4
|
|
|
|
leaq 16(%rsi),%rsi
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
subq $1,%rax
|
|
|
|
jnz .Loop_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
|
|
|
|
|
|
|
|
|
|
|
|
leaq -256(%rsi),%rsi
|
|
|
|
|
|
|
|
|
|
|
|
leaq 16(%rdx),%rdx
|
|
|
|
subq $16,%rcx
|
|
|
|
jnz .Loop_ghash
|
|
|
|
|
|
|
|
|
|
|
|
.byte 102,65,15,56,0,194
|
|
|
|
movdqu %xmm0,(%rdi)
|
|
|
|
|
|
|
|
|
|
|
|
pxor %xmm0,%xmm0
|
|
|
|
pxor %xmm1,%xmm1
|
|
|
|
pxor %xmm2,%xmm2
|
|
|
|
pxor %xmm3,%xmm3
|
|
|
|
pxor %xmm4,%xmm4
|
|
|
|
pxor %xmm5,%xmm5
|
|
|
|
pxor %xmm6,%xmm6
|
|
|
|
.byte 0xf3,0xc3
|
|
|
|
.Lghash_seh_end:
|
|
|
|
.cfi_endproc
|
|
|
|
.size gcm_ghash_ssse3,.-gcm_ghash_ssse3
|
|
|
|
|
|
|
|
.align 16
|
|
|
|
|
|
|
|
|
|
|
|
.Lreverse_bytes:
|
|
|
|
.byte 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
|
|
|
|
|
|
|
|
.Llow4_mask:
|
|
|
|
.quad 0x0f0f0f0f0f0f0f0f, 0x0f0f0f0f0f0f0f0f
|
|
|
|
#endif
|
2022-06-18 20:16:18 +00:00
|
|
|
.section .note.GNU-stack,"",@progbits
|