diff options
author | Richard Levitte <levitte@openssl.org> | 2016-03-07 15:41:33 +0100 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2016-03-07 18:25:56 +0100 |
commit | 6bd7a4d96c47068c63cbd2ca93f501816dc453c1 (patch) | |
tree | 8f47004988a5aff04383e5aadf0e9723dccc6c5e /crypto/bn/asm | |
parent | 8a67946e5bf1cd0fe0020e0f28cbf84642ec4132 (diff) |
Unified - adapt the generation of bignum assembler to use GENERATE
This gets rid of the BEGINRAW..ENDRAW sections in crypto/bn/build.info.
This also moves the assembler generating perl scripts to take the
output file name as last command line argument, where necessary.
Reviewed-by: Rich Salz <rsalz@openssl.org>
Diffstat (limited to 'crypto/bn/asm')
-rw-r--r-- | crypto/bn/asm/alpha-mont.pl | 3 | ||||
-rw-r--r-- | crypto/bn/asm/bn-586.pl | 6 | ||||
-rw-r--r-- | crypto/bn/asm/co-586.pl | 5 | ||||
-rw-r--r-- | crypto/bn/asm/ia64-mont.pl | 4 | ||||
-rwxr-xr-x | crypto/bn/asm/sparct4-mont.pl | 3 | ||||
-rw-r--r-- | crypto/bn/asm/sparcv9-gf2m.pl | 3 | ||||
-rw-r--r-- | crypto/bn/asm/sparcv9-mont.pl | 3 | ||||
-rwxr-xr-x | crypto/bn/asm/sparcv9a-mont.pl | 3 | ||||
-rw-r--r-- | crypto/bn/asm/via-mont.pl | 5 | ||||
-rw-r--r-- | crypto/bn/asm/vis3-mont.pl | 3 | ||||
-rw-r--r-- | crypto/bn/asm/x86-gf2m.pl | 5 | ||||
-rwxr-xr-x | crypto/bn/asm/x86-mont.pl | 5 | ||||
-rw-r--r-- | crypto/bn/asm/x86.pl | 4 |
13 files changed, 50 insertions, 2 deletions
diff --git a/crypto/bn/asm/alpha-mont.pl b/crypto/bn/asm/alpha-mont.pl index 03596e2014..2ac3532435 100644 --- a/crypto/bn/asm/alpha-mont.pl +++ b/crypto/bn/asm/alpha-mont.pl @@ -15,6 +15,9 @@ # I.e. if you compare 1GHz 21264 and 2GHz Opteron, you'll observe ~2x # difference. +$output=pop; +open STDOUT,">$output"; + # int bn_mul_mont( $rp="a0"; # BN_ULONG *rp, $ap="a1"; # const BN_ULONG *ap, diff --git a/crypto/bn/asm/bn-586.pl b/crypto/bn/asm/bn-586.pl index 332ef3e91d..3f34abef9e 100644 --- a/crypto/bn/asm/bn-586.pl +++ b/crypto/bn/asm/bn-586.pl @@ -4,6 +4,9 @@ $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; push(@INC,"${dir}","${dir}../../perlasm"); require "x86asm.pl"; +$output = pop; +open STDOUT,">$output"; + &asm_init($ARGV[0],$0); $sse2=0; @@ -21,6 +24,8 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); } &asm_finish(); +close STDOUT; + sub bn_mul_add_words { local($name)=@_; @@ -771,4 +776,3 @@ sub bn_sub_part_words &function_end($name); } - diff --git a/crypto/bn/asm/co-586.pl b/crypto/bn/asm/co-586.pl index 57101a6bd7..ec3ea343c8 100644 --- a/crypto/bn/asm/co-586.pl +++ b/crypto/bn/asm/co-586.pl @@ -4,6 +4,9 @@ $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; push(@INC,"${dir}","${dir}../../perlasm"); require "x86asm.pl"; +$output = pop; +open STDOUT,">$output"; + &asm_init($ARGV[0],$0); &bn_mul_comba("bn_mul_comba8",8); @@ -13,6 +16,8 @@ require "x86asm.pl"; &asm_finish(); +close STDOUT; + sub mul_add_c { local($a,$ai,$b,$bi,$c0,$c1,$c2,$pos,$i,$na,$nb)=@_; diff --git a/crypto/bn/asm/ia64-mont.pl b/crypto/bn/asm/ia64-mont.pl index e258658428..710ca3c1f4 100644 --- a/crypto/bn/asm/ia64-mont.pl +++ b/crypto/bn/asm/ia64-mont.pl @@ -60,6 +60,8 @@ # hereafter less for longer keys, while verify - by 74-13%. # DSA performance improves by 115-30%. +$output=pop; + if ($^O eq "hpux") { $ADDP="addp4"; for (@ARGV) { $ADDP="add" if (/[\+DD|\-mlp]64/); } @@ -846,6 +848,6 @@ copyright: stringz "Montgomery multiplication for IA-64, CRYPTOGAMS by <appro\@openssl.org>" ___ -$output=shift and open STDOUT,">$output"; +open STDOUT,">$output" if $output; print $code; close STDOUT; diff --git a/crypto/bn/asm/sparct4-mont.pl b/crypto/bn/asm/sparct4-mont.pl index 71b45002a4..7ec83c2c9c 100755 --- a/crypto/bn/asm/sparct4-mont.pl +++ b/crypto/bn/asm/sparct4-mont.pl @@ -76,6 +76,9 @@ $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; push(@INC,"${dir}","${dir}../../perlasm"); require "sparcv9_modes.pl"; +$output = pop; +open STDOUT,">$output"; + $code.=<<___; #include "sparc_arch.h" diff --git a/crypto/bn/asm/sparcv9-gf2m.pl b/crypto/bn/asm/sparcv9-gf2m.pl index ab94cd917c..c7bf9f228b 100644 --- a/crypto/bn/asm/sparcv9-gf2m.pl +++ b/crypto/bn/asm/sparcv9-gf2m.pl @@ -18,6 +18,9 @@ # ~100-230% faster than gcc-generated code and ~35-90% faster than # the pure SPARCv9 code path. +$output = pop; +open STDOUT,">$output"; + $locals=16*8; $tab="%l0"; diff --git a/crypto/bn/asm/sparcv9-mont.pl b/crypto/bn/asm/sparcv9-mont.pl index b8fb1e8a25..c08d8223f7 100644 --- a/crypto/bn/asm/sparcv9-mont.pl +++ b/crypto/bn/asm/sparcv9-mont.pl @@ -42,6 +42,9 @@ # module still have hidden potential [see TODO list there], which is # estimated to be larger than 20%... +$output = pop; +open STDOUT,">$output"; + # int bn_mul_mont( $rp="%i0"; # BN_ULONG *rp, $ap="%i1"; # const BN_ULONG *ap, diff --git a/crypto/bn/asm/sparcv9a-mont.pl b/crypto/bn/asm/sparcv9a-mont.pl index 4cde041ce5..433ec9ecf9 100755 --- a/crypto/bn/asm/sparcv9a-mont.pl +++ b/crypto/bn/asm/sparcv9a-mont.pl @@ -55,6 +55,9 @@ # key length, more for longer keys] on USI&II cores and 30-80% - on # USIII&IV. +$output = pop; +open STDOUT,">$output"; + $fname="bn_mul_mont_fpu"; $bits=32; for (@ARGV) { $bits=64 if (/\-m64/ || /\-xarch\=v9/); } diff --git a/crypto/bn/asm/via-mont.pl b/crypto/bn/asm/via-mont.pl index c046a514c8..8cf4dde4d5 100644 --- a/crypto/bn/asm/via-mont.pl +++ b/crypto/bn/asm/via-mont.pl @@ -81,6 +81,9 @@ $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; push(@INC,"${dir}","${dir}../../perlasm"); require "x86asm.pl"; +$output = pop; +open STDOUT,">$output"; + &asm_init($ARGV[0],"via-mont.pl"); # int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np,const BN_ULONG *n0, int num); @@ -240,3 +243,5 @@ $sp=&DWP(28,"esp"); &asciz("Padlock Montgomery Multiplication, CRYPTOGAMS by <appro\@openssl.org>"); &asm_finish(); + +close STDOUT; diff --git a/crypto/bn/asm/vis3-mont.pl b/crypto/bn/asm/vis3-mont.pl index 1d8dc9e08e..8bab5a16b6 100644 --- a/crypto/bn/asm/vis3-mont.pl +++ b/crypto/bn/asm/vis3-mont.pl @@ -18,6 +18,9 @@ # for reference purposes, because T4 has dedicated Montgomery # multiplication and squaring *instructions* that deliver even more. +$output = pop; +open STDOUT,">$output"; + $bits=32; for (@ARGV) { $bits=64 if (/\-m64/ || /\-xarch\=v9/); } if ($bits==64) { $bias=2047; $frame=192; } diff --git a/crypto/bn/asm/x86-gf2m.pl b/crypto/bn/asm/x86-gf2m.pl index b579530272..0292178d24 100644 --- a/crypto/bn/asm/x86-gf2m.pl +++ b/crypto/bn/asm/x86-gf2m.pl @@ -36,6 +36,9 @@ $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; push(@INC,"${dir}","${dir}../../perlasm"); require "x86asm.pl"; +$output = pop; +open STDOUT,">$output"; + &asm_init($ARGV[0],$0,$x86only = $ARGV[$#ARGV] eq "386"); $sse2=0; @@ -311,3 +314,5 @@ if ($sse2) { &asciz ("GF(2^m) Multiplication for x86, CRYPTOGAMS by <appro\@openssl.org>"); &asm_finish(); + +close STDOUT; diff --git a/crypto/bn/asm/x86-mont.pl b/crypto/bn/asm/x86-mont.pl index 89f4de61e8..972de2650b 100755 --- a/crypto/bn/asm/x86-mont.pl +++ b/crypto/bn/asm/x86-mont.pl @@ -30,6 +30,9 @@ $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; push(@INC,"${dir}","${dir}../../perlasm"); require "x86asm.pl"; +$output = pop; +open STDOUT,">$output"; + &asm_init($ARGV[0],$0); $sse2=0; @@ -606,3 +609,5 @@ $sbit=$num; &asciz("Montgomery Multiplication for x86, CRYPTOGAMS by <appro\@openssl.org>"); &asm_finish(); + +close STDOUT; diff --git a/crypto/bn/asm/x86.pl b/crypto/bn/asm/x86.pl index 1bc4f1bb27..c1cab72716 100644 --- a/crypto/bn/asm/x86.pl +++ b/crypto/bn/asm/x86.pl @@ -11,6 +11,9 @@ require("x86/add.pl"); require("x86/sub.pl"); require("x86/comba.pl"); +$output = pop; +open STDOUT,">$output"; + &asm_init($ARGV[0],$0); &bn_mul_add_words("bn_mul_add_words"); @@ -26,3 +29,4 @@ require("x86/comba.pl"); &asm_finish(); +close STDOUT; |