| // This file is generated from a similarly-named Perl script in the BoringSSL |
| // source tree. Do not edit by hand. |
| |
| #include <openssl/asm_base.h> |
| |
| #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) |
| .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 // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) |