sha1-mb-x86_64.pl: add commentary.
authorAndy Polyakov <appro@openssl.org>
Wed, 20 Aug 2014 22:13:55 +0000 (00:13 +0200)
committerAndy Polyakov <appro@openssl.org>
Wed, 20 Aug 2014 22:16:32 +0000 (00:16 +0200)
Reviewed-by: Emilia Kasper <emilia@openssl.org>
(cherry picked from commit e608273a8094a95a5703c26a428a007497e74392)

crypto/sha/asm/sha1-mb-x86_64.pl

index e9bc8e5c47213520b8bf23089625c61e13a1b787..a8ee075eaaa0a037a599aca20362172d8fdbd644 100644 (file)
@@ -107,6 +107,19 @@ my ($i,$a,$b,$c,$d,$e)=@_;
 my $j=$i+1;
 my $k=$i+2;
 
+# Loads are performed 2+3/4 iterations in advance. 3/4 means that out
+# of 4 words you would expect to be loaded per given iteration one is
+# spilled to next iteration. In other words indices in four input
+# streams are distributed as following:
+#
+# $i==0:       0,0,0,0,1,1,1,1,2,2,2,
+# $i==1:       2,3,3,3,
+# $i==2:       3,4,4,4,
+# ...
+# $i==13:      14,15,15,15,
+# $i==14:      15
+# 
+# Then at $i==15 Xupdate is applied one iteration in advance...
 $code.=<<___ if ($i==0);
        movd            (@ptr[0]),@Xi[0]
         lea            `16*4`(@ptr[0]),@ptr[0]