diff --git a/x86/sha1-compress.asm b/x86/sha1-compress.asm index 8caf6627b7c141171ebe1b37fb82f7022dfb8eff..37140f9dae7841dbab746ee77ea760013026fc3d 100644 --- a/x86/sha1-compress.asm +++ b/x86/sha1-compress.asm @@ -125,12 +125,13 @@ define(<ROUND_F1>, < add T2, $5 >) +C FIXME: Seems to be a slow sequence. define(<ROUND_F1_NOEXP>, < mov $4, T2 xor $3, T2 and $2, T2 xor $4, T2 - add OFFSET(eval($6 % 16)) (DATA), T2 + add OFFSET($6) (DATA), T2 rol <$>30, $2 mov $1, T1 rol <$>5, T1 @@ -220,30 +221,29 @@ PROLOGUE(_nettle_sha1_compress) movl 12(T1), SD movl 16(T1), SE - movl $ K1VALUE, KVALUE - 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>) - EXPAND(17) ROUND(SD, SE, SA, SB, SC, <F1>) - EXPAND(18) ROUND(SC, SD, SE, SA, SB, <F1>) - EXPAND(19) ROUND(SB, SC, SD, SE, SA, <F1>) + ROUND_F1_NOEXP(SA, SB, SC, SD, SE, 0) + ROUND_F1_NOEXP(SE, SA, SB, SC, SD, 1) + ROUND_F1_NOEXP(SD, SE, SA, SB, SC, 2) + ROUND_F1_NOEXP(SC, SD, SE, SA, SB, 3) + ROUND_F1_NOEXP(SB, SC, SD, SE, SA, 4) + + ROUND_F1_NOEXP(SA, SB, SC, SD, SE, 5) + ROUND_F1_NOEXP(SE, SA, SB, SC, SD, 6) + ROUND_F1_NOEXP(SD, SE, SA, SB, SC, 7) + ROUND_F1_NOEXP(SC, SD, SE, SA, SB, 8) + ROUND_F1_NOEXP(SB, SC, SD, SE, SA, 9) + + ROUND_F1_NOEXP(SA, SB, SC, SD, SE, 10) + ROUND_F1_NOEXP(SE, SA, SB, SC, SD, 11) + ROUND_F1_NOEXP(SD, SE, SA, SB, SC, 12) + ROUND_F1_NOEXP(SC, SD, SE, SA, SB, 13) + ROUND_F1_NOEXP(SB, SC, SD, SE, SA, 14) + + ROUND_F1_NOEXP(SA, SB, SC, SD, SE, 15) + ROUND_F1(SE, SA, SB, SC, SD, 16) + ROUND_F1(SD, SE, SA, SB, SC, 17) + ROUND_F1(SC, SD, SE, SA, SB, 18) + ROUND_F1(SB, SC, SD, SE, SA, 19) ROUND_F2(SA, SB, SC, SD, SE, 20, K2VALUE) ROUND_F2(SE, SA, SB, SC, SD, 21, K2VALUE)