| // 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_init_clmul |
| .private_extern _gcm_init_clmul |
| .align 4 |
| _gcm_init_clmul: |
| L_gcm_init_clmul_begin: |
| movl 4(%esp),%edx |
| movl 8(%esp),%eax |
| call L000pic |
| L000pic: |
| popl %ecx |
| leal Lbswap-L000pic(%ecx),%ecx |
| movdqu (%eax),%xmm2 |
| pshufd $78,%xmm2,%xmm2 |
| pshufd $255,%xmm2,%xmm4 |
| movdqa %xmm2,%xmm3 |
| psllq $1,%xmm2 |
| pxor %xmm5,%xmm5 |
| psrlq $63,%xmm3 |
| pcmpgtd %xmm4,%xmm5 |
| pslldq $8,%xmm3 |
| por %xmm3,%xmm2 |
| pand 16(%ecx),%xmm5 |
| pxor %xmm5,%xmm2 |
| movdqa %xmm2,%xmm0 |
| movdqa %xmm0,%xmm1 |
| pshufd $78,%xmm0,%xmm3 |
| pshufd $78,%xmm2,%xmm4 |
| pxor %xmm0,%xmm3 |
| pxor %xmm2,%xmm4 |
| .byte 102,15,58,68,194,0 |
| .byte 102,15,58,68,202,17 |
| .byte 102,15,58,68,220,0 |
| xorps %xmm0,%xmm3 |
| xorps %xmm1,%xmm3 |
| movdqa %xmm3,%xmm4 |
| psrldq $8,%xmm3 |
| pslldq $8,%xmm4 |
| pxor %xmm3,%xmm1 |
| pxor %xmm4,%xmm0 |
| movdqa %xmm0,%xmm4 |
| movdqa %xmm0,%xmm3 |
| psllq $5,%xmm0 |
| pxor %xmm0,%xmm3 |
| psllq $1,%xmm0 |
| pxor %xmm3,%xmm0 |
| psllq $57,%xmm0 |
| movdqa %xmm0,%xmm3 |
| pslldq $8,%xmm0 |
| psrldq $8,%xmm3 |
| pxor %xmm4,%xmm0 |
| pxor %xmm3,%xmm1 |
| movdqa %xmm0,%xmm4 |
| psrlq $1,%xmm0 |
| pxor %xmm4,%xmm1 |
| pxor %xmm0,%xmm4 |
| psrlq $5,%xmm0 |
| pxor %xmm4,%xmm0 |
| psrlq $1,%xmm0 |
| pxor %xmm1,%xmm0 |
| pshufd $78,%xmm2,%xmm3 |
| pshufd $78,%xmm0,%xmm4 |
| pxor %xmm2,%xmm3 |
| movdqu %xmm2,(%edx) |
| pxor %xmm0,%xmm4 |
| movdqu %xmm0,16(%edx) |
| .byte 102,15,58,15,227,8 |
| movdqu %xmm4,32(%edx) |
| ret |
| .globl _gcm_gmult_clmul |
| .private_extern _gcm_gmult_clmul |
| .align 4 |
| _gcm_gmult_clmul: |
| L_gcm_gmult_clmul_begin: |
| movl 4(%esp),%eax |
| movl 8(%esp),%edx |
| call L001pic |
| L001pic: |
| popl %ecx |
| leal Lbswap-L001pic(%ecx),%ecx |
| movdqu (%eax),%xmm0 |
| movdqa (%ecx),%xmm5 |
| movups (%edx),%xmm2 |
| .byte 102,15,56,0,197 |
| movups 32(%edx),%xmm4 |
| movdqa %xmm0,%xmm1 |
| pshufd $78,%xmm0,%xmm3 |
| pxor %xmm0,%xmm3 |
| .byte 102,15,58,68,194,0 |
| .byte 102,15,58,68,202,17 |
| .byte 102,15,58,68,220,0 |
| xorps %xmm0,%xmm3 |
| xorps %xmm1,%xmm3 |
| movdqa %xmm3,%xmm4 |
| psrldq $8,%xmm3 |
| pslldq $8,%xmm4 |
| pxor %xmm3,%xmm1 |
| pxor %xmm4,%xmm0 |
| movdqa %xmm0,%xmm4 |
| movdqa %xmm0,%xmm3 |
| psllq $5,%xmm0 |
| pxor %xmm0,%xmm3 |
| psllq $1,%xmm0 |
| pxor %xmm3,%xmm0 |
| psllq $57,%xmm0 |
| movdqa %xmm0,%xmm3 |
| pslldq $8,%xmm0 |
| psrldq $8,%xmm3 |
| pxor %xmm4,%xmm0 |
| pxor %xmm3,%xmm1 |
| movdqa %xmm0,%xmm4 |
| psrlq $1,%xmm0 |
| pxor %xmm4,%xmm1 |
| pxor %xmm0,%xmm4 |
| psrlq $5,%xmm0 |
| pxor %xmm4,%xmm0 |
| psrlq $1,%xmm0 |
| pxor %xmm1,%xmm0 |
| .byte 102,15,56,0,197 |
| movdqu %xmm0,(%eax) |
| ret |
| .globl _gcm_ghash_clmul |
| .private_extern _gcm_ghash_clmul |
| .align 4 |
| _gcm_ghash_clmul: |
| L_gcm_ghash_clmul_begin: |
| pushl %ebp |
| pushl %ebx |
| pushl %esi |
| pushl %edi |
| movl 20(%esp),%eax |
| movl 24(%esp),%edx |
| movl 28(%esp),%esi |
| movl 32(%esp),%ebx |
| call L002pic |
| L002pic: |
| popl %ecx |
| leal Lbswap-L002pic(%ecx),%ecx |
| movdqu (%eax),%xmm0 |
| movdqa (%ecx),%xmm5 |
| movdqu (%edx),%xmm2 |
| .byte 102,15,56,0,197 |
| subl $16,%ebx |
| jz L003odd_tail |
| movdqu (%esi),%xmm3 |
| movdqu 16(%esi),%xmm6 |
| .byte 102,15,56,0,221 |
| .byte 102,15,56,0,245 |
| movdqu 32(%edx),%xmm5 |
| pxor %xmm3,%xmm0 |
| pshufd $78,%xmm6,%xmm3 |
| movdqa %xmm6,%xmm7 |
| pxor %xmm6,%xmm3 |
| leal 32(%esi),%esi |
| .byte 102,15,58,68,242,0 |
| .byte 102,15,58,68,250,17 |
| .byte 102,15,58,68,221,0 |
| movups 16(%edx),%xmm2 |
| nop |
| subl $32,%ebx |
| jbe L004even_tail |
| jmp L005mod_loop |
| .align 5,0x90 |
| L005mod_loop: |
| pshufd $78,%xmm0,%xmm4 |
| movdqa %xmm0,%xmm1 |
| pxor %xmm0,%xmm4 |
| nop |
| .byte 102,15,58,68,194,0 |
| .byte 102,15,58,68,202,17 |
| .byte 102,15,58,68,229,16 |
| movups (%edx),%xmm2 |
| xorps %xmm6,%xmm0 |
| movdqa (%ecx),%xmm5 |
| xorps %xmm7,%xmm1 |
| movdqu (%esi),%xmm7 |
| pxor %xmm0,%xmm3 |
| movdqu 16(%esi),%xmm6 |
| pxor %xmm1,%xmm3 |
| .byte 102,15,56,0,253 |
| pxor %xmm3,%xmm4 |
| movdqa %xmm4,%xmm3 |
| psrldq $8,%xmm4 |
| pslldq $8,%xmm3 |
| pxor %xmm4,%xmm1 |
| pxor %xmm3,%xmm0 |
| .byte 102,15,56,0,245 |
| pxor %xmm7,%xmm1 |
| movdqa %xmm6,%xmm7 |
| movdqa %xmm0,%xmm4 |
| movdqa %xmm0,%xmm3 |
| psllq $5,%xmm0 |
| pxor %xmm0,%xmm3 |
| psllq $1,%xmm0 |
| pxor %xmm3,%xmm0 |
| .byte 102,15,58,68,242,0 |
| movups 32(%edx),%xmm5 |
| psllq $57,%xmm0 |
| movdqa %xmm0,%xmm3 |
| pslldq $8,%xmm0 |
| psrldq $8,%xmm3 |
| pxor %xmm4,%xmm0 |
| pxor %xmm3,%xmm1 |
| pshufd $78,%xmm7,%xmm3 |
| movdqa %xmm0,%xmm4 |
| psrlq $1,%xmm0 |
| pxor %xmm7,%xmm3 |
| pxor %xmm4,%xmm1 |
| .byte 102,15,58,68,250,17 |
| movups 16(%edx),%xmm2 |
| pxor %xmm0,%xmm4 |
| psrlq $5,%xmm0 |
| pxor %xmm4,%xmm0 |
| psrlq $1,%xmm0 |
| pxor %xmm1,%xmm0 |
| .byte 102,15,58,68,221,0 |
| leal 32(%esi),%esi |
| subl $32,%ebx |
| ja L005mod_loop |
| L004even_tail: |
| pshufd $78,%xmm0,%xmm4 |
| movdqa %xmm0,%xmm1 |
| pxor %xmm0,%xmm4 |
| .byte 102,15,58,68,194,0 |
| .byte 102,15,58,68,202,17 |
| .byte 102,15,58,68,229,16 |
| movdqa (%ecx),%xmm5 |
| xorps %xmm6,%xmm0 |
| xorps %xmm7,%xmm1 |
| pxor %xmm0,%xmm3 |
| pxor %xmm1,%xmm3 |
| pxor %xmm3,%xmm4 |
| movdqa %xmm4,%xmm3 |
| psrldq $8,%xmm4 |
| pslldq $8,%xmm3 |
| pxor %xmm4,%xmm1 |
| pxor %xmm3,%xmm0 |
| movdqa %xmm0,%xmm4 |
| movdqa %xmm0,%xmm3 |
| psllq $5,%xmm0 |
| pxor %xmm0,%xmm3 |
| psllq $1,%xmm0 |
| pxor %xmm3,%xmm0 |
| psllq $57,%xmm0 |
| movdqa %xmm0,%xmm3 |
| pslldq $8,%xmm0 |
| psrldq $8,%xmm3 |
| pxor %xmm4,%xmm0 |
| pxor %xmm3,%xmm1 |
| movdqa %xmm0,%xmm4 |
| psrlq $1,%xmm0 |
| pxor %xmm4,%xmm1 |
| pxor %xmm0,%xmm4 |
| psrlq $5,%xmm0 |
| pxor %xmm4,%xmm0 |
| psrlq $1,%xmm0 |
| pxor %xmm1,%xmm0 |
| testl %ebx,%ebx |
| jnz L006done |
| movups (%edx),%xmm2 |
| L003odd_tail: |
| movdqu (%esi),%xmm3 |
| .byte 102,15,56,0,221 |
| pxor %xmm3,%xmm0 |
| movdqa %xmm0,%xmm1 |
| pshufd $78,%xmm0,%xmm3 |
| pshufd $78,%xmm2,%xmm4 |
| pxor %xmm0,%xmm3 |
| pxor %xmm2,%xmm4 |
| .byte 102,15,58,68,194,0 |
| .byte 102,15,58,68,202,17 |
| .byte 102,15,58,68,220,0 |
| xorps %xmm0,%xmm3 |
| xorps %xmm1,%xmm3 |
| movdqa %xmm3,%xmm4 |
| psrldq $8,%xmm3 |
| pslldq $8,%xmm4 |
| pxor %xmm3,%xmm1 |
| pxor %xmm4,%xmm0 |
| movdqa %xmm0,%xmm4 |
| movdqa %xmm0,%xmm3 |
| psllq $5,%xmm0 |
| pxor %xmm0,%xmm3 |
| psllq $1,%xmm0 |
| pxor %xmm3,%xmm0 |
| psllq $57,%xmm0 |
| movdqa %xmm0,%xmm3 |
| pslldq $8,%xmm0 |
| psrldq $8,%xmm3 |
| pxor %xmm4,%xmm0 |
| pxor %xmm3,%xmm1 |
| movdqa %xmm0,%xmm4 |
| psrlq $1,%xmm0 |
| pxor %xmm4,%xmm1 |
| pxor %xmm0,%xmm4 |
| psrlq $5,%xmm0 |
| pxor %xmm4,%xmm0 |
| psrlq $1,%xmm0 |
| pxor %xmm1,%xmm0 |
| L006done: |
| .byte 102,15,56,0,197 |
| movdqu %xmm0,(%eax) |
| popl %edi |
| popl %esi |
| popl %ebx |
| popl %ebp |
| ret |
| .align 6,0x90 |
| Lbswap: |
| .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 |
| .byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194 |
| .byte 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67 |
| .byte 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112 |
| .byte 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62 |
| .byte 0 |
| #endif |