diff options
Diffstat (limited to 'deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/bn/x86_64-mont.s')
-rw-r--r-- | deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/bn/x86_64-mont.s | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/bn/x86_64-mont.s b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/bn/x86_64-mont.s index dd43da0d86..5abe3696c4 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/bn/x86_64-mont.s +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/bn/x86_64-mont.s @@ -6,8 +6,10 @@ .p2align 4 _bn_mul_mont: + movl %r9d,%r9d movq %rsp,%rax + testl $3,%r9d jnz L$mul_enter cmpl $8,%r9d @@ -22,12 +24,18 @@ _bn_mul_mont: .p2align 4 L$mul_enter: pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + negq %r9 movq %rsp,%r11 leaq -16(%rsp,%r9,8),%r10 @@ -59,6 +67,7 @@ L$mul_page_walk: L$mul_page_walk_done: movq %rax,8(%rsp,%r9,8) + L$mul_body: movq %rdx,%r12 movq (%r8),%r8 @@ -226,33 +235,50 @@ L$copy: jnz L$copy movq 8(%rsp,%r9,8),%rsi + movq $1,%rax movq -48(%rsi),%r15 + movq -40(%rsi),%r14 + movq -32(%rsi),%r13 + movq -24(%rsi),%r12 + movq -16(%rsi),%rbp + movq -8(%rsi),%rbx + leaq (%rsi),%rsp + L$mul_epilogue: .byte 0xf3,0xc3 + .p2align 4 bn_mul4x_mont: + movl %r9d,%r9d movq %rsp,%rax + L$mul4x_enter: andl $0x80100,%r11d cmpl $0x80100,%r11d je L$mulx4x_enter pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + negq %r9 movq %rsp,%r11 leaq -32(%rsp,%r9,8),%r10 @@ -275,6 +301,7 @@ L$mul4x_page_walk: L$mul4x_page_walk_done: movq %rax,8(%rsp,%r9,8) + L$mul4x_body: movq %rdi,16(%rsp,%r9,8) movq %rdx,%r12 @@ -642,14 +669,22 @@ L$copy4x: decq %r15 jnz L$copy4x movq 8(%rsp,%r9,8),%rsi + movq $1,%rax movq -48(%rsi),%r15 + movq -40(%rsi),%r14 + movq -32(%rsi),%r13 + movq -24(%rsi),%r12 + movq -16(%rsi),%rbp + movq -8(%rsi),%rbx + leaq (%rsi),%rsp + L$mul4x_epilogue: .byte 0xf3,0xc3 @@ -657,16 +692,25 @@ L$mul4x_epilogue: + .p2align 5 bn_sqr8x_mont: + movq %rsp,%rax + L$sqr8x_enter: pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + L$sqr8x_prologue: movl %r9d,%r10d @@ -722,6 +766,7 @@ L$sqr8x_page_walk_done: movq %r8,32(%rsp) movq %rax,40(%rsp) + L$sqr8x_body: .byte 102,72,15,110,209 @@ -787,6 +832,7 @@ L$sqr8x_sub: pxor %xmm0,%xmm0 pshufd $0,%xmm1,%xmm1 movq 40(%rsp),%rsi + jmp L$sqr8x_cond_copy .p2align 5 @@ -816,26 +862,42 @@ L$sqr8x_cond_copy: movq $1,%rax movq -48(%rsi),%r15 + movq -40(%rsi),%r14 + movq -32(%rsi),%r13 + movq -24(%rsi),%r12 + movq -16(%rsi),%rbp + movq -8(%rsi),%rbx + leaq (%rsi),%rsp + L$sqr8x_epilogue: .byte 0xf3,0xc3 + .p2align 5 bn_mulx4x_mont: + movq %rsp,%rax + L$mulx4x_enter: pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + L$mulx4x_prologue: shll $3,%r9d @@ -881,6 +943,7 @@ L$mulx4x_page_walk_done: movq %r8,24(%rsp) movq %rdi,32(%rsp) movq %rax,40(%rsp) + movq %r9,48(%rsp) jmp L$mulx4x_body @@ -1125,6 +1188,7 @@ L$mulx4x_sub: pxor %xmm0,%xmm0 pshufd $0,%xmm1,%xmm1 movq 40(%rsp),%rsi + jmp L$mulx4x_cond_copy .p2align 5 @@ -1154,14 +1218,22 @@ L$mulx4x_cond_copy: movq $1,%rax movq -48(%rsi),%r15 + movq -40(%rsi),%r14 + movq -32(%rsi),%r13 + movq -24(%rsi),%r12 + movq -16(%rsi),%rbp + movq -8(%rsi),%rbx + leaq (%rsi),%rsp + L$mulx4x_epilogue: .byte 0xf3,0xc3 + .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .p2align 4 |