ring/crypto/cipher_extra/asm/chacha20_poly1305_x86_64.pl [751:799]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - &poly_add($len_store); &poly_mul(); $code.=" # Final reduce mov $acc0, $t0 mov $acc1, $t1 mov $acc2, $t2 sub \$-5, $acc0 sbb \$-1, $acc1 sbb \$3, $acc2 cmovc $t0, $acc0 cmovc $t1, $acc1 cmovc $t2, $acc2 # Add in s part of the key add 0+$s_store, $acc0 adc 8+$s_store, $acc1\n"; $code.=" movaps 16*0+$xmm_store, %xmm6 movaps 16*1+$xmm_store, %xmm7 movaps 16*2+$xmm_store, %xmm8 movaps 16*3+$xmm_store, %xmm9 movaps 16*4+$xmm_store, %xmm10 movaps 16*5+$xmm_store, %xmm11 movaps 16*6+$xmm_store, %xmm12 movaps 16*7+$xmm_store, %xmm13 movaps 16*8+$xmm_store, %xmm14 movaps 16*9+$xmm_store, %xmm15\n" if ($win64); $code.=" .cfi_remember_state add \$288 + $xmm_storage + 32, %rsp .cfi_adjust_cfa_offset -(288 + 32) # The tag replaces the key on return pop $keyp .cfi_pop $keyp mov $acc0, ($keyp) mov $acc1, 8($keyp) pop %r15 .cfi_pop %r15 pop %r14 .cfi_pop %r14 pop %r13 .cfi_pop %r13 pop %r12 .cfi_pop %r12 pop %rbx .cfi_pop %rbx pop %rbp .cfi_pop %rbp ret - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ring/crypto/cipher_extra/asm/chacha20_poly1305_x86_64.pl [1283:1331]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - &poly_add($len_store); &poly_mul(); $code.=" # Final reduce mov $acc0, $t0 mov $acc1, $t1 mov $acc2, $t2 sub \$-5, $acc0 sbb \$-1, $acc1 sbb \$3, $acc2 cmovc $t0, $acc0 cmovc $t1, $acc1 cmovc $t2, $acc2 # Add in s part of the key add 0+$s_store, $acc0 adc 8+$s_store, $acc1\n"; $code.=" movaps 16*0+$xmm_store, %xmm6 movaps 16*1+$xmm_store, %xmm7 movaps 16*2+$xmm_store, %xmm8 movaps 16*3+$xmm_store, %xmm9 movaps 16*4+$xmm_store, %xmm10 movaps 16*5+$xmm_store, %xmm11 movaps 16*6+$xmm_store, %xmm12 movaps 16*7+$xmm_store, %xmm13 movaps 16*8+$xmm_store, %xmm14 movaps 16*9+$xmm_store, %xmm15\n" if ($win64); $code.=" .cfi_remember_state add \$288 + $xmm_storage + 32, %rsp .cfi_adjust_cfa_offset -(288 + 32) # The tag replaces the key on return pop $keyp .cfi_pop $keyp mov $acc0, ($keyp) mov $acc1, 8($keyp) pop %r15 .cfi_pop %r15 pop %r14 .cfi_pop %r14 pop %r13 .cfi_pop %r13 pop %r12 .cfi_pop %r12 pop %rbx .cfi_pop %rbx pop %rbp .cfi_pop %rbp ret - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -