Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions wolfcrypt/src/port/arm/armv8-32-aes-asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -3914,7 +3914,8 @@ L_aes_ctr_encrypt_arm32_crypto_done:
AES_GCM_set_key_AARCH32:
vpush {d8, d9}
vld1.8 {q0}, [r0]
vldm r1!, {q1-q4}
vld1.8 {q1, q2}, [r1]!
vld1.8 {q3, q4}, [r1]!
aese.8 q0, q1
aesmc.8 q0, q0
aese.8 q0, q2
Expand All @@ -3923,7 +3924,8 @@ AES_GCM_set_key_AARCH32:
aesmc.8 q0, q0
aese.8 q0, q4
aesmc.8 q0, q0
vldm r1!, {q1-q4}
vld1.8 {q1, q2}, [r1]!
vld1.8 {q3, q4}, [r1]!
aese.8 q0, q1
aesmc.8 q0, q0
aese.8 q0, q2
Expand All @@ -3933,25 +3935,25 @@ AES_GCM_set_key_AARCH32:
aese.8 q0, q4
aesmc.8 q0, q0
subs r3, r3, #10
vld1.32 {q1, q2}, [r1]!
vld1.8 {q1, q2}, [r1]!
aese.8 q0, q1
aesmc.8 q0, q0
aese.8 q0, q2
beq L_aes_gcm_set_key_arm32_crypto_round_done
vld1.32 {q1, q2}, [r1]!
vld1.8 {q1, q2}, [r1]!
subs r3, r3, #2
aesmc.8 q0, q0
aese.8 q0, q1
aesmc.8 q0, q0
aese.8 q0, q2
beq L_aes_gcm_set_key_arm32_crypto_round_done
vld1.32 {q1, q2}, [r1]!
vld1.8 {q1, q2}, [r1]!
aesmc.8 q0, q0
aese.8 q0, q1
aesmc.8 q0, q0
aese.8 q0, q2
L_aes_gcm_set_key_arm32_crypto_round_done:
vld1.32 {q1}, [r1]
vld1.8 {q1}, [r1]
veor q0, q0, q1
vmov.i8 q1, #0x55
vshl.u8 q2, q0, #1
Expand Down
14 changes: 8 additions & 6 deletions wolfcrypt/src/port/arm/armv8-32-aes-asm_c.c
Original file line number Diff line number Diff line change
Expand Up @@ -4219,7 +4219,8 @@ WC_OMIT_FRAME_POINTER void AES_GCM_set_key_AARCH32(const byte* nonce,

__asm__ __volatile__ (
"vld1.8 {q0}, [%[nonce]]\n\t"
"vldm %[key]!, {q1-q4}\n\t"
"vld1.8 {q1-q2}, [%[key]]!\n\t"
"vld1.8 {q3-q4}, [%[key]]!\n\t"
"aese.8 q0, q1\n\t"
"aesmc.8 q0, q0\n\t"
"aese.8 q0, q2\n\t"
Expand All @@ -4228,7 +4229,8 @@ WC_OMIT_FRAME_POINTER void AES_GCM_set_key_AARCH32(const byte* nonce,
"aesmc.8 q0, q0\n\t"
"aese.8 q0, q4\n\t"
"aesmc.8 q0, q0\n\t"
"vldm %[key]!, {q1-q4}\n\t"
"vld1.8 {q1-q2}, [%[key]]!\n\t"
"vld1.8 {q3-q4}, [%[key]]!\n\t"
"aese.8 q0, q1\n\t"
"aesmc.8 q0, q0\n\t"
"aese.8 q0, q2\n\t"
Expand All @@ -4238,26 +4240,26 @@ WC_OMIT_FRAME_POINTER void AES_GCM_set_key_AARCH32(const byte* nonce,
"aese.8 q0, q4\n\t"
"aesmc.8 q0, q0\n\t"
"subs %[nr], %[nr], #10\n\t"
"vld1.32 {q1-q2}, [%[key]]!\n\t"
"vld1.8 {q1-q2}, [%[key]]!\n\t"
"aese.8 q0, q1\n\t"
"aesmc.8 q0, q0\n\t"
"aese.8 q0, q2\n\t"
"beq L_aes_gcm_set_key_arm32_crypto_round_done_%=\n\t"
"vld1.32 {q1-q2}, [%[key]]!\n\t"
"vld1.8 {q1-q2}, [%[key]]!\n\t"
"subs %[nr], %[nr], #2\n\t"
"aesmc.8 q0, q0\n\t"
"aese.8 q0, q1\n\t"
"aesmc.8 q0, q0\n\t"
"aese.8 q0, q2\n\t"
"beq L_aes_gcm_set_key_arm32_crypto_round_done_%=\n\t"
"vld1.32 {q1-q2}, [%[key]]!\n\t"
"vld1.8 {q1-q2}, [%[key]]!\n\t"
"aesmc.8 q0, q0\n\t"
"aese.8 q0, q1\n\t"
"aesmc.8 q0, q0\n\t"
"aese.8 q0, q2\n\t"
"\n"
"L_aes_gcm_set_key_arm32_crypto_round_done_%=: \n\t"
"vld1.32 {q1}, [%[key]]\n\t"
"vld1.8 {q1}, [%[key]]\n\t"
"veor q0, q0, q1\n\t"
"vmov.i8 q1, #0x55\n\t"
"vshl.u8 q2, q0, #1\n\t"
Expand Down
Loading