Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Wim Lewis
nettle
Commits
8b1d9263
Commit
8b1d9263
authored
May 16, 2013
by
Niels Möller
Browse files
arm/v6: Alignment tweaks to aes code.
parent
64fbd2f0
Changes
3
Hide whitespace changes
Inline
Side-by-side
ChangeLog
View file @
8b1d9263
2013-05-16 Niels Möller <nisse@lysator.liu.se>
* arm/v6/aes-encrypt-internal.asm: Use ALIGN macro. Use 16-byte
alignment for loops.
* arm/v6/aes-decrypt-internal.asm: Likewise. Also added a nop
which mysteriously improves benchmark performance on Cortex-A9.
2013-05-15 Niels Möller <nisse@lysator.liu.se>
2013-05-15 Niels Möller <nisse@lysator.liu.se>
* configure.ac (asm_path): Handle armv6 and armv7 differently from
* configure.ac (asm_path): Handle armv6 and armv7 differently from
...
...
arm/v6/aes-decrypt-internal.asm
View file @
8b1d9263
...
@@ -50,13 +50,16 @@ define(<X3>, <r14>) C lr
...
@@ -50,13 +50,16 @@ define(<X3>, <r14>) C lr
C
si
ze_t
length
,
uint8_t
*
ds
t
,
C
si
ze_t
length
,
uint8_t
*
ds
t
,
C
uint8_t
*
src
)
C
uint8_t
*
src
)
.text
.text
.align
2
ALIGN
(
4
)
PROLOGUE
(
_nettle_aes_decrypt
)
PROLOGUE
(
_nettle_aes_decrypt
)
teq
LENGTH
,
#
0
teq
LENGTH
,
#
0
beq
.Lend
beq
.Lend
ldr
SRC
,
[
sp
]
ldr
SRC
,
[
sp
]
push
{
r4
,
r5
,
r6
,
r7
,
r8
,
r10
,
r11
,
lr
}
push
{
r4
,
r5
,
r6
,
r7
,
r8
,
r10
,
r11
,
lr
}
nop
C
For
some
mysterious
reason
,
taking
out
this
nop
C
slows
this
function
down
on
Cortex
-
A9.
ALIGN
(
16
)
.Lblock_loop:
.Lblock_loop:
mov
KEY
,
CTX
mov
KEY
,
CTX
AES_LOAD
(
SRC
,
KEY
,
W0
)
AES_LOAD
(
SRC
,
KEY
,
W0
)
...
@@ -69,7 +72,7 @@ PROLOGUE(_nettle_aes_decrypt)
...
@@ -69,7 +72,7 @@ PROLOGUE(_nettle_aes_decrypt)
add
TABLE
,
TABLE
,
#
AES_TABLE0
add
TABLE
,
TABLE
,
#
AES_TABLE0
b
.Lentry
b
.Lentry
.align
2
ALIGN
(
16
)
.Lround_loop:
.Lround_loop:
C
Transform
X
->
W
C
Transform
X
->
W
AES_DECRYPT_ROUND
(
X0
,
X1
,
X2
,
X3
,
W0
,
W1
,
W2
,
W3
,
KEY
)
AES_DECRYPT_ROUND
(
X0
,
X1
,
X2
,
X3
,
W0
,
W1
,
W2
,
W3
,
KEY
)
...
...
arm/v6/aes-encrypt-internal.asm
View file @
8b1d9263
...
@@ -52,13 +52,14 @@ define(<X3>, <r14>) C lr
...
@@ -52,13 +52,14 @@ define(<X3>, <r14>) C lr
C
si
ze_t
length
,
uint8_t
*
ds
t
,
C
si
ze_t
length
,
uint8_t
*
ds
t
,
C
uint8_t
*
src
)
C
uint8_t
*
src
)
.text
.text
.align
2
ALIGN
(
4
)
PROLOGUE
(
_nettle_aes_encrypt
)
PROLOGUE
(
_nettle_aes_encrypt
)
teq
LENGTH
,
#
0
teq
LENGTH
,
#
0
beq
.Lend
beq
.Lend
ldr
SRC
,
[
sp
]
ldr
SRC
,
[
sp
]
push
{
r4
,
r5
,
r6
,
r7
,
r8
,
r10
,
r11
,
lr
}
push
{
r4
,
r5
,
r6
,
r7
,
r8
,
r10
,
r11
,
lr
}
ALIGN
(
16
)
.Lblock_loop:
.Lblock_loop:
mov
KEY
,
CTX
mov
KEY
,
CTX
AES_LOAD
(
SRC
,
KEY
,
W0
)
AES_LOAD
(
SRC
,
KEY
,
W0
)
...
@@ -71,7 +72,7 @@ PROLOGUE(_nettle_aes_encrypt)
...
@@ -71,7 +72,7 @@ PROLOGUE(_nettle_aes_encrypt)
add
TABLE
,
TABLE
,
#
AES_TABLE0
add
TABLE
,
TABLE
,
#
AES_TABLE0
b
.Lentry
b
.Lentry
.align
2
ALIGN
(
16
)
.Lround_loop:
.Lround_loop:
C
Transform
X
->
W
C
Transform
X
->
W
AES_ENCRYPT_ROUND
(
X0
,
X1
,
X2
,
X3
,
W0
,
W1
,
W2
,
W3
,
KEY
)
AES_ENCRYPT_ROUND
(
X0
,
X1
,
X2
,
X3
,
W0
,
W1
,
W2
,
W3
,
KEY
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment