Skip to content

Commit

Permalink
ARM32 ASM: optimize older platform alternatives
Browse files Browse the repository at this point in the history
Make the alternative instructions for architectures less than 7 more
optimal.
  • Loading branch information
SparkiDev committed Jan 30, 2025
1 parent 25c8869 commit 2d06e67
Show file tree
Hide file tree
Showing 13 changed files with 2,833 additions and 5,563 deletions.
21 changes: 7 additions & 14 deletions wolfcrypt/src/port/arm/armv8-32-aes-asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -808,8 +808,7 @@ AES_set_encrypt_key:
cmp r1, #0xc0
beq L_AES_set_encrypt_key_start_192
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
ldr r4, [r0]
ldr r5, [r0, #4]
ldm r0, {r4, r5}
#else
ldrd r4, r5, [r0]
#endif
Expand Down Expand Up @@ -1038,8 +1037,7 @@ L_AES_set_encrypt_key_loop_256:
b L_AES_set_encrypt_key_end
L_AES_set_encrypt_key_start_192:
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
ldr r4, [r0]
ldr r5, [r0, #4]
ldm r0, {r4, r5}
#else
ldrd r4, r5, [r0]
#endif
Expand Down Expand Up @@ -1203,8 +1201,7 @@ L_AES_set_encrypt_key_loop_192:
b L_AES_set_encrypt_key_end
L_AES_set_encrypt_key_start_128:
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
ldr r4, [r0]
ldr r5, [r0, #4]
ldm r0, {r4, r5}
#else
ldrd r4, r5, [r0]
#endif
Expand Down Expand Up @@ -3952,8 +3949,7 @@ L_AES_CBC_decrypt_loop_block_256:
ldr r7, [lr, #12]
ldr lr, [sp, #16]
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
str r4, [lr]
str r5, [lr, #4]
stm lr, {r4, r5}
#else
strd r4, r5, [lr]
#endif
Expand Down Expand Up @@ -4141,8 +4137,7 @@ L_AES_CBC_decrypt_loop_block_192:
ldr r7, [lr, #12]
ldr lr, [sp, #16]
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
str r4, [lr]
str r5, [lr, #4]
stm lr, {r4, r5}
#else
strd r4, r5, [lr]
#endif
Expand Down Expand Up @@ -4330,8 +4325,7 @@ L_AES_CBC_decrypt_loop_block_128:
ldr r7, [lr, #12]
ldr lr, [sp, #16]
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
str r4, [lr]
str r5, [lr, #4]
stm lr, {r4, r5}
#else
strd r4, r5, [lr]
#endif
Expand Down Expand Up @@ -4438,8 +4432,7 @@ L_AES_CBC_decrypt_end_odd:
ldrd r10, r11, [r4, #24]
#endif
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
str r8, [r4]
str r9, [r4, #4]
stm r4, {r8, r9}
#else
strd r8, r9, [r4]
#endif
Expand Down
21 changes: 7 additions & 14 deletions wolfcrypt/src/port/arm/armv8-32-aes-asm_c.c
Original file line number Diff line number Diff line change
Expand Up @@ -441,8 +441,7 @@ void AES_set_encrypt_key(const unsigned char* key_p, word32 len_p,
"cmp %[len], #0xc0\n\t"
"beq L_AES_set_encrypt_key_start_192_%=\n\t"
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
"ldr r4, [%[key]]\n\t"
"ldr r5, [%[key], #4]\n\t"
"ldm r0, {r4, r5}\n\t"
#else
"ldrd r4, r5, [%[key]]\n\t"
#endif
Expand Down Expand Up @@ -673,8 +672,7 @@ void AES_set_encrypt_key(const unsigned char* key_p, word32 len_p,
"\n"
"L_AES_set_encrypt_key_start_192_%=: \n\t"
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
"ldr r4, [%[key]]\n\t"
"ldr r5, [%[key], #4]\n\t"
"ldm r0, {r4, r5}\n\t"
#else
"ldrd r4, r5, [%[key]]\n\t"
#endif
Expand Down Expand Up @@ -840,8 +838,7 @@ void AES_set_encrypt_key(const unsigned char* key_p, word32 len_p,
"\n"
"L_AES_set_encrypt_key_start_128_%=: \n\t"
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
"ldr r4, [%[key]]\n\t"
"ldr r5, [%[key], #4]\n\t"
"ldm r0, {r4, r5}\n\t"
#else
"ldrd r4, r5, [%[key]]\n\t"
#endif
Expand Down Expand Up @@ -3465,8 +3462,7 @@ void AES_CBC_decrypt(const unsigned char* in_p, unsigned char* out_p,
"ldr r7, [lr, #12]\n\t"
"ldr lr, [sp, #16]\n\t"
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
"str r4, [lr]\n\t"
"str r5, [lr, #4]\n\t"
"stm lr, {r4, r5}\n\t"
#else
"strd r4, r5, [lr]\n\t"
#endif
Expand Down Expand Up @@ -3655,8 +3651,7 @@ void AES_CBC_decrypt(const unsigned char* in_p, unsigned char* out_p,
"ldr r7, [lr, #12]\n\t"
"ldr lr, [sp, #16]\n\t"
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
"str r4, [lr]\n\t"
"str r5, [lr, #4]\n\t"
"stm lr, {r4, r5}\n\t"
#else
"strd r4, r5, [lr]\n\t"
#endif
Expand Down Expand Up @@ -3845,8 +3840,7 @@ void AES_CBC_decrypt(const unsigned char* in_p, unsigned char* out_p,
"ldr r7, [lr, #12]\n\t"
"ldr lr, [sp, #16]\n\t"
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
"str r4, [lr]\n\t"
"str r5, [lr, #4]\n\t"
"stm lr, {r4, r5}\n\t"
#else
"strd r4, r5, [lr]\n\t"
#endif
Expand Down Expand Up @@ -3954,8 +3948,7 @@ void AES_CBC_decrypt(const unsigned char* in_p, unsigned char* out_p,
"ldrd r10, r11, [r4, #24]\n\t"
#endif
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
"str r8, [r4]\n\t"
"str r9, [r4, #4]\n\t"
"stm r4, {r8, r9}\n\t"
#else
"strd r8, r9, [r4]\n\t"
#endif
Expand Down
Loading

0 comments on commit 2d06e67

Please sign in to comment.