[md5|sha1|sha512]-sparcv9.pl: "cooperative" optimizations based on
authorAndy Polyakov <appro@openssl.org>
Sun, 14 Oct 2012 14:46:56 +0000 (14:46 +0000)
committerAndy Polyakov <appro@openssl.org>
Sun, 14 Oct 2012 14:46:56 +0000 (14:46 +0000)
suggestions from David Miller.

crypto/md5/asm/md5-sparcv9.pl
crypto/sha/asm/sha1-sparcv9.pl
crypto/sha/asm/sha512-sparcv9.pl

index 5875779101f49dc80bbdc88ecb5a6d1d765070e8..062a0738c439536c9d601434d8b35d7769a77edb 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env perl
 
 # ====================================================================
-# Written by Andy Polyakov <appro@opensl.org> for the OpenSSL
+# Written by Andy Polyakov <appro@openssl.org> for the OpenSSL
 # project. The module is, however, dual licensed under OpenSSL and
 # CRYPTOGAMS licenses depending on where you obtain it. For further
 # details see http://www.openssl.org/~appro/cryptogams/.
@@ -242,6 +242,7 @@ md5_block_asm_data_order:
        subcc   %o2, 1, %o2             ! done yet? 
        ldd     [%o1 + 0x38], %f22
        add     %o1, 0x40, %o1
+       prefetch [%o1 + 63], 20
 
        .word   0x81b02800              ! MD5
 
@@ -272,6 +273,7 @@ md5_block_asm_data_order:
        subcc   %o2, 1, %o2             ! done yet?
        ldd     [%o1 + 0x40], %f26
        add     %o1, 0x40, %o1
+       prefetch [%o1 + 63], 20
 
        faligndata %f10, %f12, %f8
        faligndata %f12, %f14, %f10
index f661e96524eb2b1f77bc6cd376917d14fd6b79ed..47a82d3267247c57bfcff475a4d1bcdfca1d564c 100644 (file)
@@ -227,6 +227,7 @@ sha1_block_data_order:
        subcc   %o2, 1, %o2             ! done yet? 
        ldd     [%o1 + 0x38], %f22
        add     %o1, 0x40, %o1
+       prefetch [%o1 + 63], 20
 
        .word   0x81b02820              ! SHA1
 
@@ -257,6 +258,7 @@ sha1_block_data_order:
        subcc   %o2, 1, %o2             ! done yet?
        ldd     [%o1 + 0x40], %f26
        add     %o1, 0x40, %o1
+       prefetch [%o1 + 63], 20
 
        faligndata %f10, %f12, %f8
        faligndata %f12, %f14, %f10
index 011b534f82d307cf6058b845c2e467dbb7a899a6..4c749a5c8f387891ce8c27889875f53500d58a14 100644 (file)
@@ -514,6 +514,8 @@ $code.=<<___ if ($SZ==8);           # SHA512
        subcc   %o2, 1, %o2             ! done yet?
        ldd     [%o1 + 0x78], %f46
        add     %o1, 0x80, %o1
+       prefetch [%o1 + 63], 20
+       prefetch [%o1 + 64+63], 20
 
        .word   0x81b02860              ! SHA512
 
@@ -555,6 +557,8 @@ $code.=<<___ if ($SZ==8);           # SHA512
        subcc   %o2, 1, %o2             ! done yet?
        ldd     [%o1 + 0x80], %f50
        add     %o1, 0x80, %o1
+       prefetch [%o1 + 63], 20
+       prefetch [%o1 + 64+63], 20
 
        faligndata %f18, %f20, %f16
        faligndata %f20, %f22, %f18
@@ -604,6 +608,7 @@ $code.=<<___ if ($SZ==4);           # SHA256
        subcc   %o2, 1, %o2             ! done yet?
        ldd     [%o1 + 0x38], %f22
        add     %o1, 0x40, %o1
+       prefetch [%o1 + 63], 20
 
        .word   0x81b02840              ! SHA256
 
@@ -637,6 +642,7 @@ $code.=<<___ if ($SZ==4);           # SHA256
        subcc   %o2, 1, %o2             ! done yet?
        ldd     [%o1 + 0x40], %f26
        add     %o1, 0x40, %o1
+       prefetch [%o1 + 63], 20
 
        faligndata %f10, %f12, %f8
        faligndata %f12, %f14, %f10