Skip to content
Snippets Groups Projects
Commit 373e2a97 authored by Niels Möller's avatar Niels Möller
Browse files

(_aes_crypt): Decrement round when looping, saving yet some

instructions.

Rev: src/nettle/sparc/aes.asm:1.61
parent bef4b962
No related branches found
No related tags found
No related merge requests found
...@@ -27,7 +27,7 @@ define(diff, %l2) ...@@ -27,7 +27,7 @@ define(diff, %l2)
define(nrounds, %l3) define(nrounds, %l3)
! Loop variables ! Loop variables
define(round, %l4) ! Really 16 * round define(round, %l4)
define(i, %l5) define(i, %l5)
! Further loop invariants ! Further loop invariants
...@@ -57,24 +57,22 @@ _aes_crypt: ...@@ -57,24 +57,22 @@ _aes_crypt:
! Compute xor, so that we can swap efficiently. ! Compute xor, so that we can swap efficiently.
xor wtxt, tmp, diff xor wtxt, tmp, diff
! The loop variable will be multiplied by 16. ! The loop variable will be multiplied by 16.
sll nrounds, 4, nrounds
! More loop invariants ! More loop invariants
add T, AES_TABLE0, T0 add T, AES_TABLE0, T0
add T, AES_TABLE1, T1 add T, AES_TABLE1, T1
add T, AES_TABLE2, T2 add T, AES_TABLE2, T2
add T, AES_TABLE3, T3 add T, AES_TABLE3, T3
.Lblock_loop:
! Read src, and add initial subkey ! Read src, and add initial subkey
! Difference between ctx and src ! Difference between ctx and src.
! NOTE: This isntruction is duplicated in the delay slot
sub ctx, src, %g2 sub ctx, src, %g2
.Lblock_loop:
! Difference between wtxt and src ! Difference between wtxt and src
sub wtxt, src, %g3 sub wtxt, src, %g3
! For stop condition. Note that src is incremented in the ! For stop condition. Note that src is incremented in the
! delay slot ! delay slot
add src, 8, %g4 add src, 8, %g4
nop
.Lsource_loop: .Lsource_loop:
ldub [src+3], t3 ldub [src+3], t3
...@@ -98,7 +96,7 @@ _aes_crypt: ...@@ -98,7 +96,7 @@ _aes_crypt:
bleu .Lsource_loop bleu .Lsource_loop
add src, 4, src add src, 4, src
mov 16, round sub nrounds, 1, round
add ctx, 16, key add ctx, 16, key
.Lround_loop: .Lround_loop:
...@@ -158,11 +156,10 @@ _aes_crypt: ...@@ -158,11 +156,10 @@ _aes_crypt:
! switch roles for tmp and wtxt ! switch roles for tmp and wtxt
xor wtxt, diff, wtxt xor wtxt, diff, wtxt
add round, 16, round subcc round, 1, round
add key, 16, key add key, 16, key
cmp round, nrounds
blu .Lround_loop bne .Lround_loop
xor tmp, diff, tmp xor tmp, diff, tmp
! final round ! final round
...@@ -218,8 +215,8 @@ _aes_crypt: ...@@ -218,8 +215,8 @@ _aes_crypt:
addcc length, -16, length addcc length, -16, length
bne .Lblock_loop bne .Lblock_loop
nop sub ctx, src, %g2
! add dst, 16, dst
.Lend: .Lend:
ret ret
restore restore
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment