Latest update.
This commit is contained in:
@@ -45,7 +45,7 @@
|
||||
use strict;
|
||||
use FindBin qw($Bin);
|
||||
use lib "$Bin/../..";
|
||||
use perlasm::s390x qw(:DEFAULT :LD :GE :EI :MI1 :VX AUTOLOAD LABEL INCLUDE);
|
||||
use perlasm::s390x qw(:DEFAULT :GE :EI :MI1 :VX AUTOLOAD LABEL INCLUDE);
|
||||
|
||||
# $output is the last argument if it looks like a file (it has an extension)
|
||||
# $flavour is the first argument if it doesn't look like a file
|
||||
|
||||
@@ -70,7 +70,7 @@ if ($sse2) {
|
||||
$avx = ($1>=2.09) + ($1>=2.10);
|
||||
}
|
||||
|
||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([3-9]\.[0-9]+)/) {
|
||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/) {
|
||||
$avx = ($2>=3.0) + ($2>3.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
||||
$avx = ($1>=10) + ($1>=12);
|
||||
}
|
||||
|
||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9]\.[0-9]+)/) {
|
||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
||||
$avx = ($2>=3.0) + ($2>3.0);
|
||||
}
|
||||
|
||||
@@ -170,6 +170,7 @@ $code.=<<___;
|
||||
.type poly1305_init,\@function,3
|
||||
.align 32
|
||||
poly1305_init:
|
||||
.cfi_startproc
|
||||
xor %rax,%rax
|
||||
mov %rax,0($ctx) # initialize hash value
|
||||
mov %rax,8($ctx)
|
||||
@@ -221,6 +222,7 @@ $code.=<<___;
|
||||
mov \$1,%eax
|
||||
.Lno_key:
|
||||
ret
|
||||
.cfi_endproc
|
||||
.size poly1305_init,.-poly1305_init
|
||||
|
||||
.type poly1305_blocks,\@function,4
|
||||
@@ -300,6 +302,7 @@ $code.=<<___;
|
||||
.type poly1305_emit,\@function,3
|
||||
.align 32
|
||||
poly1305_emit:
|
||||
.cfi_startproc
|
||||
.Lemit:
|
||||
mov 0($ctx),%r8 # load hash value
|
||||
mov 8($ctx),%r9
|
||||
@@ -320,6 +323,7 @@ poly1305_emit:
|
||||
mov %rcx,8($mac)
|
||||
|
||||
ret
|
||||
.cfi_endproc
|
||||
.size poly1305_emit,.-poly1305_emit
|
||||
___
|
||||
if ($avx) {
|
||||
@@ -344,15 +348,18 @@ $code.=<<___;
|
||||
.type __poly1305_block,\@abi-omnipotent
|
||||
.align 32
|
||||
__poly1305_block:
|
||||
.cfi_startproc
|
||||
___
|
||||
&poly1305_iteration();
|
||||
$code.=<<___;
|
||||
ret
|
||||
.cfi_endproc
|
||||
.size __poly1305_block,.-__poly1305_block
|
||||
|
||||
.type __poly1305_init_avx,\@abi-omnipotent
|
||||
.align 32
|
||||
__poly1305_init_avx:
|
||||
.cfi_startproc
|
||||
mov $r0,$h0
|
||||
mov $r1,$h1
|
||||
xor $h2,$h2
|
||||
@@ -510,6 +517,7 @@ __poly1305_init_avx:
|
||||
|
||||
lea -48-64($ctx),$ctx # size [de-]optimization
|
||||
ret
|
||||
.cfi_endproc
|
||||
.size __poly1305_init_avx,.-__poly1305_init_avx
|
||||
|
||||
.type poly1305_blocks_avx,\@function,4
|
||||
@@ -1375,6 +1383,7 @@ $code.=<<___;
|
||||
.type poly1305_emit_avx,\@function,3
|
||||
.align 32
|
||||
poly1305_emit_avx:
|
||||
.cfi_startproc
|
||||
cmpl \$0,20($ctx) # is_base2_26?
|
||||
je .Lemit
|
||||
|
||||
@@ -1425,6 +1434,7 @@ poly1305_emit_avx:
|
||||
mov %rcx,8($mac)
|
||||
|
||||
ret
|
||||
.cfi_endproc
|
||||
.size poly1305_emit_avx,.-poly1305_emit_avx
|
||||
___
|
||||
|
||||
@@ -2743,6 +2753,7 @@ $code.=<<___;
|
||||
.type poly1305_init_base2_44,\@function,3
|
||||
.align 32
|
||||
poly1305_init_base2_44:
|
||||
.cfi_startproc
|
||||
xor %rax,%rax
|
||||
mov %rax,0($ctx) # initialize hash value
|
||||
mov %rax,8($ctx)
|
||||
@@ -2784,6 +2795,7 @@ ___
|
||||
$code.=<<___;
|
||||
mov \$1,%eax
|
||||
ret
|
||||
.cfi_endproc
|
||||
.size poly1305_init_base2_44,.-poly1305_init_base2_44
|
||||
___
|
||||
{
|
||||
@@ -2795,6 +2807,7 @@ $code.=<<___;
|
||||
.type poly1305_blocks_vpmadd52,\@function,4
|
||||
.align 32
|
||||
poly1305_blocks_vpmadd52:
|
||||
.cfi_startproc
|
||||
shr \$4,$len
|
||||
jz .Lno_data_vpmadd52 # too short
|
||||
|
||||
@@ -2901,6 +2914,7 @@ poly1305_blocks_vpmadd52:
|
||||
|
||||
.Lno_data_vpmadd52:
|
||||
ret
|
||||
.cfi_endproc
|
||||
.size poly1305_blocks_vpmadd52,.-poly1305_blocks_vpmadd52
|
||||
___
|
||||
}
|
||||
@@ -2918,6 +2932,7 @@ $code.=<<___;
|
||||
.type poly1305_blocks_vpmadd52_4x,\@function,4
|
||||
.align 32
|
||||
poly1305_blocks_vpmadd52_4x:
|
||||
.cfi_startproc
|
||||
shr \$4,$len
|
||||
jz .Lno_data_vpmadd52_4x # too short
|
||||
|
||||
@@ -3342,6 +3357,7 @@ poly1305_blocks_vpmadd52_4x:
|
||||
|
||||
.Lno_data_vpmadd52_4x:
|
||||
ret
|
||||
.cfi_endproc
|
||||
.size poly1305_blocks_vpmadd52_4x,.-poly1305_blocks_vpmadd52_4x
|
||||
___
|
||||
}
|
||||
@@ -3360,6 +3376,7 @@ $code.=<<___;
|
||||
.type poly1305_blocks_vpmadd52_8x,\@function,4
|
||||
.align 32
|
||||
poly1305_blocks_vpmadd52_8x:
|
||||
.cfi_startproc
|
||||
shr \$4,$len
|
||||
jz .Lno_data_vpmadd52_8x # too short
|
||||
|
||||
@@ -3715,6 +3732,7 @@ $code.=<<___;
|
||||
|
||||
.Lno_data_vpmadd52_8x:
|
||||
ret
|
||||
.cfi_endproc
|
||||
.size poly1305_blocks_vpmadd52_8x,.-poly1305_blocks_vpmadd52_8x
|
||||
___
|
||||
}
|
||||
@@ -3722,6 +3740,7 @@ $code.=<<___;
|
||||
.type poly1305_emit_base2_44,\@function,3
|
||||
.align 32
|
||||
poly1305_emit_base2_44:
|
||||
.cfi_startproc
|
||||
mov 0($ctx),%r8 # load hash value
|
||||
mov 8($ctx),%r9
|
||||
mov 16($ctx),%r10
|
||||
@@ -3752,6 +3771,7 @@ poly1305_emit_base2_44:
|
||||
mov %rcx,8($mac)
|
||||
|
||||
ret
|
||||
.cfi_endproc
|
||||
.size poly1305_emit_base2_44,.-poly1305_emit_base2_44
|
||||
___
|
||||
} } }
|
||||
@@ -3802,6 +3822,7 @@ $code.=<<___;
|
||||
.type xor128_encrypt_n_pad,\@abi-omnipotent
|
||||
.align 16
|
||||
xor128_encrypt_n_pad:
|
||||
.cfi_startproc
|
||||
sub $otp,$inp
|
||||
sub $otp,$out
|
||||
mov $len,%r10 # put len aside
|
||||
@@ -3843,12 +3864,14 @@ xor128_encrypt_n_pad:
|
||||
.Ldone_enc:
|
||||
mov $otp,%rax
|
||||
ret
|
||||
.cfi_endproc
|
||||
.size xor128_encrypt_n_pad,.-xor128_encrypt_n_pad
|
||||
|
||||
.globl xor128_decrypt_n_pad
|
||||
.type xor128_decrypt_n_pad,\@abi-omnipotent
|
||||
.align 16
|
||||
xor128_decrypt_n_pad:
|
||||
.cfi_startproc
|
||||
sub $otp,$inp
|
||||
sub $otp,$out
|
||||
mov $len,%r10 # put len aside
|
||||
@@ -3894,6 +3917,7 @@ xor128_decrypt_n_pad:
|
||||
.Ldone_dec:
|
||||
mov $otp,%rax
|
||||
ret
|
||||
.cfi_endproc
|
||||
.size xor128_decrypt_n_pad,.-xor128_decrypt_n_pad
|
||||
___
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user