summaryrefslogtreecommitdiff
path: root/crypto/openssl/crypto/ec/asm/x25519-x86_64.pl
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/openssl/crypto/ec/asm/x25519-x86_64.pl')
-rwxr-xr-xcrypto/openssl/crypto/ec/asm/x25519-x86_64.pl20
1 files changed, 17 insertions, 3 deletions
diff --git a/crypto/openssl/crypto/ec/asm/x25519-x86_64.pl b/crypto/openssl/crypto/ec/asm/x25519-x86_64.pl
index 18dc6af9fae9f..3d9d1dc1ad0c5 100755
--- a/crypto/openssl/crypto/ec/asm/x25519-x86_64.pl
+++ b/crypto/openssl/crypto/ec/asm/x25519-x86_64.pl
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# Copyright 2018 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -90,7 +90,7 @@ if (!$addx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
$addx = ($1>=12);
}
-if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9])\.([0-9]+)/) {
+if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) {
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
$addx = ($ver>=3.03);
}
@@ -488,12 +488,14 @@ $code.=<<___;
.type x25519_fe64_eligible,\@abi-omnipotent
.align 32
x25519_fe64_eligible:
+.cfi_startproc
mov OPENSSL_ia32cap_P+8(%rip),%ecx
xor %eax,%eax
and \$0x80100,%ecx
cmp \$0x80100,%ecx
cmove %ecx,%eax
ret
+.cfi_endproc
.size x25519_fe64_eligible,.-x25519_fe64_eligible
.globl x25519_fe64_mul
@@ -722,6 +724,7 @@ x25519_fe64_sqr:
.align 32
x25519_fe64_mul121666:
.Lfe64_mul121666_body:
+.cfi_startproc
mov \$121666,%edx
mulx 8*0(%rsi),$acc0,%rcx
mulx 8*1(%rsi),$acc1,%rax
@@ -750,6 +753,7 @@ x25519_fe64_mul121666:
.Lfe64_mul121666_epilogue:
ret
+.cfi_endproc
.size x25519_fe64_mul121666,.-x25519_fe64_mul121666
.globl x25519_fe64_add
@@ -757,6 +761,7 @@ x25519_fe64_mul121666:
.align 32
x25519_fe64_add:
.Lfe64_add_body:
+.cfi_startproc
mov 8*0(%rsi),$acc0
mov 8*1(%rsi),$acc1
mov 8*2(%rsi),$acc2
@@ -785,6 +790,7 @@ x25519_fe64_add:
.Lfe64_add_epilogue:
ret
+.cfi_endproc
.size x25519_fe64_add,.-x25519_fe64_add
.globl x25519_fe64_sub
@@ -792,6 +798,7 @@ x25519_fe64_add:
.align 32
x25519_fe64_sub:
.Lfe64_sub_body:
+.cfi_startproc
mov 8*0(%rsi),$acc0
mov 8*1(%rsi),$acc1
mov 8*2(%rsi),$acc2
@@ -820,6 +827,7 @@ x25519_fe64_sub:
.Lfe64_sub_epilogue:
ret
+.cfi_endproc
.size x25519_fe64_sub,.-x25519_fe64_sub
.globl x25519_fe64_tobytes
@@ -827,6 +835,7 @@ x25519_fe64_sub:
.align 32
x25519_fe64_tobytes:
.Lfe64_to_body:
+.cfi_startproc
mov 8*0(%rsi),$acc0
mov 8*1(%rsi),$acc1
mov 8*2(%rsi),$acc2
@@ -862,6 +871,7 @@ x25519_fe64_tobytes:
.Lfe64_to_epilogue:
ret
+.cfi_endproc
.size x25519_fe64_tobytes,.-x25519_fe64_tobytes
___
} else {
@@ -870,8 +880,10 @@ $code.=<<___;
.type x25519_fe64_eligible,\@abi-omnipotent
.align 32
x25519_fe64_eligible:
+.cfi_startproc
xor %eax,%eax
ret
+.cfi_endproc
.size x25519_fe64_eligible,.-x25519_fe64_eligible
.globl x25519_fe64_mul
@@ -887,8 +899,10 @@ x25519_fe64_mul121666:
x25519_fe64_add:
x25519_fe64_sub:
x25519_fe64_tobytes:
+.cfi_startproc
.byte 0x0f,0x0b # ud2
ret
+.cfi_endproc
.size x25519_fe64_mul,.-x25519_fe64_mul
___
}
@@ -1114,4 +1128,4 @@ ___
$code =~ s/\`([^\`]*)\`/eval $1/gem;
print $code;
-close STDOUT;
+close STDOUT or die "error closing STDOUT: $!";