bn/asm/vis3-mont.pl: fix intermittent EC failures on SPARC T3.
authorAndy Polyakov <appro@openssl.org>
Wed, 13 May 2015 20:19:59 +0000 (22:19 +0200)
committerAndy Polyakov <appro@openssl.org>
Wed, 20 May 2015 07:11:25 +0000 (09:11 +0200)
BLKINIT optimization worked on T4, but for some reason appears "too
aggressive" for T3 triggering intermiitent EC failures. It's not clear
why only EC is affected...

Reviewed-by: Tim Hudson <tjh@openssl.org>
crypto/bn/asm/vis3-mont.pl

index 8da52c638c09e8280d95d023dbdd6efe5af63533..1d8dc9e08ea20609b2d9ad5c5ee03ca6cad7f27b 100644 (file)
@@ -100,7 +100,7 @@ $code.=<<___;
        ld      [$ap+12],       $t3
        or      $t0,    $aj,    $aj
        add     $ap,    16,     $ap
        ld      [$ap+12],       $t3
        or      $t0,    $aj,    $aj
        add     $ap,    16,     $ap
-       stxa    $aj,    [$anp]0xe2      ! converted ap[0]
+       stx     $aj,    [$anp]          ! converted ap[0]
 
        mulx    $aj,    $m0,    $lo0    ! ap[0]*bp[0]
        umulxhi $aj,    $m0,    $hi0
 
        mulx    $aj,    $m0,    $lo0    ! ap[0]*bp[0]
        umulxhi $aj,    $m0,    $hi0
@@ -150,7 +150,7 @@ $code.=<<___;
        sllx    $t1,    32,     $aj
        add     $ap,    8,      $ap
        or      $t0,    $aj,    $aj
        sllx    $t1,    32,     $aj
        add     $ap,    8,      $ap
        or      $t0,    $aj,    $aj
-       stxa    $aj,    [$anp]0xe2      ! converted ap[j]
+       stx     $aj,    [$anp]          ! converted ap[j]
 
        ld      [$np+0],        $t2     ! np[j]
        addcc   $nlo,   $hi1,   $lo1
 
        ld      [$np+0],        $t2     ! np[j]
        addcc   $nlo,   $hi1,   $lo1
@@ -169,7 +169,7 @@ $code.=<<___;
        addcc   $lo0,   $lo1,   $lo1    ! np[j]*m1+ap[j]*bp[0]
        umulxhi $nj,    $m1,    $nj     ! nhi=nj
        addxc   %g0,    $hi1,   $hi1
        addcc   $lo0,   $lo1,   $lo1    ! np[j]*m1+ap[j]*bp[0]
        umulxhi $nj,    $m1,    $nj     ! nhi=nj
        addxc   %g0,    $hi1,   $hi1
-       stxa    $lo1,   [$tp]0xe2       ! tp[j-1]
+       stx     $lo1,   [$tp]           ! tp[j-1]
        add     $tp,    8,      $tp     ! tp++
 
        brnz,pt $cnt,   .L1st
        add     $tp,    8,      $tp     ! tp++
 
        brnz,pt $cnt,   .L1st
@@ -182,12 +182,12 @@ $code.=<<___;
        addxc   $nj,    %g0,    $hi1
        addcc   $lo0,   $lo1,   $lo1    ! np[j]*m1+ap[j]*bp[0]
        addxc   %g0,    $hi1,   $hi1
        addxc   $nj,    %g0,    $hi1
        addcc   $lo0,   $lo1,   $lo1    ! np[j]*m1+ap[j]*bp[0]
        addxc   %g0,    $hi1,   $hi1
-       stxa    $lo1,   [$tp]0xe2       ! tp[j-1]
+       stx     $lo1,   [$tp]           ! tp[j-1]
        add     $tp,    8,      $tp
 
        addcc   $hi0,   $hi1,   $hi1
        addxc   %g0,    %g0,    $ovf    ! upmost overflow bit
        add     $tp,    8,      $tp
 
        addcc   $hi0,   $hi1,   $hi1
        addxc   %g0,    %g0,    $ovf    ! upmost overflow bit
-       stxa    $hi1,   [$tp]0xe2
+       stx     $hi1,   [$tp]
        add     $tp,    8,      $tp
 \f
        ba      .Louter
        add     $tp,    8,      $tp
 \f
        ba      .Louter