|
|
@@ -1,4 +1,11 @@ |
|
|
|
#!/usr/bin/env perl |
|
|
|
#! /usr/bin/env perl |
|
|
|
# Copyright 2006-2016 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 |
|
|
|
# in the file LICENSE in the source distribution or at |
|
|
|
# https://www.openssl.org/source/license.html |
|
|
|
|
|
|
|
# |
|
|
|
# ==================================================================== |
|
|
|
# Written by Andy Polyakov <appro@openssl.org> for the OpenSSL |
|
|
@@ -75,9 +82,11 @@ |
|
|
|
# Haswell 5.45 4.15/+31% 3.57/+53% |
|
|
|
# Skylake 5.18 4.06/+28% 3.54/+46% |
|
|
|
# Bulldozer 9.11 5.95/+53% |
|
|
|
# Ryzen 4.75 3.80/+24% 1.93/+150%(**) |
|
|
|
# VIA Nano 9.32 7.15/+30% |
|
|
|
# Atom 10.3 9.17/+12% |
|
|
|
# Silvermont 13.1(*) 9.37/+40% |
|
|
|
# Knights L 13.2(*) 9.68/+36% 8.30/+59% |
|
|
|
# Goldmont 8.13 6.42/+27% 1.70/+380%(**) |
|
|
|
# |
|
|
|
# (*) obviously suboptimal result, nothing was done about it, |
|
|
@@ -537,7 +546,7 @@ sub AUTOLOAD() # thunk [simplified] 32-bit style perlasm |
|
|
|
$code .= "\t$opcode\t".join(',',$arg,reverse @_)."\n"; |
|
|
|
} |
|
|
|
|
|
|
|
sub Xupdate_ssse3_16_31() # recall that $Xi starts wtih 4 |
|
|
|
sub Xupdate_ssse3_16_31() # recall that $Xi starts with 4 |
|
|
|
{ use integer; |
|
|
|
my $body = shift; |
|
|
|
my @insns = (&$body,&$body,&$body,&$body); # 40 instructions |
|
|
@@ -1458,7 +1467,7 @@ sub bodyx_40_59 () { # 10 instructions, 3 cycles critical path |
|
|
|
) |
|
|
|
} |
|
|
|
|
|
|
|
sub Xupdate_avx2_16_31() # recall that $Xi starts wtih 4 |
|
|
|
sub Xupdate_avx2_16_31() # recall that $Xi starts with 4 |
|
|
|
{ use integer; |
|
|
|
my $body = shift; |
|
|
|
my @insns = (&$body,&$body,&$body,&$body,&$body); # 35 instructions |
|
|
|