Remove resolved TODO
[oweals/openssl.git] / crypto / poly1305 / asm / poly1305-x86.pl
index 97d0a81bea4377889cbf01dfe61ae8762a76960d..ab24dfcfaddaaa082f36382d30dd62adf777581f 100755 (executable)
@@ -1,4 +1,11 @@
-#!/usr/bin/env perl
+#! /usr/bin/env perl
+# Copyright 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
@@ -23,6 +30,7 @@
 # Sandy Bridge 3.90/+100%      1.36
 # Haswell      3.88/+70%       1.18            0.72
 # Silvermont   11.0/+40%       4.80
+# Goldmont     4.10/+200%      2.10
 # VIA Nano     6.71/+90%       2.47
 # Sledgehammer 3.51/+180%      4.27
 # Bulldozer    4.53/+140%      1.31
@@ -541,11 +549,12 @@ my $base = shift; $base = "esp" if (!defined($base));
 
 sub lazy_reduction {
 my $extra = shift;
-my $paddx = defined($extra) ? paddq : paddd;
 
        ################################################################
        # lazy reduction as discussed in "NEON crypto" by D.J. Bernstein
        # and P. Schwabe
+       #
+       # [(*) see discussion in poly1305-armv4 module]
 
         &movdqa        ($T0,$D3);
         &pand          ($D3,$MASK);
@@ -567,7 +576,7 @@ my $paddx = defined($extra) ? paddq : paddd;
                                                        # on Atom
         &psllq         ($T0,2);
        &paddq          ($T1,$D2);                      # h1 -> h2
-        &$paddx        ($T0,$D0);                      # h4 -> h0
+        &paddq         ($T0,$D0);                      # h4 -> h0 (*)
        &pand           ($D1,$MASK);
        &movdqa         ($D2,$T1);
        &psrlq          ($T1,26);