5151#define __asm__ __asm
5252#define __volatile__ volatile
5353#endif /* __KEIL__ */
54+ #ifdef WOLFSSL_SHA3
55+ #ifndef WOLFSSL_ARMASM_NO_NEON
5456static const uint64_t L_sha3_arm2_neon_rt [] = {
5557 0x0000000000000001UL , 0x0000000000008082UL ,
5658 0x800000000000808aUL , 0x8000000080008000UL ,
@@ -66,29 +68,12 @@ static const uint64_t L_sha3_arm2_neon_rt[] = {
6668 0x0000000080000001UL , 0x8000000080008008UL ,
6769};
6870
69- static const uint64_t L_sha3_arm2_rt [] = {
70- 0x0000000000000001UL , 0x0000000000008082UL ,
71- 0x800000000000808aUL , 0x8000000080008000UL ,
72- 0x000000000000808bUL , 0x0000000080000001UL ,
73- 0x8000000080008081UL , 0x8000000000008009UL ,
74- 0x000000000000008aUL , 0x0000000000000088UL ,
75- 0x0000000080008009UL , 0x000000008000000aUL ,
76- 0x000000008000808bUL , 0x800000000000008bUL ,
77- 0x8000000000008089UL , 0x8000000000008003UL ,
78- 0x8000000000008002UL , 0x8000000000000080UL ,
79- 0x000000000000800aUL , 0x800000008000000aUL ,
80- 0x8000000080008081UL , 0x8000000000008080UL ,
81- 0x0000000080000001UL , 0x8000000080008008UL ,
82- };
83-
8471#include <wolfssl/wolfcrypt/sha3.h>
8572
86- #ifndef WOLFSSL_ARMASM_NO_NEON
8773void BlockSha3 (word64 * state_p )
8874{
8975 register word64 * state asm ("r0" ) = (word64 * )state_p ;
9076 register uint64_t * L_sha3_arm2_neon_rt_c asm ("r1" ) = (uint64_t * )& L_sha3_arm2_neon_rt ;
91- register uint64_t * L_sha3_arm2_rt_c asm ("r2" ) = (uint64_t * )& L_sha3_arm2_rt ;
9277
9378 __asm__ __volatile__ (
9479 "sub sp, sp, #16\n\t"
@@ -348,16 +333,31 @@ void BlockSha3(word64* state_p)
348333 "vst1.8 {d20-d23}, [%[state]]!\n\t"
349334 "vst1.8 {d24}, [%[state]]\n\t"
350335 "add sp, sp, #16\n\t"
351- : [state ] "+r" (state ), [L_sha3_arm2_neon_rt ] "+r" (L_sha3_arm2_neon_rt_c ), [ L_sha3_arm2_rt ] "+r" ( L_sha3_arm2_rt_c )
336+ : [state ] "+r" (state ), [L_sha3_arm2_neon_rt ] "+r" (L_sha3_arm2_neon_rt_c )
352337 :
353- : "memory" , "r3" , "d0" , "d1" , "d2" , "d3" , "d4" , "d5" , "d6" , "d7" , "d8" , "d9" , "d10" , "d11" , "d12" , "d13" , "d14" , "d15" , "d16" , "d17" , "d18" , "d19" , "d20" , "d21" , "d22" , "d23" , "d24" , "d25" , "d26" , "d27" , "d28" , "d29" , "d30" , "d31" , "cc"
338+ : "memory" , "r2" , " r3" , "d0" , "d1" , "d2" , "d3" , "d4" , "d5" , "d6" , "d7" , "d8" , "d9" , "d10" , "d11" , "d12" , "d13" , "d14" , "d15" , "d16" , "d17" , "d18" , "d19" , "d20" , "d21" , "d22" , "d23" , "d24" , "d25" , "d26" , "d27" , "d28" , "d29" , "d30" , "d31" , "cc"
354339 );
355340}
356341
357342#endif /* WOLFSSL_ARMASM_NO_NEON */
343+ #ifdef WOLFSSL_ARMASM_NO_NEON
344+ static const uint64_t L_sha3_arm2_rt [] = {
345+ 0x0000000000000001UL , 0x0000000000008082UL ,
346+ 0x800000000000808aUL , 0x8000000080008000UL ,
347+ 0x000000000000808bUL , 0x0000000080000001UL ,
348+ 0x8000000080008081UL , 0x8000000000008009UL ,
349+ 0x000000000000008aUL , 0x0000000000000088UL ,
350+ 0x0000000080008009UL , 0x000000008000000aUL ,
351+ 0x000000008000808bUL , 0x800000000000008bUL ,
352+ 0x8000000000008089UL , 0x8000000000008003UL ,
353+ 0x8000000000008002UL , 0x8000000000000080UL ,
354+ 0x000000000000800aUL , 0x800000008000000aUL ,
355+ 0x8000000080008081UL , 0x8000000000008080UL ,
356+ 0x0000000080000001UL , 0x8000000080008008UL ,
357+ };
358+
358359#include <wolfssl/wolfcrypt/sha3.h>
359360
360- #ifdef WOLFSSL_ARMASM_NO_NEON
361361void BlockSha3 (word64 * state_p )
362362{
363363 register word64 * state asm ("r0" ) = (word64 * )state_p ;
@@ -2348,6 +2348,7 @@ void BlockSha3(word64* state_p)
23482348}
23492349
23502350#endif /* WOLFSSL_ARMASM_NO_NEON */
2351+ #endif /* WOLFSSL_SHA3 */
23512352#endif /* !__aarch64__ && __arm__ && !__thumb__ */
23522353#endif /* WOLFSSL_ARMASM */
23532354#endif /* !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) */
0 commit comments