summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2013-09-09 21:40:33 +0200
committerAndy Polyakov <appro@openssl.org>2013-09-09 21:40:33 +0200
commit72a158703bf2b33f4eba6920302941560f7a848d (patch)
treebe4caa00eff52c516471ea50b40661822f15cf58 /crypto
parentce4555967ec0fa7c0b9c15823be52dc23fd09a40 (diff)
crypto/bn/asm/x86_64-mont.pl: minor optimization.
Diffstat (limited to 'crypto')
-rwxr-xr-xcrypto/bn/asm/x86_64-mont.pl16
1 files changed, 3 insertions, 13 deletions
diff --git a/crypto/bn/asm/x86_64-mont.pl b/crypto/bn/asm/x86_64-mont.pl
index 78221bae33..ba938d6ccd 100755
--- a/crypto/bn/asm/x86_64-mont.pl
+++ b/crypto/bn/asm/x86_64-mont.pl
@@ -1378,7 +1378,6 @@ $code.=<<___;
lea 8*8($nptr),$nptr
xor %rax,%rax
mov 8(%rsp),%rdx # pull end of t[]
- xor $carry,$carry
cmp 0(%rsp),$nptr # end of n[]?
jae .L8x_no_tail
@@ -1491,17 +1490,10 @@ $code.=<<___;
.align 32
.L8x_tail_done:
add (%rdx),%r8 # can this overflow?
- adc \$0,%r9
- adc \$0,%r10
- adc \$0,%r11
- adc \$0,%r12
- adc \$0,%r13
- adc \$0,%r14
- adc \$0,%r15
- sbb %rax,%rax
+ xor %rax,%rax
-.L8x_no_tail:
neg $carry
+.L8x_no_tail:
adc 8*0($tptr),%r8
adc 8*1($tptr),%r9
adc 8*2($tptr),%r10
@@ -1510,9 +1502,7 @@ $code.=<<___;
adc 8*5($tptr),%r13
adc 8*6($tptr),%r14
adc 8*7($tptr),%r15
- sbb $carry,$carry
- neg %rax
- sub $carry,%rax # top-most carry
+ adc \$0,%rax # top-most carry
mov 40(%rsp),$nptr # restore $nptr