]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
* x86/sha1-compress.asm: Store the magic constants on stack.
authorNiels Möller <nisse@lysator.liu.se>
Fri, 6 Feb 2004 12:29:20 +0000 (13:29 +0100)
committerNiels Möller <nisse@lysator.liu.se>
Fri, 6 Feb 2004 12:29:20 +0000 (13:29 +0100)
Accessing them via %esp should be a little faster than using large
immediate operands.

Rev: src/nettle/x86/sha1-compress.asm:1.3

x86/sha1-compress.asm

index 2856098d8e1189ab45d120196d84e9951eba91f2..850a140e7b8db81d9729d1407d4d369ecc975c64 100644 (file)
@@ -27,11 +27,13 @@ define(<DATA>,<%esi>)
 define(<TMP>,<%edi>)
 C Extra temporary needed by F3. Can we get rid of it?
 define(<TMP2>,<(%esp)>)
+define(<K>, <4(%esp)>)dnl
 C Constants
-define(<K1>, <<$>0x5A827999>)          C  Rounds  0-19
-define(<K2>, <<$>0x6ED9EBA1>)          C  Rounds 20-39
-define(<K3>, <<$>0x8F1BBCDC>)          C  Rounds 40-59
-define(<K4>, <<$>0xCA62C1D6>)          C  Rounds 60-79
+define(<K1VALUE>, <<$>0x5A827999>)             C  Rounds  0-19
+define(<K2VALUE>, <<$>0x6ED9EBA1>)             C  Rounds 20-39
+define(<K3VALUE>, <<$>0x8F1BBCDC>)             C  Rounds 40-59
+define(<K4VALUE>, <<$>0xCA62C1D6>)             C  Rounds 60-79
+       
 C expand(i) is the expansion function
 C
 C   W[i] = (W[i - 16] ^ W[i - 14] ^ W[i - 8] ^ W[i - 3]) <<< 1
@@ -93,10 +95,10 @@ C
 C   e += a <<< 5 + f( b, c, d ) + k + w;
 C   b <<<= 30
 C
-C round(a,b,c,d,e,f,k,w)
+C round(a,b,c,d,e,f,w)
 define(<round>, <
+       addl    K, $5
        addl    $7, $5
-       addl    $8, $5
        $6($2,$3,$4)
        addl    TMP, $5
        movl    $1, TMP
@@ -116,130 +118,132 @@ define(<round>, <
 _nettle_sha1_compress:
        C save all registers that need to be saved
        
-       pushl   %ebx            C  16(%esp)
-       pushl   %ebp            C  12(%esp)
-       pushl   %esi            C  8(%esp)
-       pushl   %edi            C  4(%esp)
+       pushl   %ebx            C  20(%esp)
+       pushl   %ebp            C  16(%esp)
+       pushl   %esi            C  12(%esp)
+       pushl   %edi            C  8(%esp)
+
+       pushl   K1VALUE         C  4(%esp)      
        subl    $4, %esp        C  0(%esp) = TMP
 
        C load the state vector
-       movl    24(%esp),TMP
+       movl    28(%esp),TMP
        movl    (TMP),   SA
        movl    4(TMP),  SB
        movl    8(TMP),  SC
        movl    12(TMP), SD
        movl    16(TMP), SE
 
-       movl    28(%esp), DATA
-
-       round(SA, SB, SC, SD, SE, <F1>, K1, NOEXPAND( 0))
-       round(SE, SA, SB, SC, SD, <F1>, K1, NOEXPAND( 1))
-       round(SD, SE, SA, SB, SC, <F1>, K1, NOEXPAND( 2))
-       round(SC, SD, SE, SA, SB, <F1>, K1, NOEXPAND( 3))
-       round(SB, SC, SD, SE, SA, <F1>, K1, NOEXPAND( 4))
-
-       round(SA, SB, SC, SD, SE, <F1>, K1, NOEXPAND( 5))
-       round(SE, SA, SB, SC, SD, <F1>, K1, NOEXPAND( 6))
-       round(SD, SE, SA, SB, SC, <F1>, K1, NOEXPAND( 7))
-       round(SC, SD, SE, SA, SB, <F1>, K1, NOEXPAND( 8))
-       round(SB, SC, SD, SE, SA, <F1>, K1, NOEXPAND( 9))
-
-       round(SA, SB, SC, SD, SE, <F1>, K1, NOEXPAND(10))
-       round(SE, SA, SB, SC, SD, <F1>, K1, NOEXPAND(11))
-       round(SD, SE, SA, SB, SC, <F1>, K1, NOEXPAND(12))
-       round(SC, SD, SE, SA, SB, <F1>, K1, NOEXPAND(13))
-       round(SB, SC, SD, SE, SA, <F1>, K1, NOEXPAND(14))
-
-                  round(SA, SB, SC, SD, SE, <F1>, K1, NOEXPAND(15))
-       EXPAND(16) round(SE, SA, SB, SC, SD, <F1>, K1, TMP)
-       EXPAND(17) round(SD, SE, SA, SB, SC, <F1>, K1, TMP)
-       EXPAND(18) round(SC, SD, SE, SA, SB, <F1>, K1, TMP)
-       EXPAND(19) round(SB, SC, SD, SE, SA, <F1>, K1, TMP)
-
-
-       EXPAND(20) round(SA, SB, SC, SD, SE, <F2>, K2, TMP)
-       EXPAND(21) round(SE, SA, SB, SC, SD, <F2>, K2, TMP)
-       EXPAND(22) round(SD, SE, SA, SB, SC, <F2>, K2, TMP)
-       EXPAND(23) round(SC, SD, SE, SA, SB, <F2>, K2, TMP)
-       EXPAND(24) round(SB, SC, SD, SE, SA, <F2>, K2, TMP)
-
-       EXPAND(25) round(SA, SB, SC, SD, SE, <F2>, K2, TMP)
-       EXPAND(26) round(SE, SA, SB, SC, SD, <F2>, K2, TMP)
-       EXPAND(27) round(SD, SE, SA, SB, SC, <F2>, K2, TMP)
-       EXPAND(28) round(SC, SD, SE, SA, SB, <F2>, K2, TMP)
-       EXPAND(29) round(SB, SC, SD, SE, SA, <F2>, K2, TMP)
-
-       EXPAND(30) round(SA, SB, SC, SD, SE, <F2>, K2, TMP)
-       EXPAND(31) round(SE, SA, SB, SC, SD, <F2>, K2, TMP)
-       EXPAND(32) round(SD, SE, SA, SB, SC, <F2>, K2, TMP)
-       EXPAND(33) round(SC, SD, SE, SA, SB, <F2>, K2, TMP)
-       EXPAND(34) round(SB, SC, SD, SE, SA, <F2>, K2, TMP)
-
-       EXPAND(35) round(SA, SB, SC, SD, SE, <F2>, K2, TMP)
-       EXPAND(36) round(SE, SA, SB, SC, SD, <F2>, K2, TMP)
-       EXPAND(37) round(SD, SE, SA, SB, SC, <F2>, K2, TMP)
-       EXPAND(38) round(SC, SD, SE, SA, SB, <F2>, K2, TMP)
-       EXPAND(39) round(SB, SC, SD, SE, SA, <F2>, K2, TMP)
-
-
-       EXPAND(40) round(SA, SB, SC, SD, SE, <F3>, K3, TMP)
-       EXPAND(41) round(SE, SA, SB, SC, SD, <F3>, K3, TMP)
-       EXPAND(42) round(SD, SE, SA, SB, SC, <F3>, K3, TMP)
-       EXPAND(43) round(SC, SD, SE, SA, SB, <F3>, K3, TMP)
-       EXPAND(44) round(SB, SC, SD, SE, SA, <F3>, K3, TMP)
-
-       EXPAND(45) round(SA, SB, SC, SD, SE, <F3>, K3, TMP)
-       EXPAND(46) round(SE, SA, SB, SC, SD, <F3>, K3, TMP)
-       EXPAND(47) round(SD, SE, SA, SB, SC, <F3>, K3, TMP)
-       EXPAND(48) round(SC, SD, SE, SA, SB, <F3>, K3, TMP)
-       EXPAND(49) round(SB, SC, SD, SE, SA, <F3>, K3, TMP)
-
-       EXPAND(50) round(SA, SB, SC, SD, SE, <F3>, K3, TMP)
-       EXPAND(51) round(SE, SA, SB, SC, SD, <F3>, K3, TMP)
-       EXPAND(52) round(SD, SE, SA, SB, SC, <F3>, K3, TMP)
-       EXPAND(53) round(SC, SD, SE, SA, SB, <F3>, K3, TMP)
-       EXPAND(54) round(SB, SC, SD, SE, SA, <F3>, K3, TMP)
-
-       EXPAND(55) round(SA, SB, SC, SD, SE, <F3>, K3, TMP)
-       EXPAND(56) round(SE, SA, SB, SC, SD, <F3>, K3, TMP)
-       EXPAND(57) round(SD, SE, SA, SB, SC, <F3>, K3, TMP)
-       EXPAND(58) round(SC, SD, SE, SA, SB, <F3>, K3, TMP)
-       EXPAND(59) round(SB, SC, SD, SE, SA, <F3>, K3, TMP)
-
-
-       EXPAND(60) round(SA, SB, SC, SD, SE, <F2>, K4, TMP)
-       EXPAND(61) round(SE, SA, SB, SC, SD, <F2>, K4, TMP)
-       EXPAND(62) round(SD, SE, SA, SB, SC, <F2>, K4, TMP)
-       EXPAND(63) round(SC, SD, SE, SA, SB, <F2>, K4, TMP)
-       EXPAND(64) round(SB, SC, SD, SE, SA, <F2>, K4, TMP)
-
-       EXPAND(65) round(SA, SB, SC, SD, SE, <F2>, K4, TMP)
-       EXPAND(66) round(SE, SA, SB, SC, SD, <F2>, K4, TMP)
-       EXPAND(67) round(SD, SE, SA, SB, SC, <F2>, K4, TMP)
-       EXPAND(68) round(SC, SD, SE, SA, SB, <F2>, K4, TMP)
-       EXPAND(69) round(SB, SC, SD, SE, SA, <F2>, K4, TMP)
-
-       EXPAND(70) round(SA, SB, SC, SD, SE, <F2>, K4, TMP)
-       EXPAND(71) round(SE, SA, SB, SC, SD, <F2>, K4, TMP)
-       EXPAND(72) round(SD, SE, SA, SB, SC, <F2>, K4, TMP)
-       EXPAND(73) round(SC, SD, SE, SA, SB, <F2>, K4, TMP)
-       EXPAND(74) round(SB, SC, SD, SE, SA, <F2>, K4, TMP)
-
-       EXPAND(75) round(SA, SB, SC, SD, SE, <F2>, K4, TMP)
-       EXPAND(76) round(SE, SA, SB, SC, SD, <F2>, K4, TMP)
-       EXPAND(77) round(SD, SE, SA, SB, SC, <F2>, K4, TMP)
-       EXPAND(78) round(SC, SD, SE, SA, SB, <F2>, K4, TMP)
-       EXPAND(79) round(SB, SC, SD, SE, SA, <F2>, K4, TMP)
+       movl    32(%esp), DATA
+
+       round(SA, SB, SC, SD, SE, <F1>, NOEXPAND( 0))
+       round(SE, SA, SB, SC, SD, <F1>, NOEXPAND( 1))
+       round(SD, SE, SA, SB, SC, <F1>, NOEXPAND( 2))
+       round(SC, SD, SE, SA, SB, <F1>, NOEXPAND( 3))
+       round(SB, SC, SD, SE, SA, <F1>, NOEXPAND( 4))
+
+       round(SA, SB, SC, SD, SE, <F1>, NOEXPAND( 5))
+       round(SE, SA, SB, SC, SD, <F1>, NOEXPAND( 6))
+       round(SD, SE, SA, SB, SC, <F1>, NOEXPAND( 7))
+       round(SC, SD, SE, SA, SB, <F1>, NOEXPAND( 8))
+       round(SB, SC, SD, SE, SA, <F1>, NOEXPAND( 9))
+
+       round(SA, SB, SC, SD, SE, <F1>, NOEXPAND(10))
+       round(SE, SA, SB, SC, SD, <F1>, NOEXPAND(11))
+       round(SD, SE, SA, SB, SC, <F1>, NOEXPAND(12))
+       round(SC, SD, SE, SA, SB, <F1>, NOEXPAND(13))
+       round(SB, SC, SD, SE, SA, <F1>, NOEXPAND(14))
+
+                  round(SA, SB, SC, SD, SE, <F1>, NOEXPAND(15))
+       EXPAND(16) round(SE, SA, SB, SC, SD, <F1>, TMP)
+       EXPAND(17) round(SD, SE, SA, SB, SC, <F1>, TMP)
+       EXPAND(18) round(SC, SD, SE, SA, SB, <F1>, TMP)
+       EXPAND(19) round(SB, SC, SD, SE, SA, <F1>, TMP)
+
+       movl    K2VALUE, K
+       EXPAND(20) round(SA, SB, SC, SD, SE, <F2>, TMP)
+       EXPAND(21) round(SE, SA, SB, SC, SD, <F2>, TMP)
+       EXPAND(22) round(SD, SE, SA, SB, SC, <F2>, TMP)
+       EXPAND(23) round(SC, SD, SE, SA, SB, <F2>, TMP)
+       EXPAND(24) round(SB, SC, SD, SE, SA, <F2>, TMP)
+
+       EXPAND(25) round(SA, SB, SC, SD, SE, <F2>, TMP)
+       EXPAND(26) round(SE, SA, SB, SC, SD, <F2>, TMP)
+       EXPAND(27) round(SD, SE, SA, SB, SC, <F2>, TMP)
+       EXPAND(28) round(SC, SD, SE, SA, SB, <F2>, TMP)
+       EXPAND(29) round(SB, SC, SD, SE, SA, <F2>, TMP)
+
+       EXPAND(30) round(SA, SB, SC, SD, SE, <F2>, TMP)
+       EXPAND(31) round(SE, SA, SB, SC, SD, <F2>, TMP)
+       EXPAND(32) round(SD, SE, SA, SB, SC, <F2>, TMP)
+       EXPAND(33) round(SC, SD, SE, SA, SB, <F2>, TMP)
+       EXPAND(34) round(SB, SC, SD, SE, SA, <F2>, TMP)
+
+       EXPAND(35) round(SA, SB, SC, SD, SE, <F2>, TMP)
+       EXPAND(36) round(SE, SA, SB, SC, SD, <F2>, TMP)
+       EXPAND(37) round(SD, SE, SA, SB, SC, <F2>, TMP)
+       EXPAND(38) round(SC, SD, SE, SA, SB, <F2>, TMP)
+       EXPAND(39) round(SB, SC, SD, SE, SA, <F2>, TMP)
+
+       movl    K3VALUE, K
+       EXPAND(40) round(SA, SB, SC, SD, SE, <F3>, TMP)
+       EXPAND(41) round(SE, SA, SB, SC, SD, <F3>, TMP)
+       EXPAND(42) round(SD, SE, SA, SB, SC, <F3>, TMP)
+       EXPAND(43) round(SC, SD, SE, SA, SB, <F3>, TMP)
+       EXPAND(44) round(SB, SC, SD, SE, SA, <F3>, TMP)
+
+       EXPAND(45) round(SA, SB, SC, SD, SE, <F3>, TMP)
+       EXPAND(46) round(SE, SA, SB, SC, SD, <F3>, TMP)
+       EXPAND(47) round(SD, SE, SA, SB, SC, <F3>, TMP)
+       EXPAND(48) round(SC, SD, SE, SA, SB, <F3>, TMP)
+       EXPAND(49) round(SB, SC, SD, SE, SA, <F3>, TMP)
+
+       EXPAND(50) round(SA, SB, SC, SD, SE, <F3>, TMP)
+       EXPAND(51) round(SE, SA, SB, SC, SD, <F3>, TMP)
+       EXPAND(52) round(SD, SE, SA, SB, SC, <F3>, TMP)
+       EXPAND(53) round(SC, SD, SE, SA, SB, <F3>, TMP)
+       EXPAND(54) round(SB, SC, SD, SE, SA, <F3>, TMP)
+
+       EXPAND(55) round(SA, SB, SC, SD, SE, <F3>, TMP)
+       EXPAND(56) round(SE, SA, SB, SC, SD, <F3>, TMP)
+       EXPAND(57) round(SD, SE, SA, SB, SC, <F3>, TMP)
+       EXPAND(58) round(SC, SD, SE, SA, SB, <F3>, TMP)
+       EXPAND(59) round(SB, SC, SD, SE, SA, <F3>, TMP)
+
+       movl    K4VALUE, K
+       EXPAND(60) round(SA, SB, SC, SD, SE, <F2>, TMP)
+       EXPAND(61) round(SE, SA, SB, SC, SD, <F2>, TMP)
+       EXPAND(62) round(SD, SE, SA, SB, SC, <F2>, TMP)
+       EXPAND(63) round(SC, SD, SE, SA, SB, <F2>, TMP)
+       EXPAND(64) round(SB, SC, SD, SE, SA, <F2>, TMP)
+
+       EXPAND(65) round(SA, SB, SC, SD, SE, <F2>, TMP)
+       EXPAND(66) round(SE, SA, SB, SC, SD, <F2>, TMP)
+       EXPAND(67) round(SD, SE, SA, SB, SC, <F2>, TMP)
+       EXPAND(68) round(SC, SD, SE, SA, SB, <F2>, TMP)
+       EXPAND(69) round(SB, SC, SD, SE, SA, <F2>, TMP)
+
+       EXPAND(70) round(SA, SB, SC, SD, SE, <F2>, TMP)
+       EXPAND(71) round(SE, SA, SB, SC, SD, <F2>, TMP)
+       EXPAND(72) round(SD, SE, SA, SB, SC, <F2>, TMP)
+       EXPAND(73) round(SC, SD, SE, SA, SB, <F2>, TMP)
+       EXPAND(74) round(SB, SC, SD, SE, SA, <F2>, TMP)
+
+       EXPAND(75) round(SA, SB, SC, SD, SE, <F2>, TMP)
+       EXPAND(76) round(SE, SA, SB, SC, SD, <F2>, TMP)
+       EXPAND(77) round(SD, SE, SA, SB, SC, <F2>, TMP)
+       EXPAND(78) round(SC, SD, SE, SA, SB, <F2>, TMP)
+       EXPAND(79) round(SB, SC, SD, SE, SA, <F2>, TMP)
 
        C Update the state vector
-       movl    24(%esp),TMP
+       movl    28(%esp),TMP
        addl    SA, (TMP) 
        addl    SB, 4(TMP) 
        addl    SC, 8(TMP) 
        addl    SD, 12(TMP) 
        addl    SE, 16(TMP)
 
-       addl    $4, %esp
+       addl    $8, %esp
        popl    %edi
        popl    %esi
        popl    %ebp