Skip to content
Merged
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
24 changes: 16 additions & 8 deletions wolfcrypt/src/port/arm/armv8-32-chacha-asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -812,24 +812,30 @@ L_chacha_crypt_bytes_arm32_round_start_256:
# Load and XOR in message
ldr lr, [sp, #32]
ldr r3, [sp, #36]
vldm lr!, {q8-q11}
vld1.8 {q8-q9}, [lr]!
vld1.8 {q10-q11}, [lr]!
veor q12, q12, q8
veor q13, q13, q9
veor q14, q14, q10
veor q15, q15, q11
vstm r3!, {q12-q15}
vldm lr!, {q8-q11}
vst1.8 {q12-q13}, [r3]!
vst1.8 {q14-q15}, [r3]!
vld1.8 {q8-q9}, [lr]!
vld1.8 {q10-q11}, [lr]!
veor q0, q0, q8
veor q1, q1, q9
veor q2, q2, q10
veor q3, q3, q11
vstm r3!, {q0-q3}
vldm lr!, {q8-q11}
vst1.8 {q0-q1}, [r3]!
vst1.8 {q2-q3}, [r3]!
vld1.8 {q8-q9}, [lr]!
vld1.8 {q10-q11}, [lr]!
veor q4, q4, q8
veor q5, q5, q9
veor q6, q6, q10
veor q7, q7, q11
vstm r3!, {q4-q7}
vst1.8 {q4-q5}, [r3]!
vst1.8 {q6-q7}, [r3]!
str r3, [sp, #36]
ldr r3, [sp, #24]
add r10, r10, #3
Expand All @@ -849,7 +855,8 @@ L_chacha_crypt_bytes_arm32_round_start_256:
vmov d7, r12, lr
ldr r3, [sp, #40]
vldm r0, {q12-q15}
vldm r2!, {q4-q7}
vld1.8 {q4-q5}, [r2]!
vld1.8 {q6-q7}, [r2]!
vadd.i32 q0, q0, q12
vadd.i32 q1, q1, q13
vadd.i32 q2, q2, q14
Expand All @@ -860,7 +867,8 @@ L_chacha_crypt_bytes_arm32_round_start_256:
add lr, lr, #4
veor q2, q2, q6
veor q3, q3, q7
vstm r1!, {q0-q3}
vst1.8 {q0-q1}, [r1]!
vst1.8 {q2-q3}, [r1]!
vmov d30[0], lr
str lr, [r0, #48]
sub r3, r3, #0x100
Expand Down
24 changes: 16 additions & 8 deletions wolfcrypt/src/port/arm/armv8-32-chacha-asm_c.c
Original file line number Diff line number Diff line change
Expand Up @@ -928,24 +928,30 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
/* Load and XOR in message */
"ldr lr, [sp, #32]\n\t"
"ldr %[len], [sp, #36]\n\t"
"vldm lr!, {q8-q11}\n\t"
"vld1.8 {q8-q9}, [lr]!\n\t"
"vld1.8 {q10-q11}, [lr]!\n\t"
"veor q12, q12, q8\n\t"
"veor q13, q13, q9\n\t"
"veor q14, q14, q10\n\t"
"veor q15, q15, q11\n\t"
"vstm %[len]!, {q12-q15}\n\t"
"vldm lr!, {q8-q11}\n\t"
"vst1.8 {q12-q13}, [%[len]]!\n\t"
"vst1.8 {q14-q15}, [%[len]]!\n\t"
"vld1.8 {q8-q9}, [lr]!\n\t"
"vld1.8 {q10-q11}, [lr]!\n\t"
"veor q0, q0, q8\n\t"
"veor q1, q1, q9\n\t"
"veor q2, q2, q10\n\t"
"veor q3, q3, q11\n\t"
"vstm %[len]!, {q0-q3}\n\t"
"vldm lr!, {q8-q11}\n\t"
"vst1.8 {q0-q1}, [%[len]]!\n\t"
"vst1.8 {q2-q3}, [%[len]]!\n\t"
"vld1.8 {q8-q9}, [lr]!\n\t"
"vld1.8 {q10-q11}, [lr]!\n\t"
"veor q4, q4, q8\n\t"
"veor q5, q5, q9\n\t"
"veor q6, q6, q10\n\t"
"veor q7, q7, q11\n\t"
"vstm %[len]!, {q4-q7}\n\t"
"vst1.8 {q4-q5}, [%[len]]!\n\t"
"vst1.8 {q6-q7}, [%[len]]!\n\t"
"str %[len], [sp, #36]\n\t"
"ldr %[len], [sp, #24]\n\t"
"add r10, r10, #3\n\t"
Expand All @@ -965,7 +971,8 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
"vmov d7, r12, lr\n\t"
"ldr %[len], [sp, #40]\n\t"
"vldm %[ctx], {q12-q15}\n\t"
"vldm %[m]!, {q4-q7}\n\t"
"vld1.8 {q4-q5}, [%[m]]!\n\t"
"vld1.8 {q6-q7}, [%[m]]!\n\t"
"vadd.i32 q0, q0, q12\n\t"
"vadd.i32 q1, q1, q13\n\t"
"vadd.i32 q2, q2, q14\n\t"
Expand All @@ -976,7 +983,8 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
"add lr, lr, #4\n\t"
"veor q2, q2, q6\n\t"
"veor q3, q3, q7\n\t"
"vstm %[c]!, {q0-q3}\n\t"
"vst1.8 {q0-q1}, [%[c]]!\n\t"
"vst1.8 {q2-q3}, [%[c]]!\n\t"
"vmov d30[0], lr\n\t"
"str lr, [%[ctx], #48]\n\t"
"sub %[len], %[len], #0x100\n\t"
Expand Down
Loading